• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

NEED HELP. D1 mini +Blynk+RF пульт и много релюшек.

quatterback

New member
Доброго времени суток, уважаемые.
Работаю над своим проектом умного дома на базе нескольких D1 mini в среде Ардуино и BLYNK.
Поскольку BLYNK не очень надежное решение со своими погрехами ( зависание действий, зависимость от наличия интернет соединения), решил продублировать все мои главные команды управляющим релюшкам посредством радиосигнала, что будет работать наверняка, безотказно и без интернета.
Сейчас мой скетч успешно реализует включение выключение реле, как с Blynk, так и по приему команды с радиопульта. ...пока есть интернет... все работает.
Попробовал отрубить выход в веб микроконтроллеру.
В итоге, после перезагрузки, esp в цикле постоянно пытается найти сервер Blynk, и все остальные функции, которые должны быть доступны оффлайн (включение/ выключение через радиопульт), недоступны.
Нужна помощь. Как бы запустить оставшуюся часть скетча, не связанную с Blynk, при этом ,чтобы
Blynk продолжал искать сервер, до тех пор пока интернет соединение не восстановится?
 

nikolz

Well-known member
Я так понимаю в библиотеку блинка лезть придется и править?
сложно сказать, без вида программы.
А Вы не смотрели вариант использования ESP-now вместо радиоканала? Тоже не надо интернет.
либо сделать точку доступа WIFI, тоже не надо интернет.
 

quatterback

New member
сложно сказать, без вида программы.
А Вы не смотрели вариант использования ESP-now вместо радиоканала? Тоже не надо интернет.
либо сделать точку доступа WIFI, тоже не надо интернет.
у радиоканала плюс в физических кнопках пульта, который по старой привычке висит на стене вместо механических выключателей. Да и скорость доступа к действию куда выше,чем " нашел смартфон, разблокировал, запустил приложение и только потом нажал).
Скетч выглядит так, чтобы сильно не грузить в примере только одна кнопка и одно реле :


#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <RCSwitch.h>
#include <SPI.h>


RCSwitch mySwitch = RCSwitch();
int Relay = 16;

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "12345";


// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "блаблабла";
char pass[] = "тутуту";

void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
mySwitch.enableReceive(13);
pinMode(Relay, OUTPUT); }

BLYNK_WRITE(V2)
{ if(param.asInt()==0)
{ digitalWrite(Relay, LOW);

}
else {
digitalWrite(Relay, HIGH);
}
}

void loop()
{
Blynk.run(); {
}
if (mySwitch.available()) {

int value = mySwitch.getReceivedValue();

if ( value == 16588224) {
digitalWrite(Relay, HIGH);
Blynk.virtualWrite (V2, HIGH);}
Blynk.virtualWrite(V0, "музыка выключена");
if ( value == 16588080) {
digitalWrite(Relay, LOW);
Blynk.virtualWrite (V2, LOW);
Blynk.virtualWrite(V0, "музыка включена");
}
if (value == 0) {
Serial.print("Unknown encoding");
} else {
Serial.print( "Received ");
Blynk.virtualWrite(V1, mySwitch.getReceivedValue() );
Serial.print(" / ");
Serial.print( mySwitch.getReceivedBitlength() );
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.println( mySwitch.getReceivedProtocol() );
}

mySwitch.resetAvailable();
}
}
 

nikolz

Well-known member
управление соединениями
Есть несколько функций, чтобы помочь с управлением соединения:

Blynk.connect ()
# This functions will try connecting to Blynk server.
# Returns true when connected, false if timeout reached.
# Default timeout is 30 seconds.
bool result = Blynk.connect();
bool result = Blynk.connect(timeout);
Blynk.disconnect ()
Для отключения от сервера Blynk, используйте:

Blynk.disconnect();
Blynk.connected ()
Для того, чтобы получить статус соединения с использованием Blynk сервера:

bool result = Blynk.connected();
 

quatterback

New member
управление соединениями
Есть несколько функций, чтобы помочь с управлением соединения:

Blynk.connect ()
# This functions will try connecting to Blynk server.
# Returns true when connected, false if timeout reached.
# Default timeout is 30 seconds.
bool result = Blynk.connect();
bool result = Blynk.connect(timeout);
Blynk.disconnect ()
Для отключения от сервера Blynk, используйте:

Blynk.disconnect();
Blynk.connected ()
Для того, чтобы получить статус соединения с использованием Blynk сервера:

bool result = Blynk.connected();
Благодарю за направление. Понял куда копать.
 

Юрий Ботов

Moderator
Команда форума
Ничего не понял... какая то фигня со скобками:

void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
mySwitch.enableReceive(13);
pinMode(Relay, OUTPUT); }

потом

Blynk.run(); {
}
что о не отображается?
 

quatterback

New member
Ничего не понял... какая то фигня со скобками:

void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
mySwitch.enableReceive(13);
pinMode(Relay, OUTPUT); }

потом

Blynk.run(); {
}
что о не отображается?
да, вы правы, фигурные тут лишние.
Не заметил как-то... тем не менее с ними работало)
 
Сверху Снизу