Блокли
Blockly — это графический редактор: логика собирается из строительных блоков, которые просто встают на свои места. Как только вы связали триггер с действием, вы написали работающую программу, не набрав ни одной строчки кода.
Blockly является частью JavaScript-адаптера . Новый скрипт Blockly создается в разделе «Администрирование» в подразделе «Скрипты» .
Слева — палитра, посередине — скрипт: триггер для состояния, ниже — условие и три действия.
Как устроен скрипт Blockly
Практически каждый скрипт начинается с триггера , за которым следует описание того, что должно произойти. Наиболее распространенным триггером является изменение состояния, вторым по распространенности — изменение времени.
Скрипт может иметь несколько триггеров. Компоненты, находящиеся вне триггера, выполняются ровно один раз: при запуске скрипта. Обычно это место для ввода начальных значений.
Группы строительных блоков
Палитра слева отсортирована по задачам. Основные группы:
| группа | За что |
|---|---|
| Курок | Триггеры: изменение состояния, расписания, астрономические события, такие как закат. |
| Системные блоки | Чтение и запись состояний, создание объектов, запрос состояний |
| Блоки действий | Вывод логов, HTTP-запросы, команды операционной системы, электронная почта |
| SendTo | Сообщения другим адаптерам, таким как Telegram, Pushover или Signal. |
| Тайм-ауты | Задержки, повторяющееся исполнение, отмены |
| Дата и время | Сравнивать и форматировать временные точки, создавать разности во времени. |
| Конвертация | Преобразование текста в число, число в текст, округление, форматы времени. |
| Доступ к данным | Поле из центральной системы управления данными доступа, см. ниже. |
| Логика, циклы, математика, текст, списки, цвет | Обычные программные блоки |
| Переменные и функции | Промежуточные значения и настраиваемые, многократно используемые блоки. |
Полное описание каждого отдельного компонента можно найти в справочнике Blockly для JavaScript-адаптера .
Самый важный компонент: спусковой механизм.
Блок запуска состояний запрашивает три параметра: какое состояние выбрать , на что реагировать и когда .
В контексте вопроса «что» различие между изменением и обновлением имеет решающее значение. Обновление происходит каждый раз, когда адаптер записывает значение — даже если оно остается неизменным. Изменение происходит только тогда, когда значение действительно отличается. Датчик температуры, который сообщает одно и то же значение каждые 30 секунд, сработает 2880 раз в день, если это обновление , и только когда температура изменится, если это изменение .
Триггер также различает ack = false (команда устройству) и ack = true (ответ устройства). Реагирование на оба варианта создает петли обратной связи. Как правило, следует реагировать на обратную связь (ack = true ) react, команды (ack = false Отправьте это сами.
Пароли не должны содержаться в скрипте.
Пароль, хранящийся в виде текста внутри модуля скрипта, также включается в экспорт, резервную копию и каждую копию скрипта. Начиная с версии 10.1.1 адаптера JavaScript, для этой цели доступен модуль «Данные доступа» : он извлекает одно поле из центральной системы управления данными доступа, которая находится в панели администратора в разделе «Основные настройки» → «Данные доступа ». Затем скрипт указывает, к каким данным доступа он обращается; значение извлекается при выполнении и немедленно обновляется, если оно изменяется в панели администратора.
В JavaScript это соответствует объекту.SECRETS , примерноSECRETS.Kamerakennwort.key Значения декодированы, но доступны только для чтения.
Blockly в версии 13
В версии 10.1.0 адаптера JavaScript (август 2026 г.) Blockly 11 заменяется на Blockly 13. Сгенерированный код остаётся прежним, и существующие скрипты продолжают работать без изменений; сам редактор в некоторых местах выглядит иначе. Стоит отметить два момента:
- В первых версиях после этого скрипты с именованными таймаутами, интервалами или расписаниями больше нельзя было сохранять, а блок комментариев был непригоден для использования. Обе проблемы исправлены; пользователям Blockly следует обновить свой адаптер как минимум до версии 10.1.4.
- Начиная с версии 10.1.4, рабочее пространство соответствует цветам выбранной темы оформления административной панели. Ранее во всех темных темах оно было серым.
От строительного блока к коду
Вкладка над рабочей областью отображает сгенерированный JavaScript-код для каждого скрипта Blockly. Это не просто рекламный трюк:
- В случае появления сообщения об ошибке в журнале отображается номер строки сгенерированного кода, а не номер компонента.
- Любой, кто захочет продолжить работу над скриптом Blockly на JavaScript, получит шаблон. Обратное невозможно — JavaScript нельзя использовать для создания строительных блоков.
Когда Блокли перестаёт носить
Блокли становится неудобным в использовании, как только
- Эту же цепочку пришлось бы повторить для десяти ламп.
- Данные хранятся в списках или таблицах.
- Рабочее пространство можно просмотреть только при сильном увеличении.
Затем настало время переключиться на JavaScript . Полностью переходить на JavaScript не обязательно: скрипты Blockly и JavaScript работают параллельно и обмениваются информацией о своем состоянии.
Помощь в создании: ИИ-помощника
Начиная с 10-й версии адаптера JavaScript, редактор скриптов включает окно чата для помощи в создании скриптов. Для Blockly это означает: опишите задачу словами, и помощник ответит вам готовыми шаблонами. Сначала они отображаются в виде предварительного просмотра и добавляются в рабочую область только при нажатии кнопки; существующие шаблоны, соответствующие предложению, заменяются, а все остальное добавляется. Таким образом, существующий скрипт не перезаписывается.
Дополнительные возможности помощника в редакторе JavaScript описаны в разделе JavaScript . Там же перечислены конкретные условия; наиболее важное из них — в первую очередь:
Языковая модель не принадлежит ioBroker. Для работы помощника требуется собственный доступ, либо через одного из поддерживаемых провайдеров, либо к модели в вашей собственной сети. Без зарегистрированного ключа функция работать не будет.
И независимо от того, кто написал это предложение: сгенерированные строительные блоки — это всего лишь предложение, а не результат. Их следует проверить и протестировать, прежде чем применять в системе отопления.