iobroker-community-adapters / ioBroker.mihome-vacuum

Control your Xiaomi vacuum cleaner
MIT License
109 stars 51 forks source link

dreame.vacuum.p2028. "restart loop detected" #884

Closed PeKa-123 closed 9 months ago

PeKa-123 commented 12 months ago
mihome-vacuum.0 | 2023-11-06 12:14:44.235 | info | IOT enabled, create state -- | -- | -- | -- mihome-vacuum.0 | 2023-11-06 12:14:44.172 | info | starting. Version 4.0.0 in /opt/iobroker/node_modules/iobroker.mihome-vacuum, node: v18.18.2, js-controller: 5.0.16 mihome-vacuum.0 | 2023-11-06 12:14:31.193 | warn | Terminated (NO_ADAPTER_CONFIG_FOUND): Without reason mihome-vacuum.0 | 2023-11-06 12:14:31.146 | error | adapter disabled mihome-vacuum.0 | 2023-11-06 12:13:59.491 | info | terminating mihome-vacuum.0 | 2023-11-06 12:13:58.992 | warn | Terminated (UNCAUGHT_EXCEPTION): Without reason mihome-vacuum.0 | 2023-11-06 12:13:58.991 | info | terminating mihome-vacuum.0 | 2023-11-06 12:13:58.991 | error | Socket Close mihome-vacuum.0 | 2023-11-06 12:13:58.977 | error | objects.stockConsumable.map is not a function mihome-vacuum.0 | 2023-11-06 12:13:58.977 | error | TypeError: objects.stockConsumable.map is not a function at DreameManager.init (/opt/iobroker/node_modules/iobroker.mihome-vacuum/lib/dreame.js:372:45) at DreameManager.main (/opt/iobroker/node_modules/iobroker.mihome-vacuum/lib/dreame.js:406:3) mihome-vacuum.0 | 2023-11-06 12:13:58.969 | error | unhandled promise rejection: objects.stockConsumable.map is not a function mihome-vacuum.0 | 2023-11-06 12:13:58.966 | error | 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(). mihome-vacuum.0 | 2023-11-06 12:13:57.297 | info | IOT enabled, create state mihome-vacuum.0 | 2023-11-06 12:13:57.246 | info | starting. Version 4.1.0 in /opt/iobroker/node_modules/iobroker.mihome-vacuum, node: v18.18.2, js-controller: 5.0.16

-->

Describe the bug
Seit mihome-vacuum 4.1.0 bekomme ich fehler mit einem dreame.vacuum.p2028. "restart loop detected" und die Fehler die im Log in der Zeit 12:13Uhr passieren. Sobald ich wieder auf 4.0.0 gehe ist alles in ordnung. Siehe die Logs um 12:14Uhr. Bei meinem Roborock passiert das nicht. den kann ich in jeder Verssion normal einbinden. Neuinstallationen haben auch nicht geholfen.

Versions:

chrkan commented 11 months ago

Ja kann ich leider auch bestätigen

Airwave1981 commented 11 months ago

Auch hier besteht das Problem. Jemand einen Workaround parat?

PeKa-123 commented 11 months ago

Naja, ein Workaround wäre einfach auf die Version 4.0.0 zurßck zu gehen. So habe ich es auch erstmal gemacht. Trotzdem sollte der Fehler ausgebaut werden, wird ja nicht im Sinne des Erfinders sein ...

hai5ive commented 10 months ago

Hatte den gleichen Fehler bei meinem neuen Roboter. Der alte läuft mit Valetudo ohne Probleme unter 4.1.0 mit 4.0.0 funktionieren beide.

Dadurch, dass der erste Roboter ohne Probleme funktionierte, hat es ewig gedauert, bis ich den Beitrag gefunden habe -.-

DemigodCode commented 10 months ago

Ich gucke gleich mal rein. Habe auch 4.1 installiert und scheinbar wurde dreame nicht angepasst. @dirkhe

mihome-vacuum.0 2024-01-03 14:26:20.368 error Socket Close
mihome-vacuum.0 2024-01-03 14:26:20.345 error objects.stockConsumable.map is not a function
mihome-vacuum.0 2024-01-03 14:26:20.345 error TypeError: objects.stockConsumable.map is not a function at DreameManager.init (/opt/iobroker/node_modules/iobroker.mihome-vacuum/lib/dreame.js:372:45) at DreameManager.main (/opt/iobroker/node_modules/iobroker.mihome-vacuum/lib/dreame.js:406:3)
mihome-vacuum.0 2024-01-03 14:26:20.339 error unhandled promise rejection: objects.stockConsumable.map is not a function
mihome-vacuum.0 2024-01-03 14:26:20.339 error 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().
DemigodCode commented 10 months ago

Okay, ist mir zu aufwendig. Da wurde die Struktur der Consumables komplett verändert und ist nicht mehr ähnlich zu den anderen. Da mßsste ich länger drßber nachdenken. Ich gehe auch zurßck auf 4.0

dirkhe commented 10 months ago

