пятница, 18 декабря 2020 г.

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

Оказывается прошивка 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 комментариев :

  1. как сделать так что бы при пропадании датчика ds18b20 более чем на 2 минуты, устройство перезагружалось бы автоматом! нигде не могу найти примера =(

    ОтветитьУдалить
    Ответы
    1. Вроде так должно работать, все можно найти в правилах и командах на сайте тасмота

      Rule1
      ON tele-DS18B20#temperature DO RuleTimer1 120 ENDON
      ON Rules#Timer=1 DO Restart 1 ENDON

      Удалить
  2. Добрый день. А как бы сделать правило
    Если мощность в моменте менее 150Ватт переключить Дважды, то есть передернуть питание на компьютере

    ОтветитьУдалить
  3. Максим, здравствуйте.
    Хотел задать вопрос по правилам(rules для Tasmoto).
    На esp8266 подключил датчик bme680 и rgb-диод.
    Идея такая: при превышении определенной температуры на датчике, диод должен загореться, при понижении-погаснуть. Сервера нет, ничего никуда не отправляется, все должно быть реализовано на esp.

    Правило пишу такое:
    Rule1 on bmr680#temperature>24 do power6 1 endon
    Ничего не происходит, а при изменении температуры появляется сообщение command error.

    Помогите пожалуйста понять, где ошибаюсь и что делаю не так.

    ОтветитьУдалить
    Ответы
    1. Здравствуйте.
      Покажите вывод из консоли tasmota. Чтобы содержались события вкл\выключения и получения статуса

      Удалить
    2. Здравствуйте:
      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"}

      Удалить