Integracja kotła KOSPEL EKCO.M3 i modułu CM.I z Home Assistant

Zakładam, że jeżeli tu trafiłeś, to sam kocioł masz już podłączony i działający, tak samo jak moduł CM.I

Moduł CM.I, może pracować zarówno w trybie chmurowym jak i lokalnym, przy czym, jeżeli masz podłączony moduł do chmury Kospel, to w Twojej sieci jest on również widoczny pod lokalnym adresem IP.

Aby zacząć integrację, musimy odszukać IP modułu CM.I. Po wejściu na jego adres, JavaScript zaszyty w kodzie strony odpyta podłączone urządzenie i doklei do adresu odpowiedni numer. Dla mojego kotła M3 numer ten to 65.

Zatem wchodząc np na: http://10.1.78.230 wylądujemy na http://10.1.78.230/65.

Standardowy widok GUI modułu

Jest to ważne, ponieważ numer ten jest używany w API modułu.

Adres API to http://10.1.78.230/api/dev/65/0b2f/30 gdzie możemy podejrzeć JSON z numerami rejestrów płytki sterującej wewnątrz kotła oraz ich wartościami.

Wido wartości API

Jeżeli mamy właściwy adres i potwierdzone działające API, możemy użyć je w Home Assistant za pomocą platformy REST w sekcji sensor

sensor:

  - platform: rest
    name: CMI
    resource: http://10.1.78.230/api/dev/65/0b2f/30
    json_attributes:
      - regs
    value_template: "OK"

Następnie za pomocą platformy template możemy poprzeliczać wartości rejestrów:

- platform: template
    sensors:
      temp_wlot:
        friendly_name: "Temperatura wlotowa"
        value_template: "{% set value = state_attr('sensor.cmi', 'regs')['0b48'] %}{% set str= value[2:4] + value[0:2] %}{% set resultInt = str | int(base=16) %}{% if resultInt | bitwise_and(0x8000) > 0 %}{% set resultInt = resultInt - 0x10000 %}{% endif %}{{resultInt | float / 10}}"
        device_class: temperature
        unit_of_measurement: "°C"
      temp_wylot:
        friendly_name: "Temperatura wylotowa"
        value_template: "{% set value = state_attr('sensor.cmi', 'regs')['0b49'] %}{% set str= value[2:4] + value[0:2] %}{% set resultInt = str | int(base=16) %}{% if resultInt | bitwise_and(0x8000) > 0 %}{% set resultInt = resultInt - 0x10000 %}{% endif %}{{resultInt | float / 10}}"
        device_class: temperature
        unit_of_measurement: "°C"
      nastawa_czynnika:
        friendly_name: "Temperatura czynnika"
        value_template: "{% set value = state_attr('sensor.cmi', 'regs')['0b44'] %}{% set str= value[2:4] + value[0:2] %}{% set resultInt = str | int(base=16) %}{% if resultInt | bitwise_and(0x8000) > 0 %}{% set resultInt = resultInt - 0x10000 %}{% endif %}{{resultInt | float / 10}}"
        device_class: temperature
        unit_of_measurement: "°C"
      temp_pok:
        friendly_name: "Temperatura w pokoju"
        value_template: "{% set value = state_attr('sensor.cmi', 'regs')['0b4b'] %}{% set str= value[2:4] + value[0:2] %}{% set resultInt = str | int(base=16) %}{% if resultInt | bitwise_and(0x8000) > 0 %}{% set resultInt = resultInt - 0x10000 %}{% endif %}{{resultInt | float / 10}}"
        device_class: temperature
        unit_of_measurement: "°C"
      temp_zewn:
        friendly_name: "Temperatura zewnętrzna"
        value_template: "{% set value = state_attr('sensor.cmi', 'regs')['0b4c'] %}{% set str= value[2:4] + value[0:2] %}{% set resultInt = str | int(base=16) %}{% if resultInt | bitwise_and(0x8000) > 0 %}{% set resultInt = resultInt - 0x10000 %}{% endif %}{{resultInt | float / 10}}"
        device_class: temperature
        unit_of_measurement: "°C"
      moc:
        friendly_name: "Moc"
        value_template: "{% set value = state_attr('sensor.cmi', 'regs')['0b46'] %}{% set str= value[2:4] + value[0:2] %}{% set resultInt = str | int(base=16) %}{% if resultInt | bitwise_and(0x8000) > 0 %}{% set resultInt = resultInt - 0x10000 %}{% endif %}{{resultInt | float / 10}}"
        device_class: power
        unit_of_measurement: "kW"
      cisnienie:
        friendly_name: "Ciśnienie"
        value_template: "{% set value = state_attr('sensor.cmi', 'regs')['0b4e'] %}{% set str= value[2:4] + value[0:2] %}{% set resultInt = str | int(base=16) %}{% if resultInt | bitwise_and(0x8000) > 0 %}{% set resultInt = resultInt - 0x10000 %}{% endif %}{{resultInt | float / 100}}"
        device_class: pressure
        unit_of_measurement: "bar"
      przeplyw:
        friendly_name: "Przepływ wody"
        value_template: "{% set value = state_attr('sensor.cmi', 'regs')['0b4f'] %}{% set str= value[2:4] + value[0:2] %}{% set resultInt = str | int(base=16) %}{% if resultInt | bitwise_and(0x8000) > 0 %}{% set resultInt = resultInt - 0x10000 %}{% endif %}{{resultInt | float / 10}}"
        device_class: gas
        unit_of_measurement: "L"

