Po paru tygodniach testów mogę stwierdzić że OpenBK współpracuje bardzo stabilnie z Home Assistant, do tej pory nie było kłopotów w komunikacji, żadnych zwiech lub innych zdarzeń komplikujących działanie.
W związku z tym chcę podzielić się moją konfiguracją dla innych szukających rozwiązania.
Na początek widok końcowy integracji termostatu w Home Assistant, użyłem integracji Better Termostat i przycisków dodatkowych oraz paru innych trików.
Wygląda to tak.:
Teraz podstawy.
Plik /autoexec.bat.:
Pozycja setChannelType 5 ReadOnly , setChannelLabel 5 RelayState to faktyczny stan przekaźnika załączającego ogrzewanie, oryginalnie ten termostat nie ma tej funkcji, w TUYA porównuje się nastawę temperatury docelowej z aktualną co nie zawsze jest zgodne z prawdą.
Wymaga to wykonania połączenia pomiędzy jednym ze styków złącza do płyty przekaźnikowej a wolnym wejściem np. P7 (PWM1) CB3S.
Dla zainteresowanych mogę wykonać fotkę.
Teraz plik config.yaml komponentu climate w HA.
W przykładowym pliku skonfigurowane są dwa termostaty, ponieważ w przyszłości będzie ich więcej zastosowałem kotwiczenie powtarzających się, stałych fragmentów kodu aby zapobiec "puchnięciu" kodu.
Są tam także skonfigurowane przyciski dodatkowe oraz czujnik RSSI.:
Zastosowałem również automatyzację aktualizacji stanu termostatu w wypadku restartu HA lub samego termostatu, tutaj automation.yaml dla jednego urządzenia.:
Mam nadzieję że pomoże to innym w konfiguracji swoich urządzeń.
Przy okazji chciałbym podziękować twórcy OpenBK za ogromny wysiłek w stworzeniu tego dzieła, i za cierpliwość w tłumaczeniu zawiłości i błędów które popełniałem na początkowym etapie zaznajamiania się z OpenBK oraz chciałem się nieśmiało przypomnieć z prośbą o zaimplementowanie automatycznej zmiany czasu, letni / zimowy.
Dziękuję.
W związku z tym chcę podzielić się moją konfiguracją dla innych szukających rozwiązania.
Na początek widok końcowy integracji termostatu w Home Assistant, użyłem integracji Better Termostat i przycisków dodatkowych oraz paru innych trików.
Wygląda to tak.:

