Недельное расписание работы оборудования

Пример написания скрипта правил управления работой штор, теплых полов и т.п. по активации уставки в определенное время определенного дня недели или набора дней недели (будни, выходные)


Данный пример не рекомендуется к использованию без знания программирования на JavaScript, так как частично потребуется адаптация кода под свою конфигурацию.
Например, чтобы добавить Теплый пол в комнату, в интерфейсе сейчас нет кнопки “+”, а необходимо вручную добавить секцию в файле конфигурации.

Секция
    {
        "alias": "convector",
        "floor": [
            {
                "hour": 6,
                "minute": 0,
                "setpoint": 26,
                "weekday": "==Ежедневно=="
            },
            {
                "hour": 9,
                "minute": 0,
                "setpoint": 21,
                "weekday": "==Ежедневно=="
            },
            {
                "hour": 18,
                "minute": 0,
                "setpoint": 26,
                "weekday": "==Ежедневно=="
            },
            {
                "hour": 21,
                "minute": 0,
                "setpoint": 21,
                "weekday": "==Ежедневно=="
            }
        ],
        "name": "ТЕПЛЫЙ ПОДОКОННИК 'ПОСТИРОЧНАЯ'",
        "type": "floor"
    },

Используйте его в качестве основы для доработки и делитесь полученными результатами.

Файл 10_schedules.js (6,6 КБ) следует установить в директорию /mnt/data/etc/wb-rules
Файл wb-mqtt-shedules.conf (8,9 КБ) в директорию /mnt/data/etc/
Файл wb-mqtt-schedules.schema.json (8,8 КБ) в директорию /usr/share/wb-mqtt-confed/schemas/

Соответственно, чтобы правило могло менять уставки при наступлении времени из расписания их необходимо иметь или создать.
В моем примере эти уставки в строках вида

dev[“setpoints_curtain/” + rooms[s] + “_position”] = parseInt(scheduledSetpoint[s]);
dev[“setpoints_floor/” + rooms[s] + “_temp”] = parseInt(scheduledSetpoint[s]);
dev[“setpoints_radiator/” + rooms[s] + “_temp”] = parseInt(scheduledSetpoint[s]);

В местах, выделенных жирным, нужно подставить свои.

Добавлю в качестве примера настройку управления теплым полом

Аналогично, добавляете файл 04_temperature.js (8,0 КБ) в в директорию /mnt/data/etc/wb-rules
файл moduleHeatersControl.js (5,9 КБ) в директорию /mnt/data/etc/wb-rules-modules
файл wb-mqtt-setpoints.conf (31,8 КБ) в директорию /mnt/data/etc/
файл wb-mqtt-setpoints.schema.json (18,8 КБ) в директорию /usr/share/wb-mqtt-confed/schemas/

Должно получиться такое визуальное представление

Здесь значение поля Код должно совпадать со значением "alias": "guest_wc", в конфигурационном файле wb-mqtt-shedules.conf

2 Likes

Тут используется механизм кастомных конфигурационных файлов, пример которого описан в Примеры правил — Wiren Board

1 Like

Упакованные файлы из примеров
wirenboard files.zip (14,4 КБ)