tp1de / ioBroker.ems-esp

EMS-ESP Adapter
MIT License
18 stars 4 forks source link

Adapter stürzt immer wieder ab #20

Closed MatzeFro closed 1 year ago

MatzeFro commented 1 year ago

Hallo zusammen,

Ich habe eine neue Wärmepumpe und das Gateway S32 von BBQKees (Firmware 3.5.1). die Wärmepumpe und das Gateway scheinen ohne Probleme mit einander zu kommunizieren. Nun haber ich mir den iobroker-Adapter EMS-ESP installiert und versuche ihn erst einmal "minimal" zu betreiben. also nur IP eingetragen. im Gateway noch das "Boolean Format" auf 1/0 und "Bypass Access Token authorization on API calls" auf true

hat jemand eine Idee?

Gruß und Danke

im iobroker log kommt dann folgender Absturz: info: host.yyyyyyyyyyyy instance system.adapter.ems-esp.0 started with pid 20864 info: ems-esp.0 (20864) starting. Version 1.30.0 in /opt/iobroker/node_modules/iobroker.ems-esp, node: v18.16.1, js-controller: 5.0.6 info: ems-esp.0 (20864) API version identified V3 info: ems-esp.0 (20864) start initializing ems states false info: ems-esp.0 (20864) V3 url:http://xx.xx.xx.xx/api/system info: ems-esp.0 (20864) V3 url1:http://xx.xx.xx.xx/api/boiler error: ems-esp.0 (20864) Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). error: ems-esp.0 (20864) unhandled promise rejection: Unexpected token , in JSON at position 119 error: ems-esp.0 (20864) SyntaxError: Unexpected token , in JSON at position 119 at write_state (/opt/iobroker/node_modules/iobroker.ems-esp/lib/ems.js:413:22) at init_states_emsesp (/opt/iobroker/node_modules/iobroker.ems-esp/lib/ems.js:95:8) at async Object.init (/opt/iobroker/node_modules/iobroker.ems-esp/lib/ems.js:44:17) at async main (/opt/iobroker/node_modules/iobroker.ems-esp/main.js:99:49) error: ems-esp.0 (20864) Unexpected token , in JSON at position 119

tp1de commented 1 year ago

Kann ich so nicht nachvollziehen. Poste bitte einen screenshot der Instanzen-Parameter des Adapters. Zusätzlich bitte noch den Output von http://ems-esp/api/boiler (ems-esp ggfs. durch die IP-Adresse ersetzen)

MatzeFro commented 1 year ago

Hallo zusammen,

hier einmal die beiden abfragen.

Danke und Gruß Matthias

EMS-ESP_Konfig boiler_api.txt

MatzeFro commented 1 year ago

Hallo - noch ein Update...

wenn ich das richtig interpretiere ist
"auxheaterstatus": 0, der letzte Eintrag den er in den IOBroker importiert.

gruß und Danke Matthias

tp1de commented 1 year ago

Ich vermute, dass ggfs die Details zur Entity fehlen oder falsch sind. Rufe mal http://ems-esp/api/boiler/auxheaterstatus und http://ems-esp/api/boiler/auxheaterdelay auf und poste das Ergebnis.

tp1de commented 1 year ago

Ich habe den Code zum ems-esp Gateway leicht geändert, um ggfs. diesen Fehler abzufangen. Kannst den Adapter mal vom Github installieren und schauen, ob es dann funktioniert.

MatzeFro commented 1 year ago

Hier die API-Ausgaben:

auxheaterdelay.txt auxheaterstatus.txt

tp1de commented 1 year ago

... und was macht die Github Version des Adapters?

MatzeFro commented 1 year ago

der Adapter läuft schein bar nun mit der "Test-Version" im log kommen noch 2 Warnungen.

ems-esp log

tp1de commented 1 year ago

Die Warnungen kommen von ioBroker, da durch das ems-esp Gateway der Wertebereich mit einem Minimum von 50 übergeben wird, aber der aktuelle Wert 0 ist. (ignorieren) Kannst du mal bitte die Objektdaten (aus dem ioBroker Objektbrowser) des States boiler.auxheaterdelay posten ?

