NEWS
Adapter mihome-vacuum anpassungen
-
Moin Zusammen / Moin @dirkhe !
Inzw. habe ich endlich meinen Saugroboter wieder und ich versuche mich an der v3.9.5. Ich möchte die Reinigung kommandieren. Das Kommando will / muss ich dynamisch aufbauen, je nachdem was über Alexa reinkam. Komischerweise klappt es, wenn ich das Kommando "hard-codiere", aber nicht, wenn ich den String zusammenbaue. Ich hab Folgendes versucht.
Gehen tut (aber halt nicht dynamisch)
Blockly
Daraus wirdsendTo("mihome-vacuum.0", "cleanSegments", { rooms:[16], fanSpeed:101, waterBoxMode:200, mopMode:300}, async function (result) { console.log(result); }); console.debug("mihome-vacuum.0: " + "");
gemacht.
Was ich brauche aber leider nicht geht und ich weiß nicht warum...
Blockly
Passender JS
sendTo("mihome-vacuum.0", "cleanSegments", ['{ rooms:[' + '16','], fanSpeed:' + '101',', waterBoxMode:' + '200',', mopMode:' + '300','}'].join(''), async function (result) { console.log(result); }); console.debug("mihome-vacuum.0: " + "");
Wenn ich den 2ten Code aufrufe stürzt der Adapter komplett ab...
Hat jemand eine Idee? Vielen Dank schonmal im Voraus!!
-
@rkccorian Update... hab jetzt ne JS Function geschrieben, damit geht es. Wäre trotzdem hilfreich zu verstehen, warum das schief geht...
-
@rkccorian du übergibst als parameter einen string, anstatt ein object
-
Habe das selbe Problem.
Ich schreibe nun den String in einen Datenpunkt und ordne dem SendTo Block (Blockly) den Werte dieses Objekts zu.
Das klappt dann auch mit einem Raum.
Kommen in dem String mehrere Räume vor ([16,18]) dann kommt wieder dieselbe Meldung wie bei dir.
Wie kann ich mehrere Räume als "Objekt" übergeben? -
@nu_81 sagte in Adapter mihome-vacuum anpassungen:
Ich schreibe nun den String in einen Datenpunkt und ordne dem SendTo Block (Blockly) den Werte dieses Objekts zu.
Das klappt dann auch mit einem Raum.Ich kriege es mit SendTo nicht mal hin einen Raum zu reinigen.
Im mihome-Adapter habe ich "Sende eigene Befehle" aktiviert.
In einem Datenpunkt habe ich den Wert "{rooms:[21],fanSpeed:100,repeat:2}" eingetragen.
Dann übergebe ich den Wert dieses DP an sendTo.
Beim Ausführen des Befehls stürzt der Adapter ab.
-
Hallo Leute, hallo @dirkhe,
ich habe ein seltsames Problem. Ich habe festgestellt, dass wenn ich die Reinigung über den Adapter steuere (egal ob über Zone, Raum oder Control) der Roboter zwar fährt, aber mit keiner/niedrigster Saugleistung. Egal was ich ihm mitgebe. Er "pingt" zwar, wenn man dann den Datenpunkt verändert, aber bleibt bei seinem lauen Lüftchen. Kommt er auf einen Teppich geht die Leistung hoch (wie via Carpet Mode auch eingestellt). Über die Xiamo App lässt er sich dann auch nicht ändern, solange man es nur im "Saugenmenü" versucht. Dasselbe verhalten (er gibt seinen Ton von sich beim Umstellen, aber tut es nicht). Wenn man in der App dann aber z.B. auf den Reiter Indiv. und zurück zu Saugen wechselt und dann umschaltet, kommen die Änderung so an, dass er es auch tut (Ich hoffe ich drücke mich verständlich aus ).
Startet man den Roboter per App läuft er gleich mit der richtigen eingestellten Saugleistung.
Ist Wischen im Adapter nicht auf 200 (OFF), wischt er auch - hier kann ich aber nicht beurteilen ob es zwischen 201 bis 203 Unterschiede gibt, sprich ob er das annimmt.Ich habe einen Roborock S7 Pro Ultra. Das lief jetzt eigentlich seit Okt. 22 alles ohne Probleme und zuverlässig. Was zu dem Verhalten nun geführt hat und seit wann das so ist, kann ich nicht sagen. Aber seit dem habe ich den Raspi getauscht (von 4 auf 8GB RAM) und damit sicher eine neue Adapterversion gezogen. Ebenso gab es sicherlich in der Zeit FW Updates des Roboters.
Der Adapter an sich startet ohne Fehler. Die anderen Dinge (Statusrückmeldungen, Start/Stop, Go Home, Mapanzeige in der VIS,...) funktionieren. Jemand eine Idee?
Hab grad oben im Verlauf gesehen, dass es 3.4.2 als Adapterversion war, habe jetzt 3.11 drauf.
-
@kusi zeige mal das debug log, aber ich vermute, dass der Fehler ist, dass du String eingestellt hast, es soll aber ein json übergeben werden, kenne mich mit blocky aber nicht aus, ist mir zu kompliziert....
-
@mp_trixi die 3.11 ist ja die neueste, bzw. 4.0, aber das ist nur für dreame interessant.
Du müsstest schon das debuglog posten, damit man sehen kann was passiert. Aber wenn du über den Adapter triggerst, nimmt er dann auch die Einstellungen des Raumes und stellt das dann global ein, war aber eigentlich schon immer so. -
@dirkhe
ja - das hat auch immer gut funktioniert. So wie es scheint habe ich da nur Probleme mit dem Parameter für die Saugleistung. Komisch ist, dass die App ihn da dann auch nicht überzeugt, die Leistung anzupassen, so lange man den Modus nicht kurz ändert. Meinst das kann an der FW liegen, dass der Roborock das nicht mehr kann? Hatte schon mal jemand ein ähnliches Phänomen? Welches Debug Log meinst? Den Adapter auf LogLevel Silly und dann das aus dem Log? -
@mp_trixi loglevel debug reicht, und dann mal hier posten, es reicht der part, wo du gestartest hast und dann vlt. Noch so 2-3 minuten
Ob das an der firmware liegt, kann ich dir nicht sagen. Die Werte sind auf jeden fall robby versions abhängig. Ggf. Müsstest du mal alle level per app durchspielen und schauen, was im adapter ankommt, vlt müssen wir die level dann noch nachjustieren, für das modell -
@dirkhe sagte in Adapter mihome-vacuum anpassungen:
@kusi zeige mal das debug log, aber ich vermute, dass der Fehler ist, dass du String eingestellt hast, es soll aber ein json übergeben werden, kenne mich mit blocky aber nicht aus, ist mir zu kompliziert....
Vielleicht kann hier @paul53 helfen?
-
@dirkhe sagte in Adapter mihome-vacuum anpassungen:
zeige mal das debug log
mihome-vacuum.0 2023-08-26 16:26:36.959 warn Terminated (UNCAUGHT_EXCEPTION): Without reason mihome-vacuum.0 2023-08-26 16:26:36.959 debug Plugin sentry destroyed mihome-vacuum.0 2023-08-26 16:26:36.958 info terminating mihome-vacuum.0 2023-08-26 16:26:36.958 error Socket Close mihome-vacuum.0 2023-08-26 16:26:36.953 error Cannot read properties of undefined (reading 'repeat') mihome-vacuum.0 2023-08-26 16:26:36.953 error TypeError: Cannot read properties of undefined (reading 'repeat') at VacuumManager.onMessage (/opt/iobroker/node_modules/iobroker.mihome-vacuum/lib/vacuum.js:1416:22) at processTicksAndRejections (node:internal/process/task_queues:95:5) at MihomeVacuum.onMessage (/opt/iobroker/node_modules/iobroker.mihome-vacuum/main.js:414:14) mihome-vacuum.0 2023-08-26 16:26:36.951 error unhandled promise rejection: Cannot read properties of undefined (reading 'repeat') mihome-vacuum.0 2023-08-26 16:26:36.951 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-08-26 16:26:36.951 debug MIIO RECIVE: {"id":33,"error":{"code":-10005,"message":"data for segment is not a number"},"exe_time":10} mihome-vacuum.0 2023-08-26 16:26:36.950 debug MIIO MESSAGE TESTING: {"id":33,"error":{"code":-10005,"message":"data for segment is not a number"},"exe_time":10} mihome-vacuum.0 2023-08-26 16:26:36.933 debug Message= {"id":33,"method":"app_segment_clean","params":[null,null,null]} mihome-vacuum.0 2023-08-26 16:26:36.933 info trigger cleaning segment {rooms:[21],fanSpeed:100,repeat:2} mihome-vacuum.0 2023-08-26 16:26:36.933 debug start Cleaning: 18 MObj: {"command":"cleanSegments","message":"{rooms:[21],fanSpeed:100,repeat:2}","from":"system.adapter.javascript.0","_id":76612610,"segments":[null,null,null],"channels":null} mihome-vacuum.0 2023-08-26 16:26:36.933 debug We are in onMessage:{"command":"cleanSegments","message":"{rooms:[21],fanSpeed:100,repeat:2}","from":"system.adapter.javascript.0","_id":76612610,"segments":[null,null,null],"channels":null} mihome-vacuum.0 2023-08-26 16:26:36.933 debug search channels for {rooms:[21],fanSpeed:100,repeat:2} -> mihome-vacuum.0 2023-08-26 16:26:36.924 debug Search can't be optimized because wildcard not at the end, fallback to keys!: function(doc) { if (doc.type === 'state') emit(doc._id, doc) } mihome-vacuum.0 2023-08-26 16:26:36.923 debug We are in onMessage:{"command":"cleanSegments","message":"{rooms:[21],fanSpeed:100,repeat:2}","from":"system.adapter.javascript.0","_id":76612610}
-
@kusi du übergibst einen string, anstatt ein json
-
@dirkhe Habe es gefunden... Datenpunkt steht jetzt auf "json".
Hier das neue Log:
mihome-vacuum.0 2023-08-26 22:06:53.875 debug Plugin sentry destroyed mihome-vacuum.0 2023-08-26 22:06:53.875 info terminating mihome-vacuum.0 2023-08-26 22:06:53.874 error Socket Close mihome-vacuum.0 2023-08-26 22:06:53.869 error Cannot read properties of undefined (reading 'repeat') mihome-vacuum.0 2023-08-26 22:06:53.869 error TypeError: Cannot read properties of undefined (reading 'repeat') at VacuumManager.onMessage (/opt/iobroker/node_modules/iobroker.mihome-vacuum/lib/vacuum.js:1416:22) at processTicksAndRejections (node:internal/process/task_queues:95:5) at MihomeVacuum.onMessage (/opt/iobroker/node_modules/iobroker.mihome-vacuum/main.js:414:14) mihome-vacuum.0 2023-08-26 22:06:53.868 error unhandled promise rejection: Cannot read properties of undefined (reading 'repeat') mihome-vacuum.0 2023-08-26 22:06:53.867 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-08-26 22:06:53.867 debug MIIO RECIVE: {"id":33,"error":{"code":-10005,"message":"data for segment is not a number"},"exe_time":10} mihome-vacuum.0 2023-08-26 22:06:53.867 debug MIIO MESSAGE TESTING: {"id":33,"error":{"code":-10005,"message":"data for segment is not a number"},"exe_time":10} mihome-vacuum.0 2023-08-26 22:06:53.848 debug Message= {"id":33,"method":"app_segment_clean","params":[null,null,null]} mihome-vacuum.0 2023-08-26 22:06:53.848 info trigger cleaning segment {rooms:[21],fanSpeed:100, repeat:2} mihome-vacuum.0 2023-08-26 22:06:53.847 debug start Cleaning: 18 MObj: {"command":"cleanSegments","message":"{rooms:[21],fanSpeed:100, repeat:2}","from":"system.adapter.javascript.0","_id":76612619,"segments":[null,null,null],"channels":null} mihome-vacuum.0 2023-08-26 22:06:53.847 debug We are in onMessage:{"command":"cleanSegments","message":"{rooms:[21],fanSpeed:100, repeat:2}","from":"system.adapter.javascript.0","_id":76612619,"segments":[null,null,null],"channels":null} mihome-vacuum.0 2023-08-26 22:06:53.847 debug search channels for {rooms:[21],fanSpeed:100, repeat:2} -> mihome-vacuum.0 2023-08-26 22:06:53.842 debug Search can't be optimized because wildcard not at the end, fallback to keys!: function(doc) { if (doc.type === 'state') emit(doc._id, doc) } mihome-vacuum.0 2023-08-26 22:06:53.841 debug We are in onMessage:{"command":"cleanSegments","message":"{rooms:[21],fanSpeed:100, repeat:2}","from":"system.adapter.javascript.0","_id":76612619}
-
@kusi ist immer noch ein string
Müsste So aussehen
We are in onMessage:{"command":"cleanSegments","message":{rooms:[21],fanSpeed:100, repeat:2},"from":"system -
Hallo zusammen,
habe gestern auf meinen Xiaomi Gen 1 Roboter Valetudo gespielt. Hat alles super geklappt. Kann ihn auch im Valetudo WebInterface Steuern und die Karte ist auch schon erstellt.Jetzt klappt allerdings die Einbindung in ioBroker nicht mehr. Ich habe den Token aus der Valetudo Log genommen und die Ports auf 54321 belassen und natürlich die richtige IP angegeben. Leider bleibt der Adapter gelb
Mit der originalen Firmware und Xiaomi App hat die Einbindung in den Adapter immer ohne Probleme geklappt. Hat jemand eine Idee was ich falsch mache? Ist das auch der richtige Token aus der Valetudo Log Datei?
Ich bin um jede Hilfe Dankbar! -
hi, da hast du jetzt ein Problem. ... irgendwann vor etlichen Monaten wurde die Valetudo Unterstuetzung vom Adapter rausgenommen.. da Valetudo dauernd was geaendert hat und keiner der Developer sich damit auch noch befassen konnte..
-
@ilovegym ja gut zu wissen - danke dir! Schade, dass ich dazu nichts im Netz gefunden habe...
Dann geh ich wieder zurück auf die originale FW... Ich dachte eig. ich könnte dem alten Robi per Valetudo und dem Adapter noch die Zonenreinigung beibringen Evtl. gibts ja noch einen anderen weg. -
das ist hier in dem Thread irgendwo drin... aber schon lange her... Es sei denn, du machst ne alte Valetudo drauf..
Geht die Zone nicht mit dem Adapter? -
Rät nicht auch valetudo selber davon ab es auf der ersten Generation des Saugers einzusetzen?