Сенсорная панель с подключением по ModBus

27 сентября 2020, 13:08
1600x_image.png?1601046917

Введение

Когда в проекте моего умного дома встал вопрос по управлению электрическим тёплым полом, то появилось сразу много вопросов, как это делать. В планировке было заложено четыре контура тёплого пола – кухня, ванная, холл и прихожая. Все контуры расположены очень близко друг от друга, поэтому удобнее было бы управлять ими всеми с одной точки, расположенной в холле. Самым простым решением было бы расположить четыре панели управления и на каждую из них завести датчик и реле. Городить «батарею» одинаковых датчиков не хотелось, была предпринята попытка всё завести в одно устройство. В процессе было решено отказаться от регулировки температуры с панели управления, а датчики по 1-wire завести напрямую в WirenBoard. От управления требовалась возможность включать/выключать пол и показывать его текущее состояние. При поиске решения для управления была найдена статья Николая Дубровна на Хабре от 2018 года. В статье описывалась сенсорная панель модели 15D от компании Shenzhen GTD IOT Technology. После прочтения, решил заказать себе аналогичную на Alibaba.

О панели

К достоинствам панели можно отнести:
  •  Вполне симпатичный дизайн в белом или чёрном цвете.
  • Подключение по ModBus RTU.
  • Возможность сделать панель на 2, 3, 4, 6, 8 или 10 кнопок (плюс любые другие надписи).

  • Возможность кастомизации иконок и надписей под ними (русский текст сделали без проблем). 
  • Фоновая подсветка панели.
  • Отдельные цветовые индикаторы на каждую кнопку.
  • Питание 12-24В.
  • Установка в стандартный китайский квадратный подрозетник (для панелей до 8 кнопок).

Панели изначально ориентированы на обустройство систем в отелях или больших домах, но кастомизация творит чудеса. После обсуждения с менеджером, был сделан заказ и рисунок-макет на панель белого цвета на 4 кнопки, с подсветкой лунного цвета и индикаторами красного. Заказ оплатил через PayPal. Через несколько дней панель была готова и после финального подтверждения по фотографии отправилась ко мне через EMS. В итоге ко мне приехала вот такая панель.

1600x_image.png?1601045936

Для подключения на WirenBoard был выделен отдельный второй порт RS-485 с параметрами:
  • скорость передачи данных - 19200 бит/с;
  • количество передаваемых бит – 8;
  • количество стоповых бит – 1;
  • контроль чётности – нет проверки.

Регистры получены из скромного pdf-документа от производителя:

Все кнопки могут работать в двух режимах, в зависимости от регистра 47:
  • Режим переключателя. После каждого нажатия, значение регистра 0-3 меняется с 0 на 1 и обратно.
  • Режим «Clear On Read». В данном режиме, после нажатия, значение регистра меняется с 0 на 1, и возвращается автоматически в 0 после опроса по Modbus.

Режим работы светодиодов управляются отдельно регистрами 30-33. При установке в 0, светодиоды зажигаются автоматически после нажатия на время, указанное в регистре 48. При установке в 1, управляются отдельно регистрами 10-13.

Для моего назначения был нужен режим переключения и ручное управление светодиодами, так что регистры 30-33 и 47 были поменяны в значение 1 через командную строку. Значение этих регистров оказались энергонезависимым и больше их править не пришлось.

Подключение к WirenBoard

Для интеграции в WirenBoard был написан файл описания и закинут в /usr/share/wb-mqtt-serial/templates.

{
    "device_type": "switch-md15",
    "device": {
        "name": "switch-md15",
        "id": "md15",
        "enabled": true,
        "channels": [{
                "name": "Switch1",
                "reg_type": "holding",
                "address": "0x00",
                "type": "switch"
            },
            {
                "name": "Switch2",
                "reg_type": "holding",
                "address": "0x01",
                "type": "switch"
            },
            {
                "name": "Switch3",
                "reg_type": "holding",
                "address": "0x02",
                "type": "switch"
            },
            {
                "name": "Switch4",
                "reg_type": "holding",
                "address": "0x03",
                "type": "switch"
            },
    {
               "name": "LED1",
                "reg_type": "holding",
                "address": "0x0a",
                "type": "switch"
            },
            {
                "name": "LED2",
                "reg_type": "holding",
                "address": "0x0b",
                "type": "switch"
            },
            {
                "name": "LED3",
                "reg_type": "holding",
                "address": "0x0c",
                "type": "switch"
            },
            {
                "name": "LED4",
                "reg_type": "holding",
                "address": "0x0d",
        "type": "switch"
    },
    {
                "name": "Backlight",
                "reg_type": "holding",
                "address": "0x18",
                "type": "switch"
            }

        ]
    }
}

