Оказывается прошивка tasmota - это не просто красивый веб-интерфейс и совместимость с Domoticz. Её возможности существенно расширяются при использовании Rules.
Это позволяет использовать Sonoff с прошивкой на борту как самостоятельное устройство без необходимости подключения к системам умного дома и вообще к сети Wi-Fi. Правила можно прописать при компиляции прошивки, и тем самым получить 100% автономное устройство.
Оставлю тут простой пример правила, которое включает\выключает свет при определенных показаниях температурного датчика AM2301. Как подключить датчик температуры и влажности к Sonoff можно почитать тут. Как прошить.
Подключаемся к консоли через веб-морду по адресу http://ip-address/cn? или жмём Консоль на главной странице
Тут нам нужно найти название датчика и его показания. В моём случае смотрим на строчку
11:17:53 MQT: tele/tasmota_506865/SENSOR = {"Time":"2020-12-18T11:17:53","AM2301":{"Temperature":-5.4,"Humidity":99.9,"DewPoint":-5.4},"TempUnit":"C"}
Видим датчик AM2301 и его показания температуры и влажности. Следовательно отслеживать будем его показания AM2301#Temperature
В роли действия будет выступать выключение - Power1 0
Смотрим синтаксис команд, и получаем следующее
rule1 on AM2301#Temperature<5 do Power1 0 endon
Тут всё просто, если значение температуры ниже 5 (градусов), то отключаем питание.
Копируем и вставляем правило в окно ввода команд и в ответ получаем
13:18:15 CMD: rule1 on AM2301#Temperature<5 do Power1 0 endon
13:18:15 RUL: Stored uncompressed, would compress from 41 to 33 (-20%)
13:18:15 MQT: stat/tasmota_506865/RESULT = {"Rule1":"OFF","Once":"OFF","StopOnError":"OFF","Length":41,"Free":470,"Rules":"on AM2301#Temperature<5 do Power1 0 endon"}
Видим что правило в положении OFF. Чтобы его активировать, набираем
rule1 on
13:20:50 CMD: rule1 on
13:20:50 MQT: stat/tasmota_506865/RESULT = {"Rule1":"ON","Once":"OFF","StopOnError":"OFF","Length":41,"Free":470,"Rules":"on AM2301#Temperature<5 do Power1 0 endon"}
13:20:52 RUL: AM2301#TEMPERATURE<5 performs "Power1 0"
13:20:52 MQT: domoticz/in = {"idx":142,"nvalue":0,"svalue":"","Battery":100,"RSSI":5}
13:20:52 MQT: stat/tasmota_506865/RESULT = {"POWER":"OFF"}
13:20:52 MQT: stat/tasmota_506865/POWER = OFF
Теперь в консоль раз в секунду сыпятся сообщения, что питание OFF. Допилим
rule1
on tele-AM2301#Temperature<5 do Power1 0 endon
Как видно, добавили к имени датчика tele-AM2301. Это значит что показания будут передаваться в правило с определенным интервалом (по умолчанию 5 минут), а не каждую секунду.
как сделать так что бы при пропадании датчика ds18b20 более чем на 2 минуты, устройство перезагружалось бы автоматом! нигде не могу найти примера =(
ОтветитьУдалитьВроде так должно работать, все можно найти в правилах и командах на сайте тасмота
УдалитьRule1
ON tele-DS18B20#temperature DO RuleTimer1 120 ENDON
ON Rules#Timer=1 DO Restart 1 ENDON
Добрый день. А как бы сделать правило
ОтветитьУдалитьЕсли мощность в моменте менее 150Ватт переключить Дважды, то есть передернуть питание на компьютере
Максим, здравствуйте.
ОтветитьУдалитьХотел задать вопрос по правилам(rules для Tasmoto).
На esp8266 подключил датчик bme680 и rgb-диод.
Идея такая: при превышении определенной температуры на датчике, диод должен загореться, при понижении-погаснуть. Сервера нет, ничего никуда не отправляется, все должно быть реализовано на esp.
Правило пишу такое:
Rule1 on bmr680#temperature>24 do power6 1 endon
Ничего не происходит, а при изменении температуры появляется сообщение command error.
Помогите пожалуйста понять, где ошибаюсь и что делаю не так.
Здравствуйте.
УдалитьПокажите вывод из консоли tasmota. Чтобы содержались события вкл\выключения и получения статуса
Здравствуйте:
Удалить12:17:03.314 CMD: rule1 on BME680#Temperature>23 do Power6 1 endon
12:17:03.319 RUL: Stored uncompressed, would compress from 42 to 35 (-17%)
12:17:03.322 RSL: RESULT = {"Rule1":{"State":"ON","Once":"OFF","StopOnError":"OFF","Length":42,"Free":469,"Rules":"on BME680#Temperature>23 do Power6 1 endon"}}
12:17:08.327 RUL: BME680#TEMPERATURE>23 performs "Power6 1"
12:17:08.331 RSL: RESULT = {"Command":"Error"}