Ich habe mir das gerade selber zusammengebastelt im Home Assistant mit ha-multiscrape und poste hier mal einen Auszug aus meiner config, damit andere auch etwas davon haben. Bei Fragen, gerne melden.
#logger:
# default: info
# logs:
# custom_components.multiscrape: debug
multiscrape:
- name: HA scraper
log_response: False
resource: 'http://hdg-tan800.home/ApiManager.php?action=dataRefresh'
headers:
Content-Type: 'application/x-www-form-urlencoded; charset=UTF-8'
scan_interval: 60
method: POST
payload: nodes=20000T-24000T-24001T-24002T-24020T-24021T-24022T-24023T-24098T-24099T-26007BF-26008BF-26000T-26011BF-26004BF-6022T-6023T
sensor:
- unique_id: 19bb41ba-8bdf-4f7d-8db7-8af0a086aae5
name: "Außentemperatur"
value_template: "{{ value_json[0]['text']|select('in','-.0123456789')|join}}"
device_class: "temperature"
state_class: "measurement"
unit_of_measurement: "°C"
- unique_id: 11fde582-24ba-4a73-bce9-862025872671
name: "PUFFER Fühler oben"
value_template: "{{ value_json[1]['text']|select('in','-.0123456789')|join}}"
device_class: "temperature"
state_class: "measurement"
unit_of_measurement: "°C"
name: "PUFFER Energie gesamt"
value_template: "{{ value_json[4]['text']|select('in','-.0123456789')|join}}"
device_class: "energy_storage"
state_class: "measurement"
unit_of_measurement: "kWh"
- unique_id: 6fcc4ce8-7de4-4d1d-b46c-1b580befd860
name: "PUFFER Energie ist"
value_template: "{{ value_json[5]['text']|select('in','-.0123456789')|join}}"
device_class: "energy_storage"
state_class: "measurement"
unit_of_measurement: "kWh"
- unique_id: 17701fa6-dab5-4858-8d41-82416c4a8971
name: "PUFFER Energie aufnehmbar"
value_template: "{{ value_json[6]['text']|select('in','-.0123456789')|join}}"
device_class: "energy_storage"
state_class: "measurement"
unit_of_measurement: "kWh"
- unique_id: ed258d0d-ef05-4087-8e9d-1fd0f6a5d9b9
name: "KESSEL Restsauerstoff"
value_template: "{{ 0 if value_json[22]['text']|select('in','.0123456789')|join == '' else value_json[22]['text']|select('in','.0123456>
state_class: "measurement"
unit_of_measurement: "%"
- unique_id: 8ec74af4-dbda-4bc0-ba5d-e8e86701eda5
name: "KESSEL Nachlegezeitpunkt"
value_template: "{{ as_timestamp(strptime(value_json[26]['text']| striptags,'%d.%m.%Y %H:%M'))|timestamp_local}}"
device_class: "timestamp"
binary_sensor:
- unique_id: c2f50b64-c09c-4ccc-b8ca-7b3c2a8e6644
name: "BRAUCHWASSER Pumpenstatus"
value_template: "{{ value_json[74]['text']=='Ein'}}"
device_class: "running"
- unique_id: 4309e64e-6f9c-4af7-b588-ae4c6ff88e72
name: "OG Temperatur Quelle zu niedrig"
value_template: "{{ value_json[69]['text']|select('in','-.0123456789')|join}}"
device_class: "problem"
- unique_id: 50c16db3-d5b2-4cf8-8983-e7784cafc0b3
name: "OG Mischerstatus"
value_template: "{{ value_json[65]['text']=='Ein'}}"
device_class: "opening"
- unique_id: 8d69d7c1-b8aa-4750-bdb0-25d1ce91ba96
Alles anzeigen
Zum Debugging ist es ganz hilfreich, den logger auf debug zu setzen und auch log_response: True zu setzen. Im Unterverzeichnis multiscrape
im home-assistant Programmverzeichnis finden sich dann die request und response dateien.
Ausprobieren kann man auch ganz gut mit
curl -i -X POST -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -d 'nodes=20000T' http://hdg-tan800
.home/ApiManager.php?action=dataRefresh
Ansonsten habe ich die Netzwerkanfragen und Antworten des Webinterface im Firefox/Chrome beobachtet um herauszubekommen, welche Anfragen abgesendet werden und wie die Antworten dazu aussehen.
Zum Testen der value_templates kann die Template Funktion unter Developer Tools im Home Assistant Webinterface ganz gut genutzt werden. Einfach das JSON aus dem response body dort hineinkopieren und ausprobieren.