[70_ENPHASE.pm] Modul zur Integration Enphase Gateway

Begonnen von Christian83, 17 November 2023, 12:51:36

Vorheriges Thema - Nächstes Thema

Christian83

Hallo,

da nun parallel mehrere das bereits vorhandene Modul einsetzen. Hier nochmal als eigener Beitrag zum Zusammenfassen und Fragen innerhalb eines Threads.

Definition:
define <name> ENPHASE <IPAddr> <username> <serialnum>
username ist die mailadresse im Enlighten System.

Password für Enlighten hinterlegen:
set <name> password <password>
Danach wird bei positiver Erzeugung aller 60 Sekunden sonst aller 300 Sekunden abgefragt. (Kann über Attribut updateinterval geändert werden).


Attribute:

updateinterval - Intervall für automatische Abfragen (dann greift nicht der 60/300 Tag/Nacht Intervall)
updateintervalconsWh - Ab welchem Verbrauch soll anderes Updateintervall benutzt werden
updateintervalconssec - Intervall ab Verbrauch laut updateintervalconsWh
updateintervalprodWh - Ab welcher Produktion soll anderes Updateintervall benutzt werden
updateintervalprodsec - Intervall ab Produktion laut updateintervalprodWh
readingtimevariancesec - Zeitversatz in Sekunden zwischen lokaler Zeit und Gateway (default 15)



Wenn Speicherdaten ausgelesen werden sollen, einmalig:
get <name> StorageData
Dann werden evtl. vorhandene Speicher und deren Daten bei jeder Datenaktualisierung eingelesen.

peterboeckmann

Hallo Christian,

das ist wirklich ein tolles Modul.
Vielen Dank für deinen Einsatz.

Kann es sein, dass beim letzten Update das reading "storageFullPercent" kaputt gegangen ist?
Das wird scheinbar nicht mehr aktualisiert.
Oder hat das einen neuen Namen?

Viele Grüße,
Peter

Christian83

Zitat von: peterboeckmann am 17 November 2023, 16:25:31Hallo Christian,

das ist wirklich ein tolles Modul.
Vielen Dank für deinen Einsatz.

Kann es sein, dass beim letzten Update das reading "storageFullPercent" kaputt gegangen ist?
Das wird scheinbar nicht mehr aktualisiert.
Oder hat das einen neuen Namen?

Viele Grüße,
Peter

Ja habe umbenannt.

Storage.... Grosses S.


bastilyk

Hallo Christian,

heute wurde meine Enphase Anlage in Betrieb genommen (20x IQ8A, kein Speicher).
Habe also direkt mal dein Modul in Betrieb genommen, die Verbidnung zum Gateway klappt, allerdings die Abfrage der Daten nicht.

List des Devices:
Internals:
   DEF        192.168.1.38 bla@blub.de 123456789
   FUUID      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx
   FVERSION   70_ENPHASE.pm:?/2024-01-26
   IP         192.168.1.38
   NAME       lykenvoy
   NR         300
   STATE      reading newlive
   TYPE       ENPHASE
   eventCount 21
   name       lykenvoy
   serialnum  123456789
   username   bla@blub.de
   READINGS:
     2024-01-26 17:04:36   counttimeout    0
     2024-01-26 16:57:41   sessionIDLocal  cwFCh8SXXXXXXXXXXXXXXXxtGUK
     2024-01-26 16:57:38   sessionid       3e982c0XXXXXXXXXXXXXXXef0ee13117
     2024-01-26 17:44:39   state           reading newlive
     2024-01-26 16:57:40   token           [eyJraWQitJ5Lr55ef.....]
     2024-01-26 17:04:36   whTodayConsumption 1179.192
     2024-01-26 17:04:36   whTodayProduction 232.592
   hmccu:
Attributes:
   DbLogExclude .*
   alias      lykenvoy
   verbose    0

FHEM Log (kommt alle 5 Minuten zum Zeitpunkt der Abfrage, Stromproduktion ist ja gerade keine):
2024.01.26 17:39:39 1: DEBUG>eval Fehler
2024.01.26 17:39:39 1: DEBUG>Duplicate keys not allowed, at character offset 2884 (before "": {\n            "d...") at ./FHEM/70_ENPHASE.pm line 858.

2024.01.26 17:39:39 1: DEBUG>{
    "connection": {
        "mqtt_state": "connected",
        "prov_state": "configured",
        "auth_state": "ok",
        "sc_stream": "enabled",
        "sc_debug": "disabled"
    },
    "meters": {
        "last_update": 1706287461,
        "soc": 0,
        "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": 0,
        "enc_agg_energy": 0,
        "acb_agg_soc": 0,
        "acb_agg_energy": 0,
        "pv": {
            "agg_p_mw": 0,
            "agg_s_mva": 306951,
            "agg_p_ph_a_mw": 0,
            "agg_p_ph_b_mw": 0,
            "agg_p_ph_c_mw": 0,
            "agg_s_ph_a_mva": 105109,
            "agg_s_ph_b_mva": 87022,
            "agg_s_ph_c_mva": 114818
        },
        "storage": {
            "agg_p_mw": 0,
            "agg_s_mva": 0,
            "agg_p_ph_a_mw": 0,
            "agg_p_ph_b_mw": 0,
            "agg_p_ph_c_mw": 0,
            "agg_s_ph_a_mva": 0,
            "agg_s_ph_b_mva": 0,
            "agg_s_ph_c_mva": 0
        },
        "grid": {
            "agg_p_mw": 269531,
            "agg_s_mva": 713704,
            "agg_p_ph_a_mw": 212640,
            "agg_p_ph_b_mw": 20922,
            "agg_p_ph_c_mw": 35968,
            "agg_s_ph_a_mva": 359289,
            "agg_s_ph_b_mva": 167378,
            "agg_s_ph_c_mva": 187036
        },
        "load": {
            "agg_p_mw": 269531,
            "agg_s_mva": 1020655,
            "agg_p_ph_a_mw": 212640,
            "agg_p_ph_b_mw": 20922,
            "agg_p_ph_c_mw": 35968,
            "agg_s_ph_a_mva": 464398,
            "agg_s_ph_b_mva": 254400,
            "agg_s_ph_c_mva": 301854
        },
        "generator": {
            "agg_p_mw": 0,
            "agg_s_mva": 0,
            "agg_p_ph_a_mw": 0,
            "agg_p_ph_b_mw": 0,
            "agg_p_ph_c_mw": 0,
            "agg_s_ph_a_mva": 0,
            "agg_s_ph_b_mva": 0,
            "agg_s_ph_c_mva": 0
        }
    },
    "tasks": {
        "task_id": -824326656,
        "timestamp": 1706280139
    },
    "counters": {
        "main_CfgLoad": 1,
        "main_CfgChanged": 1,
        "main_CfgNotFound": 168,
        "main_taskUpdate": 7,
        "MqttClient_publish": 6623,
        "MqttClient_respond": 120,
        "MqttClient_msgarrvd": 61,
        "MqttClient_create": 1,
        "MqttClient_setCallbacks": 1,
        "MqttClient_connect": 1,
        "MqttClient_subscribe": 1,
        "SSL_Keys_Create": 1,
        "sc_hdlDataPub": 6991,
        "sc_SendStreamCtrl": 53,
        "sc_SendDemandRspCtrl": 1,
        "rest_Status": 142
    },
    "dry_contacts": {
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "\u0006",
            "dry_contact_status": 3050996
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3050996
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3050996
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3050996
        }
    }
}

