rg-engineering / ioBroker.ebus

reads data from ebusd
MIT License
14 stars 7 forks source link

Adapter speichert keine Daten mehr #338

Closed Dette70 closed 3 months ago

Dette70 commented 3 months ago

Der Fehler aus https://github.com/rg-engineering/ioBroker.ebus/issues/86 scheint aktuell wieder aufzutreten, dort gibt es 3 neue Einträge von gestern und heute.

Bei mir werden seit gestern 10.07.2024 19:40 Uhr keine Datenpunkte mehr im Ebus Adapter (Version 3.3.1) aktualisiert.

Was habe ich geprüft/getan:

  1. ebusd deamon läuft und liefert mittels Kommandozeilen-Abfrage aktuelle Daten
  2. alle Ordner inkl. Datenpunkten unter ebus/0 wurden entfernt
  3. ebus Adapter auf dem iobroker wurde neu gestartet, startet ohne Fehlermeldungen
  4. Ordner unter ebus/0 werden neu angelegt, allerdings ohne weiteren Inhalt/Datenpunkte
  5. "cmd" Abfrage im ebus Adapter funktioniert insofern, dass "cmdResult" einen Wert liefert, Kommandos werden übertragen und verarbeitet
  6. http://192.168.xxx.xxx:8889/data liefert Werte, alledings auch ganz oben den Fehler: "SyntaxError: JSON.parse: bad control character in string literal at line 5147 column 19 of the JSON data"
  7. Abfrageintervall liegt weiter bei 5 min
  8. Protokollstufe auf "Info" gestellt, keine Fehler/Warnungen erkennbar

Da ich hier scheinbar nicht der einzige bin, wo der Fehler seit gestern auftritt, und ich selber in meinem System weder gestern noch heute was geändert habe, stellt sich die Frage, wo der Fehler "aus dem nichts" herkommt?

mameier1234 commented 3 months ago

Gleiches Thema hier.. im Log vom Iobroker sehe ich , dass die Daten kommen, sie werden aber nicht in den Datenpunkten gespeichert.

Dette70 commented 3 months ago

Gleiches Thema hier.. im Log vom Iobroker sehe ich , dass die Daten kommen, sie werden aber nicht in den Datenpunkten gespeichert.

Bekommst Du unter: http://192.168.xxx.xxx:8889/data auch oben den Fehler?

mameier1234 commented 3 months ago

Nein.. Keine Fehlermeldung.

Ich sehe auch die aktuellen Werte im Log von IOBroker...

