Пользовательские скрипты
Для создания пользовательских скриптов подготовлен файл с набором функций. Также он подключает автозагрузку классов. Таким образом внутри пользовательского скрипта можно получить объект, связанный с любым из имеющихся устройств и посредством его осуществлять отправку команд на устройство или получить текущее состояние датчиков устройства.
Один из пользовательских скриптов - ежеминутный скрипт. В примере он выполняет следующие задачи:
- включение/выключение ночного режима с выдачей соответствующего голосового оповещения;
- озвучивание каждый час текущего времени (если не включен ночной режим или режим охраны);
- получение и озвучивание каждый час текущей температуры воздуха с сайта OpenWeatherMap;
- озвучивание пользовательского сообщения в определённое время (для примера, оповещение о завершении турнира в игре C.A.T.S.).
Переменные, доступные в пользовательских скриптах
- $night bool - признак включенного ночного режима;
- $security bool - признак включенного режима охраны;
- $mute bool - признак отключенного голосового оповещения (включен ночной режим или режим охраны);
- $minute int - текущая минута;
- $hour int - текущий час;
- $time string - текущее время (ЧЧ:ММ).
Доступные функции для пользовательских скриптов
- say($text) - произнести сообщение с помощью TTS;
- getDevice($name) - получить объект для устройства с уникальным именем $name;
- getVar($name) - получить строковую переменную из базы данных с именем $name (поскольку используется PHP, то в переменной могут храниться и числа);
- setVar($name,$value) - установить значение переменной в базе данных с именем $name равным $value;
- getObject($name) - аналог getVar(), но при получении данных производит десериализацию данных;
- setObject($name,$object) - аналог setVar, но при вставке использует сериализацию данных;
- getJson($name) - аналог getVar(), но при получении данных производит декодирование данных из формата JSON;
- setJson($name,$object) - аналог setVar, но при вставке кодирует данные в формат JSON.
Пользовательские скрипты для событий устройств
Каждое из устройств может вызывать события. Для обработки этих событий могут быть вызваны пользовательские скрипты, которые расположены в папке custom/events/. Для каждого события будет вызван соответствующий файл, если он существует, по шаблону UID.php, где UID - это уникальный идентификатор устройства. Файл должен возвращать объект, который имеет методы для событий:
<?php
include '../lib.php';
return new class() {
public function on_event_EVENT($value, $ts) {
//TODO
}
};
Свойству uid класса присваивает значение UID устройства. Для каждого события, на которе необходимо реагировать должен быть создан метод, который использует аргументы $value - значение события и $ts - время события (для архивных данных) или null, если событие произошло прямо сейчас.