BLYNK
BLYNK.IO       📲 GETTING STARTED       📗 DOCS       👉 SKETCH BUILDER

BlynkTimer

Я использую Mega 2560 c ESP8266 в качестве модуля связи. Зачем мне ESP Core? Он не был установлен, теперь установил 2.4.2 - ничего не изменилось.
Blynk 0.5.4 стоит, приложение обновлено, сервер не использую.


Blynk.connectWiFi(ssid, pass);
Blynk.config(wifi,auth);

Так не работает.

I mentioned it in case you did need it… Although using an ESP as shield was inferred, you never mentioned exact hardware used before.

Well… don’t forget to search around this forum for relevant keywords… I use a basic Mega ESP-01 sketch that I posted earlier this month…

Я в своем коде использую один таймер, на 1 сек, у меня LAN соединение. При вызове таймера инструментирую переменную
a = a + 1; //инкрементируем счетчик времени
if (a>59) a = 0;
Разбиваю выполнение функций по разным значениям переменной а.
Например - измерение температуры - раз в минуту

//-----------------------измеряем влажность и темпиратру AM2302-----------------------------------
  if(a==30)   //прошло 60 секунд - измеряем темпиратуру (a - изменяеться от 0 до 60ти)
  { 
    sensors_event_t event;  
    dht.temperature().getEvent(&event);
    if (!isnan(event.temperature)) 
    {
       Blynk.virtualWrite(V7, event.temperature);
       Serial.print("tempiratura = ");
       Serial.println(event.temperature);
    }
  
    dht.humidity().getEvent(&event);
    if (!isnan(event.relative_humidity)) 
    {
      Blynk.virtualWrite(V8, event.relative_humidity);
      Serial.print("vlashnost   = ");
      Serial.println(event.relative_humidity);
    }
  }

каждые 30 секунд измеряем потребление электричества

if(a==21 || a==51)  //выводим мнгновенное потребление в ваттах с усреднением за 30 секунд
  {
    //Serial.print("30 sec = ");
    //Serial.print(impuls_counter_30sec);
    //Serial.println(" impuls");
    potreblenie_vatt = impuls_counter_30sec*120/1.6;
    Blynk.virtualWrite(V56, potreblenie_vatt);
    impuls_counter_30sec = 0;
  }

  if(a==22 || a==52)  //выводим общее потребление энергии в киловаттах
  {
    vsego_kvt = impuls_counter;
    vsego_kvt = vsego_kvt/1600;
    Blynk.virtualWrite(V54, vsego_kvt);
    //Serial.print("impuls_counter = ");
    //Serial.println(impuls_counter);
    //Serial.print("vsego_kvt = ");
    //Serial.println(vsego_kvt);

    vsego_tenge = vsego_kvt * 19;
    Blynk.virtualWrite(V55, vsego_tenge);
  }

И так далее. Не переживаю о пересечении таймеров.

Подсчитал, вывод одной переменной через Blynk.virtualWrite() занимает около 70 мс. Это нормально?

Тоже подсчитывал время выполнения общения с сервером blynk. При работе с LAN интернетом проблем не возникает, даже не было мысли выполнить измерение. Но запустив BLYNK на GSM модуле SIM900 заметил что операции общения с сервером занимают очень долгое время. В частности на включение\выключение светодиода led2.on(); или led2.off(); уходит 300 миллисекунд !!! . Это быстрая операция, на отправку данных , например Blynk.virtualWrite(V24, 4); уходит еще больше времени. Вот такая проблема при работе через GSM канал.

если надо быстрей то выкидывай мегу, и бери arm чип, типа есп8266 или есп32.
также рекомендую использовать команду switch чтоб ifы не плодить