Ausgabe IOBroker: `

ebus.0 | 2024-07-11 11:41:00.869 | debug | DoRequest -- | -- | -- | -- ebus.0 | 2024-07-11 11:41:00.868 | debug | get data after command and timeout ebus.0 | 2024-07-11 11:41:00.368 | debug | StartDataRequest ebus.0 | 2024-07-11 11:41:00.364 | debug | received 05:30;13:00;13:00;21:00;-:-;-:-;Mo-Fr ebus.0 | 2024-07-11 11:41:00.107 | debug | send read -c hwc Timer.Monday ebus.0 | 2024-07-11 11:41:00.107 | debug | telnet connected for cmd ebus.0 | 2024-07-11 11:41:00.106 | debug | connect telnet to IP 192.168.160.136 port 8888 ebus.0 | 2024-07-11 11:41:00.106 | debug | got command(s): read -c hwc Timer.Monday ebus.0 | 2024-07-11 11:41:00.105 | debug | handle state change ebus.0.cmd ebus.0 | 2024-07-11 11:40:43.477 | debug | nothing to do for history ebus.0 | 2024-07-11 11:40:43.476 | info | all http done ebus.0 | 2024-07-11 11:40:43.424 | debug | got data string "{\n \"bai\": {\n \"messages\": { \"AccessoriesOne\": {\n \"name\": \"AccessoriesOne\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"AccessoriesTwo\": {\n \"name\": \"AccessoriesTwo\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"ACRoomthermostat\": {\n \"name\": \"ACRoomthermostat\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"actoSTOREEPreventiveCounter\": {\n \"name\": \"actoSTOREEPreventiveCounter\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"ADCOk\": {\n \"name\": \"ADCOk\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"AdvancedPowerValues\": {\n \"name\": \"AdvancedPowerValues\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"AnodeINFeedback\": {\n \"name\": \"AnodeINFeedback\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"averageIgnitiontime\": {\n \"name\": \"averageIgnitiontime\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"AWPCEEMaxThreshold\": {\n \"name\": \"AWPCEEMaxThreshold\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"AWPCEEMinThreshold\": {\n \"name\": \"AWPCEEMinThreshold\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"BlockTimeHcMax\": {\n \"name\": \"BlockTimeHcMax\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"BoilerType2\": {\n \"name\": \"BoilerType2\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"BoilerType\": {\n \"name\": \"BoilerType\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"Brennstoffventil\": {\n \"name\": \"Brennstoffventil\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"ChangesDSN\": {\n \"name\": \"ChangesDSN\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"CirPump\": {\n \"name\": \"CirPump\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"CodingResistor\": {\n \"name\": \"CodingResistor\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"CounterStartattempts1\": {\n \"name\": \"CounterStartattempts1\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"CounterStartattempts2\": {\n \"name\": \"CounterStartattempts2\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"CounterStartAttempts3\": {\n \"name\": \"CounterStartAttempts3\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"CounterStartAttempts4\": {\n \"name\": \"CounterStartAttempts4\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"currenterror\": {\n \"name\": \"currenterror\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"currentservice\": {\n \"name\": \"currentservice\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"DateTime\": {\n \"name\": \"DateTime\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"dcfState\": {\n \"name\": \"dcfState\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"DCFTimeDate\": {\n \"name\": \"DCFTimeDate\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"DCRoomthermostat\": {\n \"name\": \"DCRoomthermostat\",\n \"passive\": false,\n \"write\": false,\n \"lastup\": 0\n },\n \"DeactivationsIFC\": {\n \"name\": \"DeactivationsIFC\",\n \"passive\": false,\n \"write\": f ebus.0 | 2024-07-11 11:40:43.397 | debug | telnet disonnected -- | -- | -- | -- ebus.0 | 2024-07-11 11:40:43.397 | debug | received 0;off;51.38;55 for {"active":true,"circuit":"hwc","name":"Status","parameter":""} ebus.0 | 2024-07-11 11:40:43.164 | debug | send cmd read -f -c hwc Status ebus.0 | 2024-07-11 11:40:43.163 | debug | received 1.363;ok for {"active":true,"circuit":"bai","name":"WaterPressure","parameter":""} ebus.0 | 2024-07-11 11:40:42.892 | debug | send cmd read -f -c bai WaterPressure ebus.0 | 2024-07-11 11:40:42.892 | debug | received 55.0 for {"active":true,"circuit":"","name":"TempDesired2","parameter":""} ebus.0 | 2024-07-11 11:40:42.625 | debug | send cmd read -f TempDesired2 ebus.0 | 2024-07-11 11:40:42.625 | debug | received 05:30;08:30;-:-;-:-;-:-;-:-;Mo-Fr for {"active":true,"circuit":"","name":"Timer.Friday","parameter":""} ebus.0 | 2024-07-11 11:40:42.328 | debug | send cmd read -f Timer.Friday ebus.0 | 2024-07-11 11:40:42.328 | debug | received 05:30;08:30;-:-;-:-;-:-;-:-;Mo-Fr for {"active":true,"circuit":"","name":"Timer.Thursday","parameter":""} ebus.0 | 2024-07-11 11:40:42.087 | debug | send cmd read -f Timer.Thursday ebus.0 | 2024-07-11 11:40:42.086 | debug | received 05:30;08:30;-:-;-:-;-:-;-:-;Mo-Fr for {"active":true,"circuit":"","name":"Timer.Wednesday","parameter":""} ebus.0 | 2024-07-11 11:40:41.769 | debug | send cmd read -f Timer.Wednesday ebus.0 | 2024-07-11 11:40:41.769 | debug | received 05:30;08:30;-:-;-:-;-:-;-:-;Mo-Fr for {"active":true,"circuit":"","name":"Timer.Tuesday","parameter":""} ebus.0 | 2024-07-11 11:40:41.527 | debug | send cmd read -f Timer.Tuesday ebus.0 | 2024-07-11 11:40:41.527 | debug | received 05:30;08:30;-:-;-:-;-:-;-:-;Mo-Fr for {"active":true,"circuit":"","name":"Timer.Monday","parameter":""} ebus.0 | 2024-07-11 11:40:41.285 | debug | send cmd read -f Timer.Monday ebus.0 | 2024-07-11 11:40:41.285 | debug | received 07:00;11:00;-:-;-:-;-:-;-:-;Sa-So for {"active":true,"circuit":"","name":"Timer.Sunday","parameter":""} ebus.0 | 2024-07-11 11:40:40.963 | debug | send cmd read -f Timer.Sunday ebus.0 | 2024-07-11 11:40:40.963 | debug | received 07:00;11:00;-:-;-:-;-:-;-:-;Sa-So for {"active":true,"circuit":"","name":"Timer.Saturday","parameter":""} ebus.0 | 2024-07-11 11:40:40.722 | debug | send cmd read -f Timer.Saturday ebus.0 | 2024-07-11 11:40:40.721 | debug | received off for {"active":true,"circuit":"bai","name":"Flame","parameter":""} ebus.0 | 2024-07-11 11:40:40.436 | debug | send cmd read -f -c bai Flame ebus.0 | 2024-07-11 11:40:40.436 | debug | telnet connected to poll variables 192.168.160.136 port 8888 `
Dette70 commented 3 months ago

