Всем доброго дня!
Сегодня я хочу поговорить о том, какой есть интересный способ писать сценарии для оборудования в системе MajorDoMo.
Зачастую написание сценария ассоциируется с программированием и, на самом деле, это так.
Однако, само по себе программирование бывает разным и не стоит заранее настраивать себя на то, что это будет сложно и скучно.
В этой небольшой статье я хочу рассказать, как может быть “по-другому”.
Большинство из нас при упоминании “программирования” представляет себе длинные полосы кода, “магию” которого постигают лишь избранные.
Ну, во-первых, это предубеждение, по крайней мере, если речь идёт о сценариях в MajorDoMo -- мы постарались упростить до минимума необходимые навыки в написании кода, так что тот, кто хоть как-то сталкивался с программированием, сможет очень быстро освоить базовые конструкции языка PHP и тот набор функций, которые мы реализовали для работы с автоматикой.
Тем не менее, мы пошли ещё дальше и задумались о том, можно ли создавать сценарии в MajorDoMo вовсе без написания кода?
И в наших поисках вышли на такой проект, как Google Blockly.
Этот проект представляет собой инструмент так называемого “визуального программирования”, когда вместо написания кода применяются графические блоки и для написания программы пользователю достаточно лишь составить их в нужном порядке. Google Blockly является проектом с открытым исходным кодом с лицензией, позволяющей свободно использовать этот инструмент как часть любого другого проекта, так что мы с удовольствием внедрили его в MajorDoMo и теперь везде, где в MajorDoMo можно вставить свой код, появился переключатель перехода в режим программирования с помощью Blockly. Например, вот как это выглядит этот переключатель в разделе сценариев:
Таким образом, выбрав режим программирования Blockly можно нажать на ссылку Редактировать и откроется окно визуального редактора:
Как мы видим, в левой части идёт список основных категорий, на которые разбиты все доступные блоки. По клику на категорию открывается список блоков и любой из доступных блоков можно переместить в правую часть в основную рабочую область, где как раз строится наша программа. По нажатию на кнопку OK в верхней правой части окна, наша программа автоматически сохранится в качестве сценария для системы MajorDoMo.
На самом деле, в результате работы в среде Blockly мы получаем всё тот же код, который можно посмотреть, переключившись в режим PHP:
Но переключаться в этот режим в большинстве случаев и не понадобится, так как все возможности системы доступны и режиме визуального редактирования блоков.
Какие же бывают блоки и что с ними можно делать? Во-первых, блоки делятся по типам “встраивания” их в программу. Некоторые блоки могут быть встроены последовательно друг за другом, как определенные инструкции (блок “произнести”):
Другие же блоки могут быть использованы как параметры (текстовые фразы в примере выше). Визуально вариант использования блока четко определяется по его внешнему виду, так что тот, кто хоть раз собирал паззл, сразу поймет, как блоки стыкуются друг с другом.
Существуют также блоки, которые могут включать в себя “дочерние” наборы блоков. Например блоки из категории Логика или Циклы:
Таким образом, можно собирать довольно сложные конструкции, не заботясь о том, что необходимо знать особенности написания кода для их реализации.
Для удобства использования блоков они разбиты на категории.
Пройдёмся по основным категориям и назначению блоков, в них представленных:
- Общее -- некие общие функции системы MajorDoMo (произнести, проиграть звуковой файл и т.п.)
- Объекты -- блоки работы с объектами, их методами и свойствами
- Время -- блоки работы с текущим временем и таймерами
- Логика -- блоки условий и логических операций
- Циклы -- блоки повторов и циклов
- Математика -- математические операции
- Текст -- блоки работы с текстовыми строками
- Списки -- работа со списками (массивами данных)
- Цвет -- работа с цветом
- Переменные -- возможность создания и повторного использования переменных
- Функции -- блоки создания собственных функций и их применение в программе
- Простые устройства -- блоки операций со всеми добавленными в систему устройствами и их данными
- Сценарии: … -- созданные пользователем сценарии (каждый из сценариев автоматически становится блоком, который можно использовать в другом сценарии).
Из полезных возможностей редактора можно также отметить функцию добавления комментариев, доступную по клику правой кнопкой мыши на любой выбранный блок:
Аналогично по правому клику доступен блок сервисных функций, включающий возможность копирования блока, его отключение и т.п.
Подводя итоги, можно сказать, что работа в режиме Blockly является простой и увлекательной альтернативой написанию кода, так что даже тот, кто никогда не сталкивался с программированием, может легко создавать сценарии автоматики в системе MajorDoMo.