Was mir als absolut "programmiertalentfreier Mensch" auffällt: "dry_contact_xxx" kommt in der API-Dokumentation nicht vor - vielleicht hilft dass ja.

Irgendeine gute Idee dazu?

Und Tausend Dank schonmal für das Modul!

Beste Grüße
Sebastian

Christian83

Hi Sebastian,

bei mir sieht die Antwort genauso aus. Bekomme aber keine Fehlermeldung.
Auf welcher Umgebung läuft dein FHEM?

Gruß,
Christian

bastilyk

#5
Hi Christian,

sorry für die späte Rückmeldung!

FHEM (aktuell) läuft auf Debian 11.
Envoy Firmware D7.6.323.

Gerade nochmal Verbose Logging auf 5 gesetzt:

2024.01.31 16:46:54 4: Enphase (lykenvoys): ==> start livedaten
2024.01.31 16:46:55 5: Enphase (lykenvoys): ==> header: HTTP/1.1 200 OK
Server: openresty/1.17.8.1
Date: Wed, 31 Jan 2024 15:46:56 GMT
Content-Type: application/json
Connection: close
Pragma: no-cache
Expires: 1
Cache-Control: no-cache
Strict-Transport-Security: max-age=63072000; includeSubdomains
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
2024.01.31 16:46:55 5: {"production":[{"type":"inverters","activeCount":20,"readingTime":1706715967,"wNow":25,"whLifetime":38636},{"type":"eim","activeCount":1,"measurementType":"production","readingTime":1706716016,"wNow":24.786,"whLifetime":38570.86,"varhLeadLifetime":0.004,"varhLagLifetime":34716.279,"vahLifetime":69834.522,"rmsCurrent":1.384,"rmsVoltage":683.654,"reactPwr":294.441,"apprntPwr":314.925,"pwrFactor":0.07,"whToday":2842.86,"whLastSevenDays":35923.86,"vahToday":7187.522,"varhLeadToday":0.004,"varhLagToday":5044.279}],"consumption":[{"type":"eim","activeCount":1,"measurementType":"total-consumption","readingTime":1706716016,"wNow":848.336,"whLifetime":88282.137,"varhLeadLifetime":58151.103,"varhLagLifetime":-34635.437,"vahLifetime":139385.213,"rmsCurrent":6.465,"rmsVoltage":683.55,"reactPwr":-182.987,"apprntPwr":1474.713,"pwrFactor":0.57,"whToday":10527.137,"whLastSevenDays":28.137,"vahToday":16402.213,"varhLeadToday":8010.103,"varhLagToday":0.0},{"type":"eim","activeCount":1,"measurementType":"net-consumption","readingTime":1706716016,"wNow":823.55,"whLifetime":49876.462,"varhLeadLifetime":58151.106,"varhLagLifetime":80.842,"vahLifetime":139385.213,"rmsCurrent":5.081,"rmsVoltage":683.55,"reactPwr":-477.428,"apprntPwr":1159.524,"pwrFactor":0.71,"whToday":0,"whLastSevenDays":0,"vahToday":0,"varhLeadToday":0,"varhLagToday":0}],"storage":[{"type":"acb","activeCount":0,"readingTime":0,"wNow":0,"whNow":0,"state":"idle"}]}
2024.01.31 16:46:55 5: Enphase (lykenvoys): ==> Error:
2024.01.31 16:46:55 5: Enphase (lykenvoys): ==> ReturnCode: 200
2024.01.31 16:46:55 5: Enphase (lykenvoys): ==> Readingtime: 1706716016
2024.01.31 16:46:55 5: Enphase (lykenvoys): ==> Readingtime: 31
2024.01.31 16:46:55 5: Enphase (lykenvoys): ==> Readingtime: 31
2024.01.31 16:46:55 5: Enphase (lykenvoys): ==> Readingtime: Wed Jan 31 16:46:56 2024
2024.01.31 16:46:56 4: Enphase (lykenvoys): ==> start newlive
2024.01.31 16:46:56 5: Enphase (lykenvoys): ==> header: HTTP/1.1 200 OK
Server: openresty/1.17.8.1
Date: Wed, 31 Jan 2024 15:46:58 GMT
Content-Length: 3401
Connection: close
Strict-Transport-Security: max-age=63072000; includeSubdomains
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
2024.01.31 16:46:56 5: {
    "connection": {
        "mqtt_state": "connected",
        "prov_state": "configured",
        "auth_state": "ok",
        "sc_stream": "enabled",
        "sc_debug": "disabled"
    },
    "meters": {
        "last_update": 1706716017,
        "soc": 0,
        "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": 0,
        "enc_agg_energy": 0,
        "acb_agg_soc": 0,
        "acb_agg_energy": 0,
        "pv": {
            "agg_p_mw": 22437,
            "agg_s_mva": 316772,
            "agg_p_ph_a_mw": 5611,
            "agg_p_ph_b_mw": 11447,
            "agg_p_ph_c_mw": 5379,
            "agg_s_ph_a_mva": 112231,
            "agg_s_ph_b_mva": 91576,
            "agg_s_ph_c_mva": 112964
        },
        "storage": {
            "agg_p_mw": 0,
            "agg_s_mva": 0,
            "agg_p_ph_a_mw": 0,
            "agg_p_ph_b_mw": 0,
            "agg_p_ph_c_mw": 0,
            "agg_s_ph_a_mva": 0,
            "agg_s_ph_b_mva": 0,
            "agg_s_ph_c_mva": 0
        },
        "grid": {
            "agg_p_mw": 824288,
            "agg_s_mva": 1160562,
            "agg_p_ph_a_mw": 169071,
            "agg_p_ph_b_mw": 628321,
            "agg_p_ph_c_mw": 26895,
            "agg_s_ph_a_mva": 321781,
            "agg_s_ph_b_mva": 672030,
            "agg_s_ph_c_mva": 166750
        },
        "load": {
            "agg_p_mw": 846725,
            "agg_s_mva": 1477334,
            "agg_p_ph_a_mw": 174682,
            "agg_p_ph_b_mw": 639768,
            "agg_p_ph_c_mw": 32274,
            "agg_s_ph_a_mva": 434012,
            "agg_s_ph_b_mva": 763606,
            "agg_s_ph_c_mva": 279714
        },
        "generator": {
            "agg_p_mw": 0,
            "agg_s_mva": 0,
            "agg_p_ph_a_mw": 0,
            "agg_p_ph_b_mw": 0,
            "agg_p_ph_c_mw": 0,
            "agg_s_ph_a_mva": 0,
            "agg_s_ph_b_mva": 0,
            "agg_s_ph_c_mva": 0
        }
    },
    "tasks": {
        "task_id": -790354963,
        "timestamp": 1706628923
    },
    "counters": {
        "main_CfgLoad": 1,
        "main_CfgChanged": 1,
        "main_taskUpdate": 1,
        "MqttClient_publish": 5500,
        "MqttClient_respond": 24,
        "MqttClient_msgarrvd": 12,
        "MqttClient_create": 2,
        "MqttClient_setCallbacks": 2,
        "MqttClient_connect": 2,
        "MqttClient_subscribe": 2,
        "SSL_Keys_Create": 2,
        "sc_hdlDataPub": 85406,
        "sc_SendStreamCtrl": 163,
        "sc_SendDemandRspCtrl": 1,
        "rest_Status": 1646
    },
    "dry_contacts": {
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "\u0006",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        }
    }
}
2024.01.31 16:46:56 5: Enphase (lykenvoys): ==> Error:
2024.01.31 16:46:56 5: Enphase (lykenvoys): ==> ReturnCode: 200
2024.01.31 16:46:56 1: DEBUG>eval Fehler
2024.01.31 16:46:56 1: DEBUG>Duplicate keys not allowed, at character offset 2870 (before "": {\n            "d...") at ./FHEM/70_ENPHASE.pm line 858.

2024.01.31 16:46:56 1: DEBUG>{
    "connection": {
        "mqtt_state": "connected",
        "prov_state": "configured",
        "auth_state": "ok",
        "sc_stream": "enabled",
        "sc_debug": "disabled"
    },
    "meters": {
        "last_update": 1706716017,
        "soc": 0,
        "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": 0,
        "enc_agg_energy": 0,
        "acb_agg_soc": 0,
        "acb_agg_energy": 0,
        "pv": {
            "agg_p_mw": 22437,
            "agg_s_mva": 316772,
            "agg_p_ph_a_mw": 5611,
            "agg_p_ph_b_mw": 11447,
            "agg_p_ph_c_mw": 5379,
            "agg_s_ph_a_mva": 112231,
            "agg_s_ph_b_mva": 91576,
            "agg_s_ph_c_mva": 112964
        },
        "storage": {
            "agg_p_mw": 0,
            "agg_s_mva": 0,
            "agg_p_ph_a_mw": 0,
            "agg_p_ph_b_mw": 0,
            "agg_p_ph_c_mw": 0,
            "agg_s_ph_a_mva": 0,
            "agg_s_ph_b_mva": 0,
            "agg_s_ph_c_mva": 0
        },
        "grid": {
            "agg_p_mw": 824288,
            "agg_s_mva": 1160562,
            "agg_p_ph_a_mw": 169071,
            "agg_p_ph_b_mw": 628321,
            "agg_p_ph_c_mw": 26895,
            "agg_s_ph_a_mva": 321781,
            "agg_s_ph_b_mva": 672030,
            "agg_s_ph_c_mva": 166750
        },
        "load": {
            "agg_p_mw": 846725,
            "agg_s_mva": 1477334,
            "agg_p_ph_a_mw": 174682,
            "agg_p_ph_b_mw": 639768,
            "agg_p_ph_c_mw": 32274,
            "agg_s_ph_a_mva": 434012,
            "agg_s_ph_b_mva": 763606,
            "agg_s_ph_c_mva": 279714
        },
        "generator": {
            "agg_p_mw": 0,
            "agg_s_mva": 0,
            "agg_p_ph_a_mw": 0,
            "agg_p_ph_b_mw": 0,
            "agg_p_ph_c_mw": 0,
            "agg_s_ph_a_mva": 0,
            "agg_s_ph_b_mva": 0,
            "agg_s_ph_c_mva": 0
        }
    },
    "tasks": {
        "task_id": -790354963,
        "timestamp": 1706628923
    },
    "counters": {
        "main_CfgLoad": 1,
        "main_CfgChanged": 1,
        "main_taskUpdate": 1,
        "MqttClient_publish": 5500,
        "MqttClient_respond": 24,
        "MqttClient_msgarrvd": 12,
        "MqttClient_create": 2,
        "MqttClient_setCallbacks": 2,
        "MqttClient_connect": 2,
        "MqttClient_subscribe": 2,
        "SSL_Keys_Create": 2,
        "sc_hdlDataPub": 85406,
        "sc_SendStreamCtrl": 163,
        "sc_SendDemandRspCtrl": 1,
        "rest_Status": 1646
    },
    "dry_contacts": {
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "\u0006",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        }
    }
}