@DemigodCode stimmt, dad muss ich noch nachziehen, ich dachte, ich hätte gesucht, aber nichts gefunden. Ich habe das geändert, damit man da mehr generisch drßber iterieren kann . Ich pass das nachher an. Sorry dafßr, aber irgendwie dachte ich wohl, dass du kpl. Eigene Strukturen nutzt.

DemigodCode commented 10 months ago

Genau das wollte ich damals verhindern, damit es nicht ein eigener Adapter innerhalb eines Adapters wird.

Hatte auch mal versucht damals einfach einen eigenen Adapter nur fßr die Dreame zu schreiben, weil die ganzen Datenpunkte nicht zwingend passten. Hatte mich dann aber dagegen entschieden, da es noch ein Repo mit den Grundfunktionen fßr alle Sauger hätte geben mßssen und ich den Aufwand nicht betreiben wollte.

dirkhe commented 10 months ago

Also normalerweise hätte ich das mit angepasst, aber ich arbeite mit visual code und suche dort nach Verwendung im Ordner. Neuerdings haben die dort aber etwas eingebaut, dass er nur noch in offenen Dateien sucht, das muss man erst disablen. Das hatte ich ßbersehen und daher hatte er mir die Verwendung in dreame.js nicht angezeigt.

Ich habe das jetzt nachgezogen, muss aber sagen, dass es vlt nicht so clever ist, eine Negative Liste aufzubauen. Ich hatte nämlich in dem Zuge die Stockcommands auch erweitert. Aktuelle habe ich die "neuen" und die von extendCommand mal in deine Negativliste eingetragen, siehe DreameBlockedObjects, ob ich da aber nächstes mal dran denke, neue Objekte dorrt einzutragen????

Ich lege die Objekte an, wenn ich das 1. mal die Statis der consumables vom robby bekomme. Alle, die es dort gibt, lege ich dann in iobroker an. Bei den consumables gibt es ja immer in pärchen, nämlich den Status und den Button, dementsprechend habe ich die struktur jetzt aufgebaut. Wenn ich das auf die Schnelle richtig gesehen habe, solltest du anstelle von !DreameBlockedObjects vlt. fragen, ob du ein entsprechendes DreameActions["RESET_" + id.toUppercase()] hast, dann anlegen, bzw DreameProperties[ id.toUppercase() + "_LEFT"]. Dann arbeitest du mit einer Whitelist

dirkhe commented 10 months ago

@PeKa-123 du kĂśnntest mal die aktuelle Version von github installieren und schauen, ob dein Fehler weg ist

chrkan commented 10 months ago

sieht gut aus dreame und robrok s5 werden angesprochen

DemigodCode commented 10 months ago

Also normalerweise hätte ich das mit angepasst, aber ich arbeite mit visual code und suche dort nach Verwendung im Ordner. Neuerdings haben die dort aber etwas eingebaut, dass er nur noch in offenen Dateien sucht, das muss man erst disablen. Das hatte ich ßbersehen und daher hatte er mir die Verwendung in dreame.js nicht angezeigt.

Ich habe das jetzt nachgezogen, muss aber sagen, dass es vlt nicht so clever ist, eine Negative Liste aufzubauen. Ich hatte nämlich in dem Zuge die Stockcommands auch erweitert. Aktuelle habe ich die "neuen" und die von extendCommand mal in deine Negativliste eingetragen, siehe DreameBlockedObjects, ob ich da aber nächstes mal dran denke, neue Objekte dorrt einzutragen????

Ich lege die Objekte an, wenn ich das 1. mal die Statis der consumables vom robby bekomme. Alle, die es dort gibt, lege ich dann in iobroker an. Bei den consumables gibt es ja immer in pärchen, nämlich den Status und den Button, dementsprechend habe ich die struktur jetzt aufgebaut. Wenn ich das auf die Schnelle richtig gesehen habe, solltest du anstelle von !DreameBlockedObjects vlt. fragen, ob du ein entsprechendes DreameActions["RESET_" + id.toUppercase()] hast, dann anlegen, bzw DreameProperties[ id.toUppercase() + "_LEFT"]. Dann arbeitest du mit einer Whitelist

Jo, keine Ahnung warum ich das so rum gebaut habe. habe sehr viel zusammenkopiert. Wahrscheinlich damals zuerst zum Testen gehabt und danach nicht mehr umgebaut.

dirkhe commented 10 months ago

MĂśchtest du dir das noch anschauen und vlt. Bei den consumables das schon mal umbauen, oder soll ich eine hotfix version raushauen?

DemigodCode commented 9 months ago

Komme da jetzt gerade erstmal nicht zu. Mach mal den Hotfix, ich guck mir das bei Gelegenheit dann nochmal an.

PeKa-123 commented 9 months ago

@PeKa-123 du kĂśnntest mal die aktuelle Version von github installieren und schauen, ob dein Fehler weg ist

Vielen Dank! Der Fehler ist weg!

dirkhe commented 9 months ago

hotfix ist raus. Ich schlisse das ticket mal.