Teraz podstawy.
Plik /autoexec.bat.:
// Start NTP Driver
startDriver NTP
// Set NTP Server
ntp_setServer 192.168.110.250
// Set timezone
ntp_timeZoneOfs +1:00
startDriver TuyaMCU
tuyaMcu_defWiFiState 4
setChannelType 1 toggle
setChannelLabel 1 OnOff
setChannelType 2 toggle
setChannelLabel 2 EnergySaving
setChannelType 3 toggle
setChannelLabel 3 ButtonLock
setChannelType 4 toggle
setChannelLabel 4 ManualMode
setChannelType 5 ReadOnly
setChannelLabel 5 RelayState
setChannelType 6 Temperature_div2
setChannelLabel 6 CurrentTemperature
setChannelType 7 Temperature_div2
setChannelLabel 7 SetTemperature
setChannelType 8 Temperature_div2
setChannelLabel 8 TemperatureFloorSensor
setChannelType 9 ReadOnly
setChannelLabel 9 HeatingProgram
// linkTuyaMCUOutputToChannel dpId verType tgChannel
linkTuyaMCUOutputToChannel 1 bool 1
linkTuyaMCUOutputToChannel 5 bool 2
linkTuyaMCUOutputToChannel 6 bool 3
linkTuyaMCUOutputToChannel 4 enum 4
linkTuyaMCUOutputToChannel 3 val 6
linkTuyaMCUOutputToChannel 2 val 7
linkTuyaMCUOutputToChannel 102 val 8
linkTuyaMCUOutputToChannel 101 raw 9
waitFor NTPState 1
echo "NTP is ready"
// wait for mqtt to connect
waitFor MQTTState 1
// extra delay
delay_s 1
publish BHT_B_gabinet rebooted
mqtt_broadcastInterval 300
Pozycja setChannelType 5 ReadOnly , setChannelLabel 5 RelayState to faktyczny stan przekaźnika załączającego ogrzewanie, oryginalnie ten termostat nie ma tej funkcji, w TUYA porównuje się nastawę temperatury docelowej z aktualną co nie zawsze jest zgodne z prawdą.
Wymaga to wykonania połączenia pomiędzy jednym ze styków złącza do płyty przekaźnikowej a wolnym wejściem np. P7 (PWM1) CB3S.
Dla zainteresowanych mogę wykonać fotkę.
Teraz plik config.yaml komponentu climate w HA.
W przykładowym pliku skonfigurowane są dwa termostaty, ponieważ w przyszłości będzie ich więcej zastosowałem kotwiczenie powtarzających się, stałych fragmentów kodu aby zapobiec "puchnięciu" kodu.
Są tam także skonfigurowane przyciski dodatkowe oraz czujnik RSSI.:
climate:
# Termostaty
# BHT_B_gabinet
- unique_id: OpenBK7231N_799F00054_binary_sensor_5
name: heater_B_gabinet
current_temperature_topic: 'BHT_B_gabinet/6/get'
temperature_command_topic: 'BHT_B_gabinet/7/set'
temperature_state_topic: 'BHT_B_gabinet/7/get'
power_command_topic: 'BHT_B_gabinet/1/set'
mode_state_topic: 'BHT_B_gabinet/5/get'
availability:
- topic: BHT_B_gabinet/connected
<<: &bhtens
modes:
- "off"
- heat
current_temperature_template: '{{ float(value)*0.5|round(2) }}'
temperature_command_template: '{{ float(value)*2 }}'
temperature_state_template: '{{ float(value)*0.5|round(2) }}'
min_temp: 5
max_temp: 35
precision: 0.5
temp_step: 0.5
mode_state_template: >-
{{ 'heat' if value == '1' else 'off' }}
qos: 1
payload_on: '1'
payload_off: '0'
retain: true
# BHT_goscinny
- unique_id: OpenBK7231N_798400088_binary_sensor_5
name: heater_goscinny
current_temperature_topic: 'BHT_goscinny/6/get'
temperature_command_topic: 'BHT_goscinny/7/set'
temperature_state_topic: 'BHT_goscinny/7/get'
power_command_topic: 'BHT_goscinny/1/set'
mode_state_topic: 'BHT_goscinny/5/get'
availability:
- topic: BHT_goscinny/connected
<<: *bhtens
switch:
# Przyciski termostatu
# BHT_B_gabinet
- name: "heater_OnOff_B_gabinet"
icon: mdi:power
state_topic: 'BHT_B_gabinet/1/get'
command_topic: 'BHT_B_gabinet/1/set'
<<: &buttons
payload_on: '1'
payload_off: '0'
availability:
- topic: BHT_B_gabinet/connected
- name: "heater_EnergySaving_B_gabinet"
icon: mdi:leaf
state_topic: 'BHT_B_gabinet/2/get'
command_topic: 'BHT_B_gabinet/2/set'
<<: *buttons
- name: "heater_ButtonLock_B_gabinet"
icon: mdi:lock-outline
state_topic: 'BHT_B_gabinet/3/get'
command_topic: 'BHT_B_gabinet/3/set'
<<: *buttons
- name: "heater_ManualMode_B_gabinet"
icon: mdi:gesture-tap
state_topic: 'BHT_B_gabinet/4/get'
command_topic: 'BHT_B_gabinet/4/set'
<<: *buttons
# BHT_goscinny
- name: "heater_OnOff_goscinny"
icon: mdi:power
state_topic: 'BHT_goscinny/1/get'
command_topic: 'BHT_goscinny/1/set'
<<: *buttons
- name: "heater_EnergySaving_goscinny"
icon: mdi:leaf
state_topic: 'BHT_goscinny/2/get'
command_topic: 'BHT_goscinny/2/set'
<<: *buttons
- name: "heater_ButtonLock_goscinny"
icon: mdi:lock-outline
state_topic: 'BHT_goscinny/3/get'
command_topic: 'BHT_goscinny/3/set'
<<: *buttons
- name: "heater_ManualMode_goscinny"
icon: mdi:gesture-tap
state_topic: 'BHT_goscinny/4/get'
command_topic: 'BHT_goscinny/4/set'
<<: *buttons
sensor:
# Siła sygnału radiowego WiFi termostatów
# BHT_B_gabinet
- name: "heater_WiFi_goscinny"
state_topic: 'BHT_goscinny/rssi'
<<: &WiFi
icon: mdi:wifi
device_class: signal_strength
state_class: measurement
unit_of_measurement: dB
# BHT_goscinny
- name: "heater_WiFi_B_gabinet"
state_topic: 'BHT_B_gabinet/rssi'
<<: *WiFi
Zastosowałem również automatyzację aktualizacji stanu termostatu w wypadku restartu HA lub samego termostatu, tutaj automation.yaml dla jednego urządzenia.:
---
alias: Thermostate BHT_B_gabinet State refresh on HA start-up and thermostate reboot
trigger:
- platform: homeassistant
event: start
- platform: mqtt
topic: BHT_B_gabinet/BHT_B_gabinet/get
payload: rebooted
action:
- delay:
seconds: 10
- service: mqtt.publish
data:
topic: 'BHT_B_gabinet/1/get'
payload: ""
- delay:
milliseconds: 500
- service: mqtt.publish
data:
topic: 'BHT_B_gabinet/2/get'
payload: ""
- delay:
milliseconds: 500
- service: mqtt.publish
data:
topic: 'BHT_B_gabinet/3/get'
payload: ""
- delay:
milliseconds: 500
- service: mqtt.publish
data:
topic: 'BHT_B_gabinet/4/get'
payload: ""
- delay:
milliseconds: 500
- service: mqtt.publish
data:
topic: 'BHT_B_gabinet/5/get'
payload: ""
- delay:
milliseconds: 500
- service: mqtt.publish
data:
topic: 'BHT_B_gabinet/6/get'
payload: ""
- delay:
milliseconds: 500
- service: mqtt.publish
data:
topic: 'BHT_B_gabinet/7/get'
payload: ""
Mam nadzieję że pomoże to innym w konfiguracji swoich urządzeń.
Przy okazji chciałbym podziękować twórcy OpenBK za ogromny wysiłek w stworzeniu tego dzieła, i za cierpliwość w tłumaczeniu zawiłości i błędów które popełniałem na początkowym etapie zaznajamiania się z OpenBK oraz chciałem się nieśmiało przypomnieć z prośbą o zaimplementowanie automatycznej zmiany czasu, letni / zimowy.
Dziękuję.