Grüße
Sebastian


###EDIT: Habe das Modul gerade auf einer zweiten FHEM Instanz, in Betrieb genommen -> Funktioniert prima!
Der Fehler liegt also verm. irgendwo in der langen Geschichte meiner Hauptinstanz, dein Modul funktioniert aber einwandfrei.

Nichts für Ungut und Danke nochmal für das Modul :-)

Christian83

Hallo Sebastian,

freut mich zu hören.
Ich tippe auf eine bestimmte perl Version bzw. Json Parser, der bei duplicate keys diese Fehlermeldung wirft.
Wenn es in einer andern Umgebung klappt würde ich das als wahrscheinlichste Ursache annehmen.

Gruß,
Christian

inf0

Hallo Christian,

habe das Modul in Betrieb genommen und läuft einwandfrei. Danke, dass Du Dir so viel Mühe damit gemacht hast und es auf diesem Wege mit uns teilst!

Ich finde, die Community ist eine der großen Stärken von FHEM.

Viele Grüße

Alan

StefanT

Hallo Christian,
ich habe seit letzter Woche auch eine Enphase-PV-Anlage. Bei der Suche in FHEM bin ich dann über dein Modul gestolpert. Prima, dass es da schon was gibt. Ich habe das Modul jetzt heruntergeladen und installiert. Funktioniert soweit auch. Allerdings bekomme ich nur die Readings "whTodayConsumption" und "whTodayProduction". Eigentlich müsste da doch mehr kommen, oder? Zumindest, wenn ich in das Modul reinschaue, sieht man dort ja noch weitere Readings.
Hast du eventuell einen Tipp für mich?
Vielen Dank schon mal
Stefan

