Блокли

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

Blockly является частью JavaScript-адаптера . Новый скрипт Blockly создается в разделе «Администрирование» в подразделе «Скрипты» .

Der Blockly-Editor mit der Baustein-Palette links und einem Skript in der Arbeitsfläche

Слева — палитра, посередине — скрипт: триггер для состояния, ниже — условие и три действия.

Как устроен скрипт 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. Для работы помощника требуется собственный доступ, либо через одного из поддерживаемых провайдеров, либо к модели в вашей собственной сети. Без зарегистрированного ключа функция работать не будет.

И независимо от того, кто написал это предложение: сгенерированные строительные блоки — это всего лишь предложение, а не результат. Их следует проверить и протестировать, прежде чем применять в системе отопления.