Термостат Comet Blue купить можно на амазоне либо в магазинах Real/Bauhaus (Германия), средняя стоимость около 20 Euro. Данный термостат управляется по блютуз, поэтому будем использовать связку Homebridge<->Domoticz<->cometblue-domoticz plugin. У меня все это крутится на Raspberry Pi4.
Произведем предварительную установку блютуз инструментов:
apt install bluez bluetooth expect wget https://www.torsten-traenkner.de/wissen/smarthome/heaterControl.exp chmod 755 heaterControl.exp cp heaterControl.exp /usr/local/bin/
Убеждаемся в том, что блютуз модуль в малине находится в рабочем состоянии и не заблокирован:
rfkill list bluetooth hciconfig -a
Поднимаем блютуз интерфейс и запускаем сканирование блютуз устройств, находящихся поблизости, с целью определения их MAC адресов:
hciconfig hci0 up hcitool lescan
Получаем адреса формата E0:E5:CF:C1:D4:3F Comet Blue, которые записываем куда-нибудь, чтобы не потерялись, и подключаемся к модулю из консоли:
gatttool -I connect E0:E5:CF:C1:D4:3F
Далее рекомендую задать модулю пин-код и убедиться в том, что связка запрос-ответ работает корректно:
# Записываем новый пин-код char-write-req 0x0047 00000000 # Считаем действующие показания температурного датчика char-read-hnd 0x003f
Расшифровка вывода последней команды выглядит так:
Characteristic value/descriptor: 2d 2a 24 2a 00 04 0a | | | | | | window open minutes | | | | | window open detection | | | | offset temperature | | | target temperature high (0x2a == 21.0 °C) | | target temperature low (0x24 == 18.0 °C) | temperature for manual mode (*2) current temperature (0x2d == 22.5 °C)
PIN-код кодируется в шестнадцатеричном формате и передается наоборот (прямой порядок байтов). Пример: Pin-код 000000 - это 0x0047, а PIN-код 123456 - это шестнадцатеричный код 0x1e240. При обратном порядке байтов (обратная передача), с дополнением нулями до 4 байтов, получается: 0x40e20100.
Первый байт контроля температуры - это текущая измеренная температура на термостате радиатора. Эта температура может отличаться от комнатной на несколько градусов, так как термостат находится непосредственно на нагревателе. Все значения температуры необходимо разделить на 2. Пример: 0x2d - это 45 десятичных знаков - разделить на 2 = 22,5° C. Третий байт - это целевая температура, которая должна быть достигнута в течении установленного периода экономии (например, ночная температура).Четвертый байт - это целевая температура, которая должна быть достигнута в течении установленного периода нагрева. Пятый байт - это смещение температуры.
Возможные проблемы
Вы можете получить ошибку формата
Attempting to connect to E0:E5:CF:C1:D4:3F
Error: connect error: Transport endpoint is not connected (107)
Это значит, что термостат находится в паре с каким-то устройством (например, открыто приложение для управления на смартфоне), а как мы помним, блютуз устройства поддерживают пару только с одним устройством одновременно.
Также возможно, если термостат у вас не один, вы обнаружите адреса всех термостатов и даже сможете считать температуру с датчика (радиус сканирования у блютуз малины достаточно большой), но при управлении плагин будет сыпать ошибками. Это значит, что устройства разнесены слишком далеко, но я надеюсь, что вы знаете, как с этим бороться.
Если у вас возникли проблемы с другими плагинами, которые используют Bluetooth (например, плагин Xiaomi Mi Flora), удалите эти 3 строки в heatingControl.exp:
exec hciconfig hci0 down
Добавление в Domoticz
Осталось установить Domoticz plugin и завести термостаты в систему:
cd domoticz/plugins git clone https://github.com/damsma/cometblue-domoticz.git systemctl restart domoticz
В Domoticz зайдите в Настройки -> Оборудование, выберите плагин "Comet Blue radiator valve (cometblue-domoticz)", заполните эти три поля:
Адрес устройства Bluetooth <- адрес, который вы нашли ранее.Pin-Code <- в этой версии вам необходимо ввести PIN-код в формате с прямым порядком байтов.Poll interval/Интервал опроса <- интервал в секундах, как часто плагин будет запрашивать фактическую температуру с устройства.
Готово! Теперь плагин создаст для вас 2 новых устройства в Domoticz:
устройство температуры <- показывает фактическую температуру в помещении;вспомогательное устройство <- для контроля температуры.P.S. Обычно для интеграции требуется опрос-ответ, который происходит через промежуток времени, заданный в графе
Интервал опроса.
Ну и после этого, как обычно, перезапускаем Homebridge и автоматически получаем устройства в Apple Home.
P.S. Для того, чтобы установить термостат в положение OFF, нужно установить значение температуры на 7,5 градусов, т.к. нижний предел данного термостата составляет 8 градусов.