Christian83

Zitat von: StefanT am 12 März 2024, 17:31:57Hallo Christian,
ich habe seit letzter Woche auch eine Enphase-PV-Anlage. Bei der Suche in FHEM bin ich dann über dein Modul gestolpert. Prima, dass es da schon was gibt. Ich habe das Modul jetzt heruntergeladen und installiert. Funktioniert soweit auch. Allerdings bekomme ich nur die Readings "whTodayConsumption" und "whTodayProduction". Eigentlich müsste da doch mehr kommen, oder? Zumindest, wenn ich in das Modul reinschaue, sieht man dort ja noch weitere Readings.
Hast du eventuell einen Tipp für mich?
Vielen Dank schon mal
Stefan

Hi Stefan,

mach mal ein List deines Devices (Zugangsdaten, Key, etc. maskieren).

Gruß,
Christian

StefanT

Hi Christian,
hier das List von meinem Enphase...  Vielleicht kannst du ja was erkennen.
Was mir auch noch aufgefallen ist, es findet auch keine Aktualisierung der Readings statt, immer nur bei einem "get LiveData".
Vielen Dank für deine Unterstützung
Internals:
   CFGFN     
   DEF        192.168.178.220 xxxxxx.xxxxx@xxxxx.xxx 12xxxxxxxx32
   FUUID      65f07a6c-f33f-1b33-2822-06607050a0b6430d
   IP         192.168.178.220
   NAME       Enphase
   NR         173
   STATE      reading newlive
   TYPE       ENPHASE
   eventCount 2473
   name       Enphase
   serialnum  12xxxxxxxx32
   username   xxxxxx.xxxxx@xxxxx.xxx
   READINGS:
     2024-03-12 16:54:08   StorageSerial1  492251004630
     2024-03-13 06:18:28   counttimeout    0
     2024-03-12 16:53:37   sessionIDLocal  iTu5nY0sTaoq0T0QhP0IjvsXYwSfNXjx
     2024-03-12 16:53:34   sessionid       bfe08cb9d54279689fe14adc6fe85c79
     2024-03-16 17:41:34   state           reading newlive
     2024-03-12 16:53:36   token           eyJraWQiOiI3ZDEwMDA1ZC03ODk5LTRkMGQtYmNiNC0yNDRmOThlZTE1NmIiLCJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJhdWQiOiIxMjIzMTkwMDU5MzIiLCJpc3MiOiJFbnRyZXoiLCJlbnBoYXNlVXNlciI6Im93bmVyIiwiZXhwIjoxNzQxNzk0ODE2LCJpYXQiOjE3MTAyNTg4MTYsImp0aSI6IjcxZTliZTUzLTZhMTktNDkzYy05ZDJkLTQ4MThlYjU3OWI3NSIsInVzZXJuYW1lIjoic3RlZmFuLnRpZGF1QGdtYWlsLmNvbSJ9.hoBZyaOWZ7fHYemF0iKtl2_T3OUliNG1waP76cISMPz7oICe2aPr_g2_S4vilp97zvxAG22-xWCbndq_E7JKDg
     2024-03-13 06:18:28   whTodayConsumption 671.689
     2024-03-13 06:18:28   whTodayProduction 426.934
   hmccu:
Attributes:
   room       Enphase

Christian83

Hi Stefan,

Der state sieht komisch aus.
Mach mal verbose auf 5 und zeig mal das log bzw. nen Auszug davon. Ich glaub er hat ein Problem mit der Antwort vom Gerät.

Welche Firmware hat dein Gateway? (Sieht man in der App unter System - Geräte)

StefanT

Hallo Christian,
sorry, dass ich mich erst jetzt melde.

Gateway ENV-S-EM-230 hat die Firmware D7.6.323

