первая автоматизация
До этого момента ioBroker собирал данные. Теперь мы хотим, чтобы что-то происходило автоматически. Мы создадим простейшее разумное правило: если состояние меняется, выполнить какое-то действие . Всё остальное — это вариации этого правила.
Что вам нужно
Адаптер JavaScript . Он объединяет Blockly, правила, JavaScript и TypeScript, позволяя использовать все четыре метода одновременно.
- На вкладке «Адаптер» после
javascriptНайдите и создайте экземпляр. - Затем слева появится новая вкладка « Скрипты» .
Вам также понадобятся две точки данных: одна, которая изменяется, и одна, которую вы можете установить. Если вы еще не подключили ни одного устройства, вы можете добавить их на вкладке «Объекты» в разделе…0_userdata.0 Вы определяете две пользовательские точки данных: одну числового типа и одну логического типа. Это наиболее удобный способ для практики, поскольку вы можете настраивать обе точки вручную.
Для тренировки создайте две собственные точки данных в следующем порядке:0_userdata.0 : тот, который меняется, и тот, который вы можете установить.
Блочный текст или текст
| Блокли | JavaScript | |
|---|---|---|
| операция | Сборка строительных блоков | Кран |
| Подходит для | Начало работы и четкие правила | Всё, что становится длиннее |
| Ошибка | Практически невозможно допустить опечатки | Возможны опечатки. |
Для первого правила мы будем использовать Blockly. Переключиться на другой сервис позже будет легко: Blockly генерирует JavaScript в фоновом режиме, и вы можете его просмотреть.
Правило строится
- На вкладке «Скрипты» создайте новый скрипт Blockly и дайте ему имя, которое впоследствии будет указывать на его назначение.
- В группе «Триггеры» выберите блок для изменения состояния и поместите его в рабочую область. Система запрашивает три параметра: какое состояние выбрать, что вызывает реакцию и какой тип изменения.
- Выберите точку данных для наблюдения.
- В группе «Действия» вставьте блок для установки состояния под триггером и введите вторую точку данных и желаемое значение.
- Сохраните и запустите скрипт.
Чтобы проверить это, вручную измените первую точку данных на вкладке «Объекты» и посмотрите, изменится ли вторая точка данных.
Компоненты, находящиеся вне триггера, выполняются ровно один раз, а именно при запуске скрипта. Это одно из самых распространенных заблуждений на начальном этапе.
Три классические ошибки новичков
Запутанные команды и обратная связь. Каждое состояние, помимо своего значения, имеет маркер:ack = false означает «кто-то этого хочет».ack = true Это означает «так оно и есть». Триггер, реагирующий на оба события, срабатывает дважды.
Петля обратной связи. Скрипт A изменяет точку данных 1, что запускает скрипт B, который изменяет точку данных 2, которая, в свою очередь, запускает скрипт A. Это видно в журнале по появлению одних и тех же строк в быстрой последовательности.
Слишком много всего в одном скрипте. Лучше иметь несколько небольших скриптов с описательными названиями, чем один, который пытается делать всё. В противном случае, через полгода вы даже не вспомните, зачем загорается лампочка.
Если это не так
Каждый скрипт имеет свой собственный вывод в лог, и на вкладке «Логики» отображается информация о проблемах, с которыми столкнулся экземпляр JavaScript. Запись в логе — наиболее полезный инструмент для устранения неполадок: она показывает, действительно ли сработал триггер.
Что произойдет дальше?
Отдельные группы строительных блоков и переход на JavaScript описаны в разделе Blockly . Обзор всех способов написания логики находится в разделе «Логика и автоматизация» .
Далее в уроке: первая визуализация .