проверка online для esp8266 (как правильно?)

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
zoz
Сообщения: 74
Зарегистрирован: Чт авг 11, 2016 1:19 am
Откуда: Киев
Благодарил (а): 6 раз
Поблагодарили: 41 раз

проверка online для esp8266 (как правильно?)

Сообщение zoz » Пн сен 19, 2016 5:26 pm

Возникла необходимость проверить ESP8266 (прошивка wifiot) на "живость".
данные с ESP получаю сценарием espdata, также установлен модуль esp8266_wifiot.

пока сравниваю передаваемый от ESP Uptime с его передыдущем значением:

Код: Выделить всё

 if (gg('ESP01.uptime_old')!=gg('ESP01.uptime')) 
 {
  setGlobal ('ESP01.online',1);
   } else { setGlobal ('ESP01.online',0); }

setGlobal ('ESP01.uptime_old',gg('ESP01.uptime')); 
Но в данном случае есть ложные срабатывания и думаю есть более изящный подход.
Ping устройства, меня не устроил.

Подскажите кто как делал?
Домик Алисы - Orange Pi PC, DietPi | +BroadlinkRM+esp8266(espEasy)+zigbee(sonoff,Aqara)
ipz
Сообщения: 238
Зарегистрирован: Чт ноя 26, 2015 10:54 pm
Благодарил (а): 38 раз
Поблагодарили: 45 раз

Re: проверка online для esp8266 (как правильно?)

Сообщение ipz » Пн сен 19, 2016 8:02 pm

Можно сделать по аналогии с keySensors (я вообще перенес класс Esp8266 в подклассы keySensors).
В методе onChange() написано:

Код: Выделить всё

    $this->setProperty("Alive",1);
    $alive_timeout=(int)$this->getProperty("aliveTimeOut");
    if (!$alive_timeout) {
      $alive_timeout=900; 
    }
    clearTimeOut($obj."_alive");
    setTimeOut($obj."_alive","sg('".$obj.".Alive',0);",$alive_timeout); 
Esp шлет данные каждые 10 мин. При получении данных свойство Alive устанавливается в 1 и устанавливается таймаут на 15 минут (можно поставить любой, по вкусу). Если данные не пришли за это время, то датчик считается "отпавшим".
Ответить