Tenkte å dele hvordan jeg har integrert vår Høiax Connected varmtvannsbereder i Home Assistant.
Det er dessverre ikke lokalt, men går gjennom skyen (myuplink).
Vi har en 300 liter bereder som har to varmelementer (1750W og 1250W). Det er mulig å redusere effekten eller slå av varmtvannsberederen dersom man ser at man kommer over grensen for neste nettleietrinn. Det krever selvføgelig at man har en amsmåler.
Det er også mulig å integrere berederen i Energy dashboard osv.
Jeg har integrert berederen gjennom restful integrasjonen i Home Assistant.
For å kunne bruke myuplink APIen trenger man en token. Den er gyldig i 1 time. For å få den må man autorisere seg med client_id og client_secret. Disse får man ved å registrere seg på dev.myuplink.com. Der setter man opp en application.
Sensoren som oppdaterer token ser slik ut:
sensor:
- platform: rest
name: myuplink_token
resource: https://api.myuplink.com/oauth/token
method: POST
headers:
Content-Type: application/x-www-form-urlencoded
payload: grant_type=client_credentials&client_id=[client_id]&client_secret=[client_secret]
scan_interval: 1800
json_attributes:
- access_token
- token_type #optional
- expires_in #optional
value_template: "ok"
Token er en attribute fordi den er for lang til å være en vanlig value.
Info fra varmtvannsberederen får man slik:
rest:
- scan_interval: 30
method: GET
resource: https://api.myuplink.com/v2/devices/[device_id]/points
headers:
Authorization: >
Bearer {{ states.sensor.myuplink_token.attributes["access_token"] }}
sensor:
- name: " Myuplink Power Waterheater"
unique_id: "myuplink_power_waterheater"
json_attributes_path: "$.[?(@.parameterId=='400')]"
value_template: "OK"
json_attributes:
- value
- name: "Myuplink Fill level Waterheater"
unique_id: "myuplink_fill_level_waterheater"
json_attributes_path: "$.[?(@.parameterId=='404')]"
value_template: "OK"
json_attributes:
- value
- name: "Myuplink Element 1 Status Waterheater"
unique_id: "myuplink_element_1_status_waterheater"
json_attributes_path: "$.[?(@.parameterId=='506')]"
value_template: "OK"
json_attributes:
- value
- name: "Myuplink Element 2 Status Waterheater"
unique_id: "myuplink_element_2_status_waterheater"
json_attributes_path: "$.[?(@.parameterId=='505')]"
value_template: "OK"
json_attributes:
- value
- name: "Myuplink Powermode Waterheater"
unique_id: "myuplink_powermode_waterheater"
json_attributes_path: "$.[?(@.parameterId=='517')]"
value_template: "OK"
json_attributes:
- value
- name: "Myuplink Setpoint Waterheater"
unique_id: "myuplink_setpoint_waterheater"
json_attributes_path: "$.[?(@.parameterId=='527')]"
value_template: "OK"
json_attributes:
- value
- name: "Myuplink Temperature Waterheater"
unique_id: "myuplink_temperature_waterheater"
json_attributes_path: "$.[?(@.parameterId=='528')]"
value_template: "OK"
json_attributes:
- value
- name: "Myuplink number expensive hours Waterheater"
unique_id: "myuplink_expensive_hours_waterheater"
json_attributes_path: "$.[?(@.parameterId=='545')]"
value_template: "OK"
json_attributes:
- value
- name: "Myuplink number cheap hours Waterheater"
unique_id: "myuplink_cheap_hours_waterheater"
json_attributes_path: "$.[?(@.parameterId=='547')]"
value_template: "OK"
json_attributes:
- value
Device_ID og de ulike parameterid kan man lett få ved å logge inn på dev.myuplink.com velge Documentation og Swagger. Så klikker dere på Authorize og bruker client_id og client_secret. Da kan man teste APIen og se hele JSON svaret fra APIen på alt som er mulig med APIen. Det er mange flere sensorer som kan settes opp.
Jeg har så laget en rest_command som styrer hvilke elementer som er på i berederen. Da kan man velge å kun varme med 1250W eller 1750W når strømforbruket i huset er høy.
Den ser sånn ut:
rest_command:
waterheater_powermode_change:
url: https://api.myuplink.com/v2/devices/[device_id]/points
method: patch
headers:
Authorization: >
Bearer {{ states.sensor.myuplink_token.attributes["access_token"] }}
content_type: "application/json-patch+json"
payload: >
{% if states('input_select.waterheater_powermode') == "3000W" %}
{ "517": "3", }
{% elif states('input_select.waterheater_powermode') == "1250W" %}
{ "517": "1", }
{% elif states('input_select.waterheater_powermode') == "1750W" %}
{ "517": "2", }
{% else %}
{ "517": "3", }
{% endif %}
Samme metode kan brukes til å endre temperaturinnstilling, bytte mellom ulike modus, endre antall dyre timer osv.
Håper dette kan hjelpe noen.