первая автоматизация

До этого момента ioBroker собирал данные. Теперь мы хотим, чтобы что-то происходило автоматически. Мы создадим простейшее разумное правило: если состояние меняется, выполнить какое-то действие . Всё остальное — это вариации этого правила.

Что вам нужно

Адаптер JavaScript . Он объединяет Blockly, правила, JavaScript и TypeScript, позволяя использовать все четыре метода одновременно.

  1. На вкладке «Адаптер» послеjavascript Найдите и создайте экземпляр.
  2. Затем слева появится новая вкладка « Скрипты» .

Вам также понадобятся две точки данных: одна, которая изменяется, и одна, которую вы можете установить. Если вы еще не подключили ни одного устройства, вы можете добавить их на вкладке «Объекты» в разделе…0_userdata.0 Вы определяете две пользовательские точки данных: одну числового типа и одну логического типа. Это наиболее удобный способ для практики, поскольку вы можете настраивать обе точки вручную.

Der Objektbaum mit selbst angelegten Datenpunkten unter 0_userdata.0

Для тренировки создайте две собственные точки данных в следующем порядке:0_userdata.0 : тот, который меняется, и тот, который вы можете установить.

Блочный текст или текст

БлоклиJavaScript
операцияСборка строительных блоковКран
Подходит дляНачало работы и четкие правилаВсё, что становится длиннее
ОшибкаПрактически невозможно допустить опечаткиВозможны опечатки.

Для первого правила мы будем использовать Blockly. Переключиться на другой сервис позже будет легко: Blockly генерирует JavaScript в фоновом режиме, и вы можете его просмотреть.

Правило строится

  1. На вкладке «Скрипты» создайте новый скрипт Blockly и дайте ему имя, которое впоследствии будет указывать на его назначение.
  2. В группе «Триггеры» выберите блок для изменения состояния и поместите его в рабочую область. Система запрашивает три параметра: какое состояние выбрать, что вызывает реакцию и какой тип изменения.
  3. Выберите точку данных для наблюдения.
  4. В группе «Действия» вставьте блок для установки состояния под триггером и введите вторую точку данных и желаемое значение.
  5. Сохраните и запустите скрипт.

Чтобы проверить это, вручную измените первую точку данных на вкладке «Объекты» и посмотрите, изменится ли вторая точка данных.

Компоненты, находящиеся вне триггера, выполняются ровно один раз, а именно при запуске скрипта. Это одно из самых распространенных заблуждений на начальном этапе.

Три классические ошибки новичков

Запутанные команды и обратная связь. Каждое состояние, помимо своего значения, имеет маркер:ack = false означает «кто-то этого хочет».ack = true Это означает «так оно и есть». Триггер, реагирующий на оба события, срабатывает дважды.

Петля обратной связи. Скрипт A изменяет точку данных 1, что запускает скрипт B, который изменяет точку данных 2, которая, в свою очередь, запускает скрипт A. Это видно в журнале по появлению одних и тех же строк в быстрой последовательности.

Слишком много всего в одном скрипте. Лучше иметь несколько небольших скриптов с описательными названиями, чем один, который пытается делать всё. В противном случае, через полгода вы даже не вспомните, зачем загорается лампочка.

Если это не так

Каждый скрипт имеет свой собственный вывод в лог, и на вкладке «Логики» отображается информация о проблемах, с которыми столкнулся экземпляр JavaScript. Запись в логе — наиболее полезный инструмент для устранения неполадок: она показывает, действительно ли сработал триггер.

Что произойдет дальше?

Отдельные группы строительных блоков и переход на JavaScript описаны в разделе Blockly . Обзор всех способов написания логики находится в разделе «Логика и автоматизация» .

Далее в уроке: первая визуализация .