Logging bei get LiveData:
2024.03.20 18:13:28.612 4: Enphase (Enphase): ==> start livedaten
2024.03.20 18:13:29.111 5: Enphase (Enphase): ==> header: HTTP/1.1 200 OK
Server: openresty/1.17.8.1
Date: Wed, 20 Mar 2024 17:13:50 GMT
Content-Type: application/json
Connection: close
Pragma: no-cache
Expires: 1
Cache-Control: no-cache
Strict-Transport-Security: max-age=63072000; includeSubdomains
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
2024.03.20 18:13:29.111 5: {"production":[{"type":"inverters","activeCount":13,"readingTime":1710954824,"wNow":12,"whLifetime":187432},{"type":"eim","activeCount":1,"measurementType":"production","readingTime":1710954830,"wNow":15.103,"whLifetime":184629.844,"varhLeadLifetime":1207.799,"varhLagLifetime":62039.665,"vahLifetime":246450.722,"rmsCurrent":0.957,"rmsVoltage":695.056,"reactPwr":202.635,"apprntPwr":221.678,"pwrFactor":0.07,"whToday":11468.844,"whLastSevenDays":82982.844,"vahToday":13335.722,"varhLeadToday":121.799,"varhLagToday":2392.665}],"consumption":[{"type":"eim","activeCount":1,"measurementType":"total-consumption","readingTime":1710954830,"wNow":18.608,"whLifetime":116574.382,"varhLeadLifetime":173398.875,"varhLagLifetime":-60788.908,"vahLifetime":355515.028,"rmsCurrent":-0.399,"rmsVoltage":695.225,"reactPwr":-371.218,"apprntPwr":-91.526,"pwrFactor":1.0,"whToday":6748.382,"whLastSevenDays":4.382,"vahToday":17502.028,"varhLeadToday":7247.875,"varhLagToday":0.0},{"type":"eim","activeCount":1,"measurementType":"net-consumption","readingTime":1710954830,"wNow":3.505,"whLifetime":-67995.306,"varhLeadLifetime":174606.675,"varhLagLifetime":1250.757,"vahLifetime":355515.028,"rmsCurrent":-1.356,"rmsVoltage":695.225,"reactPwr":-573.853,"apprntPwr":-313.166,"pwrFactor":1.0,"whToday":0,"whLastSevenDays":0,"vahToday":0,"varhLeadToday":0,"varhLagToday":0}],"storage":[{"type":"acb","activeCount":0,"readingTime":0,"wNow":0,"whNow":0,"state":"idle"}]}
2024.03.20 18:13:29.111 5: Enphase (Enphase): ==> Error:
2024.03.20 18:13:29.112 5: Enphase (Enphase): ==> ReturnCode: 200
2024.03.20 18:13:29.112 5: Enphase (Enphase): ==> Readingtime: 1710954830
2024.03.20 18:13:29.112 5: Enphase (Enphase): ==> Readingtime: 20
2024.03.20 18:13:29.113 5: Enphase (Enphase): ==> Readingtime: 20
2024.03.20 18:13:29.113 5: Enphase (Enphase): ==> Readingtime: Wed Mar 20 18:13:50 2024
2024.03.20 18:13:30.118 4: Enphase (Enphase): ==> start newlive
2024.03.20 18:13:30.360 5: Enphase (Enphase): ==> header: HTTP/1.1 200 OK
Server: openresty/1.17.8.1
Date: Wed, 20 Mar 2024 17:13:52 GMT
Content-Length: 3544
Connection: close
Strict-Transport-Security: max-age=63072000; includeSubdomains
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
2024.03.20 18:13:30.360 5: {
    "connection": {
        "mqtt_state": "connected",
        "prov_state": "configured",
        "auth_state": "ok",
        "sc_stream": "disabled",
        "sc_debug": "disabled"
    },
    "meters": {
        "last_update": 1710946284,
        "soc": 100,
        "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": 100,
        "enc_agg_energy": 3500,
        "acb_agg_soc": 0,
        "acb_agg_energy": 0,
        "pv": {
            "agg_p_mw": 650021,
            "agg_s_mva": 743692,
            "agg_p_ph_a_mw": 206554,
            "agg_p_ph_b_mw": 242762,
            "agg_p_ph_c_mw": 200704,
            "agg_s_ph_a_mva": 228684,
            "agg_s_ph_b_mva": 278462,
            "agg_s_ph_c_mva": 236545
        },
        "storage": {
            "agg_p_mw": 0,
            "agg_s_mva": 0,
            "agg_p_ph_a_mw": 0,
            "agg_p_ph_b_mw": 0,
            "agg_p_ph_c_mw": 0,
            "agg_s_ph_a_mva": 0,
            "agg_s_ph_b_mva": 0,
            "agg_s_ph_c_mva": 0
        },
        "grid": {
            "agg_p_mw": -485313,
            "agg_s_mva": -749447,
            "agg_p_ph_a_mw": -111490,
            "agg_p_ph_b_mw": -238693,
            "agg_p_ph_c_mw": -135131,
            "agg_s_ph_a_mva": -282441,
            "agg_s_ph_b_mva": -282092,
            "agg_s_ph_c_mva": -184915
        },
        "load": {
            "agg_p_mw": 164708,
            "agg_s_mva": -5755,
            "agg_p_ph_a_mw": 95064,
            "agg_p_ph_b_mw": 4069,
            "agg_p_ph_c_mw": 65573,
            "agg_s_ph_a_mva": -53757,
            "agg_s_ph_b_mva": -3630,
            "agg_s_ph_c_mva": 51630
        },
        "generator": {
            "agg_p_mw": 0,
            "agg_s_mva": 0,
            "agg_p_ph_a_mw": 0,
            "agg_p_ph_b_mw": 0,
            "agg_p_ph_c_mw": 0,
            "agg_s_ph_a_mva": 0,
            "agg_s_ph_b_mva": 0,
            "agg_s_ph_c_mva": 0
        }
    },
    "tasks": {
        "task_id": -384092949,
        "timestamp": 1710830689
    },
    "counters": {
        "main_CfgLoad": 1,
        "main_CfgChanged": 1,
        "main_taskUpdate": 49,
        "MqttClient_publish": 299165,
        "MqttClient_live_debug": 1113,
        "MqttClient_respond": 2240,
        "MqttClient_msgarrvd": 1120,
        "MqttClient_create": 11,
        "MqttClient_setCallbacks": 11,
        "MqttClient_connect": 11,
        "MqttClient_connect_err": 7,
        "MqttClient_connect_Err": 7,
        "MqttClient_subscribe": 4,
        "SSL_Keys_Create": 11,
        "sc_hdlDataPub": 299226,
        "sc_SendStreamCtrl": 1238,
        "sc_SendDemandRspCtrl": 1,
        "rest_Status": 22754
    },
    "dry_contacts": {
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "\u0006",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        }
    }
}
2024.03.20 18:13:30.360 5: Enphase (Enphase): ==> Error:
2024.03.20 18:13:30.360 5: Enphase (Enphase): ==> ReturnCode: 200
2024.03.20 18:13:30.361 1: DEBUG>eval Fehler
2024.03.20 18:13:30.361 1: DEBUG>Duplicate keys not allowed, at character offset 3013 (before "": {\n            "d...") at ./FHEM/70_ENPHASE.pm line 858.

2024.03.20 18:13:30.361 1: DEBUG>{
    "connection": {
        "mqtt_state": "connected",
        "prov_state": "configured",
        "auth_state": "ok",
        "sc_stream": "disabled",
        "sc_debug": "disabled"
    },
    "meters": {
        "last_update": 1710946284,
        "soc": 100,
        "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": 100,
        "enc_agg_energy": 3500,
        "acb_agg_soc": 0,
        "acb_agg_energy": 0,
        "pv": {
            "agg_p_mw": 650021,
            "agg_s_mva": 743692,
            "agg_p_ph_a_mw": 206554,
            "agg_p_ph_b_mw": 242762,
            "agg_p_ph_c_mw": 200704,
            "agg_s_ph_a_mva": 228684,
            "agg_s_ph_b_mva": 278462,
            "agg_s_ph_c_mva": 236545
        },
        "storage": {
            "agg_p_mw": 0,
            "agg_s_mva": 0,
            "agg_p_ph_a_mw": 0,
            "agg_p_ph_b_mw": 0,
            "agg_p_ph_c_mw": 0,
            "agg_s_ph_a_mva": 0,
            "agg_s_ph_b_mva": 0,
            "agg_s_ph_c_mva": 0
        },
        "grid": {
            "agg_p_mw": -485313,
            "agg_s_mva": -749447,
            "agg_p_ph_a_mw": -111490,
            "agg_p_ph_b_mw": -238693,
            "agg_p_ph_c_mw": -135131,
            "agg_s_ph_a_mva": -282441,
            "agg_s_ph_b_mva": -282092,
            "agg_s_ph_c_mva": -184915
        },
        "load": {
            "agg_p_mw": 164708,
            "agg_s_mva": -5755,
            "agg_p_ph_a_mw": 95064,
            "agg_p_ph_b_mw": 4069,
            "agg_p_ph_c_mw": 65573,
            "agg_s_ph_a_mva": -53757,
            "agg_s_ph_b_mva": -3630,
            "agg_s_ph_c_mva": 51630
        },
        "generator": {
            "agg_p_mw": 0,
            "agg_s_mva": 0,
            "agg_p_ph_a_mw": 0,
            "agg_p_ph_b_mw": 0,
            "agg_p_ph_c_mw": 0,
            "agg_s_ph_a_mva": 0,
            "agg_s_ph_b_mva": 0,
            "agg_s_ph_c_mva": 0
        }
    },
    "tasks": {
        "task_id": -384092949,
        "timestamp": 1710830689
    },
    "counters": {
        "main_CfgLoad": 1,
        "main_CfgChanged": 1,
        "main_taskUpdate": 49,
        "MqttClient_publish": 299165,
        "MqttClient_live_debug": 1113,
        "MqttClient_respond": 2240,
        "MqttClient_msgarrvd": 1120,
        "MqttClient_create": 11,
        "MqttClient_setCallbacks": 11,
        "MqttClient_connect": 11,
        "MqttClient_connect_err": 7,
        "MqttClient_connect_Err": 7,
        "MqttClient_subscribe": 4,
        "SSL_Keys_Create": 11,
        "sc_hdlDataPub": 299226,
        "sc_SendStreamCtrl": 1238,
        "sc_SendDemandRspCtrl": 1,
        "rest_Status": 22754
    },
    "dry_contacts": {
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "\u0006",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        }
    }
}