В настройках порта девайс занял свое место на порту RS-485-2. В процессе установки выяснилось, что нужно поставить задержку между чтением регистров в 2000 мкс в скрытых настройках подключенного устройства на порту, иначе панель просто не успевала обрабатывать запросы и WirenBoard её терял.

Описывать подключение датчиков температуры и настройку скриптов для включения/выключения реле, к которому подключены маты электрического тёплого пола, не буду. Каждому виднее, как это сделать. Я использовал Node-RED.

Подключение к Sprut.Hub

Для этого, в отличии и WirenBoard, не пришлось писать файл описания, так как панель уже поддерживается в СпрутХаб начиная с версии 1.6.5.

Поскольку СпрутХаб изначально сделан на автоматический опрос устройств ModBus и добавлении его по регистру-идентификатору, но увы мир не идеален и моя панель не содержит идентификатор, был сделан файл-заглушка и закинут в папку /mnt/data/makesimple/.SprutHub/data/Controllers/ModBus/2/Predefined.json
Ждём веб интерфейс, который позволит добавлять такие неидеальные девайсы без конфигов вообще.

[
  {
    "id": "141",
    "manufacturer": "GTD",
    "model": "MD-15"
  }
]

Выводы

В итоге я получил то, что хотел - красивое и простое управление всеми четырьмя контурами тёплых полов и индикацию их состояния. Да, ModBus накладывает кучу ограничений:
  • задержки в реакции из-за поллинга;
  • связанная с этим плохая реализация двойного или длительного нажатия;

  • ограничение по количеству устройств на шине, иначе они просто не будут успевать опрашиваться и будет еще более дикая задержка.

Но если подойти с умом и не делать гирлянду из десятка таких панелей, то они неплохо справляются со своими задачами по управлению и индикации.


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @SprutAI

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Олег Челбаев (sprut)
    Олег Челбаев (sprut) 25 дней назад

    Видео работы не хватает прям =(

К списку статей

Устройства в материале

Wiren Board 6

Производитель: WirenBoard

Factory Villa using 12V DC White Tempered Glass RS485 MODBUS touch Switch

Производитель: GTD IOT Technology

Скидки для сообщества

Wiren Board

+7 495 150-66-19
Промокод:
SPRUTDELIVERY
Размер скидки:
0%
Вы получите бесплатную доставку.

Z-Wave Ukraine

+380 68 641 9670
Промокод:
Sprut-UA
Размер скидки:
15%

Тематические чаты

Похожие статьи

27 октября 2018, 12:20
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
02 июля 2020, 07:24
Я хочу поделиться своей разработкой: "умным открывателем пластикового окна". В статье вы найдете все необходимое, чтобы повторить проект и изготовить собственный привод для открывания окна с использованием штатной фурнитуры окна.
11 апреля 2020, 14:15
Повествование про разработку ZigBee стика для SprutHub
18 февраля 2020, 17:06
В данной статье описывается сборка слаботочного эл. щита на базе Wiren Board 6, а так же силового щита для небольшой квартиры.
13 сентября 2019, 18:01
Дневник разработчика: я хочу рассказать историю об обратной стороне разработки и реальной проблеме реализации поддержки Apple HomeKit
29 апреля 2019, 15:54
Siri Shortcuts теперь может с легкостью создать автоматизации, оперируя с любыми переменными Apple HomeKit
24 сентября 2019, 09:08
Интеграция Wi-Fi кондиционера в Apple HomeKit без ИК пульта.
13 марта 2019, 20:16
Описание подключения Modbus модулей к контроллеру Wiren Board
18 апреля 2019, 09:07
Раньше, я был глуп и уверен, что zigbee-модули не услышат датчики на больших расстояниях. Я ошибался…
03 марта 2019, 20:17
Описание подключения стыкуемых модулей к контроллеру Wiren Board