• Система автоматизации с открытым исходным кодом на базе 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(); {
}
что о не отображается?
да, вы правы, фигурные тут лишние.
Не заметил как-то... тем не менее с ними работало)
 
Сверху Снизу