Viele Grüße
Stefan

Christian83

Hallo Stefan,

in #5 war das gleiche Problem.

Welche Umgebung hast du denn im Einsatz?

Ich kann das Problem bei mir nicht nachbauen.
Liegt vielleicht an der Perl-Version?

StefanT

Hi Christian,

danke für die Info. Mein "Home-Automation-PC" läuft unter Ubuntu 22.04.4 LTS. Fhem läuft bei mir allerdings darauf als Docker-Image. Dort wird die Perl-Version 5.32.1 genutzt. Habe mir auch nochmal eine zweite aktuelle FHEM-Installation erzeugt und dort das Modul installiert. Dort laufe ich aber auf denselben Fehler. Schade eigentlich.
Aber vielen Dank für deine Unterstützung.

Gruß Stefan

Christian83

Zitat von: StefanT am 23 März 2024, 20:11:27Hi Christian,

danke für die Info. Mein "Home-Automation-PC" läuft unter Ubuntu 22.04.4 LTS. Fhem läuft bei mir allerdings darauf als Docker-Image. Dort wird die Perl-Version 5.32.1 genutzt. Habe mir auch nochmal eine zweite aktuelle FHEM-Installation erzeugt und dort das Modul installiert. Dort laufe ich aber auf denselben Fehler. Schade eigentlich.
Aber vielen Dank für deine Unterstützung.

Gruß Stefan


Kannst du rauszufinden, welche JSON Version dein perl nutzt?

StefanT

Hast du 'ne Idee, wo man das nachsehen kann. Bin jetzt aber erstmal ein paar Tage auf Schulung.
LG Stefan

Christian83

Zitat von: StefanT am 24 März 2024, 12:08:14Hast du 'ne Idee, wo man das nachsehen kann. Bin jetzt aber erstmal ein paar Tage auf Schulung.
LG Stefan

In der Kommandozeile (putty)
perl -MJSON\ 999

StefanT

Zitat von: Christian83 am 25 März 2024, 13:11:54In der Kommandozeile (putty)
Code Auswählen Erweitern
perl -MJSON\ 999

Da sagt er mir: JSON version 999 required--this is only version 4.10.

Christian83

Hallo Stefan,

ich hatte 4.03. Habe jetzt auf 4.10 umgestellt. Funktioniert trotzdem.

Kann das Problem leider nicht nachstellen und dementsprechend auch nicht versuchen es zu umgehen.

StefanT

Hallo Christian,

das ist ja schon sehr merkwürdig... Keine Ahnung, was da bei meiner Installation das Problem ist...

Aber egal, ich habe jetzt eine Lösung gefunden. Ich habe dein Modul bei mir ein wenig angepasst. Vor dem JSON-decode entferne ich aus den Daten jeweils das Kapitel mit den doppelten Schlüsseln.
    "dry_contacts": {
        " \u0011": {
            "dry_contact_id": " \u0011",
            "dry_contact_type": " \u0011",
            "dry_contact_load_name": "\u0006",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        }
    }
bzw.
        "10": {
            "SOC": 5,
            "BMU_Comm_State": 3,
            "Num Acive PCUs": 4,
            "LED Status": 17,
            "Enc Grid State": 0,
            "Enc Internal State": 1,
            "Timestamp": 1712524028,
            "Serial": "122249010830",
            "Oper state": 1,
            "Enph Oper state": 0,
            "Comm State": 6,
            "Grid State": 0,
            "pcu_events": 0,
            "Serial": "122249010598",
            "Oper state": 1,
            "Enph Oper state": 0,
            "Comm State": 6,
            "Grid State": 0,
            "pcu_events": 0,
            "Serial": "122249015697",
            "Oper state": 1,
            "Enph Oper state": 0,
            "Comm State": 6,
            "Grid State": 0,
            "pcu_events": 0,
            "Serial": "122249015777",
            "Oper state": 1,
            "Enph Oper state": 0,
            "Comm State": 6,
            "Grid State": 0,
            "pcu_events": 0
        }

Damit funktioniert es jetzt bei mir. Die Readings werden gelesen und auch regelmäßig aktualisiert.

Vielen Dank für deine Mühe und deine Unterstützung.

Lieben Gruß
Stefan

Der Olaf

Hallo Stefan,
würdest Du Dein modifiziertes Modul hier bereitstellen?
Gruß Olaf

Christian83

Zitat von: StefanT am 08 April 2024, 13:14:28Hallo Christian,

das ist ja schon sehr merkwürdig... Keine Ahnung, was da bei meiner Installation das Problem ist...

Aber egal, ich habe jetzt eine Lösung gefunden. Ich habe dein Modul bei mir ein wenig angepasst. Vor dem JSON-decode entferne ich aus den Daten jeweils das Kapitel mit den doppelten Schlüsseln.
    "dry_contacts": {
        " \u0011": {
            "dry_contact_id": " \u0011",
            "dry_contact_type": " \u0011",
            "dry_contact_load_name": "\u0006",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3047892
        }
    }