So, habe jetzt einfach mal meinen Linux Host, auf welchem der ebusd deamon läuft, neu gestartet.

Warum auch immer, nun ist der Fehler unter http://192.168.xxx.xxx:8889/data weg und der Adapter holt sich auch alle Datenpunkte. Damit für mich gelöst.

mameier1234 commented 3 months ago

Wie gesagt.. der Adapter holt sich die Datenpunkte, schreibt sie aber nicht mehr ...

Dette70 commented 3 months ago

So, habe jetzt einfach mal meinen Linux Host, auf welchem der ebusd deamon läuft, neu gestartet.

Warum auch immer, nun ist der Fehler unter http://192.168.xxx.xxx:8889/data weg und der Adapter holt sich auch alle Datenpunkte. Damit für mich gelöst.

Das macht er leider genau EINMAL, nun ist auf der Fehler unter http://192.168.xxx.xxx:8889/data wieder da (SyntaxError: JSON.parse: bad control character in string literal at line 3896 column 19 of the JSON data) und die Datenpunkte werden nicht mehr aktualisiert.

rg-engineering commented 3 months ago

siehe auch hier: https://forum.iobroker.net/topic/9844/adapter-ebus/597

Bavarialex commented 3 months ago

Same here, seit gestern nachmittag. Nach Neustart des Services klappt es genau ein Mal.

ralflic commented 3 months ago

Hallo, vermutlich hatte ich den gleichen Effekt mit meiner Installation von ebusd 23.3 und iobroker/ebus-adapter 3.3.1. Am 10.07.2024 ca. 14 Uhr lieferte der ebusd scheinbar keine Daten mehr. Trotz nix gemacht.