Jeżeli wszystko się waliduje, to możemy już zdefinowanych nowych sensorów użyć w Home Assistant to pokazywania aktualnych wartości.

Warto dodatkowo zintegrować smart termostaty - polecam takie od Tuya, lub dowolny wariant TS0601 - dla potrzeb HA i integracji sterującej mają najwięcej możliwości.

155.45NOK 43% OFF|Tuya Smart Zigbee Radiator Actuator Trv Programmable Thermostatic Radiator Valve App Remote Temperature Controller Support Alexa - Smart Temperature Control System - AliExpress
Smarter Shopping, Better Living! Aliexpress.com

Do sterowania temperaturą w pokojach polecam nie polegać na wewnętrznych pomiarach w termostatach ponieważ są one mocno niedokładne oraz ciężko je skonfigurować w Home Assistant. Natomiast rewelacyjną alternatywą, która robi wszystko to co sam termostat, ale dodatkowo korzysta z zewnętrznych czujników pokojowych temperatury i wilgotności, czujników temp. zewnętrznej (np. ten od Kospela), oraz integracji pogodowych czy czujników otwarcia okien - Better Thermostat: https://github.com/KartoffelToby/better_thermostat, wraz z dodatkową karta dla UI: https://github.com/KartoffelToby/better-thermostat-ui-card

Integracja jest na razie w wersji beta w repozytorium HACS, ale u mnie sprawdza sie rewelacyjnie.

Polecane komponenty zewnętrzne:

119.62NOK 33% OFF|Aqara Zigbee Wireless Temperature Humidity Sensor For Smart Home Kit Thermometer Hygrometer Mijia Temperature Humidity Sensor - Smart Remote Control - AliExpress
Smarter Shopping, Better Living! Aliexpress.com
81.69NOK 27% OFF|Original Aqara Door Window Sensor Zigbee Wireless Connection Smart Door Sensor Mccgq11lm Work With Mi Home Homekit App - Smart Remote Control - AliExpress
Smarter Shopping, Better Living! Aliexpress.com

Jeżeli będzie zainteresowanie, mogę napisać w kolejnych postach jak skonfigurować termostaty oraz Better Thermostat, tak aby znacząco oszczędzić energię używaną do ogrzania domu przez kocioł elektryczny.