Tasmota. Rules (Тасмота рулит)

18 декабря 2020 г. · Sonoff, Tasmota

Оказывается прошивка 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 минут), а не каждую секунду. 


Комментарии (6)

Алексей · 23 января 2022 г.
как сделать так что бы при пропадании датчика ds18b20 более чем на 2 минуты, устройство перезагружалось бы автоматом! нигде не могу найти примера =(
User078 · 25 января 2022 г.
Вроде так должно работать, все можно найти в правилах и командах на сайте тасмота Rule1 ON tele-DS18B20#temperature DO RuleTimer1 120 ENDON ON Rules#Timer=1 DO Restart 1 ENDON
Адетуоч · 5 марта 2022 г.
Добрый день. А как бы сделать правило Если мощность в моменте менее 150Ватт переключить Дважды, то есть передернуть питание на компьютере
Rezolut · 9 февраля 2024 г.
Максим, здравствуйте. Хотел задать вопрос по правилам(rules для Tasmoto). На esp8266 подключил датчик bme680 и rgb-диод. Идея такая: при превышении определенной температуры на датчике, диод должен загореться, при понижении-погаснуть. Сервера нет, ничего никуда не отправляется, все должно быть реализовано на esp. Правило пишу такое: Rule1 on bmr680#temperature>24 do power6 1 endon Ничего не происходит, а при изменении температуры появляется сообщение command error. Помогите пожалуйста понять, где ошибаюсь и что делаю не так.
Agapov Max · 9 февраля 2024 г.
Здравствуйте. Покажите вывод из консоли tasmota. Чтобы содержались события вкл\выключения и получения статуса
Rezolut · 13 февраля 2024 г.
Здравствуйте: 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"}