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

Нужна помощь Зависание ESP8266 с Blynk при старте и отсутствующем WiFI

stigmat1996

New member
Помогите решить проблему или дайте ссылку, если уже есть решение.

У меня ESP8266 nodemcu. Подключил к Blynk все прекрасно работает, данные приходят. Но если при старте нету WiFi, то МК виснет наглухо.

Копался в теме здесь (Code isn't working without connected Blynk) но решение так и не нашел. Помогите кто может.
 

svs2007m

Active member
Ну для начала Код в студию.
Или :)
– Слухай сюда! Положь колдобину со стороны загогулины и два раза дергани за пимпочки. Опосля чего долбани плюхалкой по кувыкалке и, кады чвокнет, – отскочь дальшее, прикинься ветошью и не отсвечивай. Потому как она в энто время шмяк тудыть, сюдыть, ёксель-моксель, ёрш твою медь... Пш-ш-ш! – И ждешь пока остынет. Остыло – подымаесся, вздыхаешь. Осторожненько вздыхаешь, про себя, шобы эта быдла не рванула! И бегишь за угол за пол-литрой. Потому как пронесло!
 

stigmat1996

New member
Код:
#include <ESP8266WiFi.h>
#include <ESP8266WiFi.h>

#include <BlynkSimpleEsp8266.h>

extern "C" {
#include "user_interface.h";
}
#define BLYNK_PRINT_227476896_2 Serial

char auth_227476896_2[] = "D75TasbYkeegmH7CVXME66G1c06ceECQ";
unsigned long virt_203190254_1;
float input_OldValue_203190254_1= 0;
bool ESP8266ControllerWifiClient_HRD = 0;
bool ESP8266ControllerWifiClient_status = 1;
bool ESP8266ControllerWifiClient_isDHCP = 1;
bool ESP8266ControllerWifiClient_IsNeedReconect = 0;
bool ESP8266ControllerWifiClient_workStatus = 1;
char ESP8266ControllerWifiClient_SSID[40] = "Xiaomi";
char ESP8266ControllerWifiClient_password[40] = "84veros86wifi";
IPAddress ESP8266ControllerWifiClient_ip(0, 0, 0, 0);
IPAddress  ESP8266ControllerWifiClient_dns (0, 0, 0, 1);
IPAddress  ESP8266ControllerWifiClient_gateway (0, 0, 0, 1);
IPAddress ESP8266ControllerWifiClient_subnet (255, 255, 255, 0);
uint8_t ESP8266ControllerWifiClient_mac[6] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
bool _gtv1;
bool _gen1I = 0;
bool _gen1O = 0;
unsigned long _gen1P = 0UL;
bool _gen2I = 0;
bool _gen2O = 0;
unsigned long _gen2P = 0UL;
bool _count1I = 0;
unsigned long _count1_Value = 0UL;
void setup()
{
WiFi.mode(WIFI_STA);
_esp8266WifiModuleClientReconnect();
pinMode(2, OUTPUT);

  Serial.begin(115200);
   Blynk.begin(auth_227476896_2, ESP8266ControllerWifiClient_SSID, ESP8266ControllerWifiClient_password);
Blynk.connect();
int mytimeout = millis() / 1000;
while (Blynk.connect() == false) {
  if((millis() / 1000) > mytimeout + 8){  // try for less than 9 seconds
    break;
  }
}
 




}
void loop()
{if(ESP8266ControllerWifiClient_IsNeedReconect) {_esp8266WifiModuleClientReconnect(); ESP8266ControllerWifiClient_IsNeedReconect = 0; }
ESP8266ControllerWifiClient_status = WiFi.status() == WL_CONNECTED;
if (ESP8266ControllerWifiClient_status) { if ( ! ESP8266ControllerWifiClient_HRD) { ESP8266ControllerWifiClient_ip =  WiFi.localIP();
ESP8266ControllerWifiClient_subnet =  WiFi.subnetMask();
ESP8266ControllerWifiClient_gateway =  WiFi.gatewayIP();
ESP8266ControllerWifiClient_dns =  WiFi.dnsIP();
WiFi.macAddress(ESP8266ControllerWifiClient_mac);
ESP8266ControllerWifiClient_HRD = 1;
}} else {ESP8266ControllerWifiClient_HRD = 0;}





//Плата:1
_gtv1 = ESP8266ControllerWifiClient_status;
if (1) { if (! _gen2I) { _gen2I = 1; _gen2O = 1; _gen2P = millis(); } } else { _gen2I = 0 ; _gen2O= 0;}
if (_gen2I) {  if ( _isTimer ( _gen2P , 500 )) { _gen2P = millis(); _gen2O = ! _gen2O;}}
digitalWrite(2, !(_gen2O));

//Плата:2
if (_gtv1 == 1) {
{
  if(Blynk.connect() == true){
    Blynk.run();
  }
}
}

//Плата:3
if (_gtv1 == 1) {
if (1) { if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = millis(); } } else { _gen1I = 0 ; _gen1O= 0;}
if (_gen1I) {  if ( _isTimer ( _gen1P , 500 )) { _gen1P = millis(); _gen1O = ! _gen1O;}}
if (_gen1O){
if ( ! _count1I) {
_count1I = 1;
_count1_Value = _count1_Value + 1;
}} else {
_count1I = 0;}
virt_203190254_1 = _count1_Value;

  Send_203190254_1();
}




}
bool _isTimer(unsigned long startTime, unsigned long period )
  {
  unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
  }