bzw.
        "10": {
            "SOC": 5,
            "BMU_Comm_State": 3,
            "Num Acive PCUs": 4,
            "LED Status": 17,
            "Enc Grid State": 0,
            "Enc Internal State": 1,
            "Timestamp": 1712524028,
            "Serial": "122249010830",
            "Oper state": 1,
            "Enph Oper state": 0,
            "Comm State": 6,
            "Grid State": 0,
            "pcu_events": 0,
            "Serial": "122249010598",
            "Oper state": 1,
            "Enph Oper state": 0,
            "Comm State": 6,
            "Grid State": 0,
            "pcu_events": 0,
            "Serial": "122249015697",
            "Oper state": 1,
            "Enph Oper state": 0,
            "Comm State": 6,
            "Grid State": 0,
            "pcu_events": 0,
            "Serial": "122249015777",
            "Oper state": 1,
            "Enph Oper state": 0,
            "Comm State": 6,
            "Grid State": 0,
            "pcu_events": 0
        }

Damit funktioniert es jetzt bei mir. Die Readings werden gelesen und auch regelmäßig aktualisiert.

Vielen Dank für deine Mühe und deine Unterstützung.

Lieben Gruß
Stefan


Hi,

zeig mal wie du das machst. Dann baue ich das bei mir ein.

Gruß

StefanT

#23
Zitat von: Christian83 am 08 April 2024, 15:06:51Hi,

zeig mal wie du das machst. Dann baue ich das bei mir ein.

Gruß

Einmal für getLiveData hinzugefügt:
    # Abschnitt "dry_contacts" wegen duplicate Keys vor dem decode entfernen
    $data = substr($data,0,index($data,"dry_contacts"));
    $data = substr($data,0,rindex($data,","))."}";