Die per http abfragbaren Daten des ebusd (http://:8889/data) hatten/haben seither einen Fehler in der json-Formatierung. Bei mir wurde in der Sektion "global" beim Wert '"updatecheck": "OK",' ein Zeilenumbruch/newline (?) zwischen " und OK eingefügt. Die den Daten zu Grunde liegende Abfrage des ebusd ("ebusctl info") liefert(e) diese Zeichenfolge. Ergo kam kein valides json raus. jsonlint und jq können mit den "json"-Daten nichts anfangen. Entfernt man den Zeilenumbruch/newline (?), hat man wieder valides json.

Ich habe in der Datei /etc/defaults/ebusd die Option "--updatecheck=off" bei den Startoptionen des Daemon ergänzt und den ebusd neu gestartet. Der Wert "updatecheck" wird nun mit "ebusctl info" nicht mehr abfragt/anzeigt und kommt auch nicht mehr in die json-Daten rein.

Die Ursache ist damit nicht behoben. Es klappt aber wieder. Der/die Programmierer des genialen ebusd findet/finden hoffentlich irgendwann Lust/Zeit der Sache auf den Grund zu gehen.

Viele Grüße

Bavarialex commented 3 months ago

@ralflic du bist ein Fuchs! Läuft hier...

Dette70 commented 3 months ago

--updatecheck=off"

Hat bei mir auch geholfen. Cool und vielen Dank. Was bewirkt der Schalter? Habe das aus dem Wiki nicht wirklich herauslesen können ...

ralflic commented 3 months ago

Hallo @Dette70 , vermutlich prüft der ebusd bei "--updatecheck=on" beim Start und zwischendurch immer mal (im Internet) , ob es eine aktuellere Programmversion gibt. Zumindest legt das folgender Beitrag nahe: https://github.com/john30/ebusd/issues/617.

Vermutlich ist es diese Adressse 202.61.233.39 (ae927.netcup.net), unter der ebusd per TCP-Port 443 seine Update-Informationen abfragt/erhält. Zumindest legen das Beobachtungen mittels tcpdump und strace nahe.

Beim Beobachten ist mir aufgefallen, dass der Update-Check scheinbar nicht direkt/sofort beim Start vom ebusd stattfindet. Mindestens einmal sind dann die per http://:8889/data abfragbaren json-Daten noch korrekt. Kurze Zeit später fragt der ebusd dann (bei gesetztem"--updatecheck=on") nach Updates und zeigt den Status der Abfrage mit "ebusctl info" an. Diese Statusinformation wird auch in den json-Daten hinterlegt. Aktuell leider mit einem Zeilenumbruch/newline an der falschen Stelle.

AleXburnA commented 3 months ago

Ich habe in der Datei /etc/defaults/ebusd die Option "--updatecheck=off" bei den Startoptionen des Daemon ergänzt und den ebusd neu gestartet.

DANKE!! Hat auch bei mir funktioniert!

rg-engineering commented 3 months ago

in 3.3.2 ist ein workaround drin...

Norb1204 commented 3 months ago

Die Version 3.3.2 startet nicht bei mir siehe Log: log.txt

Dette70 commented 3 months ago

Die Version 3.3.2 startet bei mir auch nicht, folgende Fehler im Log:

`

host.iobroker-vm 2024-07-12 08:36:12.938 error instance system.adapter.ebus.0 terminated with code 1 (JS_CONTROLLER_STOPPED)
host.iobroker-vm 2024-07-12 08:36:12.938 error Caught by controller[0]: Node.js v20.13.1
host.iobroker-vm 2024-07-12 08:36:12.938 error Caught by controller[0]: }
host.iobroker-vm 2024-07-12 08:36:12.937 error Caught by controller[0]: code: 'ERR_REQUIRE_ESM'
host.iobroker-vm 2024-07-12 08:36:12.937 error Caught by controller[0]: at Object. (/opt/iobroker/node_modules/iobroker.ebus/main.js:88:27) {
host.iobroker-vm 2024-07-12 08:36:12.937 error Caught by controller[0]: Instead change the require of promise-socket.js in /opt/iobroker/node_modules/iobroker.ebus/main.js to a dynamic import() which is available in all CommonJS modules.
host.iobroker-vm 2024-07-12 08:36:12.936 error Caught by controller[0]: Error [ERR_REQUIRE_ESM]: require() of ES Module /opt/iobroker/node_modules/promise-socket/lib/promise-socket.js from /opt/iobroker/node_modules/iobroker.ebus/main.js not supported.
host.iobroker-vm 2024-07-12 08:36:12.936 error Caught by controller[0]: ^
host.iobroker-vm 2024-07-12 08:36:12.936 error Caught by controller[0]: const { PromiseSocket } = require("promise-socket");
host.iobroker-vm 2024-07-12 08:36:12.935 error Caught by controller[0]: /opt/iobroker/node_modules/iobroker.ebus/main.js:88

`

rg-engineering commented 3 months ago

ja, ich sehe schon, promise-socket 8.0.0 scheint nicht kompatibel zu sein. Ich ändere das gerade...

Norb1204 commented 3 months ago

funktioniert noch nicht mit der version 3.3.3

Fehlermeldung: exception in ebusd_ReceiveData [TypeError: buffer.data.replace is not a function]

Dette70 commented 3 months ago

@rg-engineering Danke für die schnelle Reaktion, Klasse Support 💯

Habe nun auch mal die Version 3.3.3 installiert.

Der Adaper startet nun erfolgreich, wirft dann aber bei jeder Datenabfrage leider den Fehler:

`

ebus.0 2024-07-12 16:06:26.548 **error exception in ebusd_ReceiveData [TypeError: buffer.data.replace is not a function]**
host.iobroker-vm 2024-07-12 16:05:42.357 info iobroker exit 0
host.iobroker-vm 2024-07-12 16:05:41.643 info instance system.adapter.ebus.0 started with pid 25004
host.iobroker-vm 2024-07-12 16:05:41.319 info "system.adapter.ebus.0" enabled

`

rg-engineering commented 3 months ago

sorry, man sollte eben nicht nebenbei Änderungen machen, ohne richtig zu testen. Mit der 3.3.4 sollte es wieder passen...

Dette70 commented 3 months ago

3.3.4. läuft bei mir seit 3 Tagen fehlerfrei und liefert auch ohne "--updatecheck=off" alle Daten.