Cookie Consent by Free Privacy Policy Generator

Lokale Live Daten von Enphase

Ich hatte schon ein bisschen mit der lokalen Enphase API rumgespielt. Per Skript ein Access Token holen und damit mein Envoy im Keller abfragen.

Ich hatte mich schon immer gewundert wo denn die Daten sind um meinen aktuellen Hausverbrauch und Ladung/Entladung der Batterie anzuzeigen. Meinen Zählerstand und Einspeisung/Bezug ins Netz frage ich ja mit einem Optokoppler ab. Aber was verbauche ich denn gerade?

Die Liveansicht von Enphase bietet folgendes:

Enphase App

Diese Daten müssten doch irgendwo verfügbar sein. Ein Blick in den WebInspector verrät, dass die Daten von AWS gestreamt werden. MQTT via WebSockets.

Ein bisschen googlen und ich fand folgende URL bei mir http://myenvoy/ivp/livedata/status. Der gibt mir:


  "connection": {
    "mqtt_state": "connected",
    "prov_state": "configured",
    "auth_state": "ok",
    "sc_stream": "enabled",
    "sc_debug": "disabled"
  },
  "meters": {
    "last_update": 1714159237,
    "soc": 62,
    "main_relay_state": 1,
    "gen_relay_state": 5,
    "backup_bat_mode": 1,
    "backup_soc": 0,
    "is_split_phase": 0,
    "phase_count": 3,
    "enc_agg_soc": 62,
    "enc_agg_energy": 6545,
    "acb_agg_soc": 0,
    "acb_agg_energy": 0,
    "pv": {
      "agg_p_mw": -21445,
      "agg_s_mva": -213351,
   ...
   "storage": {
      "agg_p_mw": 590000,
   ...
   "grid": {
      "agg_p_mw": -2360,
   ...
   "load": {
      "agg_p_mw": 566195,
   ...

Und siehe da:

Diese Werte wollte ich schon immer haben und sie waren schon immer da. Yes!

Leider stoppt die Aktualisierung nach einer Weile. Der Trigger um die Aktualisierung wieder anzustossen ist in der App oder Webseite die LiveDaten anzuschauen. Dann geht das auch wieder. Auch verändert sich das Feld '"sc_stream": "enabled". Wie also das ohne App und Webseite machen?

Stellt sich raus ein POST Request auf:

curl -X POST -f -k -H 'Authorization:Bearer <<TOKEN>>' 'https://myenvoy/ivp/livedata/stream' -d '{"enable":1}'

stellt genau diesen Zustand her und der bleibt so für 15 Minuten.

Nun schickt ein Cronjob alle 14 Minuten da ein POST hin und ich kann in aller Ruhe meine Livedaten mir anzeigen lassen. Das alles habe ich in Python mit APScheduler und einer Postgres implementiert. Die Werte werden noch zusätzlich zu meinem MQTT Server gepusht um sie auf meinem Ulanzi anzuzeigen. Da stehen auch noch :

MQTT Topics auf meinem Server
Grafana Anzeige Enphase Live Daten

Ich mache den ganzen Spaß für den (absehbaren) Fall, dass ich einen dynamischen Stromtarif bekomme und meine Geräte selbst steuern kann. Automatisch wird von den Herstellern da eher wenig angeboten. Vor allem ältere nicht-smarte Geräte gehen da nicht. Da will ich dann selbst Hand anlegen. Bin gespannt wie gut dass klappen wird.

Da ich letzten die 3 Phasige Umstellung meiner Batterie hatte ist mir noch eine Umstimmigkeit aufgefallen bzw. das Schaltverhalten der Batterie. Da kann ich jetzt schön Daten sammeln und mich dann mal an den Support wenden.