MatzeFro commented 1 year ago

Bitte schön:

{ "_id": "ems-esp.0.boiler.auxheaterdelay", "type": "state", "common": { "id": "boiler.auxheaterdelay", "name": "ems: aux heater on delay", "type": "number", "unit": "K*min", "read": true, "write": true, "role": "level", "min": 10, "max": 1000 }, "native": { "ems_type": "number", "visible": true, "ems_command": "auxheaterdelay", "ems_device": "boiler", "ems_id": "", "ems_api": "V3" }, "from": "system.adapter.ems-esp.0", "user": "system.user.admin", "ts": 1688818972559, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }

tp1de commented 1 year ago

Das sieht ok aus. Muss ein anderer State sein, welcher den Absturz provoziert hat. Ich habe eine geänderte Version in GH hochgeladen, welcher eine Meldung im Log erzeugt. Kannst Du diese Version mal laufen lassen und schauen was im Log steht?

MatzeFro commented 1 year ago

nun stürzt er wieder ab

log

tp1de commented 1 year ago

Mist da war ich etwas zu unkonzentriert - Funktion nennt sich adapter.log.warn und nicht adapter.log .warning .... deshalb der Absturz. Ist korrigiert, kannst du nochmal testen?

tp1de commented 1 year ago

.... sorry ich teste gerade bei mir ... gibt falsche Meldungen aus .... ich muss mal schauen

MatzeFro commented 1 year ago

kann passieren - ich Danke Dir trotzdem

operating time compressor pool = 49710 Tage, 6 Stunden, 24 Minuten

ems-esp.0 2023-07-08 15:46:55.131 info ems :true 30 secs
ems-esp.0 2023-07-08 15:46:55.130 info end of initializing ems states
ems-esp.0 2023-07-08 15:46:50.282 info V3 url1:http://ems-esp.fritz.box/api/thermostat
ems-esp.0 2023-07-08 15:46:38.776 warn wrong ems-esp state definition: boiler.uptimecomppool { "name": "uptimecomppool", "fullname": "operating time compressor pool", "circuit": "", "value": 71582784., "type": "number", "uom": "minutes", "readable": true, "writeable": false, "visible": true }
ems-esp.0 2023-07-08 15:46:25.833 info V3 url1:http://ems-esp.fritz.box/api/boiler
ems-esp.0 2023-07-08 15:46:25.642 info V3 url:http://ems-esp.fritz.box/api/system
ems-esp.0 2023-07-08 15:46:25.638 warn wrong ems-esp state definition: esp.api
ems-esp.0 2023-07-08 15:46:25.635 info start initializing ems states false
ems-esp.0 2023-07-08 15:46:25.630 info API version identified V3
ems-esp.0 2023-07-08 15:46:12.578 info starting. Version 1.30.0 (non-npm: tp1de/ioBroker.ems-esp) in /opt/iobroker/node_modules/iobroker.ems-esp, node: v18.16.1, js-controller: 5.0.6
tp1de commented 1 year ago

so ich habe den Adapter nochmal korrigiert und die falschen Warnmeldungen beim Werte-Update unterdrückt.

Für den State boiler.uptimecomppool (s.o.) ist das JSON Format vom ems-esp API-Interface falsch und bei der Konvertierung entsteht der Fehler. Das Feld "value" hat den Wert 71582784. - das mag Javascript bei der Konvertierung nicht. Richtig wäre 71582784 (ohne Punkt am Ende) oder 71582784.0 (mit Nachkommastelle). Das müsste dann in der ems-esp Firmware (API-Interface) korrigiert werden. Ich wüsste nicht wie ich das im ioBroker Adapter korrigieren könnte.

Nun fange ich den Konvertierungsfehler ab und erzeuge den State ohne diese Informationen. Schau mal wie der dann in ioBroker aussieht.

MatzeFro commented 1 year ago

Nun sieht es ok aus. der Adapter startet jedenfalls nicht mehr durch und die Werte werden sauber aktualisiert

