Сразу про телеметрию
В обычной жизни проверить доступность сетевого устройства легко: отправляем на него ping, если прошел - значит "живой".
ESPEasy пинговать не умеет.
Поэтому единственное удобное решение - это чтобы все подчиненные устройства слали на "голову" сигнал о том, что живы, а "голова" бы регулярно забывала этот факт до следующего подтверждения. Тут хорошо, что таймеры в ESPEasy сначала ждут, а только потом запускаются, так мы можем оставить еще один шанс подчиненным устройствам "ожить". Схема работы выглядит так:
1. Подчиненное устройство включается. Каждые 9 секунд оно посылает на "голову" сигнал, что оно живо.
2. На голове мы создаем Dummy Device (в ESPEasy это единственный способ хранить переменные) и принятые сигналы сохраняем в нем.
3. Раз в 50 секунд мы проверяем, все ли подчиненные живы. Если какой-то отвалился - ставим таймер тревоги, с задержкой в 10 секунд (чтобы дать шанс, ну вы поняли)
4. Таймер тревоги еще раз проверяет, жив ли подчиненный, и если нет - выводит предупреждение и перезапускает себя.
5. Если таймер тревоги обнаруживает, что подчиненный ожил, он ничего не делает. То есть, отрубается.
Во вкладке Rules это выглядит так:
//запускаем таймер телеметрии со стартом системы
On System#Boot do
timerSet,1,10
endon
On Rules#Timer=1 do
if gateway#gw1=0
timerSet,5,10
endif
TaskValueSet 3,1,0
timerSet,1,50
endon
On Rules#Timer=5 do
if gateway#gw1=0
GPIO,12,1
timerSet,2,0
LCD,1,4,-!NE--RABOTAET!--
timerSet,5,1
endif
endon
Команда TaskValueSet отвечает за запись переменных в Dummy Device. Тот что отвечает за ворота - третий по счету, параметр - первый по счету, а записываем 0, то есть "не работает". Вот и получилось TaskValueSet 3,1,0
В обычной жизни проверить доступность сетевого устройства легко: отправляем на него ping, если прошел - значит "живой".
ESPEasy пинговать не умеет.
Поэтому единственное удобное решение - это чтобы все подчиненные устройства слали на "голову" сигнал о том, что живы, а "голова" бы регулярно забывала этот факт до следующего подтверждения. Тут хорошо, что таймеры в ESPEasy сначала ждут, а только потом запускаются, так мы можем оставить еще один шанс подчиненным устройствам "ожить". Схема работы выглядит так:
1. Подчиненное устройство включается. Каждые 9 секунд оно посылает на "голову" сигнал, что оно живо.
2. На голове мы создаем Dummy Device (в ESPEasy это единственный способ хранить переменные) и принятые сигналы сохраняем в нем.
3. Раз в 50 секунд мы проверяем, все ли подчиненные живы. Если какой-то отвалился - ставим таймер тревоги, с задержкой в 10 секунд (чтобы дать шанс, ну вы поняли)
4. Таймер тревоги еще раз проверяет, жив ли подчиненный, и если нет - выводит предупреждение и перезапускает себя.
5. Если таймер тревоги обнаруживает, что подчиненный ожил, он ничего не делает. То есть, отрубается.
Во вкладке Rules это выглядит так:
//запускаем таймер телеметрии со стартом системы
On System#Boot do
timerSet,1,10
endon
On Rules#Timer=1 do
if gateway#gw1=0
timerSet,5,10
endif
TaskValueSet 3,1,0
timerSet,1,50
endon
On Rules#Timer=5 do
if gateway#gw1=0
GPIO,12,1
timerSet,2,0
LCD,1,4,-!NE--RABOTAET!--
timerSet,5,1
endif
endon
Команда TaskValueSet отвечает за запись переменных в Dummy Device. Тот что отвечает за ворота - третий по счету, параметр - первый по счету, а записываем 0, то есть "не работает". Вот и получилось TaskValueSet 3,1,0