sub ENPHASE_getnewliveData($) {

    my ( $param, $err, $data ) = @_;
    my $hash = $param->{hash};
    my $name = $hash->{NAME};

    readingsSingleUpdate( $hash, "state", "reading newlive", 1 );

    my $retVal = checkHttpResponse( $param, $err, $data );
    if ($retVal) {
        return;
    }

    # Abschnitt "dry_contacts" wegen duplicate Keys vor dem decode entfernen
    $data = substr($data,0,index($data,"dry_contacts"));
    $data = substr($data,0,rindex($data,","))."}";
   
    my $decoded_json;
    eval {
        my $json_bytes = encode( 'UTF-8', $data );
        $decoded_json = JSON->new->utf8->decode($json_bytes);
    };
    if ($@) {
        Debug("eval Fehler");
        Debug($@);
        Debug($data);
        InternalTimer( gettimeofday() + $updateinterval, "ENPHASE_getnewliveStart", $hash );
        return;

    }
    ...

Und einmal für getStorageData hinzugefügt:
    # Abschnitt "10": wegen duplicate Keys vor dem decode entfernen
    $data = substr($data,0,index($data,"\"10\":"));
    $data = substr($data,0,rindex($data,","))."}}";

sub ENPHASE_getStorageRawData($) {

    ...
    if ( $data eq "" ) {

        #$hash->{STATE} = "no Data in Live Status";
        readingsSingleUpdate( $hash, "state", "no data in newlive", 1 );
        return;
    }

    # Abschnitt "10": wegen duplicate Keys vor dem decode entfernen
    $data = substr($data,0,index($data,"\"10\":"));
    $data = substr($data,0,rindex($data,","))."}}";

    my $decoded_json;
    eval {
        my $json_bytes = encode( 'UTF-8', $data );
        $decoded_json = JSON->new->utf8->decode($json_bytes);

        #        $decoded_json = decode_json($data);
    };
    if ($@) {
        Debug("eval Fehler");
        Debug($@);
        Debug($data);
        InternalTimer( gettimeofday() + $updateinterval, "ENPHASE_getnewliveStart", $hash );
        return;

    }
    ...

StefanT

Zitat von: Der Olaf am 08 April 2024, 14:51:46Hallo Stefan,
würdest Du Dein modifiziertes Modul hier bereitstellen?

Hi Olaf,
hast du auch die Probleme mit den "duplicate Keys"?
Da Christian die Änderung in sein Modul übernehmen möchte, schlage ich vor, dass Christian dann das geänderte Modul hier zur Verfügung stellt.
Viele Grüße
Stefan

Der Olaf

Moin Stefan, moin Christian,
ich habe jetzt einmal die beiden "Modifikationen" in das Modul eingearbeitet, im ersten Step hatte ich irgendwo noch einen Fehler, jetzt läuft's.
Sieht jedenfalls so aus.
  Du darfst diesen Dateianhang nicht ansehen.
Gruß Olaf

Der Olaf

Hallo zusammen,
das Modul funktionierte jetzt mit den obigen Anpassungen einige Tage. Leider habe ich seit gestern immer den Fehler im "state" = "Daten zu alt". Das ganze läuft in einer Dauerschleife.
Es werden auch nicht mehr alle readings angezeigt.
Nachfolgend aus dem Log (verbose 5) ein Auszug (hoffentlich komplett?).
Ich bin da nicht fit genug drin, das komplett zu lesen und zu verstehen.
Vielen Dank für Hilfe.
2024.04.14 13:36:37.812 4: Enphase (MEIN-DEVICE-NAME): ==> start livedaten
2024.04.14 13:36:38.683 5: Enphase (MEIN-DEVICE-NAME): ==> header: HTTP/1.1 200 OK
Server: openresty/1.17.8.1
Date: Sun, 14 Apr 2024 11:36:23 GMT
Content-Type: application/json
Connection: close
Pragma: no-cache
Expires: 1
Cache-Control: no-cache
Strict-Transport-Security: max-age=63072000; includeSubdomains
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
2024.04.14 13:36:38.683 5: {"production":[{"type":"inverters","activeCount":17,"readingTime":1713094582,"wNow":4603,"whLifetime":170902},{"type":"eim","activeCount":1,"measurementType":"production","readingTime":1713094583,"wNow":4445.977,"whLifetime":173926.92,"varhLeadLifetime":20.998,"varhLagLifetime":57900.881,"vahLifetime":216355.543,"rmsCurrent":18.404,"rmsVoltage":699.422,"reactPwr":266.564,"apprntPwr":4490.787,"pwrFactor":0.98,"whToday":15206.92,"whLastSevenDays":131661.92,"vahToday":17482.543,"varhLeadToday":1.998,"varhLagToday":3677.881}],"consumption":[{"type":"eim","activeCount":1,"measurementType":"total-consumption","readingTime":1713094583,"wNow":139.9,"whLifetime":83512.512,"varhLeadLifetime":110707.133,"varhLagLifetime":-55847.188,"vahLifetime":280513.318,"rmsCurrent":0.471,"rmsVoltage":699.438,"reactPwr":-247.726,"apprntPwr":109.172,"pwrFactor":1.0,"whToday":5345.512,"whLastSevenDays":12151.512,"vahToday":17978.318,"varhLeadToday":5247.133,"varhLagToday":0.0},{"type":"eim","activeCount":1,"measurementType":"net-consumption","readingTime":1713094583,"wNow":-4306.077,"whLifetime":-90186.497,"varhLeadLifetime":110728.131,"varhLagLifetime":2053.693,"vahLifetime":280513.318,"rmsCurrent":-17.934,"rmsVoltage":699.438,"reactPwr":-514.29,"apprntPwr":-4180.388,"pwrFactor":-1.0,"whToday":0,"whLastSevenDays":0,"vahToday":0,"varhLeadToday":0,"varhLagToday":0}],"storage":[{"type":"acb","activeCount":0,"readingTime":0,"wNow":0,"whNow":0,"state":"idle"}]}
2024.04.14 13:36:38.683 5: Enphase (MEIN-DEVICE-NAME): ==> Error:
2024.04.14 13:36:38.683 5: Enphase (MEIN-DEVICE-NAME): ==> ReturnCode: 200
2024.04.14 13:36:38.684 5: Enphase (MEIN-DEVICE-NAME): ==> Readingtime: 1713094583
2024.04.14 13:36:38.684 5: Enphase (MEIN-DEVICE-NAME): ==> Readingtime: 14
2024.04.14 13:36:38.684 5: Enphase (MEIN-DEVICE-NAME): ==> Readingtime: 14
2024.04.14 13:36:38.685 5: Enphase (MEIN-DEVICE-NAME): ==> Readingtime: Sun Apr 14 13:36:23 2024
2024.04.14 13:36:39.689 4: Enphase (MEIN-DEVICE-NAME): ==> start newlive
2024.04.14 13:36:39.942 5: Enphase (MEIN-DEVICE-NAME): ==> header: HTTP/1.1 200 OK
Server: openresty/1.17.8.1
Date: Sun, 14 Apr 2024 11:36:24 GMT
Content-Length: 3515
Connection: close
Strict-Transport-Security: max-age=63072000; includeSubdomains
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
2024.04.14 13:36:39.942 5: {
    "connection": {
        "mqtt_state": "connected",
        "prov_state": "configured",
        "auth_state": "ok",
        "sc_stream": "enabled",
        "sc_debug": "disabled"
    },
    "meters": {
        "last_update": 1713094584,
        "soc": 100,
        "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": 100,
        "enc_agg_energy": 3500,
        "acb_agg_soc": 0,
        "acb_agg_energy": 0,
        "pv": {
            "agg_p_mw": 2740309,
            "agg_s_mva": 2756464,
            "agg_p_ph_a_mw": 966102,
            "agg_p_ph_b_mw": 990604,
            "agg_p_ph_c_mw": 783602,
            "agg_s_ph_a_mva": 971470,
            "agg_s_ph_b_mva": 995988,
            "agg_s_ph_c_mva": 789006
        },
        "storage": {
            "agg_p_mw": 0,
            "agg_s_mva": 0,
            "agg_p_ph_a_mw": 0,
            "agg_p_ph_b_mw": 0,
            "agg_p_ph_c_mw": 0,
            "agg_s_ph_a_mva": 0,
            "agg_s_ph_b_mva": 0,
            "agg_s_ph_c_mva": 0
        },
        "grid": {
            "agg_p_mw": -2572318,
            "agg_s_mva": -2642358,
            "agg_p_ph_a_mw": -805104,
            "agg_p_ph_b_mw": -994369,
            "agg_p_ph_c_mw": -772847,
            "agg_s_ph_a_mva": -858777,
            "agg_s_ph_b_mva": -999773,
            "agg_s_ph_c_mva": -783809
        },
        "load": {
            "agg_p_mw": 167991,
            "agg_s_mva": 114106,
            "agg_p_ph_a_mw": 160998,
            "agg_p_ph_b_mw": -3765,
            "agg_p_ph_c_mw": 10755,
            "agg_s_ph_a_mva": 112693,
            "agg_s_ph_b_mva": -3785,
            "agg_s_ph_c_mva": 5197
        },
        "generator": {
            "agg_p_mw": 0,
            "agg_s_mva": 0,
            "agg_p_ph_a_mw": 0,
            "agg_p_ph_b_mw": 0,
            "agg_p_ph_c_mw": 0,
            "agg_s_ph_a_mva": 0,
            "agg_s_ph_b_mva": 0,
            "agg_s_ph_c_mva": 0
        }
    },
    "tasks": {
        "task_id": -119047617,
        "timestamp": 1713091542
    },
    "counters": {
        "main_CfgLoad": 1,
        "main_CfgChanged": 1,
        "main_taskUpdate": 77,
        "MqttClient_publish": 73561,
        "MqttClient_respond": 626,
        "MqttClient_msgarrvd": 314,
        "MqttClient_create": 128,
        "MqttClient_setCallbacks": 128,
        "MqttClient_connect": 128,
        "MqttClient_connect_err": 110,
        "MqttClient_connect_Err": 110,
        "MqttClient_subscribe": 18,
        "SSL_Keys_Create": 128,
        "sc_hdlDataPub": 324750,
        "sc_SendStreamCtrl": 313,
        "sc_SendDemandRspCtrl": 1,
        "rest_Status": 21214
    },
    "dry_contacts": {
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "\u0006",
            "dry_contact_status": 3051860
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3051860
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3051860
        },
        "": {
            "dry_contact_id": "",
            "dry_contact_type": "",
            "dry_contact_load_name": "",
            "dry_contact_status": 3051860
        }
    }
}
2024.04.14 13:36:39.942 5: Enphase (MEIN-DEVICE-NAME): ==> Error:
2024.04.14 13:36:39.942 5: Enphase (MEIN-DEVICE-NAME): ==> ReturnCode: 200
2024.04.14 13:36:39.944 5: Enphase (MEIN-DEVICE-NAME): ==> Daten zu alt
2024.04.14 13:36:39.945 5: Enphase (MEIN-DEVICE-NAME): ==> Readingtime: 1713094584
2024.04.14 13:36:39.945 5: Enphase (MEIN-DEVICE-NAME): ==> Readingtime: 1713094599.94315
2024.04.14 13:36:39.945 5: Enphase (MEIN-DEVICE-NAME): ==> Readingtime: 15
Gruß Olaf

Christian83

Hallo Olaf,

setze mal das Attribut
readingtimevariancesec - Zeitversatz in Sekunden zwischen lokaler Zeit und Gateway (default 15)

Du bist knapp über den 15 Sekunden.

Gruß,

Christian

Der Olaf

Hallo Christian,
danke für den Tip / Hinweis. Jetzt funktioniert es.
Ich habe das Attribut readingtimevariancesec auf 30 (Sekunden) gestellt.
Damit sollte genug "Reserve" vorhanden sein.
Ich werde das jetzt mal weiter beobachten.
Noch einen schönen Restsonntag.
Gruß Olaf