2023-07-08 16:38:12.687 - info: ems-esp.0 (12317) starting. Version 1.30.0 (non-npm: tp1de/ioBroker.ems-esp) in /opt/iobroker/node_modules/iobroker.ems-esp, node: v18.16.1, js-controller: 5.0.6 2023-07-08 16:38:36.072 - info: ems-esp.0 (12317) API version identified V3 2023-07-08 16:38:36.074 - info: ems-esp.0 (12317) start initializing ems states false 2023-07-08 16:38:36.079 - info: ems-esp.0 (12317) V3 url:http://ems-esp.fritz.box/api/system 2023-07-08 16:38:36.276 - info: ems-esp.0 (12317) V3 url1:http://ems-esp.fritz.box/api/boiler 2023-07-08 16:38:47.536 - warn: ems-esp.0 (12317) wrong ems-esp state definition: boiler.uptimecomppool { 2023-07-08 16:38:58.704 - info: ems-esp.0 (12317) V3 url1:http://ems-esp.fritz.box/api/thermostat 2023-07-08 16:39:03.181 - info: ems-esp.0 (12317) end of initializing ems states 2023-07-08 16:39:03.183 - info: ems-esp.0 (12317) ems :true 30 secs 2023-07-08 16:39:12.155 - warn: ems-esp.0 (12317) State value to set for "ems-esp.0.boiler.hphystheat" has value "0" less than min "50" 2023-07-08 16:39:12.165 - warn: ems-esp.0 (12317) State value to set for "ems-esp.0.boiler.hphystcool" has value "0" less than min "50"

tp1de commented 1 year ago

Ich habe doch mal versucht die Werte im JSON zu korrigieren, d.h. den Punkt am Ende zu eliminieren. Dann werden auch die anderen Definitionswerte vom ems-esp API-Interface übernommen. Schau mal, ob es funktioniert.

MatzeFro commented 1 year ago

nun startet er ohne Fehlermeldung und der Wert wird gesetzt.

So könnte ich ja direkt nochmals Danke sagen.

2023-07-08 17:09:19.463 - info: ems-esp.0 (14324) starting. Version 1.30.0 (non-npm: tp1de/ioBroker.ems-esp) in /opt/iobroker/node_modules/iobroker.ems-esp, node: v18.16.1, js-controller: 5.0.6 2023-07-08 17:11:33.379 - info: ems-esp.0 (14324) API version identified V3 2023-07-08 17:11:33.382 - info: ems-esp.0 (14324) start initializing ems states false 2023-07-08 17:11:33.389 - info: ems-esp.0 (14324) V3 url:http://ems-esp.fritz.box/api/system 2023-07-08 17:11:33.580 - info: ems-esp.0 (14324) V3 url1:http://ems-esp.fritz.box/api/boiler 2023-07-08 17:11:57.071 - info: ems-esp.0 (14324) V3 url1:http://ems-esp.fritz.box/api/thermostat 2023-07-08 17:12:02.414 - info: ems-esp.0 (14324) end of initializing ems states 2023-07-08 17:12:02.415 - info: ems-esp.0 (14324) ems :true 30 secs

tp1de commented 1 year ago

Gut, dann lass ich es erst mal dabei. Welche Wärmepumpe hast du eigentlich?

MatzeFro commented 1 year ago

Es ist eine "Bosch Splitwärmepumpe 3400i"

und nochmals vielen Dank

tp1de commented 1 year ago

Nichts zu danken, ich hatte schon lange keine Änderungen mehr im ioBroker Adapter, da ich selber aktuell home assistant bevorzuge. Ich mach aber ein neues Release für diesen Adapter.

tp1de commented 1 year ago

Ich würde dir empfehlen die aktuelle Entwicklungsversion 3.6.0-dev xx für ems-esp zu Installieren. Dann hast du alle aktuellen Korrekturen und Erweiterungen

MatzeFro commented 1 year ago

hatte ich mittlerweile auch schon installiert. änderte aber nichts an der fehlenden 0 nach dem Komma. hier kämpfe ich aktuell auch - macht sporadisch scheinbar einen FR :( oder speichert nicht sauber.