Solar-Log Base per Rest ansteuern

Per Rest API Request können sämtliche Daten von der Solar Log Base abgerufen werden – der wichtigste Aufruf ist gar im Handbuch dokumentiert (https://www.solar-log.com/manuals/manuals/de_DE/SolarLog_Base_Handbuch_DE.pdf ab Seite 224).

Die Url entspricht dabei der IP Adresse der Base mit anschliessenden /getjp Befehl. Also z.B.

http://192.168.0.245/getjp

Die Daten werden mit folgendem JSON Payload ergänzt:

{"801":{"170":null}}

Zusammengesetzt in z.B. Python sieht das dann wie folgt aus:

import requests
url = "http://192.168.0.245/getjp"
payload = "{\"801\":{\"170\":null}}"
headers = {'content-type': 'application/json'}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)

Die wichtigsten Daten sind dann mit dem Index 101 (aktuelle Produktion) und 110 (aktueller Verbrauch) zu finden. Die anderen Werte sind im Handbuch exakt beschrieben.

verbrauch = float(response["801"]["170"]["110"])
produktion = float(response["801"]["170"]["101"])

Die Werte der einzelnen Inverter können mit folgendem Payload abgefragt werden:

{"782":null}

Dies gibt dann die Werte pro angeschlossenem Gerät zurück. Im folgenden Beispiel sind

  • 0: SolarEdge
  • 1: Gesamtverbrauchszähler
  • 2: Verbrauchszähler Wärmepumpe
{
  "782": {
    "0": "6084",
    "1": "6123",
    "2": "5",
    "3": "0",
    "4": "0",
    "5": "0",
  ...}
}
(im UI unter Konfiguration muss bei jedem Index +1 dazugezählt werden)

Ich habe diese API für den TWCManager (https://github.com/dschuesae/TWCManager/blob/v1.2.0pm/lib/TWCManager/EMS/SolarLog.py) und ebenfalls direkt in meine HomeAssistant Installation integriert.

Hier meine Konfiguration des HomeAssistants Werte für die direkte Abfrage ohne Erweiterung (configuration.yaml):

sensor:
  - platform: rest
    resource: http://192.168.0.245/getjp
    method: POST
    payload: '{"782":null}'
    value_template: '{{ value_json["782"]["2"] }}'
    name: heatpump_consumption_w
    unit_of_measurement: W
    device_class: power
    scan_interval: 15
    force_update: true
  - platform: rest
    resource: http://192.168.0.245/getjp
    method: POST
    payload: '{"801":{"170":null}}'
    value_template: '{{ value_json["801"]["170"]["110"] }}'
    name: house_consumption_w
    unit_of_measurement: W
    device_class: power
    scan_interval: 15
    force_update: true
  - platform: rest
    resource: http://192.168.0.245/getjp
    method: POST
    payload: '{"801":{"170":null}}'
    value_template: '{{ value_json["801"]["170"]["101"] }}'
    name: solar_production_w
    unit_of_measurement: W
    device_class: power
    scan_interval: 15
    force_update: true

Wer noch weitere Informationen absaugen will, soll sich die Webseite des Solar-Log Base Moduls im Debug Modus im Browser öffnen (F12) und dort die Netzwerkkommunikation analysieren. Dabei stellt man auch fest, dass mittels /setjp die Konfiguration auch verändert werden kann.