void Send_203190254_1()
{
 
    if(virt_203190254_1 != input_OldValue_203190254_1)
    {
        Blynk.virtualWrite(V0, virt_203190254_1);
        input_OldValue_203190254_1 = virt_203190254_1;
    }
  
}
int hexStrToInt(String instring)
{
  byte len = instring.length();
  if  (len == 0) return 0;
  int result = 0;
  for (byte i = 0; i < 8; i++)   // только первые 8 цыфар влезуть в uint32
  {
    char ch = instring[i];
    if (ch == 0) break;
    result <<= 4;
    if (isdigit(ch))
      result = result | (ch - '0');
    else result = result | (ch - 'A' + 10);
  }
  return result;
}
void _esp8266WifiModuleClientReconnect()
{
if( _checkMacAddres(ESP8266ControllerWifiClient_mac)) {  wifi_set_macaddr(0, const_cast<uint8*>(ESP8266ControllerWifiClient_mac));}
if( ESP8266ControllerWifiClient_isDHCP) { WiFi.config(0U, 0U, 0U, 0U, 0U); } else {
WiFi.config(ESP8266ControllerWifiClient_ip, ESP8266ControllerWifiClient_gateway, ESP8266ControllerWifiClient_subnet, ESP8266ControllerWifiClient_dns , ESP8266ControllerWifiClient_dns );
}
WiFi.begin(ESP8266ControllerWifiClient_SSID, ESP8266ControllerWifiClient_password);
}
bool _checkMacAddres(byte array[])
{
  bool result = 0;
  for (byte i = 0; i < 6; i++)
  {
    if (array[i] == 255) {
      return 0;
    }
    if (array[i] > 0 ) {
      result = 1;
    }
  }
  return result;
}
Ну для начала Код в студию.
Или :)
– Слухай сюда! Положь колдобину со стороны загогулины и два раза дергани за пимпочки. Опосля чего долбани плюхалкой по кувыкалке и, кады чвокнет, – отскочь дальшее, прикинься ветошью и не отсвечивай. Потому как она в энто время шмяк тудыть, сюдыть, ёксель-моксель, ёрш твою медь... Пш-ш-ш! – И ждешь пока остынет. Остыло – подымаесся, вздыхаешь. Осторожненько вздыхаешь, про себя, шобы эта быдла не рванула! И бегишь за угол за пол-литрой. Потому как пронесло!
 

svs2007m

Active member
Несколько "'экзотическое" подключение к облачному серверу Blynk.
1. В базовых примерах да и по жизни с первого раза к нему конектится --- while зачем ? Может лучше по таймерам
типа
Код:
void setup()  {
timer.setInterval(30000L, reconnectBlynk);   // проверяем каждые ... секунд, если подключение к серверу Blynk
//....
}
//----------
void loop() {
  if (Blynk.connected()) Blynk.run();        // Запуск Blynk
//.....
}
//----------
void reconnectBlynk() {                    // функция проверяет соединение с сервером Blynk
  if (!Blynk.connected()) {             
    if (Blynk.connect())                
      BLYNK_LOG("Reconnected");            // выводим в лог
    else
      BLYNK_LOG("Not reconnected");    
  }
}
2. А ошибки после удачной компиляции НО зависанию МК можно глянуть через утилиту

3. Работа МК без подключения WiFi здесь осуждалась и не раз. Поиск в пощь )
 
Сверху Снизу