FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: Otto123 am 12 Mai 2021, 12:53:37

Titel: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 12 Mai 2021, 12:53:37
nachdem mein Xiaomi Vacuum Generation 1 (länger als gedacht  ;D ) gute Dienste tut und seit 2 Jahren auch mit ssh Zugang durch die Bude fährt haben mich immer ein paar Dinge gestört:
An der FHEM Steuerung hat mich gestört:Jetzt habe ich mich (angestachelt durchs Forum  ;) ) mal um valetudo RE und die MQTT2 Anbindung gekümmert:
Ich habe das hier  (https://heinz-otto.blogspot.com/2021/05/gesundheit-fur-den-saugroboter.html)mal etwas ausführlicher aufgeschrieben.

Kurz und knapp, die Einrichtung und Einbindung in FHEM ist simpel (wenn der Sauger schon "gerootet" ist):
valetudo RE installieren siehe Webseite https://github.com/rand256/valetudo/wiki
Nach diesem Setup funktioniert:
Tipp: Man kann die Karte, Punkte und Zonen "zeichnen" in dem man den Sauger per App von Punkt zu Punkt schickt. Damit lernt er Zimmer, die er von der Station aus nicht sieht. Man muss ihn nicht als erstes durch die ganze Bude jagen :)
Die Anbindung per MQTT ist einfach:
Voraussetzung: MQTT2_SERVER in FHEM vorhanden, autocreate steht auf simpel
Im Webinterface valetudo/Einstellungen/MQTT Einstellungen
Sollte das MQTT2 Device nicht gleich erzeugt werden, ist was in der Einrichtung falsch gelaufen. nach der Korrektur kann es sein, man muss den Sauger mal kurz starten, damit Daten übertragen werden.
Das Template ist seit gestern im SVN.

Man kann damit:
Hinweis:
Die Zeitangaben in den MQTT Readings sind in Millisekunden! So kann man die Zeit in lesbarer Form anzeigen, Beispiel.
{localtime(ReadingsNum((devspec2array('a:model=roborockRE'))[0],'last_loaded_map_date',0)/1000)}

Das Template ist schlank gehalten, der wesentliche Code für setList und Readings steht in der 99_rockroboUtils.pm die vom Template automatisch geladen wird.
Es handelt sich um ein generisches Device, jeder kann nach der Initialisierung durch das Template alles anpassen. Ein FHEM Update verändert hier nichts!

Viele Spaß damit.
Otto
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 13 Mai 2021, 10:15:39
Hallo Otto,

da fühle ich mich ja förmlich gezwungen mich dran zu hängen ;)

Könnte ja jetzt über den Feiertag (oder die nächsten) klappen, dass ich meinen "Versuchs-Sauger" auch mal (endlich) mit Valetudo bespiele...
EDIT: die "nur" gerootete aus dem "Repo" habe ich ja schon ne Weile laufen... (generell gerootet nat. schon immer :)  "Zuvor" halt "selbst gebaut" ;) ).
...und auch mal vergleiche wie sich das dann mit ohne Cloud und ohne Flole etc. verhält. :)

EDIT: dann hab ich nur mehr einswas, das mit Cloud ist (und leider [erst mal] bleiben "muss")...

Und v.a. wie stabil es läut...

Kann man fhem-Steuerung per Xiaomi-Modul und per MQTT parallel betreiben?
Also klar, nur mal zum Testen ;)

Kann man Telegram auch deaktivieren?
Ich nutze zwar Telegram aber hab das eben in fhem "eingebunden" und kann (würde gerne) darüber steuern, da muss nicht jedes Gerät/Sauger (ich hab ja mehrere) per eigenem Telegram steuerbar sein/gesteuert werden können...

Wenn ich Zeit hab werde ich einfach mal loslegen... :)

EDIT:
Wie muss ich das "verstehen"?
Zitat von: https://github.com/rand256/valetudo/wiki/Installation-process#downloading-pre-rooted-firmware
If you use images from Valetudo RE github repository, they use username ruby with a random password available with the image file. To get root access, just print sudo su - to the console and repeat the password.
konnte aber (bislang) noch nirgends ein PW entdecken...

und dann steht aber auch:
Zitat von: https://github.com/rand256/valetudo/wiki/Firmware-downloads
Users cleaner and root have preset password cleaner;

Und dann ist noch zu lesen:
Zitat von: https://github.com/rand256/valetudo/wiki/Firmware-downloads
Pre-installed packages: wget, nano, htop, bbe, snmpd and Valetudo v0.2.3 (sorry);
D.h. gleich nach dem Flashen ein update? (normal über apt?)
Oder besser: "nur" gerootete FW (hab ich schon) und dann das deb-File installieren?

Welche Variante ist "besser"?
Du hast ja beide durch (oder?).

Sorry für die Fragerei (klar kann ich "easy" alles durchprobieren ;) ) aber es spart ne Menge Zeit (wenn man einfach frägt ;)  )  :)

EDIT: mein Beitrag könnte dann sein, Infos/Erfahrungen etc. bzgl. eines V2 zu liefern (du hast ja "nur" einen V1 [bislang]?)... 8)

Danke dafür, Joachim

MQTT-Server läuft aber ich habe noch nicht wirklich viel damit gemacht.
Auch nicht mit attrTemplate etc.
Es läuft eine Gosund USB-Steckdose aber die muss ja nix können, außer: an/aus ;)
Der Rest (der vom Template kommt) ist mir egal...
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 13 Mai 2021, 10:41:36
Hallo Joachim,

Zitat von: MadMax-FHEM am 13 Mai 2021, 10:15:39
Kann man fhem-Steuerung per Xiaomi-Modul und per MQTT parallel betreiben?
Kann man Telegram auch deaktivieren?
Wie muss ich das "verstehen"?konnte aber (bislang) noch nirgends ein PW entdecken...
Und dann ist noch zu lesen:D.h. gleich nach dem Flashen ein update? (normal über apt?)

Oder besser: "nur" gerootete FW (hab ich schon) und dann das deb-File installieren?
Welche Variante ist "besser"?
Du hast ja beide durch (oder?).
Es geht beides Parallel, valetudo schafft ein Web Interface und die China Cloud ab. Die Steuerung über Token ist ja lokal und läuft weiter.
Man muss Telegram nicht aktivieren :) es ist erstmal aus.
Das passwort in der Firmware ist cleaner. Ich habe aber nicht das github repository genommen sondern sondern die Links aus diesem Wiki  (https://github.com/rand256/valetudo/wiki/Firmware-downloads) die gehen dann auf vacuumz.info ...
Nach dem flashen habe ich kein update gemacht.

Mit der aktuellen Firmware bei meinem V1 (4028) funktionierte erstmal nur das deb File. Nach dem Werkreset habe ich die Firmware mit aktuellem valetudo RE genommen. Insofern stand die Frage nach "besser" nicht :)

Gruß Otto
   
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 13 Mai 2021, 11:07:21
Hallo Otto,

ok, danke!

Dann muss ich mich wohl (oder übel ;)  ) mal "frei schaufeln" :)

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 13 Mai 2021, 13:15:46
So, geschaufelt ;)

Jetzt hat gleich mein V2 valetudo bekommen.

Da dort eine "normale" (selbst gebaute) (ältere) FW drauf war habe ich gleich das firmware.pkg aufgespielt.

Mal sehen...

EDIT: eben dachte ich mir (weil ich erst gemerkt hatte, dass es bereits eine neuere re Version gibt [ich hatte noch 10_5 bei mir liegen], als ich schon begonnen hatte upzudaten) schaue ich doch mal über die Weboberfläche nach einem Update. Wird angeboten, allerdings mit der url aus "rand". Gut dachte ich mir: gebe ich die halt an...
Nach dem FW-Update dann: KEIN WLAN mehr! Da ist mir aber das Herz erst mal in die Hose gerutscht... :-\
Zum Glück hab ich für rooten usw. eine VM mit WLAN-USB-Dongle 8)
Gut, dann halt doch Factory-Reset und von vorne. Die FW 10_6 dann von vacuumz.info (hatte ich zwischenzeitlich runtergeladen) genommen und geht wieder.

EDIT: das flasher.py hat bei mir nicht (mehr) funktioniert. Ich hab es dann mit miio discover gemacht und dann auch mit miio den fw-Update...

Unterschied zwischen 10_5 und 10_6 (zumindest bei mir): die Zusatz-/Persistenz-Optionen waren bei 10_5 aktiviert und bei 10_6 (erst mal) deaktiviert...
Ob es nun "Zufall" war oder die FW von dem anderen Link ein "Problem" hat: keine Ahnung...
Jetzt wo ich eh im "Zurücksetz-Fieber" bin: mach ich wohl auch gleich noch den V1 ;)
(mal sehen, ob die abgespeicherte [per ssh] Karte nach dem FW-Update wieder geht und auch die Test-Zone in fhem...)

Bis jetzt gefällt es mir sehr gut (auch [noch] ohne MQTT), hat es aber vor einiger Zeit (gut so knapp 1-2 Jahren) auch schon mal...
...lief damals aber nicht so stabil (auf dem V1)... :-\

Folgt noch mein V1 ("Test-Sauger"), den muss ich aber wohl erst zurücksetzen...
...oder ich installiere da mal das .deb drauf.

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 13 Mai 2021, 15:18:13
ZitatEDIT: das flasher.py hat bei mir nicht (mehr) funktioniert. Ich hab es dann mit miio discover gemacht und dann auch mit miio den fw-Update...
Meine alte UMgebung auf dem Pi Zero funktionierte eigentlich noch. Ich bin bloß in die Falle getappt, dass ich kein chinesisch verstehe und das Ding nicht in der Station stand  :-[ das hat mir flasher.py dann im Klartext gesagt.
Es gibt mehr als einen Meter zwischen Monitor + tastatur + pizero und der Ladestation :D aber die Ladestation wollte dann auch mal geputzt werden ;)
Ich hab es am Ende aber auch mit mirobo gemacht.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 13 Mai 2021, 16:07:48
Ja, nö.

Bei mir gab's irgendeinen Fehler beim Ausführen des flasher-Scripts.
Aber ich habe diesmal nicht (mehr) meinen "Desktop-PI" angeworfen, sondern eben meine Ubuntu VM.
Die ist extra für so "Flash-Sachen" da... :)

So, nun habe ich auch den V1 mit der neuesten Valetudo RE versorgt.
Eine etwas schwere Geburt.
Gut und Chinesisch musste ich auch erst mal los werden ;)

Dann habe ich meine (vor den ganzen Tests) per scp gesicherte Karte drauf geladen (vorher mal kurz "anfahren" lassen, damit er zumindest mal seine Station auf der sonst komplett leeren Karte hatte) und auch die in fhem hinterlegte Test-Zone "abgefahren"...

Hat wunderbar geklappt... :)

Mal sehen wie das mit dem Karte Speichern unter Valetudo so geht...

So nun werde ich das mal beobachten...

EDIT: und klar, dann irgendwann auch mal mit MQTT "rumspielen"...

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: swsmily am 13 Mai 2021, 21:37:32
Als kleinen Tipp zum Flashen, kann ich diese App empfehlen:
https://forum.xda-developers.com/t/app-android-4-4-ios-8-0-xvacuum-firmware-xiaomi-vacuum-roborock-v1-v2-v3.3896526/

Hat super funktioniert, gerade bei meinen Eltern, die keinen Pi oder Linuxumgebung usw. haben, war das Flashen damit sehr einfach möglich.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 14 Mai 2021, 08:40:56
Hallo Otto,

so, jetzt: MQTT :)

Ich habe ja einen V1 (und einen weiteren zum "Testen") und einen V2...
...also mehr als einen.

So wie ich MQTT-Server "verstehe" werden die Devices doch anhand der/des Topic angelegt (und die Daten dann "zugeordnet")?

D.h. in Valetudo-MQTT passe ich dann Identifier (oder Topic-Prefix) an?
Dort könnte ich ja den Saugernamen eintragen?

Was bitte schön ist/macht: Autoconfiguration Prefix?
(da steht aktuell homeassistant drin: lassen weil egal? Ändern in fhem: weil egal [aber nat. "hübscher" ;) ])

Und: wofür ist "provide map data" gut?
Also ich will nicht unbedingt "unnötigen" Datenverkehr.
Und die Karte interessiert mich eigentlich kaum, außer eben um mal zu schauen (eher sehr selten) oder die Zonen einzurichten (naja: einmal)...
Weil wenn ich die Karte will/wolte: IP-des-Saugers und gut :)

Der V2 kann ja mehr als der V1.
Gibt es etwas, das ich liefern kann?
Also für dich/das Template interessant wäre?

Danke, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 14 Mai 2021, 10:09:22
Moin,

Ich würde den Identifier anpassen - dann hätte man die topics: valetudo/rockrobo1 valetudo/rockrobo2 usw.
Den Homeassistent Zweig kannst Du lassen, den blende ich eh aus und schicke ihn ins nulldevice :)
provide mapdata sendet während der fahrt ständig die Karte. Ich habe mich darum nicht gekümmert, weil die sub die es hier im Forum gab ist dazu nicht kompatibel. Da hab ich es weggelassen.

Probier den V2 aus und dann schauen wir was fehlt oder nicht geht. Ich habe mich auf die Befehle des V2 konzentriert. Die Beschreibung der mqtt Befehle und Topics ist ja in dem Wiki vorhanden. Aus meiner Sicht müsste man segmented_cleanup und bei destinations rooms einbauen.

Über x_raw_payload kannst Du json Strings direkt und einfach testen.

Gruß Otto
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 14 Mai 2021, 11:13:59
Hab mir den Traffic was zurückkommt noch nicht angeschaut, ist es bei dir auch so das nach einem Befehl ewig set_... (wegen setStateList) in state steht und dann irgendwann nur idle ?
Gibts bei der MQTT-Implementierung von Valetudo keine Antwort wie Docked, Charging, Waiting etc. ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 14 Mai 2021, 11:21:08
Zitat von: Otto123 am 14 Mai 2021, 10:09:22
Ich würde den Identifier anpassen - dann hätte man die topics: valetudo/rockrobo1 valetudo/rockrobo2 usw.
Den Homeassistent Zweig kannst Du lassen, den blende ich eh aus und schicke ihn ins nulldevice :)
provide mapdata sendet während der fahrt ständig die Karte. Ich habe mich darum nicht gekümmert, weil die sub die es hier im Forum gab ist dazu nicht kompatibel. Da hab ich es weggelassen.

Moin, moin,

dachte du bist aus (der Nähe von) Leipzig?
Ist das schon so weit im Norden ;)

Ok, dann mache ich das so (wie gedacht) und lasse das map-Zeugs (erst mal) weg...

Zitat von: Otto123 am 14 Mai 2021, 10:09:22
Probier den V2 aus und dann schauen wir was fehlt oder nicht geht. Ich habe mich auf die Befehle des V2 konzentriert. Die Beschreibung der mqtt Befehle und Topics ist ja in dem Wiki vorhanden. Aus meiner Sicht müsste man segmented_cleanup und bei destinations rooms einbauen.

Über x_raw_payload kannst Du json Strings direkt und einfach testen.

Ja, ausprobieren ist eh klar.
Allerdings ist der V2 nur für einen Raum (wegen Wischfunktion) "zuständig", also eigentlich ohne die ganzen tollen neuen Features zu nutzen...

Mal sehen, vielleicht hab ich ja Zeit damit auch mal "rumzuspielen"...

Ja, Wiki hab ich auch schon gefunden ;)

Evtl. "scanne" ich mal meine WLAN-Ausleuchtung ;)

Aber jetzt erst mal überhaupt MQTT... 8)

Danke, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 14 Mai 2021, 12:14:16
Zitat von: TomLee am 14 Mai 2021, 11:13:59
Hab mir den Traffic was zurückkommt noch nicht angeschaut, ist es bei dir auch so das nach einem Befehl ewig set_... (wegen setStateList) in state steht und dann irgendwann nur idle ?
Gibts bei der MQTT-Implementierung von Valetudo keine Antwort wie Docked, Charging, Waiting etc. ?
Doch die Antwort kommt über topic valetudo/rockrobo/state und dann wird das reading state gesetzt.
Und die Befehle kommen bei mir zeitnahe. idle nach einiger Zeit - kommt eigentlich nur wenn er im Raum rumsteht.
Ok die Befehle die keine Bewegung auslösen bleiben natürlich unquittiert hängen.
Zitatdachte du bist aus (der Nähe von) Leipzig?
Ist das schon so weit im Norden ;)
deswegen sage ich ja auch nur moin ;)

ZitatIch habe mich auf die Befehle des V2 konzentriert.
Ich meinte natürlich den V1  :-[
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 14 Mai 2021, 12:39:03
Ja gelesen (https://github.com/rand256/valetudo/wiki/MQTT-API#Topic_valetudorockrobostate) hab ich das schon, da steht aber nicht welche Werte zurückkommen sollten.

Hab bisher nur das Template angewendet, da kommt nix zurück, irgendwann mal idle.

defmod MQTT2_mqttjs_b3143e57 MQTT2_DEVICE rockrobo
attr MQTT2_mqttjs_b3143e57 alias rockrobo
attr MQTT2_mqttjs_b3143e57 devicetopic valetudo/rockrobo
attr MQTT2_mqttjs_b3143e57 event-on-change-reading .*
attr MQTT2_mqttjs_b3143e57 icon vacuum_top
attr MQTT2_mqttjs_b3143e57 model roborockRE
attr MQTT2_mqttjs_b3143e57 readingList homeassistant/vacuum/valetudo_rockrobo/config:.* {}\
$DEVICETOPIC/state:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/attributes:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/map_data:.* {}\
$DEVICETOPIC/command_status:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/destinations:.* { valetudoREdest($EVENT) }
attr MQTT2_mqttjs_b3143e57 room MQTT2_DEVICE
attr MQTT2_mqttjs_b3143e57 setList charge:noArg $DEVICETOPIC/command return_to_base\
fan_power:whisper,min,medium,high,max,mop $DEVICETOPIC/set_fan_speed $EVTPART1\
locate:noArg $DEVICETOPIC/command locate\
pause:noArg $DEVICETOPIC/command pause\
spot:noArg $DEVICETOPIC/command clean_spot\
start:noArg $DEVICETOPIC/command start\
stop:noArg $DEVICETOPIC/command stop\
get_dest:noArg { $DEVICETOPIC.valetudoRE($EVENT) }\
goto:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
map:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
reset_consumable:main,side,filter,sensor { $DEVICETOPIC.valetudoRE($EVENT) }\
zone:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
x_raw_payload:textField { $DEVICETOPIC.valetudoRE($EVENT) }
attr MQTT2_mqttjs_b3143e57 setStateList charge fan_power get_dest goto locate map pause reset_consumable spot start stop zone x_raw_payload
attr MQTT2_mqttjs_b3143e57 userReadings autoReturn:valetudo_state_name:.Idle {fhem("sleep $name:bin_in_time:.0 waitbin;;set $name charge");;return 'return'}

setstate MQTT2_mqttjs_b3143e57 idle
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:32:35 IODev MQTT2_Server
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:32:35 attrTemplateVersion 20210510
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 bin_in_time 4828
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 cleanArea 5239.9
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 cleanCount 158
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 cleanTime 96.7
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:41:44 command return_to_base
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 command_topic valetudo/rockrobo/command
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 currentCleanArea 0.1
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 currentCleanTime 0.0
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 device_identifiers_1 rockrobo
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 device_manufacturer Roborock
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 device_model rockrobo.vacuum.v1
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 device_name rockrobo
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 device_sw_version 0.10.6.2
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 fan_speed_list_1 whisper
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 fan_speed_list_2 min
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 fan_speed_list_3 medium
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 fan_speed_list_4 high
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 fan_speed_list_5 max
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 filter 53.3
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 json_attributes_topic valetudo/rockrobo/attributes
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 last_bin_full -1
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 last_bin_out -1
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 last_run_stats_area 0.1
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 last_run_stats_duration 0
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 last_run_stats_endTime 1620983502000
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 last_run_stats_errorCode 0
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 last_run_stats_errorDescription No error
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 last_run_stats_finishedFlag false
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 last_run_stats_startTime 1620983484000
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 mainBrush 203.3
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:41:44 message ok
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 name rockrobo
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 schema state
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 send_command_topic valetudo/rockrobo/custom_command
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 sensor 0.0
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 set_fan_speed_topic valetudo/rockrobo/set_fan_speed
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 sideBrush 103.3
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 state idle
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 state_topic valetudo/rockrobo/state
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:25:34 subscriptions valetudo/rockrobo/command valetudo/rockrobo/custom_command valetudo/rockrobo/set_fan_speed
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 supported_features_1 start
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 supported_features_10 send_command
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 supported_features_2 pause
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 supported_features_3 stop
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 supported_features_4 return_home
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 supported_features_5 battery
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 supported_features_6 status
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 supported_features_7 locate
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 supported_features_8 clean_spot
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 supported_features_9 fan_speed
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:31:47 unique_id rockrobo
setstate MQTT2_mqttjs_b3143e57 2021-05-13 18:41:44 updated 1620924102862
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 valetudo_state_id -1
setstate MQTT2_mqttjs_b3143e57 2021-05-14 11:12:19 valetudo_state_name UNKNOWN STATE CODE


Bei dem userReadings passt auch was nicht bei mir, hab ich mich noch nicht mit beschäftigt.
(also nicht mit dem userReadings sondern mit dem Wert aus valetudo_state_name der ist ständig UNKNOWN STATE CODE)

Im Valetudo-UI wird keine Karte angezeigt, trotz bisher einer "Komplettreinigung", welchen Grund kann das haben ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 14 Mai 2021, 12:59:21
in der valetudo ui gibt es die Seite Einstellungen, da stehen ein Systeminfos (kannst ja mal posten) und unten gibt es ein valetudo systemprotokoll - da habe ich schon wichtige Hinweise gefunden. Findest Du da Fehler?
BTW: ich musste vorhin über ssh ein reboot machen, weil er einen Fehler bei der mqtt Verbindung gemeldet hat. Config neu setzen hat nicht geholfen, reboot dann schon.

Zu der MQTT API Beschreibung - da steht im ersten Satz: Note that it probably won't change over time. Currently this list matches RE release 0.10.0.
Der Rest passiert live im "Hintergrund" - wie das so ist mit Dokus. ;)

ZitatIm Valetudo-UI wird keine Karte angezeigt,
Das ist ja blöd, da hat doch valetudo ein Problem? Die Karte dort entsteht ja normal live - da kann man zuschauen.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 14 Mai 2021, 13:37:45
Das ist alles was im Log steht:

2021-05-14T01:16:01.515Z Connected successfully to mqtt server
2021-05-14T01:16:00.939Z Probed last id = 1001 using get_status (3 retries)
2021-05-14T01:15:59.914Z Webserver is running on port 80 (http)
2021-05-14T01:15:59.908Z Dummycloud is spoofing 203.0.113.1:8053 on 127.0.0.1:8053
2021-05-14T01:15:59.812Z No ssl key found. Expected path: /mnt/data/valetudo/key.pem
2021-05-14T01:15:59.810Z No ssl cert found. Expected path: /mnt/data/valetudo/cert.pem
2021-05-14T01:15:59.685Z timesync: 14 May 03:15:59 ntpdate[1804]: step time server 188.40.142.18 offset 0.881569 sec
2021-05-14T01:15:56.819Z Loading configuration file: /mnt/data/valetudo/config.json
Waiting for 30 sec after boot... done.
2021-05-13T16:31:45.507Z Connected successfully to mqtt server
2021-05-13T16:25:32.607Z Connected successfully to mqtt server
2021-05-13T16:25:31.957Z Probed last id = 1001 using get_status (3 retries)
2021-05-13T16:25:30.925Z Webserver is running on port 80 (http)
2021-05-13T16:25:30.920Z Dummycloud is spoofing 203.0.113.1:8053 on 127.0.0.1:8053
2021-05-13T16:25:30.833Z No ssl key found. Expected path: /mnt/data/valetudo/key.pem
2021-05-13T16:25:30.831Z No ssl cert found. Expected path: /mnt/data/valetudo/cert.pem
2021-05-13T16:25:30.704Z timesync: 13 May 18:25:30 ntpdate[17962]: step time server 213.239.239.165 offset 1.647292 sec
2021-05-13T16:25:27.864Z Loading configuration file: /mnt/data/valetudo/config.json
    at TCP.onStreamRead (internal/stream_base_commons.js:188:23)
    at Socket.Readable.push (_stream_readable.js:213:10)
    at readableAddChunk (_stream_readable.js:272:9)
    at addChunk (_stream_readable.js:297:12)
    at Socket.emit (events.js:314:20)
    at Socket.ondata (_stream_readable.js:718:22)
    at Writable.write (/snapshot/valetudo/node_modules/mqtt/node_modules/readable-stream/lib/_stream_writable.js:307:11)
    at writeOrBuffer (/snapshot/valetudo/node_modules/mqtt/node_modules/readable-stream/lib/_stream_writable.js:398:5)
    at doWrite (/snapshot/valetudo/node_modules/mqtt/node_modules/readable-stream/lib/_stream_writable.js:409:139)
    at Writable.writable._write (/snapshot/valetudo/node_modules/mqtt/lib/client.js:335:5)
    at work (/snapshot/valetudo/node_modules/mqtt/lib/client.js:321:12)
    at MqttClient._handlePacket (/snapshot/valetudo/node_modules/mqtt/lib/client.js:417:12)
    at MqttClient._handleAck (/snapshot/valetudo/node_modules/mqtt/lib/client.js:1367:7)
    at cb (/snapshot/valetudo/node_modules/mqtt/lib/client.js:705:7)
    at /snapshot/valetudo/lib/MqttClient.js:219:107
TypeError: Cannot read property 'vacuum' of undefined

                                                                                                     ^
this.client.publish(this.topics.homeassistant_autoconf_vacuum, JSON.stringify(this.autoconf_payloads.vacuum), {
/snapshot/valetudo/lib/MqttClient.js:219
2021-05-13T16:25:21.986Z Connected successfully to mqtt server


MiIO: mio-client 3.5.8
Firmware-Version: 004028
Installierte Version: 0.10.6.2


Spricht was dagegen nano zu installieren um sich die config.json mal anzuschauen oder besser nicht und die Datei dazu auf ein anderes System kopieren ?

So sieht die config.json aus:
{
  "spots": [],
  "areas": [],
  "timers": [],
  "ztimers": [],
  "mqtt": {
    "enabled": true,
    "identifier": "rockrobo",
    "topicPrefix": "valetudo",
    "autoconfPrefix": "homeassistant",
    "broker_url": "mqtt://user:pass@192.168.188.26:1883",
    "provideMapData": true,
    "caPath": "",
    "qos": 0
  },
  "dummycloud": {
    "spoofedIP": "203.0.113.1",
    "bindIP": "127.0.0.1"
  },
  "system": {},
  "ntpd": {
    "disabled": false,
    "server": "pool.ntp.org"
  },
  "webInterface": {
    "localization": "de"
  },
  "httpAuth": {
    "enabled": false,
    "username": "valetudo",
    "password": "valetudo"
  },
  "telegramBot": {
    "enabled": false,
    "token": "",
    "password": "",
    "host": "",
    "proxy": "",
    "clients": [],
    "sendConsumables": true,
    "sendConsumablesEvery": false
  },
  "allowSSHKeyUpload": true,
  "map_upload_host": "http://127.0.0.1"

Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 14 Mai 2021, 13:55:26
Witzig, diese Meldung hatte ich vorhin auch:
ZitatTypeError: Cannot read property 'vacuum' of undefined
und dann ging mqtt nicht. Deshalb mein reboot.
Mein MiIO: miio-client 3.3.9 - von was hängt das ab? Sonst scheint alles gleich mit Meinem zu sein.

Es ist ja nicht so, das er unter valetudo/rockrobo/attributes nichts published!? Da kommt ein json zurück wo dann das drin steht:   "valetudo_state": { "id": 2, "name": "Charger disconnected" } da steht bei Dir scheinbar -1 ?
Man kann sich mit mqtt-explorer (http://mqtt-explorer.com/) ganz gut anschauen was am FHEM MQTT2 Server so ankommt.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 14 Mai 2021, 14:08:21
ZitatMan kann sich mit mqtt-explorer ganz gut anschauen was am FHEM MQTT2 Server so ankommt.

Ich mach das immer "auf die Schnelle/nebenbei" mit einer einfachen Android-App MyMQTT, da kann man die Topics aber blöderweise nicht rauskopieren.

Ich sehe bisher nur Verkehr unter valetudo/rockrobo/attributes und valetudo/rockrobo/command_status.

reboot hatte ich eben auch mal einfach so gemacht, keine Änderung.

Zitat"valetudo_state": { "id": 2, "name": "Charger disconnected" } da steht bei Dir scheinbar -1 ?

ja da steht immer valetudo_state": { "id": -1, "name": "UNKNOWN STATE CODE" } drin.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 14 Mai 2021, 14:23:07
Nutzt du jetzt 0.10.6.2 oder noch 0.10.5, im Blog oder irgendwo anders stand 0.10.5?

Ich frag mich ob ich mal 0.10.5 ausprobieren soll ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: rudolfkoenig am 14 Mai 2021, 14:23:35
ZitatIch mach das immer "auf die Schnelle/nebenbei" mit einer einfachen Android-App MyMQTT, da kann man die Topics aber blöderweise nicht rauskopieren.
Alternativ setzt man "attr MQTT2_SERVER rawEvents valetudo/.*" , und man kopiert topic+message aus dem FHEMWEB Event-Monitor raus.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 14 Mai 2021, 14:29:45
miio-client 3.3.9 vs 3.5.8 - da gab es doch bei der original Firmware Bezeichnung immer so eine zweiteilige Nummer in der Art "3.5.8_004018"
Das sieht doch so aus, als ob da jetzt ein Unterschied ist. Ich kann mich erinnern das diese Nummer sich auch mal änderte und dann irgendwas grundlegen anders war.
Hier tauchen nur 3.3.9 Nummern auf.
https://github.com/dgiese/dustcloud/wiki/Xiaomi-Official-Vacuum-Firmware 

Hattest Du mal ne andere Firmware und dabei ist etwas mit der "Unterlage" passiert?

Offenbar ist ja valetudo selbst auch ratlos UNKNOWN ...

Ich habe die aktuelle 10.6.2 als ich vor ein paar Tgaen anfing war es die 10.5
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 14 Mai 2021, 14:32:54
Zitat von: rudolfkoenig am 14 Mai 2021, 14:23:35
Alternativ setzt man "attr MQTT2_SERVER rawEvents valetudo/.*" , und man kopiert topic+message aus dem FHEMWEB Event-Monitor raus.

Ich weiß hab ich vor ein paar Minuten auch gemacht:

attr MQTT2_Server rawEvents valetudo/rockrobo/attributes:.*

und im Event-Monitor gefiltert mit valetudo in Match the whole line und frag mich warum ich nix sehe, der Monitor bleibt leer.

edit:

mit rawEvents valetudo/.* sehe ich alles  :P
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 14 Mai 2021, 14:37:14
Wenn Du es so macht wie Rudi vorschlug, funktioniert das einwandfrei für beide Stellen:  ;)
valetudo/.*
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 14 Mai 2021, 14:41:59
ZitatHattest Du mal ne andere Firmware und dabei ist etwas mit der "Unterlage" passiert?

ja, Valetudo war schonmal drauf, irgendwann aber einfach weg.

Jetzt hab ich einfach

hip="<primäre host ip adresse>"
wget https://vacuumz.info/download/gen1/stock_root/root_4028.pkg
mirobo update-firmware --ip $hip root_4028.pkg


ausgeführt und Valetudo RE installiert.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 14 Mai 2021, 14:47:53
Zitat von: rudolfkoenig am 14 Mai 2021, 14:23:35
Alternativ setzt man "attr MQTT2_SERVER rawEvents valetudo/.*" , und man kopiert topic+message aus dem FHEMWEB Event-Monitor raus.

Da die Empfehlung jetzt vom Autor selbst kommt, ich frage mich schon länger warum dann in der Doku steht:

ZitatShould only be used, if there is no MQTT2_DEVICE to process the topic

Wir haben doch eine MQTT2_DEVICE-Definition, ist der Hinweis dann veraltet ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 14 Mai 2021, 15:04:32
Was muss ich denn machen dass das Verzeichnis leer ist, ich mags einfach mal testen ob es sich mit der vorherigen Version anders verhält:

root@rockrobo:~# sudo apt-get purge valetudo-re
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  valetudo-re*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
(Reading database ... 14969 files and directories currently installed.)
Removing valetudo-re (0.10.6) ...
valetudo stop/waiting
dpkg: warning: while removing valetudo-re, directory '/usr/local' not empty so not removed
Processing triggers for ureadahead (0.100.0-16) ...

Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: rudolfkoenig am 14 Mai 2021, 15:11:08
ZitatWir haben doch eine MQTT2_DEVICE-Definition, ist der Hinweis dann veraltet ?
Nein, ich wollte mich aber kurz fassen, sonst wird das gerne ignoriert oder missverstanden.

Man kann MQTT2_SERVER auch ohne MQTT2_DEVICE betreiben, man reagiert dann auf diese "raw events" mit notify, und setzt Befehle per "set m2s publish topic message" ab.
Mit MQTT2_DEVICE sind rawEvents ueberfluessig (im Sinne von: "generiert sinnlosen Last"), da MQTT2_DEVICE selbst die besseren Events generiert. "should" ist als solches gemeint: mach es so, es sei denn, du weisst, was du tust.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 14 Mai 2021, 15:15:35
Das Verzeichnis /usr/local will er nicht entfernen obwohl es eigentlich in seinen Aufgaben steht? Ich würde das belassen und nicht löschen. Da stehen nur noch 3 Scripte drin, nichts weiter.

Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 14 Mai 2021, 15:30:45
Ich hab ein paar Minuten später nochmal mit
apt list --installed
geschaut und valetudu-re wurde nicht mehr aufgeführt ?
dann hab ich 0.10.5 installiert
valetudo-re/now 0.10.5 armhf [installed,local]
und am Verhalten hat sich nix geändert, keine Daten/Verkehr unter dem state-Topic.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 14 Mai 2021, 19:55:58
So ein Mist. Mein Bauch sagt mir: Da will der Unterbau mit valetudo nicht. Schau mal hier ist das auch mit den Nummern:
https://builder.dontvacuum.me/pkg/
Ich bin definitiv von einer relativ alten Version gekommen... Und zuletzt vom Werksreset ...
Ich suche mal ein bisschen nach valetudo logging, vielleicht gibt es ja einen Hinweis wenn man auf der Kiste eine Fehlermeldung findet.

@Joachim: Wie ist Deine miio-client Version auf deinem v1?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 15 Mai 2021, 09:18:42
Ich les hier (https://valetudo.cloud/pages/integrations/mqtt.html) was von Map Data, Dust Bin, Zone Clean. Alles Punkte die du im ersten Post wichtig findest, warum überhaupt über Valetudo RE ?

Nachdem ich heute Morgen auf diesen Beitrag (https://www.heise.de/forum/c-t/Kommentare-zu-c-t-Artikeln/Schoener-saugen/Ein-paar-Worte-zu-Valetudo-und-Valetudo-RE/posting-36965330/show/) gestossen bin, bin ich erstmal am zweifeln ob Valetudo RE der richtige, künftige Weg ist.

Noch mehr schmeichelt mir Valetudo wenn FHEM extra Erwähnung beim letzten Release findet, auch wenn ich noch nicht verstanden habe was genau die Homie-Implementierung genau bedeuten soll und wie genau/ob überhaupt die uns von nutzen sein könnte.

ZitatIf you're using something else such as FHEM or ioBroker, the new Homie MQTT implementation should also be much easier to work with.

Ich bekomme Heute oder Morgen den bisher nicht gerooteten V1 meiner Mutter, bei dem bisher auch noch kein update gemacht wurde, ich glaub da spiel ich Valetudo mal drauf und beschäftige mich damit.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 17 Mai 2021, 12:19:37
@TomLee Da hast Du mich jetzt nochmal über Los geschickt  :D
Ich habe mir das alles nochmal durchgelesen und was Du sagst kann ich nachvollziehen. Ich war ja getriggert durch einen anderen Artikel auf RE und habe dann ein bisschen im Internet gestochert und fand irgendwie RE "einfacher" - jetzt hast Du moralische Bedenken in mir geweckt ;)
Stutzig macht mich auf der Firmware Seite das hier "(ver 4018, 05/2020, Full-Ubuntu)" - das kann ja bedeuten das die 4028 die ich jetzt genommen habe nicht so toll ist?
Insgesamt klingt das alles "unklarer" als bei RE - deswegen war ich wahrscheinlich schneller dabei ;)

Ich schau mal wie Deine Erfahrung ist und bleib dran.  8) 

BTW: ich habe am WE zwei Bugfixes in der Utils eingecheckt, betreffen beide die Ansteuerung von Zonen. Falls jemand dies aktualisieren möchte:
{ Svn_GetFile("contrib/AttrTemplate/99_roborockUtils.pm", "FHEM/99_roborockUtils.pm", sub(){CommandReload(undef, "99_roborockUtils")}) }
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 17 Mai 2021, 12:40:35
Zitat von: Otto123 am 17 Mai 2021, 12:19:37
jetzt hast Du moralische Bedenken in mir geweckt ;)

Bei mir auch ein wenig...

@Otto: wäre deine MQTT-Anbindung kompatibel mit Valetudo (ohne RE)?

Bzw. werde ich mal sehen, ob ich von RE auf ohne RE komme ohne zurückzusetzen (weil sonst Karten weg und ich muss das erst mal noch mal prüfen mit dem Abspeichern und Zurückspielen: sicher ist sicher)...

Zitat von: Otto123 am 17 Mai 2021, 12:19:37
BTW: ich habe am WE zwei Bugfixes in der Utils eingecheckt, betreffen beide die Ansteuerung von Zonen. Falls jemand dies aktualisieren möchte:
{ Svn_GetFile("contrib/AttrTemplate/99_roborockUtils.pm", "FHEM/99_roborockUtils.pm", sub(){CommandReload(undef, "99_roborockUtils")}) }

Spiele ich mal ein.
Was soll das ändern (evtl. erkenne ich es ja am Code selber)...

Aktuell habe ich MQTT nur bei meinem V1 aktiviert.
Demnächst auch der V2.

Ich wollte eine Zone starten und dachte es kommt eine Liste oder man könnte irgendwo eine abrufen...
...aber es gibt ja keinen get-Befehl...

EDIT: eingespielt. Für mich keine Änderung erkennbar. Hab aber auch noch nicht wirklich viel damit gemacht (also bislang)... :-\
EDIT: Nach dem Anlegen des Devices stand es (nach einem "Fehlversuch" eine Zone zu reinigen: gestartet mittels Xiaomi-Modul bzw. Valetudo Webseite und darüber abgebrochen weil Zonenreinigung mit "alter" Karte und neuer FW nicht so ganz geklappt hat) ewig auf "set_docked" (oder so ähnlich). Eine Nacht geschlafen und dann war docked, also korrekt...

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 17 Mai 2021, 12:55:51
Zone starten:
Du verwendest einfach die Bezeichnungen die Du in Valetudo RE vergeben hast, mehrere mit Komma getrennt, ohne Anführungszeichen.
Abrufen kannst Du die Liste mit get_dest - schreibt er in zwei Readings. Ist aber nichts umwerfendes, nur die Namen als Liste. Ja Tomlee hätte einen getter gemacht, da hatte ich auf die Schnelle wieder "ein Problem" :)
Ohne den Patch ging die Zonenreinigung schlicht nicht, er hat ein leeres Array geschickt. Übrigens kannst Du einfach die Routine aufrufen (mit Befehl als Parameter), die liefert nur einen String zurück, da passiert also nichts "mystisches" insofern kannst Du kontrollieren wie die Befehle zusammen gesetzt werden.

Der zweite Patch betraf Umlaute bei get-dest -> Küche :)

Soweit ich sehe ist der MQTT Syntax bei "ohne" RE anders. Aber ein Hexenwerk ist das nicht, kann man sicher alles in eine Routine bauen.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 17 Mai 2021, 13:01:31
Danke.

Ok, daher habe ich keinen Unterschied gemerkt ;)

Das mit get_dest habe ich probiert (ohne zu wissen was es macht ;)  ) und tatsächlich die Readings :)

Wenn man's weiß ist es ja einfach ;)

Was allerdings (bei mir) bleibt: jeder abgesetzte Befehl bleibt als "set_Befehl" stehen bis der nächste Befehl folgt, aktuell auf "set_locate", weil ich dachte evtl. hat das "get_dest" was kaputt gemacht...

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 17 Mai 2021, 13:21:23
Der set_Befehl bleibt solange stehen, bis der Sauger per $DEVICETOPIC/state seinen state zurückmeldet. Was bei mir einwandfrei funktioniert, aber bei Thomas ja offenbar gar nicht.
Ich glaube set_locate bleibt eine ganze Weile, weil er das per mqtt nicht quittiert. Aber wenn er fährt kommen bei mir ständig state Meldungen ...

Wie man von RE nach ohne kommt - ohne Reset - ist mir auch nicht klar. Zumal nicht nicht durchblicke ob es valetudo "solo" - zum installieren ohne Firmware gibt?
Ist sicher alles ganz einfach, deswegen hat es keiner aufgeschrieben  ;D ;D ;D

Zumindest (wenn man weiß nach was man sucht) gibt es hier auch fertige valetudo Images https://vacuumz.info/download/gen1/
Das sichern der Daten (inklusive Karte) geht offenbar ganz gut wenn man /mnt/data/valetudo sichert.
Eventuell reicht es wenn man die binary unter /usr/local/bin austauscht - mit der die man hier https://github.com/Hypfer/Valetudo/releases/tag/2021.04.0 herunterladen kann?
Natürlich samt passende /mnt/data/valetudo/config.json
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 17 Mai 2021, 14:06:02
Das mit der FW ohne RE werde ich mal probieren (FW-Links waren/sind klar ;)  ), allerdings ist dann mein Testsauger nicht mehr mit MQTT "kompatibel"...
...also scheidet der als Testvehikel (erst mal) aus.

Bislang hat es gereicht (V1) die last_map unter /mnt/data/rockrobo zu sichern bzw. zurückzuspielen.
Evtl. verbunden mit einem kurzen "Anfahren", damit zumindest mal die Dockinstation auf einer sonst (nach einem Reset) komplett leeren Karte erscheint.
Dann reboot und gut.

Habe ich mit meinem Testsauger schon öfter gemacht.
Allerdings steht der etwas (sehr) eng und da hat sich in der FW bzgl. Navigation wohl was geändert.
Seitdem funktioniert die in fhem abgespeicherte Zone (Xiaomi-Modul) nicht mehr.
Also Karte wird korrekt angezeigt, die Zone auch aber der Sauger tut sich beim Navigieren halt schwer und da musste ich abbrechen... ;) :-\

Ich schaue mal, ob ich von neuester Valetudo RE auf neueste Valetudo ohne RE komme...

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 17 Mai 2021, 14:10:37
ZitatIch schau mal wie Deine Erfahrung ist und bleib dran.

Die aktuelle Valetudo 2021.04.0 hat einen MQTT-Bug, der soll im nächsten Release behoben sein, die ist aktuell auf meinem V1.
Also noch warten oder selbst sagt man kompilieren ? des master Branch, weiß ich aber nicht wie.

Auf den meiner Mutter hab ich die aktuelle Valetudo RE gespielt, für sie sind all die tollen Features im UI von RE ein Vorteil.

Zitat@Otto: wäre deine MQTT-Anbindung kompatibel mit Valetudo (ohne RE)?

Dafür gibts das andere Template roborock aus diesem Thread (https://forum.fhem.de/index.php/topic,104804.msg987284.html#msg987284).

Aber wie gesagt dann eine vorherige Version von 2021.04.0 nehmen, wegen dem Bug ( oder warten, oder selbst builden  ;D), auch die Topics mein ich verstanden zu haben haben sich mit dem letzten Release geändert und das Template müsste dann angepasst werden.




Wenn man die Karte nicht unbedingt sichern möchte/braucht, habt ihr euch mal mit der App die in #7 erwähnt wurde beschäftigt, einfach den Sauger auf Werkseinstellung zurücksetzen und nach nicht mal 15 Minuten hat man damit eine neue .pkg geflasht.
Im Falle Valetudo kann man auch gleich das Sprachpaket hochladen, das ginge halt mit Valetudo RE auch im UI.

Alle Dateien die man braucht findet man auf https://vacuumz.info/download/ (https://vacuumz.info/download/).
Die App, die fertige .pkg und die Sprachdatei.

Auf https://vacuumz.info/download/ die Android-App (.zip), das Sprachpaket und die Firmware auf das Android-Gerät laden.

VacuumzApp installieren.

Sauger auf Werkseinstellungen setzen (Reset+Home drücken, nach 5 Sekunden nur noch Homebutton bis zur nächsten Sprachnachricht)

Androidgerät mit dem AP des Saugers verbinden

App starten (nicht vorher schon), diese verbindet sich sofort und zeigt auch gleich einen Token an (der ist aber unnütz, nachdem man sich mit dem eigenen Wifi verbindet ist es wieder ein anderer).

Mit dem Flash Firmware-Button wird nach Auswahl der zuvor heruntergeladenen Firmware direkt das hochladen auf den Sauger begonnen.(nicht gleich in die Hose machen, das dauert ein paar Minuten)

Es erfolgt eine weitere Sprachnachricht, das der Flashvorgang erfolgreich war und ein reboot ? stattfindet.

Das Androidgerät verliert dann die Wifi-Verbindung zum AP des Saugers, ist der Sauger neu gestartet wieder mit dem AP verbinden und (im Falle Valetudo) die Sprach Datei hochladen.

Dann, während man noch mit dem AP verbunden ist, mit 192.168.8.1 das UI aufrufen und in den Einstellungen die eigenen WLAN-Daten eingeben, fertig.

Falls von Interesse:
Token auslesen, wenn der Sauger schon gerootet ist:
printf $(cat /mnt/data/miio/device.token) | xxd -p


Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 17 Mai 2021, 14:20:52
Das mit der App mag ja schön und gut sein, was mir da nicht gefällt: zurücksetzen ;)

Wenn/als die Sauger frisch kamen wäre das eine tolle Möglichkeit gewesen...
...aktuell mache ich das lieber mittels miio update-firmware :)

Update auf Valetudo OHNE RE (jaja die 04 mit dem Bug) ist grad durchgelaufen.
Mal sehen was da anders ist...

Vermutlich reicht mir das dann sogar mit Bug ;)
(nutze ja aktuell noch das Xiaomi-Modul bzw. sind halt meine ganzen "Automatismen" basierend darauf umgesetzt)

Hauptsache: Cloudfree :)

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 17 Mai 2021, 14:28:28
Du kannst doch den Ordner (mit der Karte) zuvor sichern und dann wieder zurückspielen oder versteh ich was nicht ?

Mit der 04 einfach halt MQTT erst gar nicht aktivieren, MQTT-Traffic gibts mit der aber auch aktuell nur wenn man den homeassistant aktiviert und dann kommt auch nur Mist und die CPU-Auslastung geht hoch.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 17 Mai 2021, 14:44:04
Zitat von: TomLee am 17 Mai 2021, 14:28:28
Du kannst doch den Ordner (mit der Karte) zuvor sichern und dann wieder zurückspielen oder versteh ich was nicht ?

Ja schon.
hat auf meinem Testsauger auch funktioniert.
Aber da ist es mir nicht so wichtig, wenn da was "schief geht" ist es "egal".

Aber nicht für Wohnzimmer/Esszimmer/Schlafzimmer.
Da habe ich lang getüftelt, bis die Zonen gepasst haben und da soll das auch so bleiben.

Da noch mal von vorne hab ich keine Lust ;)

Deswegen lieber nur updaten OHNE Reset.
Aber geht/ging ja problemlos :)

Bislang hab ich noch nichts vermisst...
(gut die Kartenansicht ist [jetzt] etwas "klein")
EDIT: "Vorteil" die "Zusatz-Gimmicks" funktionieren jetzt (nat.), also z.B. Valeroni (WLAN-Heat-Map)... :)
https://valetudo.cloud/pages/companion_apps/valeronoi.html
Das geht/ging mit Valetudo RE (nat.) nicht...
Gut: auch nur Spielerei ;)

Und MQTT ist (aktuell) eh mehr "Spielerei"...
(Nix für ungut Otto ;)  )

Irgendwann mache ich mal den Test, ob ich aus meinem "Testsauger" einen "Wohnzimmersauger" machen kann...
...wenn das geht, dann bin ich da auch (deutlich) "entspannter"... ;)

Selber bauen lassen (wobei ich nicht weiß welches Valetudo da zugrunde liegt aber man kann auch "Neuestes" angeben) geht ja über: https://builder.dontvacuum.me/ bzw. für V1 direkt: https://builder.dontvacuum.me/_v1.html

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 17 Mai 2021, 15:10:29
Zitatwobei ich nicht weiß welches Valetudo da zugrunde liegt aber man kann auch "Neuestes" angeben) geht ja über:

Steht ja alles zur Auswahl, welche Version, ob Valetudo oder RE, ob aktuelles Release oder alte Version. Aber bringt nix, weil wenn man Preinstall valetudo newest version
auswählen würde dann die .pkg mit dem letzten Release 04 erhalten würde. Die kann man sich aber ja auch gleich bei https://vacuumz.info/download/ laden.

Ich mein es so verstanden zu haben das man direkt den Code (master-Branch) aus Github (und wie bis jetzt verstanden der Bug schon vor über 2 Wochen behoben wurde, es gab dazu halt bisher nur noch kein Release) selbst "builden" müsste.

Wie hier (https://valetudo.cloud/pages/development/building-and-modifying-valetudo.html) ausführlich beschrieben, verstehs aber trotzdem nicht ganz und mag mich ehrlich gesagt gar nicht weiter mit beschäftigen, da warte ich lieber.

Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 17 Mai 2021, 18:15:08
ZitatSo ein Mist. Mein Bauch sagt mir: Da will der Unterbau mit valetudo nicht

Hab jetzt wieder Valetudo RE (vacuum_4028_valetudo_re_0_10_6.pkg) aufgespielt (ja das UI ist um Welten besser, informativer), aber diesmal mit Werksreset zuvor (mit der App halt), weil das neue Release bestimmt noch auf sich warten lässt und mit Sicherheit auch nicht gleich unter vacuumz.info verfügbar sein wird.
Jetzt bekommt auch was in state zurück und die Karte wird auch erstellt (im UI).

Hab mich ehrlich gesagt noch nie mit der Karte beschäftigt, wenn gesaugt wurde dann bisher immer alles.
Hab die Karte einer Komplettreinigung unter Valetudo gespeichert und jetzt in RE eingespielt, einen reboot gemacht und sie wird nicht angezeigt, dann wieder gelöscht, reboot und es wird nach kurzer Fahrt (nicht gleich) eine neue Karte angefangen.

Was ich mich frage ist ob ich den Sauger evt. hätte kurz fahren lassen sollen bis die Karte (aus Valetudo) vlt. dann doch irgendwann angezeigt worden wäre, muss ich später/morgen nochmal testen ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 17 Mai 2021, 18:25:25
Zitat von: TomLee am 17 Mai 2021, 18:15:08
Was ich mich frage ist ob ich den Sauger evt. hätte kurz fahren lassen sollen bis die Karte (aus Valetudo) vlt. dann doch irgendwann angezeigt worden wäre, muss ich später/morgen nochmal testen ?

Naja was bei mir mit Reset funktioniert hat (allerdings Karte selbst gesichert: /mnt/data/rockrobo/last_map):

Kurz fahren lassen (weil die Karte ja komplett leer war, also nicht mal die Ladestation zu sehen war), dann war eben die Ladestation da und halt ein wenig "Umgebung" vom "Anfahren". Dann Karte (noch mal) "reinkopiert", Sauger gebootet (weil nur dann liest er die Karte neu ein, alternativ das "Player" Programm "abschießen") und dann war die alte Karte da.

Wie das mit der Sicherung über Valetudo geht: (noch) keine Ahnung ;)

Ja, zugegeben die Weboberfläche von RE bietet schon so bissi was mehr etc.
Aber wenn es sich bei Valetudo RE wirklich so verhält wie in dem verlinkten Artikel, dann bleibe ich erst mal auf OHNE RE (und rüste auch die anderen dann mal wieder um)...

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 17 Mai 2021, 19:01:16
Zur Karte:
Ich habe die mir ein paar Karten erstellt, ich habe dazu den Sauger mit der valetudo App in Etappen durch die Bude geschickt: ein Stück vor, dann bis zur nächsten Kreuzung im Flur von dort vor den Punkt wo drei Zimmer abzweigen, dann gerade aus in die Zimmer. Ich fand das ganz Lustig. Die Phasen der Karte habe ich jeweils erstmal mit scp runterkopiert, es stellte sich später heraus: das war gut so!.

Test Sicherung mit valetudo RE
Ich habe auch mit MQTT (geht meiner Meinung nach besser und logischer als in der App) ein map store Karte1 gemacht.
Dann die Karte versaut, danach ein map load Karte1 - dann "zappelt" die App eine Weile (weil der Sauger oder Teile von ihm) booten und die alte Karte ist wieder da.
Der Sauger stand ein kleines bisschen neben der Spur, mit goto Point ein Stück fahren lassen, Karte stimmt wieder. (hier darf man nicht einfach start und dann pause/stop machen -> das erzeugt eine neue Karte)

Dann kam der Werkreset und alles war futsch. :(
Dann habe ich nach "Neu Flash" nach kurzer Fahrt map store map_3 gemacht, das erzeugt eine Struktur /mnt/data/valetudo/maps/map_3/ mit diesem Inhalt
drwxr-xr-x 2 root root 4.0K May 14 12:34 .
drwxr-xr-x 4 root root 4.0K May 15 08:16 ..
-rw-r--r-- 1 root root 439K May 14 12:39 last_map
-rw-r--r-- 1 root root  149 May 14 12:34 valetudo.json

Dann habe ich mit scp meine alte Karte wieder als last_map dorthin kopiert (das Fragment dabei überschrieben)
Dann ein map load map_3 und siehe da: nach kurzem "zappeln" alles wieder da! ;)

In der Datei valetudo.json stehen alle Punkte und Zonen die zu dieser Karte gehören.
Also für ein externes backup müsste man die Struktur /mnt/data/valetudo/ einpacken und wegkopieren.

@Thomas hat sich jetzt Deine miio-client Version geändert?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 17 Mai 2021, 19:11:41
Die ist jetzt 3.3.9
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 17 Mai 2021, 19:26:52
Also hattest Du ein Firmware 04028 mit einem miio-client 3.5.8 - das ist offenbar für valetudo nicht gut...
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 18 Mai 2021, 15:22:55
Irgendwo habt ihr was verdreht, die roborock und roborockRE Templates stehen nicht mehr in der Auswahlliste nach heutigem update, über die Kommandozeile klappts aber noch.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 18 Mai 2021, 21:02:48
Das liegt nicht am Update sondern offenbar am Filter (welches ich per c&p vom rockrobo übernommen habe)  ::)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 19 Mai 2021, 10:05:40
Verstehs auch nach einmal drüber schlafen immer noch nicht, es kommen auch keine Erinnerungen hoch, was spricht denn dagegen in beiden Templates den gleichen Filter zu verwenden, es sollen doch beide Templates vorhanden sein wenn valetudo in  der rL vorkommt ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 19 Mai 2021, 10:30:08
Ich muss es mir noch genau anschauen, ich glaube das Filter wirkt beim jungfräulichen (darf man das heute noch sagen) Device richtig. Nach der ersten Anwendung wirkt es so, dass das Template ausgeblendet wird?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 19 Mai 2021, 11:48:06
ZitatNach der ersten Anwendung wirkt es so, dass das Template ausgeblendet wird?

Ja so verhält es sich zur Zeit.

Wenn ich mir aber andere Templates anschaue, bspw. die Milights bei denen nach der CID gefiltert wird, dann ist dort das Verhalten nicht so, dort ist auch nach der ersten Anwendung das Template in der Liste.

Probier ich das bei den roborocks:

# The rockrobo device for valetudo RE
name:roborockRE
filter:TYPE=MQTT2_DEVICE:FILTER=CID~valetudo.*
...


name:roborock
filter:TYPE=MQTT2_DEVICE:FILTER=CID~rockrobo.*
...


wird das entsprechende Template trotzdem nach der ersten Anwendung wieder ausgeblendet.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 20 Mai 2021, 14:56:34
Ich habe das Filter jetzt so geändert:
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*\/valetudo.*
Das Problem war ja, das ich die readingList mit $DEVICETOPIC überschreibe.

Dein Test hätte TYPE=MQTT2_DEVICE:FILTER=CID~rockrobo sein müssen (warum weiß ich nicht .* am Ende ist zu viel, habe es mit list getestet). Aber man könnte das Ding ja anders benennen (bei zwei Saugern) den basetopic wird man wohl lassen.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 20 Mai 2021, 17:54:13
Verstehs immer noch nicht, auch wenns klappt  ::)
Es gibt doch kein 'valetudo' mehr in rL ausser in dem homeassistant-Zweig und wenn ich den zum Test raus nehme klappts immer noch ?

Für die Blinden:
attr MQTT2_mqttjs_137fdfb0 readingList homeassistant/vacuum/valetudo_rockrobo/config:.* {}\
$DEVICETOPIC/state:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/attributes:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/map_data:.* {}\
$DEVICETOPIC/command_status:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/destinations:.* { valetudoREdest($EVENT) }





ZitatAber man könnte das Ding ja anders benennen (bei zwei Saugern) den basetopic wird man wohl lassen.

Hab mich lange nicht mit attrTemplate beschäftigt, es hat mich jetzt hier aber wieder "gepackt" ( wer weiß wie lange).
Denk bestimmt nur einen Schritt voraus und nicht an die Folgen.
Es wird in dem roborock-Template auch so gemacht ja, aber bist nicht du verantwortlich dafür, mit defmod DEVICE MQTT2_\DEVICE DEV_ID, das man den Namen ändern muss, die Geräte werden doch mit einer exclusiven CID angelegt.
Wenn man die DEF so belassen würde müsste man doch auch keine andere Bezeichnung in Identifier im UI vornehmen, oder ?

siehe die Tasmota-Templates, die DEF muss ja nicht schön aussehen.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 20 Mai 2021, 18:45:15
ZitatEs wird in dem roborock-Template auch so gemacht ja, aber bist nicht du verantwortlich dafür, mit defmod DEVICE MQTT2_\DEVICE DEV_ID, das man den Namen ändern muss, die Geräte werden doch mit einer exclusiven CID angelegt.

Das keine Frage mehr das ist Fakt, kann seit heute auf die "Roberta" meiner Mutter zugreifen, hab die defmod ... Zeile rausgenommen, beide Devices gelöscht, dann werden zwei Devices angelegt und auf beide kann man das Template anwenden.  :P
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 20 Mai 2021, 18:58:32
Noch was beschäftigt mich, die Utils wird immer beim anwenden heruntergeladen, evtl. kann man ja sowas wie attrTemplateVersion für die auch einführen, das man das abfangen kann und nur bei einer neuen Version passiert ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 20 Mai 2021, 19:00:07
wenn ich ehrlich bin: ich habe die defmod Zeile übernommen und nicht wirklich verstanden. Ich meine bei mir hat sie gar nichts bewirkt?
Muss mir das offenbar nochmal alles in Ruhe anschauen. Mein Focus bisher waren die Funktionen drin, nicht das drumherum. Aber das muss ich auch irgendwann mal verstehen ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 20 Mai 2021, 19:34:23
ZitatIch meine bei mir hat sie gar nichts bewirkt?

Na, sie ändert die DEF (und somit die CID, völlig unnötig), deswegen muss man Identifier anders benennen das ein neues Device erkannt wird mit dem bisherigen Template.

Hast du zwei Sauger ? Dann vollziehe das einfach mal nach und du wirst mich verstehen.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 20 Mai 2021, 20:24:23
ZitatHast du zwei Sauger ?
Nö. Nur einen das ziemlich erste Modell :)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 20 Mai 2021, 20:27:11
Zitat von: Otto123 am 20 Mai 2021, 20:24:23
Nö. Nur einen das ziemlich erste Modell :)

Ich hätte 2...
...aber keine Ahnung wovon ihr sprecht... ;)

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 20 Mai 2021, 20:30:16
Aber Du bist der Meinung MQTT bringt Dir nix :)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 20 Mai 2021, 20:47:43
Zitat von: Otto123 am 20 Mai 2021, 20:30:16
Aber Du bist der Meinung MQTT bringt Dir nix :)

Meinst du mich?

Ja, erwischt... ;)

Aber wenn ich was tun/helfen/testen kann: warum nicht...

Ich muss ja nicht immer von allem was haben... ;)

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 20 Mai 2021, 20:56:56
Und ich gebe zu das ich zu "verpeilt" bin das alles einem Einsteiger in dem Thema verständlich zu erklären. Werds aber versuchen wenn Fragen sind.

Es gibt noch den anderen Fuchs, von dem denke ich der hat ganz genau verstanden auf was ich aus bin und das auch verständlich rüber bringen könnte, der hält sich aber bewusst ? zurück.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 20 Mai 2021, 21:23:21
Zitat von: TomLee am 20 Mai 2021, 20:56:56
Es gibt noch den anderen Fuchs,
Du meinst Beta Fuchs?  ;D
Zitat von: MadMax-FHEM am 20 Mai 2021, 20:47:43
Ich muss ja nicht immer von allem was haben... ;)
Naja ich finde die Steuerung mit den Zielen und Zonen in den Valetudo Koordinaten ohne zu rechnen schon als Vorteil gegenüber der Modullösung.
Wenn ich im anderen Thread von Super... lese wie versucht wird die Koordinaten in der Bude zu ermitteln. ;)
Ich kann den Sauger quasi auf der neuen, leeren Karte gezielt durch die Bude schicken und relavante Punkte ermitteln und ihn dabei die Karte zeichnen lassen. Das dauert wenige Minuten und keine drei Tage Rätselraten wo der Nullpunkt ist ;D
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 20 Mai 2021, 21:35:20
Naja aber das ist bei Super... ja nur so "problematisch", weil nicht gerootet ist UND die Flole-App nicht am Start ist ;)

Ich habe ja alles bereits mit Koordinaten die ich brauche "versorgt" im Modul.
Ebenso meine Automatismen eben damit "programmiert"...

Und mit der Flole-App ist es ebenso einfach wie mit Valetudo :)

Einziger (gut ist schon ein toller) Vorteil: OHNE CLOUD :)

Drum bleibe ich erst mal beim Modul und "spiele" mit MQTT gerne (zum Nutzen der "Allgemeinheit") rum... 8)

Eventuell, wenn ich mal viel Zeit habe, stelle ich mal um...

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 21 Mai 2021, 15:22:37
Zitatdie Geräte werden doch mit einer exclusiven CID angelegt.
Wenn man die DEF so belassen würde müsste man doch auch keine andere Bezeichnung in Identifier im UI vornehmen, oder ?

Sry falscher Dampfer, die CID ist bei jedem reboot bzw. MQTT deaktivieren/aktivieren anders und fest vergeben kann man sie auch nicht (was bei Valetudo möglich sein wird (wie bei Tasmota), wie ich bisher verstanden hatte), also würde ohne die defmod Zeile auch immer ein neues Device angelegt und das auch immer mit den gleichen Topic-Pfaden  ::).
Mein Ansatz ginge also nur wenn man die CID fest vergeben könnte und auch im Topic mitkommt, ist halt wie schon vermutet nicht weiter gedacht gewesen von mir.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 29 Mai 2021, 15:58:52
[OT]
Jetzt hab ich drei Tage nicht geschaut ob es ein neues Release von Valetudo gibt und genau vor drei Tagen gabs eines ::)
Ist auch gleich bei vacuumz.info zum Download bereitgestellt worden, spiel ich später mal auf.  :P
[OT]

edit: Was MQTT angeht immer noch unbrauchbar
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 19 September 2021, 22:07:11
Hey, Otto, kurz und knapp, bevor ich wsl. (sicher  :P) weitere Frage hätte, hab heute mal ValetudRE 0.10.7 geflasht (dass vermutlich kein großer Unterschied zu der Version die du genutzt haben musst, zum Zeitpunkt in diesem Faden), Karten waren mir bisher nicht wichtig (ebenda alles oder nix  :P) und damit mal etwas beschäftigt.

Klappt das bei dir mit der Karte immer ? indem du nur die Zonen startest oder musst du ab und an auf eine gespeicherte Karte zurückgreifen ?



Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 19 September 2021, 22:35:43
Hallo Tom,

die 10.7 habe ich mittlerweile auch drauf. Kurz und Knapp: es klappt meistens, aber nicht zuverlässig. Ich haber mittlerweile die integrierte Kartenrücksetzfunktion aktiviert, aber auch da passiert es ab und an das der Sauger "im Wald" steht.
Es passiert vor allem immer dann:
Er hat gesaugt und fährt zurück zum Dock. Ich lasse ihn dann zum Eimer fahren, leere ihn und wenn ich den Filter wieder einsetze wird FHEM getriggert und schickt ihn zum Dock. Klappt mal und mal nicht.

Gruß Otto
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 19 September 2021, 22:54:18
In deiner Antwort steht  leider nicht das was ich erwartet hätte, wenn du das integrierte Feature der Karten-Wiederherstellung (Einstellungen->Webinterface->Startseite->Schaltflächen für mehrere Karten) dazu nutzt, die Karte wieder herzustellen, dann sind meiner Meinung nach, und der heutigen Erfahrung nach, die zuvor definierten Zonen weg oder nicht ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 20 September 2021, 07:35:25
Nein sind sie nicht. Weil ich initial das Feature im MQTT2 Device genutzt hatte um die Karte zu speichern und zu benennen. Dabei wird der komplette Satz gespeichert, also auch die Punkte und Zonen.

Es gibt aus meiner Sicht keinen Unterschied, welches der beiden Tools man nimmt, ob jetzt über MQTT2 oder intern ist gleich. Ich denke es ist der gleiche Weg. Es ist nur der Zeitpunkt der anders/besser/optimaler ist?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 20 September 2021, 20:45:57
ZitatDabei wird der komplette Satz gespeichert, also auch die Punkte und Zonen.

Ja, heute Morgen war das alles so, hätte einfach in Ruhe weiterprobieren sollen, einfach gestern Abend mal Schluß machen, hatte mich Samstag mit Valetudo beschäftigt und zum späteren Sonntag mit ValetudoRE, heut mach ich nix mehr und die Tage glaub auch net.

Zur Sicherheit, bevor wir aneinander vorbei reden mit 
Zitatintegrierte Kartenrücksetzfunktion aktiviert
meinst du aber nicht die zwei letzten Punkte unter Einstellungen->Dauerhafte Daten und System Einstellungen?

Kann man das trotz das da steht das der V1 das nicht unterstützt aktivieren ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 21 September 2021, 12:34:12
Kann ich dir erst am WE genau sagen. Ich bin derzeit unterwegs ohne Kontakt zum Sauger 😄
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 21 September 2021, 12:58:23
[OT]
War eben im Real, dort stehen mehrere Kartons V1 (ich mein zu 225 € ) schon seit mehreren Monaten, ich hab mir immer gesagt  wenn sie ihn auf 199 € reduzieren, weil keiner sie kauft, nehm ich einen mit und Heute war es soweit 199 €.
Was meint Ihr, hättet Ihr auch zugegriffen oder lieber mehr Geld für ein neueres Modell ausgegeben ?
Bin super zufrieden mit dem V1 bisher, Wischfunktion brauch ich eh nicht.
[/OT]
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 21 September 2021, 13:06:02
Zitat von: TomLee am 21 September 2021, 12:58:23
[OT]
War eben im Real, dort stehen mehrere Kartons V1 (ich mein zu 225 € ) schon seit mehreren Monaten, ich hab mir immer gesagt  wenn sie ihn auf 199 € reduzieren, weil keiner sie kauft, nehm ich einen mit und Heute war es soweit 199 €.
Was meint Ihr, hättet Ihr auch zugegriffen oder lieber mehr Geld für ein neueres Modell ausgegeben ?
Bin super zufrieden mit dem V1 bisher, Wischfunktion brauch ich eh nicht.
[/OT]

[OT]
wenn ich nicht schon "genügend" hätte: ja :)
(einzig an der einen oder anderen Stelle würde ein "No-Go" schon Dinge einfacher machen / Zonen zu basteln ist da schon "anstrengend")

Ich würde mich ja für den neuen mit Wischfunktion interessieren, soll ja deutlich besser als die vom V2 sein (die ist so lala, gut besser als wie nicht wischen ;)  )...
...aber da ist wohl (noch/nicht mehr) nix mit Cloud-frei :-\
[/OT]

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 21 September 2021, 13:12:17
Zitat von: TomLee am 20 September 2021, 20:45:57
Kann man das trotz das da steht das der V1 das nicht unterstützt aktivieren ?

Dieses Feature aktivieren geht (wohl) leider nicht.
Hab ich schon versucht...

Es gibt nur das hier:https://forum.fhem.de/index.php/topic,101197.0.html

Ich habe mir mal die Karten (die ich als "gut" empfinde) gesichert (per scp).
Und auch schon einige Male "restored".

Mein "Testsauger" (ein V1) wird ja ab und an mal "misshandelt" ;) und dann muss ich ihn schon mal wieder "anschubbsen" ;)

Nach einem kompletten Gedächtnisverlust (Reset und neue FW o.ä. "Schandtaten") muss ich ihn allerdings zusätzlich zum "Restore" auch mal (vorher) kurz fahren lassen, damit er zumindest seine Station "kennt".
Dann Karte runter spielen und durchstarten (oder eben die "Player-Applikation" abschießen)...

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 21 September 2021, 18:27:11
[OT]

Nochmal kurz OT, sry, auf dem neuen Sauger ist 3.5.4_004010 vorinstalliert.
Flashen tu ich die letzten Monate meinen bisherigen V1 ja problemlos mit der XVacuum App.
Was verstehe ich jetzt nicht, kann ich nicht einfach auf vacuumz.info (https://vacuumz.info/download/gen1/) die nächst höhere Version (4018) wählen ? Der Flashvorgang endet immer mit einem Timeout.
Die App verbindet sich aber schon, es gibt sowas wie handshake und auch der Token ist bekannt, nur der Timout beim Flashvorgang nach etlichen Versuchen.
In diesem älteren Beitrag wird erwähnt OTA wird ab 4004 verhindert, dgiese weiß ne Lösung verrät sie aber nur per PN ?, mehr hab ich dazu bisher nicht gefunden/verstanden.

[/OT]
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 22 September 2021, 21:21:50
Ab einer bestimmten Version geht ein Update nicht mehr. Man muss also Reset machen und die neue Version flashen - war meine Lösung.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 23 Dezember 2021, 17:42:06
Hi,

kann das bei Gelegenheit mal wer testen (mit oder ohne Alexa), mein Gedanke dabei war das man sich die Befehle für Alexa einfach zusammenklicken kann und sich notify/DOIF oder wie auch immer zu sparen.

Alle Zonen werden automatisch einem pct-Kommando zugeordnet, weitere Kommandos können über die Liste in speech_cmnd ergänzt werden, der pct-Slider ist nur so groß wie die ausgewählte Anzahl Befehle+Zonen, was der Slider in der App macht interessiert ja nicht.
Das alles um Routinen zu jedem einzelnen pct-Befehl erstellen zu können.

setList
speech_cmnd:{'multiple,'.ReadingsVal($name,'available_cmnds','none');} {sleep 0.5;fhem("setreading $NAME $EVTPART0 $EVTPART1")}
pct:{'slider,0,1,'.(scalar(split(/,/,ReadingsVal($name,'speech_cmnd','none')))+scalar(split(/,/,ReadingsVal($name,'zones','none')))).',1'} {my @d = split(/,/,ReadingsVal($NAME,'speech_cmnd','none'));my @e = split(/,/,ReadingsVal($NAME,'zones','none'));my ($i, %pct2cmd);for my $v (@d) {$i++;$pct2cmd{$i} = $v;}$i= keys %pct2cmd;for my $w (@e) {$i++;$pct2cmd{$i} = 'zone '.$w;};my $command = $pct2cmd{$EVTPART1};return if !$command;return fhem("set $NAME $command;setreading $NAME pct $EVTPART1");}


userReadings, zum trigger bisher keine Gedanken gemacht
available_cmnds:.* {
  return join(',', map {(split ':',$_)[0]} split '\s',getAllSets($name));
}
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 05 Januar 2022, 17:46:44
Danke, Danke.




Könnt Ihr vlt. bei Gelegenheit wenigstens das roborockRE-Template um die jetzt nun schon länger mögliche dynamische Auswahl der zu reinigenden Zone(n) ergänzen, das man sich das händische Eingreifen (bei Änderung /Ergänzung von Zonen) in Zukunft spart:

Zitatzone:{'multiple-strict,'.ReadingsVal($name,'zones','none')} { $DEVICETOPIC.valetudoRE($EVENT) }
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 05 Januar 2022, 17:54:27
mach ich - danke :)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 05 Januar 2022, 18:26:35
Muss noch eine Frage hinterherschieben, weil ich da einfach nicht mitkomme, betrifft Valetudo und ValetudoRE.

Diese Segmente, verstehe ich es richtig das die von der Gen1 nicht unterstützt werden, nur von Saugrobotern die auch wirklich permanente Karten unterstützen ?

Das konfigurieren von Segmenten im UI von ValetudoRe ist mir bisher entgangen/nirgendwo aufgefallen und in Valetudo kann ich irgendwie welche definieren aber nicht speichern, zumindest stelle ich mich zu doof dazu an.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 05 Januar 2022, 18:39:32
daran beiß ich mich auch gerade etwas fest  :( ich habe jetzt zu meinem Gen1 noch einen Dreame L10 pro ;) der eine valetudoRE der andere valetudo
valetudo legt nach der ersten Fahrt Segmente (in meinem Verständnis Räume / Zonen) an, die einfach nummeriert sind und die man editieren / benennen kann - sehr gewöhnungsbedürftiges Interface.
Diese Segmente kann man per valetudo UI auch ansteuern - allerdings spielt dabei nur die Nummer eine Rolle  :'( die Benennung greift an der Stelle nicht.
Es gelingt mir bisher nicht diese Segmente per mqtt an FHEM zu schicken und zu verwenden.

In der REST API (über Swagger UI erreichbar) ist aber auch von Zonen (ZoneCleaningCapability) die Rede - geht aber bei mir nicht.
Die Segmente jedoch kann ich per REST API auslesen.

In ValetudoRE (also dem Gen 1) habe ich Zonen und Punkte definieren, die kann ich auch anfahren per UI und per mqtt. Von Segmenten ist da keine Rede.

Oh nein - das Interface  :'( :'( :'(
Wenn man in der normalen Homeansicht bei valetudo ist ( Karte ) dann steht unten ADD 0/1 1x CLEAN 0 ZONES
Wenn man jetzt auf ein graues Dreieck in der Karte (Segment) klickt - wechselt unten alles CLEAR 1x CLEAN 1 SEGMENT und man kann ein Segment "kehren"
Wenn man aber stattdessen ADD drückt kommt eine Auswahlmaske und man kann eine Zone malen und  CLEAR 1x CLEAN 1 ZONES  die dann "kehren"  :o

Scheinbar kann man die Zonen dann auch noch irgendwo speichern, denn ganz rechts gibt es ja das Menü mit Clean zone preset Preset ...
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 05 Januar 2022, 19:12:27
ZitatOh nein - das Interface  :'( :'( :'(
Wenn man in der normalen Homeansicht bei valetudo ist ( Karte ) dann steht unten ADD 0/1 1x CLEAN 0 ZONES
Wenn man jetzt auf ein graues Dreieck in der Karte (Segment) klickt - wechselt unten alles CLEAR 1x CLEAN 1 SEGMENT und man kann ein Segment "kehren"
Wenn man aber stattdessen ADD drückt kommt eine Auswahlmaske und man kann eine Zone malen und  CLEAR 1x CLEAN 1 ZONES  die dann "kehren"  :o

Scheinbar kann man die Zonen dann auch noch irgendwo speichern, denn ganz rechts gibt es ja das Menü mit Clean zone preset Preset ...

Das ist der Punk an dem auch ich bin, hat man die Segmente definiert ist aber nirgendwo was zum speichern, hätte erwartet das sich mit dem letzten Release diesbezüglich was geändert hat, zumindest hatte ich es so aus der Doku des letzten Release gelesen/lesen wollen.

Davon unabhängig, ist es mit Valetudo doch immer noch bescheiden das alle Daten, ob Änderung oder nicht alle 30 Sekunden übertragen werden, aber ja, das Ui hat sich gemacht und ValetudoRE, denkste ist wirklich tot ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 05 Januar 2022, 19:24:47
Was man im MAP Management / Segment Management "macht" wird gespeichert (rename, cutting line, join usw) Also die Segmente sind anschließend so wie ich so will - nur, dass das Rename keine praktische Bedeutung hat  :-[
Das mit dem alle paar Sekunden alles übertragen ist doof, aber das scheint ja state of the art zu sein, was man so liest.
Bei RE ist lange nix passiert - D Giese hat Dir doch mal gesagt es ist tot? Naja schaun wir mal  ;D
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 05 Januar 2022, 19:36:38
ZitatWas man im MAP Management / Segment Management "macht" wird gespeichert (rename, cutting line, join usw) Also die Segmente sind anschließend so wie ich so will - nur, dass das Rename keine praktische Bedeutung hat


Wo soll dieses "MAP Management / Segment Management" sein ? Wo kann man  dieseS rename, cutting ...  vornehmen sollen ?

Du meinst auf der Home-Seite wenn man Add tippt ?

Oder in  den Einstellungen unter Robot Settings -> Map Data Management ? Da komm ich nicht mt, da kann man ja nix auswählen, das steht bei mir einfach nur "Map Data Management".
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 05 Januar 2022, 19:45:42
Version 2022.01.0
Nein nicht Robot Settings - tiefer ->
Linkes Menu
settings (unter about) MAP Management - Segment Management
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 05 Januar 2022, 19:59:50
Hab ich nicht  ::) ;D
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 05 Januar 2022, 20:07:02
was sagt der Menupunkt updater? ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 05 Januar 2022, 20:18:58
Ich mach jetzt ne Stunde Pause und vorsichtshalber eine Komplettreinigung.

Da stand da das es die aktuellste Version ist, ist auch meinem Anhang oben zu entnehmen.

Wenn ich jetzt ( während der Reinigung) auf Check for updates tippe:

Updating is only possible while the robot is docked

Aber auch später bezweifle ich das da ein anderes Ergebnis raus kommt.
Es gibt noch keine neuere Version wie 2022.01.0
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 05 Januar 2022, 20:39:28
Ach so ok, Du hast die gleiche Version wie ich? Aber anderen Sauger? Na dann hängt die Funktion vom Saugertyp ab...
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 05 Januar 2022, 21:34:14
Dann hast du mit einem Xiaomi Gen1 mit dem "neuen" Valetudo also noch nicht ausprobiert und testest mit dem Dreame ?

Ich hab auch nicht die "bunte" Karte .

ZitatScheinbar kann man die Zonen dann auch noch irgendwo speichern, denn ganz rechts gibt es ja das Menü mit Clean zone preset Preset ...

Im alten Ui Old Frontend kann ich mit dem Gen1 wie "gewohnt" weiterhin Zonen anlegen/speichern.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 05 Januar 2022, 21:54:08
genau: neuer Sauger erstmal fit machen, dann den alten umstellen - oder auch nicht? ;)

Der Neue lässt den Weihnachtsbaum auch ohne Magnetband und Blockaden in Ruhe. Allerdings ignoriert er auch die alten Streifen, aber er kann ja nogo Zonen, muss man aber einrichten - vorher war er beim ersten Test schon durch die nasse Dusche gefahren  :'(
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 06 Januar 2022, 13:32:44
Zitat von: TomLee am 05 Januar 2022, 17:46:44
Könnt Ihr vlt. bei Gelegenheit wenigstens das roborockRE-Template um die jetzt nun schon länger mögliche dynamische Auswahl der zu reinigenden Zone(n) ergänzen, das man sich das händische Eingreifen (bei Änderung /Ergänzung von Zonen) in Zukunft spart:
erledigt ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 06 Januar 2022, 16:16:34
Zitat von: TomLee am 05 Januar 2022, 21:34:14
Im alten Ui Old Frontend kann ich mit dem Gen1 wie "gewohnt" weiterhin Zonen anlegen/speichern.
Das war ein sehr entscheidender Tipp!  ;D
Ich weiß jetzt wie ich Zonen anlege und ansteuere. Die Zonen werden nach dem Anlegen automatisch als json übertragen.
... und wie ich Segmente auslese (zumindest als Idee) und ansteuere. Die Segmente kann man ev. "einfach" per REST API auslesen.

Ich habe es noch nicht umgesetzt aber zumindest kann ich dann froh zum Stammtisch gehen. 🍻 Wegen C öffnen die Gaststätten bei uns ja nur bis 8.  :(
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 06 Januar 2022, 16:31:24
ZitatDas war ein sehr entscheidender Tipp!  ;D

Die Antwort hatte ich eigentlich schon gestern Abend erwartet  :)

Zitat... und wie ich Segmente auslese (zumindest als Idee) und ansteuere. Die Segmente kann man ev. "einfach" per REST API auslesen
Komm ich noch nicht ganz mit, sollte doch so (https://forum.fhem.de/index.php/topic,125014.msg1196661.html#msg1196661) klappen oder nicht ? Hast vlt. nicht mitgelesen ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 06 Januar 2022, 16:33:48
Bei ihm scheinen die Segmente unter diesem Topic zu kommen:

UG/DreameZ10Pro/MapData/segments:.* { json2nameValue($EVENT); }

edit:

Ach, nee. Er schreibt am Ende alles in ein Reading:

UG/DreameZ10Pro/MapData/segments:.* json_segments
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 06 Januar 2022, 16:43:02
Ok danke, habe ich wirklich nicht mitgelesen. Ich war ja zu dem Zeitpunkt in die Kaufoption für den NEUEN abgebogen  ;D ;D ;D

Mein Gedanke mit der REST API geht dahin: will ich alle 30 sec die Kartendaten per mqtt empfangen und ins null device schieben?  ;D

Aber auf alle Fälle ein guter Ansatz um die json auszupacken. 👍
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 06 Januar 2022, 16:49:51
Ihr sprecht hier jetzt vom Xiaomi V1?

Zonen (gut klar) und Segmente?

Dann noch: valetudo oder valetudoRE?
(bin irgendwie raus ;)  )

Hmmm, evtl. muss ich mich dann doch noch mal wieder dem Thema mqtt@Xiaomi-vacuum widmen...
...wobei ich aktuell alles mit dem Xiaomi-Modul laufen habe wie es (für mich) passt...

Naja, wer weiß, wann mir mal wieder "langweilig" wird ;)

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 06 Januar 2022, 16:54:09
Zitat von: Otto123 am 06 Januar 2022, 16:43:02
Aber auf alle Fälle ein guter Ansatz um die json auszupacken. 👍

Mein Ansatz, wie ich es angegangen war mit:

UG/DreameZ10Pro/MapData/segments:.* { json2nameValue($EVENT); }

https://forum.fhem.de/index.php/topic,125014.msg1196047.html#msg1196047 (https://forum.fhem.de/index.php/topic,125014.msg1196047.html#msg1196047)

Das
UG/DreameZ10Pro/MapData/segments:.* json_segments
kam erst zum Schluss ins Spiel und selbst testen kann ich ja nicht.

8)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 06 Januar 2022, 17:02:15
Ich hab ja nur Xiaomi V1.
Hab einfach aus Interesse was sich getan hat und wegen der Segmente halt, mal wieder auf einen Valetudo geflasht.
Segmente gehen scheinbar mit dem Gen1 nicht, ich glaub der Roboter muss dazu auch wirklich permanente Karten unterstützen.

Solange das mit MQTT nicht ganz rund ist bleib ich bei ValetudoRE.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 06 Januar 2022, 17:03:32
@TomLee: Danke!
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 06 Januar 2022, 17:38:05
ZitatHmmm, evtl. muss ich mich dann doch noch mal wieder dem Thema mqtt@Xiaomi-vacuum widmen...
...wobei ich aktuell alles mit dem Xiaomi-Modul laufen habe wie es (für mich) passt...

Hatte mich ja nie mit Zonen beschäftigt zu Zeiten des Xiaomi-Modul, das mit dem Zonen erstellen war doch mit dem Modul nicht so einfach und aus diesem Grund "hängst" du doch nur an dem Modul, weil es soviel Arbeit war oder täusch ich mich da ?

Mit ValetudoRE ist es doch so einfach Zonen zu erstellen und das "schalten/steuern" dieser über ein MQTT2_Device iVm. dem Template soviel einfacher  wie mit dem Modul (aus der Erinnerung), ich frage mich was dich immer von der MQTT-Variante abhält, vorallem es geht ja beides parallel.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 06 Januar 2022, 17:43:38
Zitat von: TomLee am 06 Januar 2022, 17:38:05
Hatte mich ja nie mit Zonen beschäftigt zu Zeiten des Xiaomi-Modul, das mit dem Zonen erstellen war doch mit dem Modul nicht so einfach und aus diesem Grund "hängst" du doch nur an dem Modul, weil es soviel Arbeit war oder täusch ich mich da ?

Also ich fand das mit dem Modul recht einfach: Flole-App -> Zonen malen -> exportieren und dann im Modul die Attribute füllen :)
(gut Flole fällt jetzt nat weg aber dann halt Export aus valetudo bzw. habe ich ja aktuell alle Zonen schon :)  )

Zitat von: TomLee am 06 Januar 2022, 17:38:05
Mit ValetudoRE ist es doch so einfach Zonen zu erstellen und das "schalten/steuern" dieser über ein MQTT2_Device iVm. dem Template soviel einfacher  wie mit dem Modul (aus der Erinnerung), ich frage mich was dich immer von der MQTT-Variante abhält, vorallem es geht ja beides parallel.

Naja eigentlich nur, weil es eben (aktuell) mit dem Modul läuft und mqtt (meist) recht viel durch die Gegend feuert und zwar schon das Gerät selbst, also da hilft dann ein event-on-change auch erst mal nicht :-\

Mag mich ja täuschen aber bei anderen Versuchen mit mqtt war es so.
Und wenn keine Not ist (so viel durch die Gegend zu schicken), dann ist der Anreiz gering ;)

Ja geht parallel, hatte ich ja bei einem Sauger auch schon mal.
Aber (aktuell) noch keinen Mehrwert gesehen...

Evtl. ändert sich das ja wieder 8)

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 06 Januar 2022, 17:59:34
ZitatNaja eigentlich nur, weil es eben (aktuell) mit dem Modul läuft und mqtt (meist) recht viel durch die Gegend feuert und zwar schon das Gerät selbst, also da hilft dann ein event-on-change auch erst mal nicht :-\

Gegenbeweis, ValetudoRE, der Sauger steht seit gestern einfach nur da:

defmod MQTT2_v1_eg MQTT2_DEVICE rockrobo
attr MQTT2_v1_eg alexaName fernando
attr MQTT2_v1_eg comment { dev=>{ 'pct: 0'=>'pct: Fruehstuecksraum', 'pct: 1'=>'pct: Kueche','pct: 0'=>'pct: Flur', 'pct: 1'=>'pct: Hinten','pct: 9'=>'pct: Raucherecke' } }\
{my $testreading = $defs{"Fritzbox1"} ->{READINGS};;;; my @a = ( keys %{$testreading});;;;return join ',',@a }\
\
{my $testreading = $defs{"Demo"} ->{READINGS};;;; my @a = ( keys %{$testreading});;;;my @r;;;;for (@a) {$_  eq  $_+0 ? push @r,$_: next};;;;return join ',',@r }
attr MQTT2_v1_eg devicetopic valetudo/rockrobo
attr MQTT2_v1_eg event-on-update-reading pct
attr MQTT2_v1_eg eventMap get_dest:hundsfurz
attr MQTT2_v1_eg genericDeviceType blind
attr MQTT2_v1_eg icon batterie
attr MQTT2_v1_eg jsonMap battery_level:batteryPercent
attr MQTT2_v1_eg model roborockRE
attr MQTT2_v1_eg readingList homeassistant/vacuum/valetudo_rockrobo/config:.* {}\
$DEVICETOPIC/state:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/attributes:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/map_data:.* {}\
$DEVICETOPIC/command_status:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/destinations:.* { valetudoREdest($EVENT) }
attr MQTT2_v1_eg room EG,MQTT2_DEVICE
attr MQTT2_v1_eg setList speech_cmnd:{'multiple-strict,'.ReadingsVal($name,'.available_cmnds','none');;} {sleep 0.5;;fhem("setreading $NAME $EVTPART0 $EVTPART1")}\
charge:noArg $DEVICETOPIC/command return_to_base\
fan_power:whisper,min,medium,high,max,mop $DEVICETOPIC/set_fan_speed $EVTPART1\
locate:noArg $DEVICETOPIC/command locate\
pause:noArg $DEVICETOPIC/command pause\
spot:noArg $DEVICETOPIC/command clean_spot\
start:noArg $DEVICETOPIC/command start\
stop:noArg $DEVICETOPIC/command stop\
get_dest:noArg { $DEVICETOPIC.valetudoRE($EVENT) }\
goto:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
map:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
reset_consumable:main,side,filter,sensor { $DEVICETOPIC.valetudoRE($EVENT) }\
zone:{{'multiple-strict,'.ReadingsVal($name,'zones','none');;}} { $DEVICETOPIC.valetudoRE($EVENT) }\
x_raw_payload:textField { $DEVICETOPIC.valetudoRE($EVENT)}\
pct:{'slider,0,1,'.(scalar(split(/,/,ReadingsVal($name,'speech_cmnd','none')))+scalar(split(/,/,ReadingsVal($name,'zones','none')))).',1'} {my @d = split(/,/,ReadingsVal($NAME,'speech_cmnd','none'));;my @e = split(/,/,ReadingsVal($NAME,'zones','none'));;my ($i,%pct2cmd);;map {$i++;;$pct2cmd{$i} = $_;;} (@d);;$i= keys %pct2cmd;;map {$i++;;$pct2cmd{$i} = 'zone '.$_;;} (@e);;my $cmd = $pct2cmd{$EVTPART1};;return if !$cmd;;return fhem("set $NAME $cmd;;setreading $NAME pct $EVTPART1");;}
attr MQTT2_v1_eg setStateList charge fan_power get_dest goto locate map pause reset_consumable spot start stop zone x_raw_payload
attr MQTT2_v1_eg stateFormat {my $s = ReadingsVal($name,'state',0);;\
my $mb = ReadingsVal($name,'mainBrush',0);;\
my $sb = ReadingsVal($name,'sideBrush',0);;\
my $f = ReadingsVal($name,'filter',0);;\
my $ss = ReadingsVal($name,'sensor',0);;\
my $bp = ReadingsVal($name,'battery_level',0);;\
my $lc = strftime("%A %d.%m.%y-%T", localtime(ReadingsNum($name,'last_bin_out',0)/1000));;;;\
"<table>\
<tr>\
    <th></th>\
   <th colspan='2'>Sauger</th>\
<th colspan='2'>Akku</th>\
  </tr>\
  <tr style='border-bottom-style: solid;;'>\
    <th align='left'>Status</th>\
   <td colspan='2'>$s</td>\
<td colspan='2'>$bp</td>\
   </tr>\
     <tr>\
    <td></td>\
    <th colspan='4'>Staubbeh&auml;;lter</th>\
   </tr>\
<tr style='border-bottom-style: solid;;'>\
    <th align='left'>Letzte Reinigung</th>\
    <td colspan='4'>$lc</td>\
   </tr>\
  <tr>\
    <th></th>\
    <th>Hauptb&uuml;;rste</th>\
    <th>Seitenbürste</th>\
<th>Filter</th>\
<th>Sensorreinigung</th>\
  </tr>\
  <tr style='border-bottom-style: solid;;'>\
    <th align='left'>verbleibende Zeiten</th>\
    <td>$mb h</td>\
    <td>$sb h</td>\
    <td>$f h</td>\
    <td>$ss h</td>\
   </tr>\
</table>\
"}
attr MQTT2_v1_eg userReadings autoReturn:valetudo_state_name:.Idle {fhem("sleep $name:bin_in_time:.0 waitbin;;set $name charge");;return 'return'},\
.available_cmnds:.* {\
  return join(',',sort map {(split ':',$_)[0]} split '\s',getAllSets($name));;\
}

setstate MQTT2_v1_eg <table>\
<tr>\
    <th></th>\
   <th colspan='2'>Sauger</th>\
<th colspan='2'>Akku</th>\
  </tr>\
  <tr style='border-bottom-style: solid;;'>\
    <th align='left'>Status</th>\
   <td colspan='2'>docked</td>\
<td colspan='2'>100</td>\
   </tr>\
     <tr>\
    <td></td>\
    <th colspan='4'>Staubbeh&auml;;lter</th>\
   </tr>\
<tr style='border-bottom-style: solid;;'>\
    <th align='left'>Letzte Reinigung</th>\
    <td colspan='4'>Donnerstag 11.11.21-18:55:34</td>\
   </tr>\
  <tr>\
    <th></th>\
    <th>Hauptb&uuml;;rste</th>\
    <th>Seitenbürste</th>\
<th>Filter</th>\
<th>Sensorreinigung</th>\
  </tr>\
  <tr style='border-bottom-style: solid;;'>\
    <th align='left'>verbleibende Zeiten</th>\
    <td>179.4 h</td>\
    <td>79.4 h</td>\
    <td>29.4 h</td>\
    <td>20.3 h</td>\
   </tr>\
</table>\

setstate MQTT2_v1_eg 2021-12-24 13:37:40 .available_cmnds speech_cmnd,charge,fan_power,locate,pause,spot,start,stop,get_dest,goto,map,reset_consumable,zone,x_raw_payload,pct,attrTemplate
setstate MQTT2_v1_eg 2022-01-06 15:39:39 IODev MQTT2_Server
setstate MQTT2_v1_eg 2021-12-24 15:04:07 autoReturn return
setstate MQTT2_v1_eg 2022-01-05 20:16:12 battery_level 100
setstate MQTT2_v1_eg 2022-01-05 20:16:17 bin_in_time 8068
setstate MQTT2_v1_eg 2022-01-05 20:16:17 cleanArea 6669.0
setstate MQTT2_v1_eg 2022-01-05 20:16:17 cleanCount 304
setstate MQTT2_v1_eg 2022-01-05 20:16:17 cleanTime 120.5
setstate MQTT2_v1_eg 2022-01-05 17:22:53 command zoned_cleanup
setstate MQTT2_v1_eg 2022-01-05 20:16:17 currentCleanArea 11.6
setstate MQTT2_v1_eg 2022-01-05 20:16:17 currentCleanTime 9.4
setstate MQTT2_v1_eg 2021-12-24 15:00:24 error Cliff sensors alarm, carry the robot to different place
setstate MQTT2_v1_eg 2021-12-24 15:00:24 errorCode 3
setstate MQTT2_v1_eg 2022-01-05 20:16:12 fan_speed high
setstate MQTT2_v1_eg 2022-01-05 20:16:17 filter 29.4
setstate MQTT2_v1_eg 2022-01-05 20:16:17 last_bin_full -1
setstate MQTT2_v1_eg 2022-01-05 20:16:17 last_bin_out 1636653334678
setstate MQTT2_v1_eg 2022-01-05 20:16:17 last_loaded_map_date 1637763157981
setstate MQTT2_v1_eg 2022-01-05 20:16:17 last_loaded_map_name Test
setstate MQTT2_v1_eg 2022-01-05 20:16:17 last_run_stats_area 11.6
setstate MQTT2_v1_eg 2022-01-05 20:16:17 last_run_stats_duration 567
setstate MQTT2_v1_eg 2022-01-05 20:16:17 last_run_stats_endTime 1641400341000
setstate MQTT2_v1_eg 2022-01-05 20:16:17 last_run_stats_errorCode 0
setstate MQTT2_v1_eg 2022-01-05 20:16:17 last_run_stats_errorDescription No error
setstate MQTT2_v1_eg 2022-01-05 20:16:17 last_run_stats_finishedFlag true
setstate MQTT2_v1_eg 2022-01-05 20:16:17 last_run_stats_startTime 1641399774000
setstate MQTT2_v1_eg 2022-01-05 20:16:17 mainBrush 179.4
setstate MQTT2_v1_eg 2021-12-22 01:19:19 message ok
setstate MQTT2_v1_eg 2022-01-05 17:22:53 message_1 ok
setstate MQTT2_v1_eg 2021-12-24 18:22:19 pct 2
setstate MQTT2_v1_eg 2022-01-05 20:16:17 sensor 20.3
setstate MQTT2_v1_eg 2022-01-05 20:16:17 sideBrush 79.4
setstate MQTT2_v1_eg 2021-12-24 16:08:00 speech_cmnd charge,pause,start,stop
setstate MQTT2_v1_eg 2022-01-05 20:16:17 state docked
setstate MQTT2_v1_eg 2022-01-05 17:22:53 updated 1641399773337
setstate MQTT2_v1_eg 2022-01-05 20:16:17 valetudo_state_id 8
setstate MQTT2_v1_eg 2022-01-05 20:16:17 valetudo_state_name Charging
setstate MQTT2_v1_eg 2021-12-22 01:19:34 zones Alles,Flur,Fruehstuecksraum,Hinten,Kueche,bliblablub


Kein Vergleich zu Valetudo, dort werden aktuell alle 30 Sekunden alle Status/Daten/Readings übertragen, ob am Saugen oder nicht.

Ich hab mir jetzt nicht den Verkehr angeschaut wenn der ValetudoRE am saugen ist, vermute das wird aber auch nicht mehr sein wie bei dem Xiaomi_Modul auch gefeuert werden "muss".
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 06 Januar 2022, 18:05:49
Ok, danke.

Vielleicht gebe ich dem dann doch eher noch mal eine Chance 8)
(und verm. hatte ich nur bei valetudo geschaut / hatte auf meinem "Test-Sauger" ja beides mal drauf, also valetudo und valetudoRE / aktuell laufe ich mit valetudoRE ohne mqtt)

Jetzt bin ich aber erst mal dabei auf Bullseye zu gehen...

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 06 Januar 2022, 20:35:01
Ich habe jetzt den Gen 1 der kann nur Zonen - den habe ich aber noch auf valetudoRE
Und ich habe neu den Dreame L10 pro - den habe ich auf valetudo - der kann Segmente und Zonen (derzeit nur über die alte UI)

Mein Ziel jetzt ist: ein Template für valetudo (ohne map - finde ich unnötig in FHEM)
Dann schau ich mal nach dem update des Gen1 auf valetudo

BTW: aus User Sicht sind für mich Segmente und Zonen erstmal identisch/ähnlich - aber nein - aus Sicht des Saugers ist es was komplett anderes!

BTW: der Neue kann mein OpenWrt WLAN (zweistufig gerootet ins Internet) nicht, der kann nur direkt an der Fritzbox, das muss ich auch noch klären. ::)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 09 Januar 2022, 22:06:53
ich habe mal ne erste Version valetudo v2 Template eingecheckt.
zwei subs sind ausgelagert in eine 99_valetudoUtils.pm - die wird vom Template nachgeladen.
segment und zone cleaning grundlegend eingebaut.
Die setList nutzt die neue Dynamic :)

Da geht noch was, bin gespannt auf Ideen. ;)

Ich hoffe, ich sind keine bugs eingebaut.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 16 Januar 2022, 17:19:26
Otto, kurze Frage zu Valetudo, das Segmente mit dem Gen1 nicht gehen scheint ja geklärt, Zonen (welche in Valetudo mit Presets bezeichnet werden) kann ich aber ganz normal im alten UI (da heissen sie weiterhin Zones) erstellen und im neuen Ui werden diese auch zur Auswahl angeboten und auch ausgeführt.

Über MQTT werden mir die Zonen aber nicht übertragen, das Reading presets (wie auch segments) beinhaltet einfach nur eine öffnende und schliessende geschweifte Klammer, hast du irgendwas gemacht das (in meinem Fall halt nur presets) die gefüllt werden ?

Provide Map Data hab ich mal aktiviert weil dazu was in der Utils steht (aber wegen der Segmente), dann kommt auch nix.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 16 Januar 2022, 17:51:37
Hi,

ja kommt bei mir, ich habe dazu nur provide map data angehakt und die anderen beiden (homie und home assistant) nicht angehakt:
     2022-01-16 17:45:21   presets         {"4f8b7ebe-ad5f-4c2b-850b-90172fc47dba":{"__class":"ValetudoZonePreset","metaData":{},"name":"Kamin","zones":[{"__class":"ValetudoZone","metaData":{},"points":{"pA":{"x":3450,"y":3475},"pB":{"x":3675,"y":3475},"pC":{"x":3675,"y":3665},"pD":{"x":3450,"y":3665}},"iterations":1}],"id":"4f8b7ebe-ad5f-4c2b-850b-90172fc47dba"},"539000a2-6691-4a97-ba50-399521215256":{"__class":"ValetudoZonePreset","metaData":{},"name":"Eingang","zones":[{"__class":"ValetudoZone","metaData":{},"points":{"pA":{"x":3720,"y":3300},"pB":{"x":4100,"y":3300},"pC":{"x":4100,"y":3425},"pD":{"x":3720,"y":3425}},"iterations":1}],"id":"539000a2-6691-4a97-ba50-399521215256"}}
     2022-01-16 17:45:21   segments        {"1":"Bad","2":"Badwanne","3":"Wohnzimmer","4":"Kueche","6":"Schlafzimmer"}
...
     2022-01-16 17:45:21   zones           {"Eingang":"539000a2-6691-4a97-ba50-399521215256","Kamin":"4f8b7ebe-ad5f-4c2b-850b-90172fc47dba"}


Da habe ich mittlerweile eine kleine Umwandlung geschrieben -> zones sub valetudo_r {
my $setter = shift;
my $payload = shift;
my $ret = 'error';
my %t;
if ($setter eq 'presets') {
  my $decoded = decode_json($payload);
  for (keys %$decoded) { $t{$decoded->{$_}->{'name'}} = $_ } # build a new hash only with zone id and zone name
  $ret = encode_json(\%t)
  }
return $ret
}
und die Readingslist so gemacht:
$DEVICETOPIC/ZoneCleaningCapability/presets:.* { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),; {"zones"=>valetudo_r($1,$EVENT)} }

Wenn ich jetzt darüber nachdenke, die presets kommen doch ohne map-data, die kamen sofort nach der Definition. Die segments kommen erst nach aktivierung map-data
Sieht man ja auch an der rL
$\DEVICETOPIC/ZoneCleaningCapability/presets:.* presets\
Kannst Du deine Zonen mit der Swagger UI abfragen?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 16 Januar 2022, 18:11:07
Ok.

Ich hatte bisher MQTT deaktiviert gehabt auf dem Valetudo.

Ich hab mal rawevents auf valetudo/.* gesetzt und sehe es kommt bei mir dann immer nach einer Sekunde noch ein leerer "Json" hinterher, deswegen das "zappeln" alle 30 Sekunden in der Detailansicht des Devices, mal steht ganz viel drin mal nix (geschweifte Klammern).

Und wenn ich im Event-Monitor bin kommt alle paar Sekunden

Connection lost, trying a reconnect after 5 seconds

2022-01-16 17:50:55 MQTT2_DEVICE MQTT2_valetudo_QuintessentialRemoteLouse presets: {"9970781a-f848-4aba-b5f5-2df35fbb1c42":{"__class":"ValetudoZonePreset","metaData":{},"name":"Sleep","zones":[{"__class":"ValetudoZone","metaData":{},"points":{"pA":{"x":2515,"y":2060},"pB":{"x":3095,"y":2060},"pC":{"x":3095,"y":2585},"pD":{"x":2515,"y":2585}},"iterations":1}],"id":"9970781a-f848-4aba-b5f5-2df35fbb1c42"},"222cc472-ed90-4232-8dcf-cf3f40e7603e":{"__class":"ValetudoZonePreset","metaData":{},"name":"Living","zones":[{"__class":"ValetudoZone","metaData":{},"points":{"pA":{"x":2520,"y":3115},"pB":{"x":3080,"y":3115},"pC":{"x":3080,"y":3535},"pD":{"x":2520,"y":3535}},"iterations":1}],"id":"222cc472-ed90-4232-8dcf-cf3f40e7603e"}}
2022-01-16 17:50:55 MQTT2_SERVER MQTT2_Server valetudo/QuintessentialRemoteLouse/ZoneCleaningCapability/presets:{"9970781a-f848-4aba-b5f5-2df35fbb1c42":{"__class":"ValetudoZonePreset","metaData":{},"name":"Sleep","zones":[{"__class":"ValetudoZone","metaData":{},"points":{"pA":{"x":2515,"y":2060},"pB":{"x":3095,"y":2060},"pC":{"x":3095,"y":2585},"pD":{"x":2515,"y":2585}},"iterations":1}],"id":"9970781a-f848-4aba-b5f5-2df35fbb1c42"},"222cc472-ed90-4232-8dcf-cf3f40e7603e":{"__class":"ValetudoZonePreset","metaData":{},"name":"Living","zones":[{"__class":"ValetudoZone","metaData":{},"points":{"pA":{"x":2520,"y":3115},"pB":{"x":3080,"y":3115},"pC":{"x":3080,"y":3535},"pD":{"x":2520,"y":3535}},"iterations":1}],"id":"222cc472-ed90-4232-8dcf-cf3f40e7603e"}}
2022-01-16 17:50:56 MQTT2_DEVICE MQTT2_valetudo_QuintessentialRemoteLouse presets: {}
2022-01-16 17:50:56 MQTT2_SERVER MQTT2_Server valetudo/QuintessentialRemoteLouse/GoToLocationCapability/presets:{}


Ich werd MQTT wieder deaktivieren und bei Gelegenheit wieder ValetudoRe draufspielen.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 16 Januar 2022, 18:11:49
hmm, ich habe jetzt auf meinem Gen1 mal (da rennt noch valetudoRE) die valetudo binary runtergeladen und dann RE gestoppt und valetudo gestartet:
wget https://github.com/Hypfer/Valetudo/releases/latest/download/valetudo-armv7 -O valetudo
service valetudo stop
./valetudo

presets bleibt leider leer :(

Ach so - er löscht es also wieder?

gefunden: liegt hier dran
valetudo_VapidArcticBee:valetudo/VapidArcticBee/GoToLocationCapability/presets:.* presets

muss so - oder so ähnlich:
$DEVICETOPIC/GoToLocationCapability/presets:.* goto-presets

hatte mein L10pro nicht, deswegen war es nicht im Template - bau ich ein!

So sieht es aus wenn man für L10pro und Gen1 die Features abfragt:
##########################################
# Support features L10pro
[
  "BasicControlCapability",
  "CarpetModeControlCapability",
  "CombinedVirtualRestrictionsCapability",
  "ConsumableMonitoringCapability",
  "CurrentStatisticsCapability",
  "DoNotDisturbCapability",
  "FanSpeedControlCapability",
  "KeyLockCapability",
  "LocateCapability",
  "ManualControlCapability",
  "MapResetCapability",
  "MapSegmentEditCapability",
  "MapSegmentRenameCapability",
  "MapSegmentationCapability",
  "MappingPassCapability",
  "ObstacleAvoidanceControlCapability"
  "PendingMapChangeHandlingCapability",
  "SpeakerTestCapability",
  "SpeakerVolumeControlCapability",
  "TotalStatisticsCapability",
  "VoicePackManagementCapability",
  "WaterUsageControlCapability",
  "WifiConfigurationCapability",
  "ZoneCleaningCapability",
]
###########################################
# supported Features Gen1
[
  "BasicControlCapability",
  "CarpetModeControlCapability",
  "ConsumableMonitoringCapability",
  "CurrentStatisticsCapability"
  "DoNotDisturbCapability",
  "FanSpeedControlCapability",
  "GoToLocationCapability",
  "LocateCapability",
  "ManualControlCapability",
  "SpeakerTestCapability",
  "SpeakerVolumeControlCapability",
  "TotalStatisticsCapability",
  "VoicePackManagementCapability",
  "WifiConfigurationCapability",
  "ZoneCleaningCapability",
]
############################################
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 16 Januar 2022, 19:01:53
komm zwar gerade nicht mit aber es klappt wenn man das Reading anders nennt ->goto-presets.

ZitatSo sieht es aus wenn man für L10pro und Gen1 die Features abfragt:

Wie frägt man den Features ab ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 16 Januar 2022, 19:13:05
Linkes Menu / Swagger UI / Robot / Get Robot Supportcapabilities / Try it out / execute

Dann steht dort ein Json im schwarzen Fenster
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 16 Januar 2022, 19:16:34
ZitatLinkes Menu / Swagger UI / Robot / Get Robot Supportcapabilities / Try it out / execute

Funzt, Danke.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: sherwood am 16 Januar 2022, 19:54:51
Wie fragt man eigentlich bei einem über MQTT angebunden valetudo(2022.01.0) Dreame L10 PRO ab, ob ein Reinigungsvorgang erfolgreich war oder nicht?

z.B. Will ich eine msg versenden wenn der Vorgang erfolgreich war oder nicht. Am besten noch eine map und CurrentStatisticsCapability/area und CurrentStatisticsCapability/time dazu.


readingList:
  $DEVICETOPIC/\x24state:.* _state
  $DEVICETOPIC/AttachmentStateAttribute/dustbin:.* dustbin
  $DEVICETOPIC/AttachmentStateAttribute/.* { $TOPIC =~ m,.*\/(.*),; {"$1"=>$EVENT} }
  $DEVICETOPIC/BatteryStateAttribute/level:.* batteryPercent
  $DEVICETOPIC/BatteryStateAttribute/status:.* batteryState
  $DEVICETOPIC/BasicControlCapability/operation:.* operation
  $DEVICETOPIC/CurrentStatisticsCapability/area:.* area
  $DEVICETOPIC/CurrentStatisticsCapability/time:.* time
  $DEVICETOPIC/ConsumableMonitoringCapability/.* { $TOPIC =~ m,.*\/(.*),; {"$1"=>$EVENT} }
  $DEVICETOPIC/FanSpeedControlCapability/preset:.* fanSpeed
  $DEVICETOPIC/LocateCapability/locate:.* locate
  $DEVICETOPIC/MapData/map-data:.* {}
  $DEVICETOPIC/MapData/segments:.* segments
  $DEVICETOPIC/StatusStateAttribute/status:.* state
  $DEVICETOPIC/StatusStateAttribute/detail:.* stateDetail
  $DEVICETOPIC/StatusStateAttribute/error:.* stateError
  $DEVICETOPIC/WaterUsageControlCapability/preset:.* waterUsage
  $DEVICETOPIC/WifiConfigurationCapability/.* { $TOPIC =~ m,.*\/(.*),; {"$1"=>$EVENT} }
  $DEVICETOPIC/ZoneCleaningCapability/presets:.* presets
  $DEVICETOPIC/ZoneCleaningCapability/start:.* start


Ein History Funktion oder letzte Reinigung scheint es nicht zu geben.

Verfolge ich die Status Änderung für einen Reinigungsversuch sieht das so aus:
StausStateAttribute/status: docked -> cleaning -> returning -> docked

Für eine abgebrochenen Reinigung (set valetudo operation HOME):
StausStateAttribute/status: docked -> cleaning -> returning -> docked

Darüber wird das nix.

Area und time ist nicht persistent und steht bei mir auf 0.

Wie habt Ihr das gelöst?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 16 Januar 2022, 21:24:23
Die Karte ist für mich erstmal nicht verständlich, da braucht man irgendwelche Tools zum dekomprimieren.
Am Ende der Reinigung könnte man die CurrentStatisticsCapability in ein anderes Reading schreiben.
Vielleicht einfach ein notify auf returning?
Das xiaomi Sauger Modul hat ja so eine rotierenden 10 letzte Reinigungsvorgänge Historie erzeugt - könnte man nachempfinden.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: sherwood am 17 Januar 2022, 09:37:39
Das mit der Karte läuft über einen zusätzlichen Service https://github.com/Hypfer/Icantbelieveitsnotvaletudo, da die Ressourcen für das erstellen einer PNG auf dem Robot nicht reichen. Hat aber erst mal Prio X.

Problem ist, es gibt weder eine Status "Reinigung: erfolgreich/abgebrochen", noch hat man Zugriff auf eine Reinigungs-Historie.
Der Status ist ein MQTT Problem, welches von valetudo nicht zur Verfügung gestellt wird, obwohl der Robot es kann (Sprachausgabe).
Die Historie wird nicht von der Robot Firmeware oder valetudo erstellt bzw. gespeichert, da dies von der Xiaomi Cloud erledigt wird.

Prio 1, ist erst mal eine Reinigungs-Historie oder zumindest den letzten Reinigungsvorgang als Reading abzulegen.

Ich guck mir mal an wie das im Xiaomi Module gemacht wurde, befürchte aber, dass dort auf die Cloud Historie zurückgriffen wird.

@Otto123: Das mit den rotierenden 10 letzten Einträgen klingt interessant. Hast du das Modul bei dir am laufen?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 17 Januar 2022, 09:45:39
Zitat von: sherwood am 17 Januar 2022, 09:37:39
Ich guck mir mal an wie das im Xiaomi Module gemacht wurde, befürchte aber, dass dort auf die Cloud Historie zurückgriffen wird.

Also ich habe valetudo FW auf dem Sauger, den App-Account gelöscht (würde eh nicht mehr tun), also keine Cloud mehr...
...trotzdem die Cleaning-Historie.
EDIT: genauer valetudoRE

Xiaomi V1/V2

Macht also wohl das Modul oder Infos kommen vom Sauger...

Bzgl. Reinigungs-Ende nutze ich: total_cleans

Gruß, Joachim

P.S.: bzgl. mqtt bin ich noch nicht weiter... Aktuell wenig Zeit...
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 17 Januar 2022, 10:10:43
Ich kann es nicht genau sagen.
Auf dem Gen1 ist die Reinigungshistorie lokal gespeichert, die valetudoRE hat darauf Zugriff. Starte ich auf dem gleichen Sauger valetudo habe ich keine Historie, valetudo sieht das offenbar nicht vor.
Den L10pro hatte ich nie anders in Betrieb als mit valetudo.

ein Ansatz wäre ein userReadings (ungetestet)
lastArea:state:.returning {ReadingsVal($name,'area','error')}

Das xiaomi Modul habe ich nicht mehr am laufen.

Das mit der Map interessiert mich eigentlich nicht und die Hintergründe verstehe ich nicht. Die Firmware und valetudo zeigen die Karte ja an. Die Karten Daten werden auch über mqtt übertragen. Sicher mussman diese bloß dekodieren, irgendwo steht was von compressed png. Ob das mit dem externen Dienst wirklich noch aktuell ist weiß ich nicht. An der Kartendarstellung und codierung wurde ja hart gearbeitet: https://github.com/Hypfer/Valetudo/releases
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: sherwood am 17 Januar 2022, 11:26:01
@MadMax-FHEM bei einem Xiaomi V1/V2 und roborock, ja, da auf dem robot abgelegt. Bei einem dreame l10pro laut valetudo Entwickler, tracked die cloud und erstellt diese Werte und werden nicht auf dem robot abgelegt. Ohne cloud auch keine Historie auf dem robot.

total_cleans ist in den MQTT topics bei einem dreame nicht vorhanden, siehe meine readings list.


@Otto123
Dein l10pro ist also nicht mit FHEM verbunden und es werden auch keine Aktionen getriggered? Hast du den zumindest in valetudo einen Status einer Reinigung (erfolgreich, qm, Zeit)? Bei mir bleibt z.B. bei einem Zone-Cleaning die Current Statistics auf '0' und ändern sich nicht, ebenso über MQTT.

Auf 'error' kann man nicht setzen, da der Status nicht sagt, was passiert ist.
Das einzige was mir einfällt, wäre den Status zu verfolgen 'docked -> cleaning -> returning -> docked'
oder zumindest 'cleaning -> ... -> docked' und dann ein neues Readings (z.B. last_clean) zu erstellen/setzten.

Hier fängt es an wie man das gelöst bekommt.
Das mit dem userReadings funktioniert nicht, da die Readings des State und CurrentStatistics allein nicht ausreichen.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 17 Januar 2022, 11:45:10
Zitat von: Otto123 am 16 Januar 2022, 17:51:37

Da habe ich mittlerweile eine kleine Umwandlung geschrieben -> zones sub valetudo_r {
my $setter = shift;
my $payload = shift;
my $ret = 'error';
my %t;
if ($setter eq 'presets') {
  my $decoded = decode_json($payload);
  for (keys %$decoded) { $t{$decoded->{$_}->{'name'}} = $_ } # build a new hash only with zone id and zone name
  $ret = encode_json(\%t)
  }
return $ret
}
und die Readingslist so gemacht:
$DEVICETOPIC/ZoneCleaningCapability/presets:.* { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),; {"zones"=>valetudo_r($1,$EVENT)} }

Da musst du nochmal ran das passt so nicht, der Hash der zurückgegeben wird ist unsortiert, darum gibts dann in dem Reading alle 30 Sekunden ein Event, weil er ja eigentlich immer anders und nur zufällig mal so aufgebaut sein kann wie zuvor.

Ich hab mal versucht in der Schleife nach dem Schlüssel zu sortieren, bringt aber nix weil (denk ich) später die Referenz die an encode_json übergeben wird wieder unsortiert ist ? 



Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 17 Januar 2022, 12:22:02
@sherwood Doch mein L10pro ist über mqtt mit FHEM verbunden. Aber ich bin noch am entwickeln und testen :)
ich bin erstmal noch am kämpfen weil das Ding nicht in mein "normales" Wlan will :o

@TomLee Ja ist mir gestern auch aufgefallen, irgendwie klemmt es bei mir das Ding zu sortieren. Ich bin da ziemlich blind was die Verarbeitung der hashes angeht  :'(
Ich glaube wenn man es sortiert haben will, darf man nicht encode_json nehmen. Irgendwo habe ich gelesen das json erstmal "nicht sortiert sein darf oder soll"? und die sortier Beispiele in der Art
$json->canonical->encode($perl_scalar)
versteh ich nicht :(
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: sherwood am 17 Januar 2022, 12:43:11
Ok, dann bin ich mal gespannt wenn er bei dir läuft.
(Wlan hat bei mir gut funktioniert und er hat die settings von der vorherigen Xiaomi App übernommen. Es wird so weit ich weiß, von config editing abgeraten. Am besten über die GUI, über die valetudo Android App, geht das auch.)

Ich kämpfe mich dann mal weiter durch und berichte.

Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 17 Januar 2022, 13:52:42
@TomLee Das ist jetzt encode json zu Fuß - sicher noch stark verbesserungswürdig :)
sub valetudo_r {
my $setter = shift;
my $payload = shift;
my $ret = 'error';
my %t;
if ($setter eq 'presets') {
  my $decoded = decode_json($payload);
  for (keys %$decoded) { $t{$decoded->{$_}->{'name'}} = $_ } # build a new hash only with zone id and zone name
  }
my @arr;
for (sort keys %t) { push @arr, "\"$_\":\"$t{$_}\"" }
$ret = join ',', @arr;
$ret="{$ret}";
return $ret
}

Edit: toJSON sortiert es offenbar  ;)
sub valetudo_r {
my $setter = shift;
my $payload = shift;
my $ret = 'error';
my %t;
if ($setter eq 'presets') {
  my $decoded = decode_json($payload);
  for (keys %$decoded) { $t{$decoded->{$_}->{'name'}} = $_ } # build a new hash only with zone id and zone name
  $ret = toJSON(\%t);
  }
return $ret
}
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 17 Januar 2022, 15:21:34
Zitat von: Otto123 am 17 Januar 2022, 13:52:42
Edit: toJSON sortiert es offenbar  ;)
sub valetudo_r {
my $setter = shift;
my $payload = shift;
my $ret = 'error';
my %t;
if ($setter eq 'presets') {
  my $decoded = decode_json($payload);
  for (keys %$decoded) { $t{$decoded->{$_}->{'name'}} = $_ } # build a new hash only with zone id and zone name
  $ret = toJSON(\%t);
  }
return $ret
}


Cool, hab ich mich eben kurz mit beschäftigt und alles wieder ein Stück mehr verinnerlicht.

Sortiert nach den Schlüsseln wird wie ich es meine zu verstehen in Zeile 5256 in fhem.pl, oder ?

5253   } elsif (ref $val eq 'HASH') {
5254       return '{' . join(',',
5255                    map { toJSON($_).":".toJSON($val->{$_}) }
5256                    sort keys %$val) . '}';
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 17 Januar 2022, 16:11:26
Und vlt. noch eine Frage/Ergänzung/Steigerung von:

ZitatDa habe ich mittlerweile eine kleine Umwandlung geschrieben -> zones

Hab ich bisher mein ich in noch keinem Template gesehen das Readings versteckt werden, aber was hältst du davon das Reading erst gar nicht anzuzeigen?

$DEVICETOPIC/ZoneCleaningCapability/presets:.* { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),; {".zones"=>valetudo_r($1,$EVENT)} }

Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: sherwood am 17 Januar 2022, 20:59:49
Der erste Teil für wäre schon mal geschafft.
Was der Dreame nicht kann, muss dann halt fhem erledigen ;)

Attributes:

oldreadings stateDetail,last_cleaning-area,last_cleaning-mode,last_cleaning-time,last_cleaning-timestamp
event-on-change-reading .*


userReadings state:docked {
  use Time::Piece;

  my $timestamp = strftime('%F %X', localtime);
  my $cleaningTimeMin = ReadingsVal($NAME,'time',0)/60;
  my $cleaningAreaM2 = ReadingsVal($NAME,'area',0)/10000;
  my $cleaningMode = OldReadingsVal($NAME,'stateDetail','none');

  fhem"
    sleep 0.1;
    setreading Valetudo last_cleaning-timestamp $timestamp;
    setreading Valetudo last_cleaning-area $cleaningAreaM2;
    setreading Valetudo last_cleaning-time $cleaningTimeMin;
    setreading Valetudo last_cleaning-mode $cleaningMode;
  ";
},
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 17 Januar 2022, 23:49:26
Zitat von: sherwood am 17 Januar 2022, 11:26:01
Bei mir bleibt z.B. bei einem Zone-Cleaning die Current Statistics auf '0' und ändern sich nicht, ebenso über MQTT.
Das ist bei mir nicht so, gerade eine Zone gereinigt
2022-01-17_23:42:30 MQTT2_valetudo_ClumsyQuirkyCattle set_clean_zone
2022-01-17_23:42:30 MQTT2_valetudo_ClumsyQuirkyCattle start: 4f8b7ebe-ad5f-4c2b-850b-90172fc47dba
2022-01-17_23:42:32 MQTT2_valetudo_ClumsyQuirkyCattle cleaning
2022-01-17_23:42:32 MQTT2_valetudo_ClumsyQuirkyCattle stateDetail: zone
2022-01-17_23:43:03 MQTT2_valetudo_ClumsyQuirkyCattle signal: -50
2022-01-17_23:43:34 MQTT2_valetudo_ClumsyQuirkyCattle signal: -54
2022-01-17_23:44:02 MQTT2_valetudo_ClumsyQuirkyCattle batteryPercent: 99
2022-01-17_23:44:02 MQTT2_valetudo_ClumsyQuirkyCattle signal: -55
2022-01-17_23:44:03 MQTT2_valetudo_ClumsyQuirkyCattle time: 60
2022-01-17_23:44:04 MQTT2_valetudo_ClumsyQuirkyCattle area: 20000
2022-01-17_23:44:32 MQTT2_valetudo_ClumsyQuirkyCattle signal: -54
2022-01-17_23:45:03 MQTT2_valetudo_ClumsyQuirkyCattle signal: -56
2022-01-17_23:45:03 MQTT2_valetudo_ClumsyQuirkyCattle time: 120
2022-01-17_23:45:03 MQTT2_valetudo_ClumsyQuirkyCattle area: 30000
2022-01-17_23:45:11 MQTT2_valetudo_ClumsyQuirkyCattle batteryPercent: 98
2022-01-17_23:45:22 MQTT2_valetudo_ClumsyQuirkyCattle returning
2022-01-17_23:45:22 MQTT2_valetudo_ClumsyQuirkyCattle stateDetail: none
2022-01-17_23:46:03 MQTT2_valetudo_ClumsyQuirkyCattle signal: -62
2022-01-17_23:46:07 MQTT2_valetudo_ClumsyQuirkyCattle sensor-all: 93600
2022-01-17_23:46:09 MQTT2_valetudo_ClumsyQuirkyCattle docked
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: sherwood am 18 Januar 2022, 08:05:49
Zone-Cleaning Statistik funktioniert bei mir jetzt auch. Meine Testfläche war zu klein, da die Genauigkeit nur bei 1 m2 und 1 Min. liegt.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 18 Januar 2022, 15:16:11
Zitat von: TomLee am 17 Januar 2022, 16:11:26
Hab ich bisher mein ich in noch keinem Template gesehen das Readings versteckt werden, aber was hältst du davon das Reading erst gar nicht anzuzeigen?
Ich habe das mal realisiert / umgebaut, bin aber noch ein bisschen am überlegen/testen - vor dem einchecken.
Wenn Du gucken willst :) https://github.com/heinz-otto/scripts/tree/master/fhem

Habe auch goto location eingebaut, das kann ja der Gen1 - der L10pro kann es nicht. Man müsste also noch die Features abfragen und bestimmte Dinge ein und ausblenden. ???
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 18 Januar 2022, 17:48:04
ZitatHabe auch goto location eingebaut, ...

Funzt. :)

ZitatMan müsste also noch die Features abfragen ...

Versteh ich nicht wie das gemeint ist, du willst das get der Features in einem Reading ?

Im clean_zone-setter des Templates hast du "vorne" vergessen presets in zones umzubennen und (kannst ja machen wie du willst) ich hab mir angewöhnt (bzw. bin ich noch dabei) wenn ich eh nur "Text" mit Quotes schreibe immer nur einfache zu verwenden, ich find das übersichtlicher/ruhiger  ::) ;D:
Zitatclean_zone:{valetudo_w($name,'zones')} { valetudo_c($NAME,$EVENT) }
clean_segment:{'multiple-strict,'.valetudo_w($name,'segments')} { valetudo_c($NAME,$EVENT) }
goto:{valetudo_w($name,'locations')} { valetudo_c($NAME,$EVENT) }


Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 18 Januar 2022, 18:13:13
Achso und noch was .

Wenn du (schon) mit den Templates event-on-change-reading .* verteilst, wäre es nicht auch dann angebracht mindestens timestamp-on-change-reading .* zu setzen ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 18 Januar 2022, 20:47:58
Zu den Features: ich meine man könnte irgendwo irgendwann (beim Template anwenden oder dann im Device) den Typ (die Features) abfragen und die Dinge entsprechend ein- und ausblenden.
timestamp könnte man machen, ich finde es manchmal gut, da sehe ich es arbeitet noch :)
Das mit zones und den ' ' habe ich gemacht ;) Ich habe aber eh noch eine Idee etwas umzubauen...
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 19 Januar 2022, 16:43:02
Hab nochmal etwas umgebaut, ich fand es doof alle 30 sec die json readings durch mehrere convert / hash Schleifen zu schubsen. Dank der Idee mit den versteckten Readings schreib ich jetzt einfach die json in Readings und werte die in der Util komplett aus. timestamp-on-change-reading .*  hab ich auch eingebaut.
Also nochmal ne vorab Version https://github.com/heinz-otto/scripts/tree/master/fhem
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 20 Januar 2022, 11:58:22
Scheint alles zu passen, was ich mit dem Gen1 testen kann.

Ich frage mich warum start,stop,pause,home mit dem operation-settter umgesetzt ist ?
Kann mans nicht einheitlich machen wie es in dem RE-Template und auch in dem XiaomiDevice-Modul umgesetzt ist ?

pause:noArg {qq($DEVICETOPIC/BasicControlCapability/operation/set ).uc($EVTPART0)}
start:noArg {qq($DEVICETOPIC/BasicControlCapability/operation/set ).uc($EVTPART0)}
stop:noArg {qq($DEVICETOPIC/BasicControlCapability/operation/set ).uc($EVTPART0)}
charge:noArg $DEVICETOPIC/BasicControlCapability/operation/set HOME


ZitatZu den Features: ich meine man könnte irgendwo irgendwann (beim Template anwenden oder dann im Device) den Typ (die Features) abfragen und die Dinge entsprechend ein- und ausblenden.

Hab ich immer noch nicht verstanden was genau gemeint ist  8)


Zitat von: Otto123 am 16 Januar 2022, 18:11:49
hmm, ich habe jetzt auf meinem Gen1 mal (da rennt noch valetudoRE) die valetudo binary runtergeladen und dann RE gestoppt und valetudo gestartet ...

Willst du wirklich auf dem Gen1 Valetudo beibehalten ? Du hast kein bin-in-time mehr und die Karten kann man auch nicht speichern/wiederherstellen.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 20 Januar 2022, 12:27:04
Der Operation Setter war für mich erstmal das augenscheinlichste, klar kann man das komatibel machen. War mir auch klar das die Frage kommt :)

zu den Features abfragen, - ein Stück Code sagt mehr als 1000 Worte? - mal was für die Kommandozeile als Idee:
alternativ my $substr='MapSegmentation';;
{
my $NAME='MQTT2_valetudo_xxx';;
my $substr='GoToLocation';;
my $ip=ReadingsVal($NAME,'ip4',(split ',',ReadingsVal($NAME,'ips','error'))[0]);;
my $url="http://$ip/api/v2/robot/capabilities";;
my $string = GetHttpFile($ip, '/api/v2/robot/capabilities');;
index($string, $substr) == -1 ? $substr.' not supported':$substr.' supported';;
}
Im Template dann mit option: alternativen Code ausführen - meint: die Einen bekommen goto die Anderen clean-segment

Das mit dem Gen1 war nur erstmal zum Test, sonst muss ich ja immer auf Dich warten  ;D ;D ;D
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 21 Januar 2022, 23:17:56
@TomLee Ich habe bei mir auf Github mal noch ne Vorschau mit Feature Abfrage und option im template. Falls Du Lust hast. Ich teste morgen auch noch mal ein wenig.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 22 Januar 2022, 18:10:20
Achso und hier noch. Ich meld mich nicht weil ich nicht weiß was ich dazu sagen soll wenn alles klappt !  ;D

Das mit option klappt auch bei mir, es wird der goto-setter ergänzt.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 22 Januar 2022, 19:12:00
supi dann check ich das so ein :)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: meier81 am 23 Januar 2022, 17:56:55
Hallo Otto,

hab das Template bei mir heute auch aktualisiert, hab einen V1, funktioniert erstmal alles weiter, echt super.

Eine Frage hätte ich, ich hab bei mir hier ein paar DOIF´s mit denen ich den Status auswerte, hier steht aber im Internal State z.B. <a href="http://192.168.179.26" target="_blank">cleaning</a>, und im Readings State cleaning.

Ist es möglich hier den Internal State auch noch gleich zu setzen wie den Readings State?

Hab dir auch mal einen Screenshot angefügt wie es bei mir zur Zeit aussieht.

Gruß Markus
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 23 Januar 2022, 19:44:46
Hallo Markus,

schön das es erstmal passt. Wenn Du einfach das attr stateFormat löschst wird STATE=state.
Ich hatte das eingebaut um per Klick auf die Weboberfläche von valetudo zu kommen.
Es ist immer so eine Sache mit state und STATE. Epmfehlenswert ist eigentlich immer die Auswertung besser mit state anstatt mit STATE zu machen DOIF [device] -> [device:state]
Und den STATE kann man in Verbindung mit devStateIcon für allerlei Optik nutzen, einfaches Beispiel:
attr MQTT2_valetudo_xxx devStateIcon (docked|paused):rc_PLAY:start cleaning:rc_PAUSE:pause returning:refresh:pause
attr MQTT2_valetudo_xxx stateFormat cleanerState\
<div title="Valetudo WEB UI"><a href="http://ip4" target="_blank">state</a></div>


Ein "Nachteil" bei der Verwendung von state ist noch: es gibt per default keinen state Event, deswegen habe ich noch das Reading cleanerState eingeführt worauf man im notify oder userReadings besser triggern kann.

Gruß Otto
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: meier81 am 23 Januar 2022, 22:01:00
Hallo Otto,

vielen Dank für die Erklärung. Das mit dem "stateFormat" hab ich total übersehen und auch nicht mehr drangedacht das dies so im Zusammenhang steht.

Mein DOIF hatte ich ja dann wie du schon geschrieben hast in [device:state] geändert gehabt, das state-reading scheint ja aber aber doch zu triggern, das hat bei mir bezüglich dem DOIF einwandfrei funktioniert.

Was hast du denn bezüglich den MQTT Einstellungen bei dir aktiviert, zur Zeit habe ich eingestellt:


- kein Friendly name
- Identifier "rockrobo"
- Topic prefix "valetudo"

- kein Provide map data
- kein Homie
- kein Home Assistant


Funktioniert eigentlich die Karte beim V1, denke dann bräuchte ich ja mal zumindest das "Provide map data". Denke "Homie" und "Home Assistant" werden ja nicht unbedingt mehr Datenpunkte erzeugen.

Gruß Markus
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 23 Januar 2022, 23:06:35
ich habe nicht gesagt man kann nicht triggern :) der Event sieht anders aus, typischerweise fehlt das Reading "state:" im Event. Beispiel:
device cleaning
device cleanerState: cleaning

Dein DOIF triggert, macht aber dann eine Abfrage des Wertes für state. :) https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung
das wäre die Alternative https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events

Habe die Einstellung wie Du mit Ausnahme:Provide map-data
Bei Provide map-data (kein Homie, kein Home Assistent) wird die Karte und die segments übertragen. Die Kartendaten schicke ich in den Papierkorb, segments ist bei einem Sauger der es unterstützt wichtig zur Raumansteuerung.
Der v1 unterstützt keine segments.

Die Daten der Karte habe ich noch nicht verstanden. Wenn man ein Bild haben will kann man einen extra Webservice nutzen, den habe ich aber auch nicht verstanden.😳
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 26 Januar 2022, 11:37:44
Mein Sauger sagt offenbar immer mal "tschüss" und dann kann FHEM ihn nicht mehr steuern. Das tragische: man merkt es eigentlich kaum.
Ich habe mal als Würgaround einen getter gemacht, der liest die mqtt Config, schreibt sie wieder zurück und macht damit ein reconnect für mqtt mit Hilfe der REST API.
attr MQTT2_valetudo_xxx getList reconnectMQTT _state {my $ip = ReadingsVal($NAME,'ip4','error');; my $url = "http://$ip/api/v2/valetudo/config/interfaces/mqtt";; my $val=GetFileFromURL($url);; fhem("\"curl -X 'PUT' '$url' -H 'accept: */*' -H 'Content-Type: application/json' -d '$val'\"")}
Irgendwie habe ich nicht gefunden, wie man mit HTTPUtils 'PUT' machen kann  :-[ deswegen mit dem "orginal" curl Aufruf aus der Swagger UI.
Man sieht den Problem Vorgang im Log an Hand vom _state Reading - hier während eines Saugvorganges:
2022-01-26_09:02:55 MQTT2_valetudo_ClumsyQuirkyCattle batteryPercent: 90
2022-01-26_09:05:17 MQTT2_valetudo_ClumsyQuirkyCattle _state: lost
2022-01-26_09:05:30 MQTT2_valetudo_ClumsyQuirkyCattle _state: init
2022-01-26_09:05:30 MQTT2_valetudo_ClumsyQuirkyCattle _state: ready
2022-01-26_09:05:31 MQTT2_valetudo_ClumsyQuirkyCattle signal: -38
2022-01-26_09:05:31 MQTT2_valetudo_ClumsyQuirkyCattle time: 1500
2022-01-26_09:05:32 MQTT2_valetudo_ClumsyQuirkyCattle area: 340000
mMn macht er ja selbst einen reconnect, die Datenübertragung bleibt auch bestehen, aber er nimmt danach keine Befehle mehr entgegen.
Ich weiß noch nicht wie dem näher auf die Schliche komme. :(

Gruß Otto
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 31 Januar 2022, 22:32:39
Hey Otto,

betreffend dem valetudoV2-Template mit event-on-change-reading .* und timestamp-on-change-reading .* mein ich sind wir beide uns einig, das nur noch die nötigsten Events stattfinden und die Zeitstempel auch immer passen.

Wenn ich hier jetzt das lese:

Zitat von: Damian am 30 Januar 2022, 18:03:40
Ich habe bei mir ganz mutig attr .* event-on-change-reading .* für alle Devices gesetzt (Sicherung der Konfiguration kann davor nicht schaden!) und musste es zunächst nur bei einem Device rückgängig machen. Das hat bereits eine Menge unnötiger Events eliminiert.

Dann habe ich mir den Event-Monitor angeschaut und konnte noch regelmäßige Events sehen, die ich überhaupt nicht brauchte. Und selbst die, habe ich per event-on-update-reading eliminieren können.

Komm ich bei "habe ich per event-on-update-reading eliminieren können" nicht mit.
Wenn ich bei einem aktuellen valetudoV2-Template-Device (eocr .*,tocr .* gesetzt) zusätzlich das Attribut event-on-update-reading auf ein beliebiges Reading setze das eigentlich alle 30 Sekunden geschickt wird und mit eocr .* verhindert wird, dann hab ich damit doch wieder ein Event erzeugt ?

Ich hab mich ehrlich gesagt bis jetzt nicht weiter mit beschäftigt und genauer in dem Thread weitergelesen, aber alleine das beschäftigt mich schon.

Ich hatte es bisher so verstanden das ich eour setze wenn ich das in bestimmten Fällen auch brauche, das ich Events damit jetzt eleminiere da komm ich einfach bis jetzt nicht mit.


Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 31 Januar 2022, 23:02:08
Ich verstehe das Zusammenspiel dieser Attribute auch nicht unbedingt.
Naja Damian schreibt nicht das er eour auf .* gesetzt hat, das macht sicher keinen Sinn. Wenn man eour auf ein spezielles Reading setzt was man wirklich braucht? Was macht dann ein zusätzliches eocr mit .* ? - hat er geschrieben, er hat es beibehalten?

Ich weiß es nicht...
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 31 Januar 2022, 23:46:04
Ich verstehe das so:

eocr .* - > alle Readings nur Events bei Änderung
eour diesesReading - > Event dieses Readings, selbst wenn der Wert gleich geblieben ist

Alternativ (so verstehe ich das): eocr mit Liste aller Readings bis auf "diesesReading"...

Je nachdem wieviele Readings ein Device hat und wieviele davon man doch haben will ist es u.U. kürzer eocr .* und dann bestimmte Readings wieder mit eour reinnehmen...

Mache ich zumindest so...

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 21 Juni 2022, 12:55:54
Mal eine doofe Frage, weil ich gerade über das Problem gestolpert bin, dass mein Device-Name nicht mit dem MQTT-devicetopic übereinstimmt:

Würde es nicht Sinn machen, Zeile 68 (https://svn.fhem.de/trac/browser/trunk/fhem/contrib/AttrTemplate/99_valetudoUtils.pm?rev=25558#L68) durch folgendes zu ersetzen:

my $devicetopic = AttrVal($NAME,'devicetopic',"valetudo/$NAME");

So funktioniert bei mir dann nämlich auch das Segment-Cleaning, weil das Topic stimmt ;)

Weiß aber nicht, ob das Nebenwirkungen hat.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: waldy am 24 Juni 2022, 15:55:15
Bis zu welcher Valetudo Version ist das Template kompatibel bzw. getestet?

In der 2022.05.0 wurde ja scheinbar "Zone Preset" und "GoTo Location" entfernt.

Ich hab auf meinem V1 jetzt die Version 2022.03.1 - Funktioniert soweit auch super, bis auf clean_zone und goto.

Die Presets werden ausgelesen und auch im Webinterface angezeigt, nur leider ohne Funktion.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 24 Juni 2022, 17:09:30
Ich hab 2022.06.0 im Einsatz. Funktioniert. Allerdings mit einem Dreame L10Pro. Der kann kein "GoTo" oder "Clean Zone". Nur "Clean Segment". Und das funktioniert auch mit dem Template. Du musst halt in FHEM setList anpassen, je nachdem, was du brauchst.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: waldy am 26 Juni 2022, 12:56:54
Mit dem Template läuft es bei mir leider nicht - ohne aber auch nicht  :-\

Ich hab schon probiert irgendwie die setList anzupassen, aber wahrscheinlich ist da an dem Syntax etwas falsch:

test:noArg $DEVICETOPIC/GoToLocationCapability/presets/go/set ["ec6c2b39-0076-49b1-9555-fd255ee7b56e"]

Hat vielleicht jemand ein funktionierendes Beispiel für mich?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Che007 am 26 Juni 2022, 13:24:40
Hi,

ich habe mich zufälligerweise auch mal heute bequemt um Valetudo über MQTT an FHEM anzudocken. Mein Modell ist ein Xiaomi Mop Pro.
Die Daten sehen erst einmal gut aus, aber wenn ich cleansegment auswähle, bzw. wenn ich ein Segment auswählen möchte, erscheint die Meldung: no_Segment_or_not_supported

Meine Segmente wurde aber gelesen, sehen die verkehrt aus:
segments
{"10":"Küche","11":"Esszimmer","12":"GästeWC","13":"Eingang","14":"Badezimmer","15":"Schlafzimmer","16":"Charlie","17":"Flur","18":"Essflur","19":"Edda","20":"Wohnzimmer"}

Vielen Dank.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 26 Juni 2022, 23:21:27
Ich kann erst wieder nach dem 2.7. mitmachen - derzeit kann ich nur mitlesen.  ;)
Ich will aber zu den letzten Fragen einwerfen:
Es ging am Anfang des Threads um valetudoRE am Ende eher um valetudo.
Es gibt jetzt mehrere Templates, ihr müsstet immer mit sagen welches Template angewendet wurde.

Falls es Änderungen in der Firmware gab: man sieht ja wann das Template aktualisiert wurde, neuere Firmware ist dann auch noch nicht getestet.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 27 Juni 2022, 09:24:07
Ich rede immer vom "valetudo"-Template.

Und bei mir war die Lösung, das setList nach den Fähigkeiten des Roboters anzupassen. Ich kann jetzt leider nicht mehr sagen, wie die Original-Zeile ausgesehen hat, aber nach Änderung sieht's so aus:
clean_segment:{valetudo_w($name,'segments')} { valetudo_c($NAME,$EVENT) }
In meinem Fall war "clean_segment" und "valetudo_w($name,'segments')" entscheidend.

Wie das bei anderen Fähigkeiten (GoTo, CleanZone) aussehen muss, ist in der 99_valetudoUtils.pm ersichtlich. Die sollte in [FHEM-Pfad]/FHEM/99_valetudoUtils.pm liegen. Konkret sind das dann wahrscheinlich:

clean_zone:{valetudo_w($name,'zones')} { valetudo_c($NAME,$EVENT) }
goto:{valetudo_w($name,'locations')} { valetudo_c($NAME,$EVENT) }

Vermute ich. Kommt drauf an, was eure Roboter bzw. Valetudo liefern.

Und, ich hatte es eine Seite vorher (https://forum.fhem.de/index.php/topic,121017.msg1225604.html#msg1225604) gepostet, wenn das Device anders heißt, als das Topic, müsste die 99_valetudoUtils.pm geändert werden.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: waldy am 27 Juni 2022, 15:24:49
Zitat von: drhirn am 21 Juni 2022, 12:55:54
...
Würde es nicht Sinn machen, Zeile 68 (https://svn.fhem.de/trac/browser/trunk/fhem/contrib/AttrTemplate/99_valetudoUtils.pm?rev=25558#L68) durch folgendes zu ersetzen:

my $devicetopic = AttrVal($NAME,'devicetopic',"valetudo/$NAME");
...

Perfekt, danke!

Durch Änderung dieses Eintrags funktioniert bei meinem V1 jetzt auch goto und clean_zone.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: laberlaib am 27 Juni 2022, 15:42:16
Gude,

kann man sich irgendwie verkonfigurieren, so dass das dynamische Befüllen von setList nicht funktioniert?

  clean_segment:{valetudo_w($name,'segments')} { valetudo_c($NAME,$EVENT) }
erigbt bei mir leider nur 2 Perlzeilen zur Auswahl, siehen Anhang.

Bei Eingabe in die FHEM-Befehlszeile:
{valetudo_w('MQTT2_valetudo_LopsidedTriflingVulture','segments')}
bekomme ich richtigerweise
1_Bad,2_Schlafzimmer,3_Dusche,4_Pablo,5_Wohnbereich

Zeiel 68 für wenn es mal klappt, habe ich schon geändert.

Danke und Grüße
laberlaib
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 27 Juni 2022, 16:06:49
Ins Blaue und für alle Mitlesenden auch zum ausschliessen das es daran liegt: Dein FHEM ist aktuell ? Nicht das die dynamische setList-Funktionalität noch gar nicht gegeben ist ? Wie auf dem Bild sahs früher aus, mein ich.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: laberlaib am 27 Juni 2022, 16:11:13
Update habe ich gestern gemacht um auch die ganzen Templates und so zu bekommen.
Könnte natürlich sein, das da was schief gelaufen ist - ich guck da sicherheitshalber noch mal nach, sobald ich das Kind von der Kita geholt habe.

Konnte dann doch nicht warten:
Danke, das wars - ich hatte an ein Modul neulich "von Hand" ins FHEM-Verzeichnis gelegt und die Rechte nicht angepasst. Und das Update skippt ja dann nicht sondern bricht ab.
Ein flottes "chmod 777 70_*" hat das Thema dann erledigt.

Wald => Bäume.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: laberlaib am 27 Juni 2022, 19:38:43
Und jetzt muss ich nur noch dafür sorgen, dass der Sauger die Befehle auch empfängt. Sauger ist auch ein Dreame L10Pro.

Ich empfange zwar alle Readings, aber das Senden funktioniert nicht. Nicht mal die "einfachen", wo man topicmäßig eigentlich nichts falsch machen kann:
pause:noArg $DEVICETOPIC/BasicControlCapability/operation/set PAUSE
  start:noArg $DEVICETOPIC/BasicControlCapability/operation/set START
  stop:noArg $DEVICETOPIC/BasicControlCapability/operation/set STOP
  charge:noArg $DEVICETOPIC/BasicControlCapability/operation/set HOME


Das ist doch die selbe Syntax wie bei der readingList
  $DEVICETOPIC/BatteryStateAttribute/level:.* batteryPercent
  $DEVICETOPIC/BatteryStateAttribute/status:.* batteryState

Und da bekomme ich ja die Infos.

Valetudo sagt auch Message Statistics
Messages Sent 5092 Bytes Sent
49.04 MiB
Messages Received
0
Bytes Received
0 bytes


Über den MQTT Explorer oder den FHEM-MQTT-Server bekomm ich auch nichts gepublished, was der Roboter annimmt.

Passt ja irgendwie hierzu:
ZitatValetudo don´t receive MQTT Commands
I use the internal Fhem MQTT Broker "MQTT2_Server". I can see the robot and FHEM diplays every reading like Wifi-Status, Battery etc. I use some Shellys over MQTT and FHEM and they work as they should!?
[...]
https://github.com/Hypfer/Valetudo/discussions/1288
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Che007 am 28 Juni 2022, 10:16:30
Zitat von: drhirn am 27 Juni 2022, 09:24:07
Ich rede immer vom "valetudo"-Template.

Danke drhirn.

Ich habe das nun auch mit dem Hinweis von Seite 10 probiert. Leider keine Besserung. Die setList wird nicht befüllt. Ich habe den json String jetzt manuell im Modul hinterlegt, mit meinen Segmenten. Jetzt gehts. Er saugt auch fleißig, wenn ich den Sauger über fhem anstoße. Jedoch nur einen Bereich und nicht mehrere, wenn diese ausgewählt wurden.

Bin erst einmal zufrieden. Weiß man wie man die Segmentauswahl gut im webcmd hinterlegen kann?

Danke natürlich auch an Otto für das Modul
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 28 Juni 2022, 10:29:49
Zitat von: laberlaib am 27 Juni 2022, 19:38:43
Über den MQTT Explorer oder den FHEM-MQTT-Server bekomm ich auch nichts gepublished, was der Roboter annimmt.

Kannst du mal ein RAW-Listing deines Roboters schicken bitte? Und vom MQTT2_SERVER auch?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Che007 am 28 Juni 2022, 10:33:31


defmod VigilantVastLobster MQTT2_DEVICE valetudo_VigilantVastLobster
attr VigilantVastLobster alias Sauger
attr VigilantVastLobster devicetopic valetudo/VigilantVastLobster
attr VigilantVastLobster event-on-change-reading .*
attr VigilantVastLobster icon vacuum_top
attr VigilantVastLobster model valetudo
attr VigilantVastLobster readingList $DEVICETOPIC/\x24state:.* _state\
  $DEVICETOPIC/AttachmentStateAttribute/dustbin:.* dustbin\
  $DEVICETOPIC/AttachmentStateAttribute/.* { $TOPIC =~ m,.*\/(.*),;; {"$1"=>$EVENT} }\
  $DEVICETOPIC/BatteryStateAttribute/level:.* batteryPercent\
  $DEVICETOPIC/BatteryStateAttribute/status:.* batteryState\
  $DEVICETOPIC/BasicControlCapability/operation:.* operation\
  $DEVICETOPIC/CurrentStatisticsCapability/area:.* area\
  $DEVICETOPIC/CurrentStatisticsCapability/time:.* time\
  $DEVICETOPIC/ConsumableMonitoringCapability/.* { $TOPIC =~ m,.*\/(.*),;; {"$1"=>$EVENT} }\
  $DEVICETOPIC/FanSpeedControlCapability/preset:.* fanSpeed\
  $DEVICETOPIC/LocateCapability/locate:.* locate\
  $DEVICETOPIC/MapData/map-data:.* {}\
  $DEVICETOPIC/MapData/segments:.* segments\
  $DEVICETOPIC/StatusStateAttribute/status:.* state\
  $DEVICETOPIC/StatusStateAttribute/detail:.* stateDetail\
  $DEVICETOPIC/StatusStateAttribute/error:.* stateError\
  $DEVICETOPIC/WaterUsageControlCapability/preset:.* waterUsage\
  $DEVICETOPIC/WifiConfigurationCapability/.* { $TOPIC =~ m,.*\/(.*),;; {"$1"=>$EVENT} }\
  $DEVICETOPIC/ZoneCleaningCapability/presets:.* presets\
  $DEVICETOPIC/ZoneCleaningCapability/start:.* start\
valetudo_VigilantVastLobster:valetudo/VigilantVastLobster/MapSegmentationCapability/clean:.* { json2nameValue($EVENT) }
attr VigilantVastLobster room Flur
attr VigilantVastLobster setList operation:PAUSE,START,STOP,HOME   $DEVICETOPIC/BasicControlCapability/operation/set $EVTPART1\
  clean_segment:{'multiple-strict,'.valetudo_w($name,"segments")} { valetudo_c($NAME,$EVENT) }\
  clean_zone:{valetudo_w($name,"presets")} { valetudo_c($NAME,$EVENT) }\
  fanSpeed:off,min,low,medium,high,turbo,max   $DEVICETOPIC/FanSpeedControlCapability/preset/set $EVTPART1\
  waterUsage:off,min,low,medium,high,turbo,max   $DEVICETOPIC/WaterUsageControlCapability/preset/set $EVTPART1\
  locate:PERFORM   $DEVICETOPIC/LocateCapability/locate/set $EVTPART1\
  x_raw_payload:textField { valetudo_c($NAME,$EVENT) }
attr VigilantVastLobster setStateList operation clean_segment clean_zone fanSpeed waterUsage x_raw_payload
attr VigilantVastLobster userReadings ip4:ips:.* {(split ',',ReadingsVal($name,'ips','error'))[0]}

setstate VigilantVastLobster docked
setstate VigilantVastLobster 2022-06-27 21:10:09 IODev mqttBroker
setstate VigilantVastLobster 2022-06-28 10:31:53 area 30000
setstate VigilantVastLobster 2022-06-28 10:31:53 batteryPercent 95
setstate VigilantVastLobster 2022-06-28 10:31:53 batteryState charging
setstate VigilantVastLobster 2022-06-28 10:31:53 brush-main 1295820
setstate VigilantVastLobster 2022-06-28 10:31:53 brush-side_right 647820
setstate VigilantVastLobster 2022-06-28 10:31:53 customOrder true
setstate VigilantVastLobster 2022-06-28 10:31:53 dustbin true
setstate VigilantVastLobster 2022-06-28 10:31:52 fanSpeed medium
setstate VigilantVastLobster 2022-06-28 10:31:53 filter-main 647820
setstate VigilantVastLobster 2022-06-28 10:31:53 frequency 2.4ghz
setstate VigilantVastLobster 2022-06-27 21:10:20 ip4 192.168.0.22
setstate VigilantVastLobster 2022-06-28 10:31:53 ips 192.168.0.22
setstate VigilantVastLobster 2022-06-28 10:31:53 iterations 1
setstate VigilantVastLobster 2022-06-28 10:31:53 mop false
setstate VigilantVastLobster 2022-06-28 10:31:52 operation STOP
setstate VigilantVastLobster 2022-06-28 10:31:53 presets {"bdcbebaa-b1a5-4e4f-b313-98de90a44c2f":{"__class":"ValetudoZonePreset","metaData":{},"name":"Essbereich","zones":[{"__class":"ValetudoZone","metaData":{},"points":{"pA":{"x":1945,"y":2845},"pB":{"x":2305,"y":2845},"pC":{"x":2305,"y":3055},"pD":{"x":1945,"y":3055}},"iterations":1}],"id":"bdcbebaa-b1a5-4e4f-b313-98de90a44c2f"}}
setstate VigilantVastLobster 2022-06-28 10:31:53 segment_ids_1 14
setstate VigilantVastLobster 2022-06-28 10:31:53 segment_ids_2 13
setstate VigilantVastLobster 2022-06-28 10:31:52 segments {"10":"Küche","11":"Esszimmer","12":"GästeWC","13":"Eingang","14":"Badezimmer","15":"Schlafzimmer","16":"Charlie","17":"Flur","18":"Essflur","19":"Edda","20":"Wohnzimmer"}
setstate VigilantVastLobster 2022-06-28 10:31:53 signal 0
setstate VigilantVastLobster 2022-06-28 10:31:52 ssid anonym
setstate VigilantVastLobster 2022-06-28 10:31:53 state docked
setstate VigilantVastLobster 2022-06-28 10:31:53 stateDetail none
setstate VigilantVastLobster 2022-06-28 10:31:53 stateError
setstate VigilantVastLobster 2022-06-27 21:10:09 subscriptions valetudo/VigilantVastLobster/BasicControlCapability/operation/set valetudo/VigilantVastLobster/ConsumableMonitoringCapability/refresh/set valetudo/VigilantVastLobster/CurrentStatisticsCapability/refresh/set valetudo/VigilantVastLobster/FanSpeedControlCapability/preset/set valetudo/VigilantVastLobster/LocateCapability/locate/set valetudo/VigilantVastLobster/MapSegmentationCapability/clean/set valetudo/VigilantVastLobster/WaterUsageControlCapability/preset/set valetudo/VigilantVastLobster/WifiConfigurationCapability/refresh/set valetudo/VigilantVastLobster/ZoneCleaningCapability/start/set
setstate VigilantVastLobster 2022-06-28 10:31:53 time 420
setstate VigilantVastLobster 2022-06-28 10:31:52 waterUsage medium
setstate VigilantVastLobster 2022-06-28 10:31:53 watertank false


Werden bei euch mehrere Segmente gesaugt oder auch nur 1?

EDIT: OK, es werden mehrere Segmente gesaugt, er hat nur Probleme mit den Umlauten.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 28 Juni 2022, 10:57:44
Mir scheint, da fehlt noch das Attribut "IODevice", oder?

Bei mir wird - beim Segment-Start via FHEM - nur ein Segment gesaugt.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Che007 am 28 Juni 2022, 11:15:59
Habe meinen Beitrag angepasst. Mehrere Segmente funktionieren, nur kommt er noch nicht mit den Umlauten klar ,,Küche" z.B.

Also an für sich klappt es nun, habe jedoch wie beschrieben die Segmente hart im Modul hinterlegt. Aber die ändern sich ja so gut wie nicht mehr bei mir.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 28 Juni 2022, 11:20:23
Ach so meintest du das mit "mehreren Segmenten". Kannst ja auch die Umlaute weglassen.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Che007 am 28 Juni 2022, 11:35:09
Ja mit ue statt ü geht es.

Bleibt bei mir noch übrig, ggf. Karte einbinden und als webCmd clean_segment direkt auszuwählen.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 28 Juni 2022, 11:45:24
Dazu hab ich I can't believe it's not Valetudo (https://github.com/Hypfer/ICantBelieveItsNotValetudo) genommen und dessen Karte (base64-codiert) dann als Reading eingebunden:

$DEVICETOPIC/MapData/map:.* { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),; {"map"=>"<html><div style='width: 600px; height: 300px;'><img src='".$EVENT."'></div></html>"} }

Bezüglich clean_segement kann ich dir leider nicht helfen. Aber vielleicht findest du hier etwas brauchbares: https://wiki.fhem.de/wiki/FHEMWEB/Widgets
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: laberlaib am 28 Juni 2022, 17:15:41
Zitat von: drhirn am 28 Juni 2022, 10:29:49
Kannst du mal ein RAW-Listing deines Roboters schicken bitte? Und vom MQTT2_SERVER auch?
Jetzt klappts.

Ich wollte, bevor ich hier weiter ein Fass aufmache, nochmal was testen und habe mir in die setList einfach mal was Hardcodiertes eingetragen. Also statt "$DEVICETOPIC/xxx" direkt "valetudo/saugerl10/xxx" und dann hats geklappt, der Sauger hats angenommen und zählt auch die Nachrichten hoch.
Und es klappt nun sogar alles - also auch die dynamischen, per Funktion gebauten clean-segement-Befehle.

Hat der Sauger wohl ein wenig gebraucht um sich daran zu gewöhnen, dass MQTT ihn nun kontrolliert - ist halt auch nur ein Mensch.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 28 Juni 2022, 17:17:56
Oder das Attribut devicetopic war einfach nicht richtig ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: laberlaib am 28 Juni 2022, 17:36:01
Alle funktionieren nun, alle! Ich hab nur einen Hardcodierten drin, die anderen ja gelassen.
Und die readingList greift ja auf das gleiche Attribut zu.
Whatever ...

attr MQTT2_valetudo_LopsidedTriflingVulture devicetopic valetudo/saugerl10
[...]
attr MQTT2_valetudo_LopsidedTriflingVulture setList pause:noArg $DEVICETOPIC/BasicControlCapability/operation/set PAUSE\
  start:noArg $DEVICETOPIC/BasicControlCapability/operation/set START\
  stop:noArg $DEVICETOPIC/BasicControlCapability/operation/set STOP\
  charge:noArg $DEVICETOPIC/BasicControlCapability/operation/set HOME\
  fanSpeed:off,min,low,medium,high,turbo,max $DEVICETOPIC/FanSpeedControlCapability/preset/set $EVTPART1\
  waterUsage:off,min,low,medium,high,turbo,max $DEVICETOPIC/WaterUsageControlCapability/preset/set $EVTPART1\
  locate:PERFORM   $DEVICETOPIC/LocateCapability/locate/set $EVTPART1\
  x_raw_payload:textField { valetudo_c($NAME,$EVENT) }\
  clean_segment:{'multiple-strict,'.valetudo_w($name,'segments')} { valetudo_c($NAME,$EVENT) }\
  test:noArg valetudo/saugerl10/LocateCapability/locate/set PERFOM


Aber wenn einem hier immer so schnell geholfen wird, dann kommt der arme Roboter halt auch nicht immer hinterher :)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: laberlaib am 07 Juli 2022, 18:21:46
Edit: Gelöst: in dem Hash steht ja die cmd-Bezeichnung und die hatte ich ja zum testen geändert in clean_segment2!

Ich mache mit folgendem die Reihenfolge der Segmente bei einer freien Auswahl sortierbar.

Da eine sinnvolle Reihenfolge der Segmente transitiv ist und damit immer gleich zu optimieren, egal, welche Segmente gewählt wurden, wollte ich das möglich machen.
Ich habe dazu ein Userattribut angelegt, in welchem man kammasepariert die Reihenfolge der Segemente als IDs angeben kann:

attr MQTT2_valetudo_LopsidedTriflingVulture userattr segmentorder
attr MQTT2_valetudo_LopsidedTriflingVulture segmentorder 1,2,3,4,5,6,7,8,9,10,11,12,13


Dann habe ich folgende 99_valetudoUtils.pm genommen:
# $Id: 99_valetudoUtils.pm 25558 2022-01-25 11:32:05Z Otto123 $

Und eine Sortierung der gewählten Segmente so in sub valetudo_c eingebaut (ab ca. Zeile 160):

for ( @rooms ) { push @ids, {reverse %{$decoded} }->{$_} } #das ist noch Orginal
my $segmentorder = AttrVal($NAME, "segmentorder",undef);
if (defined($segmentorder))  {
     my @segmentorder = split ",", $segmentorder;
     my @idsorderd;
     foreach (@segmentorder) {
     if ($_ ~~ @ids) {push @idsorderd, $_;}
     @ids =  @idsorderd;
}
#Ab hier wieder original
my %Hcmd = ( clean_segment => {action =>'start_segment_action',segment_ids => \@ids,iterations => 1,customOrder => 'true' } );
$ret = $devicetopic.'/MapSegmentationCapability/clean/set '.toJSON $Hcmd{$cmd};

Ich trenne also die sortierten IDs und geh das so entstandene Array von Anfang zum Ende durch. Jedes Mal, wenn ich etwas treffe, kommt das in ein neues Array (idsorderd), welches danach ids wird, welches weiterverarbeitet wird.

---------------------------- Überholt --------------------------------
Jetzt wollte ich etwas zurück geben und zack, irgend was klappt nicht:
[...]
In meinen Log-Ausgaben für die Arrays passt alles; $ret ist aber immer NULL.

Hier nochmal alles zusammen als sub valetudo_l
sub valetudo_l {
    my $NAME = shift;
    my ($cmd,$load) = split q{ }, shift, 2;
    my $ret = 'error';
    my $devicetopic = AttrVal($NAME,'devicetopic',"valetudo/$NAME");

    # x_raw_payload like
    # /MapSegmentationCapability/clean/set {"segment_ids":["6"],"iterations":1,"customOrder":true}
    if ($cmd eq 'x_raw_payload') { $ret=$devicetopic.$load }

    # this part return an array of segment id's according to selected Names from segments (simple json)
    if ($cmd eq 'clean_segment2') {

        my @rooms = split ',', $load;
        my $json = ReadingsVal($NAME,'segments',q{});
        my $decoded = decode_j($json);
        my @ids;
my @idsorderd;
        for ( @rooms ) { push @ids, {reverse %{$decoded} }->{$_} }
foreach (@ids){Log3 "test", 3, "ids Orignal ".$_;}
Log3 "test", 3, "ids original slash " .\@ids;
my $segmentorder = AttrVal($NAME, "segmentorder",undef);
Log3 "test", 3, "segmentorder " .$segmentorder;
if (defined($segmentorder))  {

  my @segmentorder = split ",", $segmentorder;
        my $sortedload = "";
my @idsorderd;
    foreach (@segmentorder) {

    if ($_ ~~ @ids) {
push @idsorderd, $_;
Log3 "test", 3, "segmentorderdefined " .$_;
}
    }
foreach (@idsorderd){Log3 "test", 3, "idsorder ".$_;}
Log3 "test", 3, "asd1 " .@idsorderd;
@ids =  @idsorderd;
    foreach (@ids){Log3 "test", 3, "ids2 ".$_;}
}
Log3 "test", 3, "ids slash " .\@ids;

        my %Hcmd = ( clean_segment => {action =>'start_segment_action',segment_ids => \@ids,iterations => 1,customOrder => 'true' } );
#my %Hcmd = ( clean_segment => {segment_ids => \@ids,iterations => 1,customOrder => 'true' } );
        $ret = $devicetopic.'/MapSegmentationCapability/clean/set '.toJSON $Hcmd{$cmd};
Log3(undef, 1, $ret);
    }

    # this part return the zone/location id according to the selected Name from presets (zones/locations) (more complex json)
    if ($cmd eq 'clean_zone') {
        my $json = ReadingsVal($NAME,'.zonesPresets',q{});
        my $decoded = decode_j($json);
        for (keys %{$decoded}) {
            if ( $decoded->{$_}->{'name'} eq $load ) {$ret = $devicetopic.'/ZoneCleaningCapability/start/set '.$_ }
        }
    }
    if ($cmd eq 'goto') {
        my $json = ReadingsVal($NAME,'.locationsPresets',q{});
        my $decoded = decode_j($json);
        for (keys %{$decoded}) {
            if ( $decoded->{$_}->{'name'} eq $load ) {$ret = $devicetopic.'/GoToLocationCapability/go/set '.$_ }
        }
    }

    # this part is for study purpose to read the full json segments with the REST API
    # this part return an array of segment id's according to selected Names from json_segments (complex json)
    if ($cmd eq 'clean_segment_j') {
        $cmd = 'clean_segment';             # only during Test
        my @rooms = split ',', $load;
        my $json = ReadingsVal($NAME,'json_segments',q{});
        my $decoded = decode_j($json);
        my @array=@{$decoded};
        my %t;
        for (@array) { $t{$_->{'name'}} = $_->{'id'} }
        my @ids;
        for ( @rooms ) {push @ids, $t{$_}}
        my %Hcmd = ( clean_segment => {segment_ids => \@ids,iterations => 1,customOrder => 'true' } );
        $ret = $devicetopic.'/MapSegmentationCapability/clean/set '.toJSON $Hcmd{$cmd};
Log3(undef, 1, $ret);

    }
    #return $ret
Log3 "test", 3, $ret;
}


und die Zeile um die SetList zu erweitern:
clean_segment2:{'multiple-strict,'.valetudo_w($name,'segments')} { valetudo_l($NAME,$EVENT) }\

Ich muss vielleicht mal raus...
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 11 Juli 2022, 14:02:46
Hallo,

ich habe jetzt ein bisschen gelesen und recherchiert und bin zu folgendem ToDo gekommen:

Die sortierte Abarbeitung hatte ich auch schon mal im Visier, allerdings hat es damals, wenn ich mich richtig erinnere, nichts gebracht, da der Roboter (valetudo Version ?) seinen eigenen Kopf hatte :)
Ich probiere das aus und übernehme die Lösung von laberlaib  gern.

Ich denke ich sollte dann diesen Thread schließen und einen neuen auf machen.

Gruß Otto
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: laberlaib am 13 Juli 2022, 12:51:43
Zitat von: Otto123 am 11 Juli 2022, 14:02:46
Die sortierte Abarbeitung hatte ich auch schon mal im Visier, allerdings hat es damals, wenn ich mich richtig erinnere, nichts gebracht, da der Roboter (valetudo Version ?) seinen eigenen Kopf hatte :)
Ich probiere das aus und übernehme die Lösung von laberlaib  gern.
Ehrlichweise habe ich bisher nur die Übergabe angesehen und mich auf das "customorder" im JSON verlassen. Probiert habe ich es noch nicht, da ich für die Hauptkombination aus Segmenten sowieso einen direkten Befehlt gebaut habe und das andere eher nice2have ist.
Zitat von: Otto123 am 11 Juli 2022, 14:02:46
Ich denke ich sollte dann diesen Thread schließen und einen neuen auf machen.

Danke kommt noch hier rein: Danke.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 15 Oktober 2022, 21:25:18
Hi,

ich hole den Threat nochmal hoch  :)

Ich habe günstig einen Dreame D9 geschossen und gleich mit Valetudo versorgt. Funktionier auch soweit OK mit der App, nur hier im FHEM krieg ich das nicht gebacken. Ich beziehe mich nur auf das aktuelle Valetudo-Template.

Zuerst habe ich ohne Haken bei Home Assistant (im Valetudo) probiert. Nach Auswahl des Templates hatte ich alle Funktionen soweit in FHEm zur Auswahl. Strat/Stop funktionierte. Die Auswahl bei Clean_Segment wurde auch wie in der App richtig angezeigt, nur bewirkt das nichts. Mein Robby reagiert nicht. Vieleicht kann mir ja jemand helfen, da ich nicht so firm bin mit MQTT. Hier mal ein list:

Internals:
   CFGFN     
   CID        valetudo_ImpressionableDecimalWasp
   DEF        valetudo_ImpressionableDecimalWasp
   FUUID      634ab913-f33f-ac49-8ff6-cc75bdd4b0b257df
   IODev      m2s
   LASTInputDev m2s
   MSGCNT     518
   NAME       MQTT2_valetudo_ImpressionableDecimalWasp
   NR         238
   STATE      set_waterUsage
   TYPE       MQTT2_DEVICE
   eventCount 483
   m2s_CONN   m2s_192.168.11.6_51124
   m2s_MSGCNT 518
   m2s_TIME   2022-10-15 21:02:23
   OLDREADINGS:
   READINGS:
     2022-10-15 15:43:47   IODev           m2s
     2022-10-15 18:28:20   Robby_sensor_WifiConfigurationCapability_attributes_frequency 2.4ghz
     2022-10-15 18:28:20   Robby_sensor_WifiConfigurationCapability_attributes_ips_1 192.168.xx.x
     2022-10-15 21:02:23   Robby_sensor_WifiConfigurationCapability_attributes_signal -27
     2022-10-15 18:28:20   Robby_sensor_WifiConfigurationCapability_attributes_ssid Devils Home
     2022-10-15 21:02:23   Robby_sensor_WifiConfigurationCapability_state -27
     2022-10-15 19:23:56   area            0
     2022-10-15 19:29:13   batteryPercent  100
     2022-10-15 19:25:21   cleanerState    docked
     2022-10-15 19:25:23   map-data-hass   �PNG
.....
    2022-10-15 19:23:29   operation       START
     2022-10-15 21:02:23   signal          -27
     2022-10-15 19:23:29   start           set
     2022-10-15 21:02:54   state           set_waterUsage
     2022-10-15 19:29:13   state_battery_level 100
     2022-10-15 19:23:29   state_fan_speed medium
     2022-10-15 19:25:21   state_state     docked
     2022-10-15 19:23:55   time            0
Attributes:
   alias      Robby
   devicetopic valetudo/Robby
   event-on-change-reading .*
   icon       vacuum_top
   model      valetudoV2
   readingList $DEVICETOPIC/\x24state:.* _state
  $DEVICETOPIC/(Att.*|Basic.*|Consum.*|Curr.*|Loc.*|Wifi.*)/[a-zA-Z\-_]+:.* { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),; $1 eq 'ips'? {"ip4"=> (split ',',$EVENT)[0]}:{"$1"=>$EVENT} }
  $DEVICETOPIC/BatteryStateAttribute/level:.* batteryPercent
  $DEVICETOPIC/BatteryStateAttribute/status:.* batteryState
  $DEVICETOPIC/FanSpeedControlCapability/preset:.* fanSpeed
  $DEVICETOPIC/GoToLocationCapability/presets:.* .locationsPresets
  $DEVICETOPIC/GoToLocationCapability/go:.* {}
  $DEVICETOPIC/MapData/map-data:.* {}
  $DEVICETOPIC/MapData/segments:.* .segments
  $DEVICETOPIC/StatusStateAttribute/status:.* { {"state"=>$EVENT,"cleanerState"=>$EVENT} }
  $DEVICETOPIC/StatusStateAttribute/detail:.* stateDetail
  $DEVICETOPIC/StatusStateAttribute/error:.* stateError
  $DEVICETOPIC/WaterUsageControlCapability/preset:.* waterUsage
  $DEVICETOPIC/ZoneCleaningCapability/presets:.* .zonesPresets
  $DEVICETOPIC/ZoneCleaningCapability/start:.* {}
valetudo_ImpressionableDecimalWasp:valetudo/Robby/hass/Robby_sensor_WifiConfigurationCapability:.* { json2nameValue($EVENT, 'Robby_sensor_WifiConfigurationCapability_', $JSONMAP) }
valetudo_ImpressionableDecimalWasp:valetudo/Robby/hass/Robby_vacuum/state:.* { json2nameValue($EVENT, 'state_', $JSONMAP) }
valetudo_ImpressionableDecimalWasp:valetudo/Robby/MapData/map-data-hass:.* map-data-hass
   room       MQTT2_DEVICE,Zentral
   setList    pause:noArg $DEVICETOPIC/BasicControlCapability/operation/set PAUSE
  start:noArg $DEVICETOPIC/BasicControlCapability/operation/set START
  stop:noArg $DEVICETOPIC/BasicControlCapability/operation/set STOP
  charge:noArg $DEVICETOPIC/BasicControlCapability/operation/set HOME
  clean_zone:{valetudo_w($name,'zones')} { valetudo_c($NAME,$EVENT) }
  fanSpeed:off,min,low,medium,high,turbo,max $DEVICETOPIC/FanSpeedControlCapability/preset/set $EVTPART1
  waterUsage:off,min,low,medium,high,turbo,max $DEVICETOPIC/WaterUsageControlCapability/preset/set $EVTPART1
  locate:PERFORM   $DEVICETOPIC/LocateCapability/locate/set $EVTPART1
  x_raw_payload:textField { valetudo_c($NAME,$EVENT) }
   setStateList operation clean_segment clean_zone goto fanSpeed waterUsage locate x_raw_payload
   stateFormat <a href="http://ip4" target="_blank">state</a>
   timestamp-on-change-reading .*
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 15 Oktober 2022, 23:56:22
Zitat von: SalvadoreXXL am 15 Oktober 2022, 21:25:18
Die Auswahl bei Clean_Segment wurde auch wie in der App richtig angezeigt, nur bewirkt das nichts. Mein Robby reagiert nicht. Vieleicht kann mir ja jean helfen, da ich nicht so firm bin mit MQTT. Hier mal ein list:
Bitte die lists in Codetags hier (https://forum.fhem.de/index.php/topic,71806.0.html) steht wie es geht.

Irgendwie ging das in einer Firmware nicht mehr und die Doku stimmte nicht, hab ich irgendwie aus dem Auge verloren.

Ich schau mir das an ;)

Edit: ist nach wie vor das Problem, irgendwie reagiert cleansegment auf die dokumentierten Topics und payloads nicht mehr
https://valetudo.cloud/pages/integrations/mqtt.html#segmentcleaningmapsegmentationcapability

Ich habe irgendwie keine Idee was ich versuchen kann.

Gruß Otto
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 16 Oktober 2022, 10:28:45
Evtl. hilft das weiter:

https://github.com/Hypfer/Valetudo/discussions/1603 (https://github.com/Hypfer/Valetudo/discussions/1603)

Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 16 Oktober 2022, 10:42:56
Moin,

ich war jetzt mit ein paar publish Versuchen erfolgreich: für Segment und Zone Cleaning

Das muss ich prüfen wo Fehler in den Utils stecken und muss die neuen Dinge in den Code einbauen.

@SalvadoreXXL naja in dem Link wird ja genau der Effekt beschrieben den ich auch hatte: per Rest geht und per MQTT nicht. Beschrieben ist aber, das MQTT genauso wie Rest gehen soll. Es gibt auch die Beschreibung wie man an die Koordinaten für die Zone kommt: https://github.com/Hypfer/Valetudo/releases/tag/2022.05.1

Gruß Otto
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 16 Oktober 2022, 11:34:45
Darf ich hier mal fragen ob der ganze MQTT-Verkehr mit einer neueren Version wie Valetudo 2022.02.0 immer noch alle 30 Sekunden übertragen werden ?
Hatte gestern ein kleines Problem mit meinem FHEM und dabei das erste mal  ::) festgestellt das meine RasPi 3+ zu dem Zeitpunkt dann immer auf bis zu fast 60 Prozent CPU Auslastung kommt.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 16 Oktober 2022, 12:07:31
30 sec ja, aber es sieht so aus als ob nur noch wirkliche Änderungen übertragen werden.
Er steht im Dock und ich bekomme alle 30 sec nur die WiFi Signalstärke.

Ich glaube das stand auch so irgendwo im Changelog.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 16 Oktober 2022, 12:12:17
Kann ich unter Updater einfach auf DOWNLOAD UPDATE klicken und es wird die neue Version installiert oder gibts danach noch irgendwelche Hürden ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 16 Oktober 2022, 12:24:18
Zitat von: Otto123 am 11 Juli 2022, 14:02:46
  • Ich muss die neue valetudo Version installieren und testen  ::)
    Edit: Ok ausprobiert, er macht das Update schrittweise: -> 05.00 -> 05.01 -> 06.00
    Ab 05.1. gibt es ein neues Feature was in der Oberfläche die gerade ausgewählten Zonenkoordinaten als json String zeigt. Damit kann man irgendwie arbeiten ;)
Bei mir gab es keine Hürden
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 16 Oktober 2022, 12:31:38
Valetudo ist aber Valetudo und nicht ValetudoRE?

Hatte beides mal drauf aber die Kartendarstellung in Valetudo fand ich so naja...

Evtl. mal mit einer neuen Version testen...
...oder geht das Template auch bei ValetudoRE?

(jaja, ich weiß: ValetudoRE "böse" und so)

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 16 Oktober 2022, 12:34:56
   
ValetudoRE -> Template roborockRE
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 16 Oktober 2022, 12:36:06
Zitat von: TomLee am 16 Oktober 2022, 12:34:56
   
ValetudoRE -> Template roborockRE

Ah, ok, ich werde mir das mal anschauen...
...wenn wieder Zeit ist.

Wann immer das sein wird... ;)

Danke, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 16 Oktober 2022, 12:51:54
Zitat von: Otto123 am 16 Oktober 2022, 12:24:18
Bei mir gab es keine Hürden

Danke, bin jetzt auf 2022.09.0 und in den 4-5 Minuten in denen ich den Traffic verfolgt habe wurde gar nix mehr (unnützes) übertragen zu werden, offensichtlich dann nur noch bei wirklichen "updates".

Ärgerlich ist das mit clean_zone jetzt (ich hab keine Lust mich mit zu beschäftigen), aber halb so schlimm bei mir, es wird eh immer alles gesaugt.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 16 Oktober 2022, 13:00:36
das mit clean_zone bekomme ich hin. Ich habe ja jetzt einen Ansatz, braucht noch ein bisschen. Muss gerade noch was anderes machen.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 16 Oktober 2022, 13:07:07
https://forum.fhem.de/index.php?topic=121017.msg1226124#msg1226124
Das hilft euch nicht?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 16 Oktober 2022, 15:45:27
Nein - aber Dein Beitrag  (https://forum.fhem.de/index.php/topic,121017.msg1225604.html#msg1225604)schon :)
@SalvadoreXXL Wenn Du es schnell probieren willst machst Du einfach diese Änderung

Ich weiß nicht was passiert ist, aber ich vermute hiermit https://forum.fhem.de/index.php/topic,125159.msg1198267.html#msg1198267 ist das Internal DEVICETOPIC für immer aus FHEM verschwunden  ???

Zumindest fördert ein list .* i:DEVICETOPIC nichts mehr zu Tage

Ich versuche jetzt noch was für die "neue Art" der Zonenreinigung einzubauen. Man müsste ja jetzt irgendwie den json String aus der valetudo Oberfläche (https://github.com/Hypfer/Valetudo/releases/tag/2022.05.1) kopieren und als Reading in FHEM speichern.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 17 Oktober 2022, 09:55:10
Zitat von: Otto123 am 16 Oktober 2022, 15:45:27
Nein - aber Dein Beitrag  (https://forum.fhem.de/index.php/topic,121017.msg1225604.html#msg1225604)schon :)
@SalvadoreXXL Wenn Du es schnell probieren willst machst Du einfach diese Änderung

Änderung gemacht+Device gelöscht+Neustart FHEM+Template neu zugewiesen

Nun

2022.10.16 18:56:26 2: AttrTemplates: got 251 entries
2022.10.16 18:56:26 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:56:26 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at FHEM/SetExtensions.pm line 98.
2022.10.16 18:56:26 3: eval: valetudo_w($name,'zones')
2022.10.16 18:56:45 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:56:49 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:56:49 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:56:55 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:56:55 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:56:55 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:56:55 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:57:01 1: PERL WARNING: Subroutine valetudoUtils_Initialize redefined at ./FHEM/99_valetudoUtils.pm line 13.
2022.10.16 18:57:01 3: eval: { $data{f}='99_valetudoUtils.pm';
$data{u}="https://svn.fhem.de/trac/browser/trunk/fhem/contrib/AttrTemplate/$data{f}?format=txt";
qx(wget -qO FHEM/$data{f} $data{u}); CommandReload(undef, $data{f});
delete $data{f};delete $data{u};''}
2022.10.16 18:57:01 1: PERL WARNING: Subroutine decode_j redefined at ./FHEM/99_valetudoUtils.pm line 22.
2022.10.16 18:57:01 3: eval: { $data{f}='99_valetudoUtils.pm';
$data{u}="https://svn.fhem.de/trac/browser/trunk/fhem/contrib/AttrTemplate/$data{f}?format=txt";
qx(wget -qO FHEM/$data{f} $data{u}); CommandReload(undef, $data{f});
delete $data{f};delete $data{u};''}
2022.10.16 18:57:01 1: PERL WARNING: Subroutine valetudo_w redefined at ./FHEM/99_valetudoUtils.pm line 33.
2022.10.16 18:57:01 3: eval: { $data{f}='99_valetudoUtils.pm';
$data{u}="https://svn.fhem.de/trac/browser/trunk/fhem/contrib/AttrTemplate/$data{f}?format=txt";
qx(wget -qO FHEM/$data{f} $data{u}); CommandReload(undef, $data{f});
delete $data{f};delete $data{u};''}
2022.10.16 18:57:01 1: PERL WARNING: Subroutine valetudo_c redefined at ./FHEM/99_valetudoUtils.pm line 64.
2022.10.16 18:57:01 3: eval: { $data{f}='99_valetudoUtils.pm';
$data{u}="https://svn.fhem.de/trac/browser/trunk/fhem/contrib/AttrTemplate/$data{f}?format=txt";
qx(wget -qO FHEM/$data{f} $data{u}); CommandReload(undef, $data{f});
delete $data{f};delete $data{u};''}
2022.10.16 18:57:01 1: PERL WARNING: Subroutine valetudo_f redefined at ./FHEM/99_valetudoUtils.pm line 120.
2022.10.16 18:57:01 3: eval: { $data{f}='99_valetudoUtils.pm';
$data{u}="https://svn.fhem.de/trac/browser/trunk/fhem/contrib/AttrTemplate/$data{f}?format=txt";
qx(wget -qO FHEM/$data{f} $data{u}); CommandReload(undef, $data{f});
delete $data{f};delete $data{u};''}
2022.10.16 18:57:01 1: PERL WARNING: Subroutine CommandAttr_multiline redefined at ./FHEM/99_valetudoUtils.pm line 130.
2022.10.16 18:57:01 3: eval: { $data{f}='99_valetudoUtils.pm';
$data{u}="https://svn.fhem.de/trac/browser/trunk/fhem/contrib/AttrTemplate/$data{f}?format=txt";
qx(wget -qO FHEM/$data{f} $data{u}); CommandReload(undef, $data{f});
delete $data{f};delete $data{u};''}
2022.10.16 18:57:01 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:57:01 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:57:01 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:57:01 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:57:01 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:57:01 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:57:01 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:57:01 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:57:01 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:57:01 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:57:01 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.16 18:57:01 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

im Log.

Clean_Segment geht immer noch nicht ...

Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 17 Oktober 2022, 10:00:36
Was genau hast du gemacht? Ich hab da zwei Beiträge geschrieben, die beide zusammen wahrscheinlich zu einer Workaround-Lösung führen.

https://forum.fhem.de/index.php/topic,121017.msg1225604.html#msg1225604
https://forum.fhem.de/index.php/topic,121017.msg1226124.html#msg1226124

Das funktioniert bei mir mit einem Dreame L10Pro schon seit Monaten.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 17 Oktober 2022, 13:21:31
Zitat von: drhirn am 17 Oktober 2022, 10:00:36
Was genau hast du gemacht? Ich hab da zwei Beiträge geschrieben, die beide zusammen wahrscheinlich zu einer Workaround-Lösung führen.

https://forum.fhem.de/index.php/topic,121017.msg1225604.html#msg1225604
https://forum.fhem.de/index.php/topic,121017.msg1226124.html#msg1226124

Das funktioniert bei mir mit einem Dreame L10Pro schon seit Monaten.

Nun beide Änderungen drin:


Internals:
   CFGFN     
   CID        valetudo_ImpressionableDecimalWasp
   DEF        valetudo_ImpressionableDecimalWasp
   FUUID      634d028c-f33f-ac49-f8de-d1c91adb8e978875
   IODev      m2s
   LASTInputDev m2s
   MSGCNT     726
   NAME       MQTT2_valetudo_ImpressionableDecimalWasp
   NR         171
   STATE      <a href="http://ip4" target="_blank">docked</a>
   TYPE       MQTT2_DEVICE
   eventCount 607
   m2s_CONN   m2s_192.168.xx.x_39804
   m2s_MSGCNT 726
   m2s_TIME   2022-10-17 13:14:55
   OLDREADINGS:
   READINGS:
     2022-10-17 09:21:48   IODev           m2s
     2022-10-17 09:22:19   Robby_sensor_WifiConfigurationCapability_attributes_frequency 2.4ghz
     2022-10-17 09:22:19   Robby_sensor_WifiConfigurationCapability_attributes_ips_1 192.168.11.6
     2022-10-17 13:14:55   Robby_sensor_WifiConfigurationCapability_attributes_signal -25
     2022-10-17 09:22:19   Robby_sensor_WifiConfigurationCapability_attributes_ssid Devils Home
     2022-10-17 13:14:55   Robby_sensor_WifiConfigurationCapability_state -25
     2022-10-17 12:07:25   area            50000
     2022-10-17 13:08:29   batteryPercent  97
     2022-10-17 09:36:59   charge          set
     2022-10-17 13:14:29   cleanerState    docked
     2022-10-17 13:14:32   map-data-hass   �PNG
...
     2022-10-17 11:59:00   operation       HOME
     2022-10-17 13:14:55   signal          -25
     2022-10-17 09:36:39   start           set
     2022-10-17 13:14:29   state           docked
     2022-10-17 12:07:56   stateDetail     none
     2022-10-17 13:08:29   state_battery_level 97
     2022-10-17 09:36:39   state_fan_speed medium
     2022-10-17 13:14:29   state_state     docked
     2022-10-17 09:36:48   stop            set
     2022-10-17 09:22:46   subscriptions   valetudo/Robby/BasicControlCapability/operation/set valetudo/Robby/CurrentStatisticsCapability/refresh/set valetudo/Robby/FanSpeedControlCapability/preset/set valetudo/Robby/LocateCapability/locate/set valetudo/Robby/MapSegmentationCapability/clean/set valetudo/Robby/WaterUsageControlCapability/preset/set valetudo/Robby/WifiConfigurationCapability/refresh/set valetudo/Robby/ZoneCleaningCapability/start/set valetudo/Robby/hass/Robby_vacuum/command
     2022-10-17 12:07:25   time            120
Attributes:
   alias      Robby
   devicetopic valetudo/Robby
   event-on-change-reading .*
   icon       vacuum_top
   model      valetudoV2
   readingList $DEVICETOPIC/\x24state:.* _state
  $DEVICETOPIC/(Att.*|Basic.*|Consum.*|Curr.*|Loc.*|Wifi.*)/[a-zA-Z\-_]+:.* { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),; $1 eq 'ips'? {"ip4"=> (split ',',$EVENT)[0]}:{"$1"=>$EVENT} }
  $DEVICETOPIC/BatteryStateAttribute/level:.* batteryPercent
  $DEVICETOPIC/BatteryStateAttribute/status:.* batteryState
  $DEVICETOPIC/FanSpeedControlCapability/preset:.* fanSpeed
  $DEVICETOPIC/GoToLocationCapability/presets:.* .locationsPresets
  $DEVICETOPIC/GoToLocationCapability/go:.* {}
  $DEVICETOPIC/MapData/map-data:.* {}
  $DEVICETOPIC/MapData/segments:.* .segments
  $DEVICETOPIC/StatusStateAttribute/status:.* { {"state"=>$EVENT,"cleanerState"=>$EVENT} }
  $DEVICETOPIC/StatusStateAttribute/detail:.* stateDetail
  $DEVICETOPIC/StatusStateAttribute/error:.* stateError
  $DEVICETOPIC/WaterUsageControlCapability/preset:.* waterUsage
  $DEVICETOPIC/ZoneCleaningCapability/presets:.* .zonesPresets
  $DEVICETOPIC/ZoneCleaningCapability/start:.* {}
valetudo_ImpressionableDecimalWasp:valetudo/Robby/hass/Robby_sensor_WifiConfigurationCapability:.* { json2nameValue($EVENT, 'Robby_sensor_WifiConfigurationCapability_', $JSONMAP) }
valetudo_ImpressionableDecimalWasp:valetudo/Robby/hass/Robby_vacuum/state:.* { json2nameValue($EVENT, 'state_', $JSONMAP) }
valetudo_ImpressionableDecimalWasp:valetudo/Robby/MapData/map-data-hass:.* map-data-hass
   room       MQTT2_DEVICE
   setList    pause:noArg $DEVICETOPIC/BasicControlCapability/operation/set PAUSE
  start:noArg $DEVICETOPIC/BasicControlCapability/operation/set START
  stop:noArg $DEVICETOPIC/BasicControlCapability/operation/set STOP
  charge:noArg $DEVICETOPIC/BasicControlCapability/operation/set HOME
  clean_zone:{valetudo_w($name,'zones')} { valetudo_c($NAME,$EVENT) }
  fanSpeed:off,min,low,medium,high,turbo,max $DEVICETOPIC/FanSpeedControlCapability/preset/set $EVTPART1
  waterUsage:off,min,low,medium,high,turbo,max $DEVICETOPIC/WaterUsageControlCapability/preset/set $EVTPART1
  locate:PERFORM   $DEVICETOPIC/LocateCapability/locate/set $EVTPART1
  x_raw_payload:textField { valetudo_c($NAME,$EVENT) }
  clean_segment:{valetudo_w($name,'segments')} { valetudo_c($NAME,$EVENT) }
  goto:{valetudo_w($name,'locations')} { valetudo_c($NAME,$EVENT) }
   setStateList operation clean_segment clean_zone goto fanSpeed waterUsage locate x_raw_payload
   stateFormat <a href="http://ip4" target="_blank">state</a>
   timestamp-on-change-reading .*


Jetzt bei clean_seqment "no_Seqment_or_not_supported". Vorher war dort entweder leer oder die richtige Segmente aufgelistet.



Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 17 Oktober 2022, 13:44:29
Was ist das für ein Staubsauger?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 17 Oktober 2022, 14:09:49
Zitat von: drhirn am 17 Oktober 2022, 10:00:36
Was genau hast du gemacht? Ich hab da zwei Beiträge geschrieben, die beide zusammen wahrscheinlich zu einer Workaround-Lösung führen.
Ich habe irgendwie den zweiten Beitrag schon damals nicht komplett verstanden.
Was Du als Workaround gepostet hattest, wird eigentlich im Template gesetzt. Hat das bei Dir nicht funktioniert? oder wurde da gar nichts gesetzt?

Ich dachte bei SalvadoreXXL war das Listing abgeschnitten, aber da steht auch keine setList mit clean_segment - wobei er behauptet hatte es gibt die Auswahl aber es funktioniert nicht  :-[
Offenbar funktioniert die Abfrage beim Template setzen nicht? Aber richtig verstehen tu ich das nicht.

@ SalvadoreXXL  zeig mal bitte ein list m2s und die Ausgabe {ReadingsVal('MQTT2_valetudo_ImpressionableDecimalWasp','.segments','{}') }
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 17 Oktober 2022, 14:43:40
list m2s

Internals:
   CONNECTS   6
   Clients    :MQTT2_DEVICE:MQTT_GENERIC_BRIDGE:
   ClientsKeepOrder 1
   DEF        1883 global
   FD         7
   FUUID      633fd42c-f33f-ac49-ac15-4df5091a89a6c7d9
   NAME       m2s
   NR         54
   PORT       1883
   STATE      Initialized
   TYPE       MQTT2_SERVER
   eventCount 6
   MatchList:
     1:MQTT2_DEVICE ^.
     2:MQTT_GENERIC_BRIDGE ^.
   READINGS:
     2022-10-17 14:41:27   RETAIN          ...
     2022-10-09 15:51:53   lastPublish     cmnd/Waschmaschine/Backlog:StateText1 off; StateText2 on; StateText3 toggle; StateText4 hold; SetOption26 1; SaveData 1
     2022-10-17 09:21:57   nrclients       6
     2022-10-17 09:21:46   state           Initialized
   clients:
     m2s_192.168.xx.xxx_62378 1
     m2s_192.168.xx.xxx_60621 1
     m2s_192.168.xx.xxx_56552 1
     m2s_192.168.xx.xxx_62870 1
     m2s_192.168.xx.xxx_52413 1
     m2s_192.168.xx.x_39804 1
   retain:
     homeassistant/binary_sensor/Robby/Robby_binary_sensor_mop_attachment/config:
       ts         1665991309.31414
       val        {"state_topic":"valetudo/Robby/AttachmentStateAttribute/mop","payload_off":"false","payload_on":"true","entity_category":"diagnostic","name":"Mop attachment","object_id":"valetudo_robby_mop attachment","unique_id":"Robby_binary_sensor_mop_attachment","availability_topic":"valetudo/Robby/$state","payload_available":"ready","payload_not_available":"lost","device":{"manufacturer":"Dreame","model":"D9","name":"Robby","identifiers":["Robby"],"sw_version":"2022.09.0 (Valetudo)","configuration_url":"http://valetudo-impressionabledecimalwasp.local"}}
     homeassistant/binary_sensor/Robby/Robby_binary_sensor_watertank_attachment/config:
       ts         1665991309.26884
       val        {"state_topic":"valetudo/Robby/AttachmentStateAttribute/watertank","payload_off":"false","payload_on":"true","entity_category":"diagnostic","name":"Water tank attachment","object_id":"valetudo_robby_water tank attachment","unique_id":"Robby_binary_sensor_watertank_attachment","availability_topic":"valetudo/Robby/$state","payload_available":"ready","payload_not_available":"lost","device":{"manufacturer":"Dreame","model":"D9","name":"Robby","identifiers":["Robby"],"sw_version":"2022.09.0 (Valetudo)","configuration_url":"http://valetudo-impressionabledecimalwasp.local"}}
     homeassistant/camera/Robby/Robby_camera_MapData/config:
       ts         1665991308.88313
       val        {"topic":"valetudo/Robby/MapData/map-data-hass","name":"Map data","object_id":"valetudo_robby_map data","unique_id":"Robby_camera_MapData","availability_topic":"valetudo/Robby/$state","payload_available":"ready","payload_not_available":"lost","device":{"manufacturer":"Dreame","model":"D9","name":"Robby","identifiers":["Robby"],"sw_version":"2022.09.0 (Valetudo)","configuration_url":"http://valetudo-impressionabledecimalwasp.local"}}
     homeassistant/select/Robby/Robby_select_WaterUsageControlCapability/config:
       ts         1665991309.04456
       val        {"state_topic":"valetudo/Robby/WaterUsageControlCapability/preset","value_template":"{{ value }}","command_topic":"valetudo/Robby/WaterUsageControlCapability/preset/set","options":["low","medium","high"],"icon":"mdi:water-pump","entity_category":"config","name":"Water grade","object_id":"valetudo_robby_water grade","unique_id":"Robby_select_WaterUsageControlCapability","availability_topic":"valetudo/Robby/$state","payload_available":"ready","payload_not_available":"lost","device":{"manufacturer":"Dreame","model":"D9","name":"Robby","identifiers":["Robby"],"sw_version":"2022.09.0 (Valetudo)","configuration_url":"http://valetudo-impressionabledecimalwasp.local"}}
     homeassistant/sensor/Robby/Robby_sensor_ConsumableMonitoringCapability_brush_main/config:
       ts         1665991309.07328
       val        {"state_topic":"valetudo/Robby/hass/Robby_sensor_ConsumableMonitoringCapability_brush_main","unit_of_measurement":"minutes","icon":"mdi:progress-wrench","entity_category":"diagnostic","name":"Main Brush","object_id":"valetudo_robby_main brush","unique_id":"Robby_sensor_ConsumableMonitoringCapability_brush_main","availability_topic":"valetudo/Robby/$state","payload_available":"ready","payload_not_available":"lost","device":{"manufacturer":"Dreame","model":"D9","name":"Robby","identifiers":["Robby"],"sw_version":"2022.09.0 (Valetudo)","configuration_url":"http://valetudo-impressionabledecimalwasp.local"}}
     homeassistant/sensor/Robby/Robby_sensor_ConsumableMonitoringCapability_brush_side_right/config:
       ts         1665991309.11876
       val        {"state_topic":"valetudo/Robby/hass/Robby_sensor_ConsumableMonitoringCapability_brush_side_right","unit_of_measurement":"minutes","icon":"mdi:progress-wrench","entity_category":"diagnostic","name":"Right Brush","object_id":"valetudo_robby_right brush","unique_id":"Robby_sensor_ConsumableMonitoringCapability_brush_side_right","availability_topic":"valetudo/Robby/$state","payload_available":"ready","payload_not_available":"lost","device":{"manufacturer":"Dreame","model":"D9","name":"Robby","identifiers":["Robby"],"sw_version":"2022.09.0 (Valetudo)","configuration_url":"http://valetudo-impressionabledecimalwasp.local"}}
     homeassistant/sensor/Robby/Robby_sensor_ConsumableMonitoringCapability_filter_main/config:
       ts         1665991309.16579
       val        {"state_topic":"valetudo/Robby/hass/Robby_sensor_ConsumableMonitoringCapability_filter_main","unit_of_measurement":"minutes","icon":"mdi:progress-wrench","entity_category":"diagnostic","name":"Main Filter","object_id":"valetudo_robby_main filter","unique_id":"Robby_sensor_ConsumableMonitoringCapability_filter_main","availability_topic":"valetudo/Robby/$state","payload_available":"ready","payload_not_available":"lost","device":{"manufacturer":"Dreame","model":"D9","name":"Robby","identifiers":["Robby"],"sw_version":"2022.09.0 (Valetudo)","configuration_url":"http://valetudo-impressionabledecimalwasp.local"}}
     homeassistant/sensor/Robby/Robby_sensor_ConsumableMonitoringCapability_sensor_all/config:
       ts         1665991309.21829
       val        {"state_topic":"valetudo/Robby/hass/Robby_sensor_ConsumableMonitoringCapability_sensor_all","unit_of_measurement":"minutes","icon":"mdi:progress-wrench","entity_category":"diagnostic","name":"Sensor cleaning","object_id":"valetudo_robby_sensor cleaning","unique_id":"Robby_sensor_ConsumableMonitoringCapability_sensor_all","availability_topic":"valetudo/Robby/$state","payload_available":"ready","payload_not_available":"lost","device":{"manufacturer":"Dreame","model":"D9","name":"Robby","identifiers":["Robby"],"sw_version":"2022.09.0 (Valetudo)","configuration_url":"http://valetudo-impressionabledecimalwasp.local"}}
     homeassistant/sensor/Robby/Robby_sensor_CurrentStatisticsCapability_area/config:
       ts         1665991309.00873
       val        {"state_topic":"valetudo/Robby/CurrentStatisticsCapability/area","icon":"mdi:equalizer","entity_category":"diagnostic","unit_of_measurement":"cm²","name":"Current Statistics Area","object_id":"valetudo_robby_current statistics area","unique_id":"Robby_sensor_CurrentStatisticsCapability_area","availability_topic":"valetudo/Robby/$state","payload_available":"ready","payload_not_available":"lost","device":{"manufacturer":"Dreame","model":"D9","name":"Robby","identifiers":["Robby"],"sw_version":"2022.09.0 (Valetudo)","configuration_url":"http://valetudo-impressionabledecimalwasp.local"}}
     homeassistant/sensor/Robby/Robby_sensor_CurrentStatisticsCapability_time/config:
       ts         1665991308.9851
       val        {"state_topic":"valetudo/Robby/CurrentStatisticsCapability/time","icon":"mdi:equalizer","entity_category":"diagnostic","unit_of_measurement":"seconds","name":"Current Statistics Time","object_id":"valetudo_robby_current statistics time","unique_id":"Robby_sensor_CurrentStatisticsCapability_time","availability_topic":"valetudo/Robby/$state","payload_available":"ready","payload_not_available":"lost","device":{"manufacturer":"Dreame","model":"D9","name":"Robby","identifiers":["Robby"],"sw_version":"2022.09.0 (Valetudo)","configuration_url":"http://valetudo-impressionabledecimalwasp.local"}}
     homeassistant/sensor/Robby/Robby_sensor_MapSegments/config:
       ts         1665991308.84586
       val        {"state_topic":"valetudo/Robby/hass/Robby_sensor_MapSegments","icon":"mdi:vector-selection","json_attributes_topic":"valetudo/Robby/MapData/segments","json_attributes_template":"{{ value }}","name":"Map segments","object_id":"valetudo_robby_map segments","unique_id":"Robby_sensor_MapSegments","availability_topic":"valetudo/Robby/$state","payload_available":"ready","payload_not_available":"lost","device":{"manufacturer":"Dreame","model":"D9","name":"Robby","identifiers":["Robby"],"sw_version":"2022.09.0 (Valetudo)","configuration_url":"http://valetudo-impressionabledecimalwasp.local"}}
     homeassistant/sensor/Robby/Robby_sensor_WifiConfigurationCapability/config:
       ts         1665991308.91059
       val        {"state_topic":"valetudo/Robby/hass/Robby_sensor_WifiConfigurationCapability","value_template":"{{ value_json.state }}","unit_of_measurement":"dBm","icon":"mdi:wifi","json_attributes_topic":"valetudo/Robby/hass/Robby_sensor_WifiConfigurationCapability","json_attributes_template":"{{ value_json.attributes | to_json }}","entity_category":"diagnostic","name":"Wi-Fi configuration","object_id":"valetudo_robby_wi-fi configuration","unique_id":"Robby_sensor_WifiConfigurationCapability","availability_topic":"valetudo/Robby/$state","payload_available":"ready","payload_not_available":"lost","device":{"manufacturer":"Dreame","model":"D9","name":"Robby","identifiers":["Robby"],"sw_version":"2022.09.0 (Valetudo)","configuration_url":"http://valetudo-impressionabledecimalwasp.local"}}
     homeassistant/sensor/Robby/Robby_sensor_error/config:
       ts         1665991309.35735
       val        {"state_topic":"valetudo/Robby/StatusStateAttribute/error","icon":"mdi:alert","entity_category":"diagnostic","name":"Error description","object_id":"valetudo_robby_error description","unique_id":"Robby_sensor_error","availability_topic":"valetudo/Robby/$state","payload_available":"ready","payload_not_available":"lost","device":{"manufacturer":"Dreame","model":"D9","name":"Robby","identifiers":["Robby"],"sw_version":"2022.09.0 (Valetudo)","configuration_url":"http://valetudo-impressionabledecimalwasp.local"}}
     homeassistant/vacuum/Robby/Robby_vacuum/config:
       ts         1665991309.42867
       val        {"name":"Robby","object_id":"valetudo_robby","schema":"state","supported_features":["battery","status","start","stop","pause","return_home","fan_speed","locate"],"state_topic":"valetudo/Robby/hass/Robby_vacuum/state","command_topic":"valetudo/Robby/hass/Robby_vacuum/command","payload_start":"START","payload_pause":"PAUSE","payload_return_to_base":"HOME","payload_stop":"STOP","payload_locate":"LOCATE","fan_speed_list":["low","medium","high","max"],"set_fan_speed_topic":"valetudo/Robby/FanSpeedControlCapability/preset/set","unique_id":"Robby_vacuum","availability_topic":"valetudo/Robby/$state","payload_available":"ready","payload_not_available":"lost","device":{"manufacturer":"Dreame","model":"D9","name":"Robby","identifiers":["Robby"],"sw_version":"2022.09.0 (Valetudo)","configuration_url":"http://valetudo-impressionabledecimalwasp.local"}}
     tasmota/discovery/5CCF7F328C0B/config:
       ts         1665991316.68277
       val        {"ip":"192.168.xx.xxx","dn":"Media-SW","fn":["Fernsehr","XBox","Switch","USB",null,null,null,null],"hn":"Media-SW","mac":"5CCF7F328C0B","md":"Gosund_P1","ty":0,"if":0,"ofln":"Offline","onln":"Online","state":["off","on","toggle","hold"],"sw":"12.1.0","t":"Media-SW","ft":"%prefix%/%topic%/","tp":["cmnd","stat","tele"],"rl":[1,1,1,1,0,0,0,0],"swc":[-1,-1,-1,-1,-1,-1,-1,-1],"swn":[null,null,null,null,null,null,null,null],"btn":[0,0,0,0,0,0,0,0],"so":{"4":0,"11":0,"13":0,"17":0,"20":0,"30":0,"68":0,"73":0,"82":0,"114":0,"117":0},"lk":0,"lt_st":0,"sho":[0,0,0,0],"sht":[[0,0,0],[0,0,0],[0,0,0],[0,0,0]],"ver":1}
     tasmota/discovery/5CCF7F328C0B/sensors:
       ts         1665991316.71015
       val        {"sn":{"Time":"2022-10-17T09:21:56","ANALOG":{"A0":1024},"ENERGY":{"TotalStartTime":"2022-08-24T10:26:10","Total":32.110,"Yesterday":0.696,"Today":0.126,"Power": 0,"ApparentPower": 0,"ReactivePower": 0,"Factor":0.00,"Voltage":222,"Current":0.000}},"ver":1}
     tasmota/discovery/840D8E8C2741/config:
       ts         1665991316.85023
       val        {"ip":"192.168.xx.xxx","dn":"Kaffeemaschine","fn":["Kaffeemaschine",null,null,null,null,null,null,null],"hn":"Kaffeemaschine","mac":"840D8E8C2741","md":"Gosund SP111","ty":0,"if":0,"ofln":"Offline","onln":"Online","state":["off","on","toggle","hold"],"sw":"12.1.0","t":"Kaffeemaschine","ft":"%prefix%/%topic%/","tp":["cmnd","stat","tele"],"rl":[1,0,0,0,0,0,0,0],"swc":[-1,-1,-1,-1,-1,-1,-1,-1],"swn":[null,null,null,null,null,null,null,null],"btn":[0,0,0,0,0,0,0,0],"so":{"4":0,"11":0,"13":0,"17":0,"20":0,"30":0,"68":0,"73":0,"82":0,"114":0,"117":0},"lk":0,"lt_st":0,"sho":[0,0,0,0],"sht":[[0,0,48],[0,0,46],[0,0,110],[0,0,108]],"ver":1}
     tasmota/discovery/840D8E8C2741/sensors:
       ts         1665991316.85596
       val        {"sn":{"Time":"2022-10-17T09:21:56","ENERGY":{"TotalStartTime":"2022-08-24T14:28:14","Total":8.521,"Yesterday":0.193,"Today":0.076,"Power": 0,"ApparentPower":32,"ReactivePower":32,"Factor":0.01,"Voltage":225,"Current":0.142}},"ver":1}
     tasmota/discovery/84F3EB84B1AC/config:
       ts         1665991317.47128
       val        {"ip":"192.168.xx.xxx","dn":"Speaker","fn":["",null,null,null,null,null,null,null],"hn":"Rear-Speaker","mac":"84F3EB84B1AC","md":"TFLAG NX-SM100","ty":0,"if":0,"ofln":"Offline","onln":"Online","state":["off","on","toggle","hold"],"sw":"10.1.0","t":"Speaker","ft":"%prefix%/%topic%/","tp":["cmnd","stat","tele"],"rl":[1,0,0,0,0,0,0,0],"swc":[-1,-1,-1,-1,-1,-1,-1,-1],"swn":[null,null,null,null,null,null,null,null],"btn":[0,0,0,0,0,0,0,0],"so":{"4":0,"11":0,"13":0,"17":0,"20":0,"30":0,"68":0,"73":0,"82":0,"114":0,"117":0},"lk":0,"lt_st":0,"sho":[0,0,0,0],"ver":1}
     tasmota/discovery/84F3EB84B1AC/sensors:
       ts         1665991317.47729
       val        {"sn":{"Time":"2022-10-17T09:21:57","ENERGY":{"TotalStartTime":"2020-12-31T11:06:33","Total":5.318,"Yesterday":0.009,"Today":0.001,"Power": 0,"ApparentPower": 0,"ReactivePower": 0,"Factor":0.00,"Voltage": 0,"Current":0.000}},"ver":1}
     tasmota/discovery/BCDDC20D343B/config:
       ts         1665991317.58825
       val        {"ip":"192.168.xx.xxx","dn":"Subwoofer","fn":["Tasmota",null,null,null,null,null,null,null],"hn":"AQMax","mac":"BCDDC20D343B","md":"TFLAG NX-SM100","ty":0,"if":0,"ofln":"Offline","onln":"Online","state":["off","on","toggle","hold"],"sw":"12.1.1","t":"Subwoofer","ft":"%prefix%/%topic%/","tp":["cmnd","stat","tele"],"rl":[1,0,0,0,0,0,0,0],"swc":[-1,-1,-1,-1,-1,-1,-1,-1],"swn":[null,null,null,null,null,null,null,null],"btn":[0,0,0,0,0,0,0,0],"so":{"4":0,"11":0,"13":0,"17":0,"20":0,"30":0,"68":0,"73":0,"82":0,"114":0,"117":0},"lk":0,"lt_st":0,"sho":[0,0,0,0],"sht":[[0,0,48],[0,0,46],[0,0,110],[0,0,108]],"ver":1}
     tasmota/discovery/BCDDC20D343B/sensors:
       ts         1665991317.59422
       val        {"sn":{"Time":"2022-10-17T09:21:57","ENERGY":{"TotalStartTime":"2020-12-31T11:10:16","Total":66.369,"Yesterday":0.017,"Today":0.001,"Power": 0,"ApparentPower":3748,"ReactivePower":3748,"Factor":0.00,"Voltage":225,"Current":16.666}},"ver":1}
     tasmota/discovery/D8F15BD540FB/config:
       ts         1665991318.12897
       val        {"ip":"192.168.xx.xxx","dn":"Waschmaschine","fn":["Waschmaschine",null,null,null,null,null,null,null],"hn":"Waschmaschine-0251","mac":"D8F15BD540FB","md":"SP111 v1.1","ty":0,"if":0,"ofln":"Offline","onln":"Online","state":["off","on","toggle","hold"],"sw":"12.1.0","t":"Waschmaschine","ft":"%prefix%/%topic%/","tp":["cmnd","stat","tele"],"rl":[1,0,0,0,0,0,0,0],"swc":[-1,-1,-1,-1,-1,-1,-1,-1],"swn":[null,null,null,null,null,null,null,null],"btn":[0,0,0,0,0,0,0,0],"so":{"4":0,"11":0,"13":0,"17":0,"20":0,"30":0,"68":0,"73":0,"82":0,"114":0,"117":0},"lk":0,"lt_st":0,"sho":[0,0,0,0],"sht":[[0,0,0],[0,0,0],[0,0,0],[0,0,0]],"ver":1}
     tasmota/discovery/D8F15BD540FB/sensors:
       ts         1665991318.13499
       val        {"sn":{"Time":"2022-10-17T09:21:58","ENERGY":{"TotalStartTime":"2022-08-24T14:32:18","Total":7.783,"Yesterday":1.314,"Today":0.007,"Power": 1,"ApparentPower":23,"ReactivePower":23,"Factor":0.04,"Voltage":225,"Current":0.104}},"ver":1}
     tele/Kaffeemaschine/LWT:
       ts         1665991316.60265
       val        Online
     tele/Media-SW/LWT:
       ts         1665991316.58764
       val        Online
     tele/Speaker/LWT:
       ts         1665991317.07101
       val        Online
     tele/Subwoofer/LWT:
       ts         1665991317.18883
       val        Online
     tele/Waschmaschine/LWT:
       ts         1665991317.25827
       val        Online
     valetudo/Robby/$state:
       ts         1665991309.5528
       val        ready
     valetudo/Robby/AttachmentStateAttribute/mop:
       ts         1665991309.62311
       val        false
     valetudo/Robby/AttachmentStateAttribute/watertank:
       ts         1665991309.60801
       val        false
     valetudo/Robby/BatteryStateAttribute/level:
       ts         1666005634.81259
       val        100
     valetudo/Robby/BatteryStateAttribute/status:
       ts         1665991309.71662
       val        none
     valetudo/Robby/ConsumableMonitoringCapability/brush-main:
       ts         1665991310.10724
       val        1047600
     valetudo/Robby/ConsumableMonitoringCapability/brush-side_right:
       ts         1665991310.11437
       val        687600
     valetudo/Robby/ConsumableMonitoringCapability/filter-main:
       ts         1665991310.12111
       val        507600
     valetudo/Robby/ConsumableMonitoringCapability/sensor-all:
       ts         1665991310.12807
       val        97200
     valetudo/Robby/CurrentStatisticsCapability/area:
       ts         1666001245.09673
       val        50000
     valetudo/Robby/CurrentStatisticsCapability/time:
       ts         1666001245.08253
       val        120
     valetudo/Robby/FanSpeedControlCapability/preset:
       ts         1665991309.59726
       val        medium
     valetudo/Robby/MapData/map-data:
       ts         1666005272.51253
...
     valetudo/Robby/MapData/map-data-hass:
       ts         1666005272.60081
       val        �PNG
...
     valetudo/Robby/MapData/segments:
       ts         1665991309.75644
       val        {"1":"Kinderzimmer","2":"Kueche","3":"Bad","4":"Wohnzimmer","5":"Schlafzimmer","6":"Flur"}
     valetudo/Robby/StatusStateAttribute/detail:
       ts         1666001276.88664
       val        none
     valetudo/Robby/StatusStateAttribute/status:
       ts         1666005269.7638
       val        docked
     valetudo/Robby/WaterUsageControlCapability/preset:
       ts         1665991309.60286
       val        medium
     valetudo/Robby/WifiConfigurationCapability/frequency:
       ts         1665991309.94577
       val        2.4ghz
     valetudo/Robby/WifiConfigurationCapability/ips:
       ts         1665991309.91961
       val        192.168.11.6
     valetudo/Robby/WifiConfigurationCapability/signal:
       ts         1666010487.50561
       val        -24
     valetudo/Robby/WifiConfigurationCapability/ssid:
       ts         1665991309.8897
       val        Devils Home
     valetudo/Robby/_state:
       ts         1665991308.26513
       val        ready
     valetudo/Robby/hass/Robby_sensor_ConsumableMonitoringCapability_brush_main:
       ts         1665991309.09576
       val        17460
     valetudo/Robby/hass/Robby_sensor_ConsumableMonitoringCapability_brush_side_right:
       ts         1665991309.14384
       val        11460
     valetudo/Robby/hass/Robby_sensor_ConsumableMonitoringCapability_filter_main:
       ts         1665991309.19406
       val        8460
     valetudo/Robby/hass/Robby_sensor_ConsumableMonitoringCapability_sensor_all:
       ts         1665991309.2439
       val        1620
     valetudo/Robby/hass/Robby_sensor_MapSegments:
       ts         1665991308.86332
       val        6
     valetudo/Robby/hass/Robby_sensor_WifiConfigurationCapability:
       ts         1666010487.48675
       val        {"state":-24,"attributes":{"ssid":"Devils Home","ips":["192.168.xx.x"],"frequency":"2.4ghz","signal":-24}}
     valetudo/Robby/hass/Robby_vacuum/state:
       ts         1666005634.80301
       val        {"state":"docked","battery_level":100,"fan_speed":"medium"}
Attributes:
   autocreate complex
   room       MQTT2_DEVICE,Zentral


{ReadingsVal('MQTT2_valetudo_ImpressionableDecimalWasp','.segments','{}') }

{}


Kann ihr mir mal zeigen, was ihr im Valetudo für die MQTT-Connection eingetragen habt bzw. was da rein sollte

Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 17 Oktober 2022, 15:43:59
Zitat von: Otto123 am 17 Oktober 2022, 14:09:49
Ich habe irgendwie den zweiten Beitrag schon damals nicht komplett verstanden.
Was Du als Workaround gepostet hattest, wird eigentlich im Template gesetzt. Hat das bei Dir nicht funktioniert? oder wurde da gar nichts gesetzt?
Es wird falsch gesetzt. Hab's gerade nochmal in einem Test-FHEM ausprobiert.

Gesetzt wird:
clean_zone:{valetudo_w($name,'zones')} { valetudo_c($NAME,$EVENT) }

Brauchen tu ich für den L10Pro aber
clean_segment:{valetudo_w($name,'segments')} { valetudo_c($NAME,$EVENT) }

Mir ist aber gerade aufgefallen, dass Valetudo für den/meinen L10Pro "ZoneCleaningCapability" beim Aufruf von /api/v2/robot/capabilities zurück liefert. Stimmt ja eigentlich nicht.
^egal. Template entscheidet ja nach MapSegmentation
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 17 Oktober 2022, 15:58:00
Zitat von: SalvadoreXXL am 17 Oktober 2022, 14:43:40
Kann ihr mir mal zeigen, was ihr im Valetudo für die MQTT-Connection eingetragen habt bzw. was da rein sollte
Im Anhang
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 17 Oktober 2022, 16:24:29
Übrigens @Otto123:

Sobald ich das Template aktiviere, bekomme ich eine nette Liste an Fehlern:

2022.10.17 16:22:29.766 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.17 16:22:29.766 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at FHEM/SetExtensions.pm line 98.
2022.10.17 16:22:29.766 3: eval: valetudo_w($name,'zones')
2022.10.17 16:22:29.767 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.17 16:22:29.767 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.17 16:22:29.768 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.17 16:22:29.769 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.17 16:22:29.770 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.17 16:22:29.771 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.17 16:22:29.807 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.17 16:22:29.857 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.17 16:22:29.857 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.

2022.10.17 16:22:30.042 1: JSON decoding error, >< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/99_valetudoUtils.pm line 26.


Hat aber keine Priorität. Zuerst mal schauen, dass SalvadoreXXL glücklich ist.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 17 Oktober 2022, 16:29:28
Zitat von: drhirn am 17 Oktober 2022, 15:43:59
Es wird falsch gesetzt. Hab's gerade nochmal in einem Test-FHEM ausprobiert.

Gesetzt wird:
clean_zone:{valetudo_w($name,'zones')} { valetudo_c($NAME,$EVENT) }

Brauchen tu ich für den L10Pro aber
clean_segment:{valetudo_w($name,'segments')} { valetudo_c($NAME,$EVENT) }

Moment mal. Kann das sein, dass es einen Unterschied macht, ob man "autocreate" am IODev verwendet oder das Gerät händisch anlegt (defmod Staubi MQTT2_CLIENT)?
Ich hab's mir gerade automatisch anlegen lassen und da hat's dann gepasst mit dem Template.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 17 Oktober 2022, 19:15:55
Zitatautocreate complex
Böse Einstellung!
Was steht hier auf Seite 1 ? :) https://forum.fhem.de/index.php/topic,121017.0.html
ZitatDie Anbindung per MQTT ist einfach:
Voraussetzung: MQTT2_SERVER in FHEM vorhanden, autocreate steht auf simpel

Zitat von: drhirn am 17 Oktober 2022, 16:24:29
Übrigens @Otto123:
Sobald ich das Template aktiviere, bekomme ich eine nette Liste an Fehlern:
Da ist der json Eintrag leer, so wie bei SalvadoreXXL auch.
{ReadingsVal('MQTT2_valetudo_ImpressionableDecimalWasp','.segments','{}') }liefert leer, d.h vom Staubsauger sind keine Segmente gesendet.
Warum? Erstmal keine Ahnung.

Eventuell weil MapData im MQTT Setup von valetudo aus ist? So kommen die Daten normal ins Reading. Kann auch sein die werden jetzt nur noch bei bestimmten Aktionen übertragen! Das neue Verhalten muss ich auch berücksichtigen.
$DEVICETOPIC/MapData/segments:.* .segments

Zu Beitrag #198
Ich frage die Eigenschaften bei der Anwendung des Templates ab. Das ist eventuell zu fragil :( deswegen würde ich ja gerne wissen was genau passiert ist.
sub valetudo_f {
    my $NAME = shift;   # Devicename of the robot
    my $substr = shift; # requested Feature like GoToLocation or MapSegmentation
    my $ip = ReadingsVal($NAME,'ip4',(split ',',ReadingsVal($NAME,'ips','error'))[0]);
    my $string = GetHttpFile($ip, '/api/v2/robot/capabilities');
    index($string, $substr) == -1 ? '0':'1';
}
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 17 Oktober 2022, 20:12:41
Provide Map Data ist bei mir  immer an gewesen.

Allerdings wurden bei manchen Versuchen die einzelnen Segmente erst deutlich später angezeigt. Dauerte manchmal auch 1-2 Stunden. Keine Ahnung, was das triggert.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 17 Oktober 2022, 21:11:54
es gibt übrigens valetudo 2022.10  :D
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 17 Oktober 2022, 21:24:31
Zitat von: Otto123 am 17 Oktober 2022, 21:11:54
es gibt übrigens valetudo 2022.10  :D

Habs schon gesehen. Updaten? Scheint sich was zu tun bei MQTT ...
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 17 Oktober 2022, 21:37:44
Hab jetzt die neue Verion drauf. Mittlerweile werden auch die Segmente angezeigt. Kommando bewirkt aber wiederum nix ...

Werde jetzt nochmal löschen und neu anlegen. Mal sehen, was passiert.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 17 Oktober 2022, 22:03:11
es sieht immer noch so aus, als ob Dein mqtt2 Server auf autocreate complex steht. Ich weiß nicht was mit dieser Einstellung funktioniert.
Außerdem ist bei Neuanlage noch die valetudeUtils fehlerhaft.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 17 Oktober 2022, 23:27:58
Zitat von: Otto123 am 17 Oktober 2022, 22:03:11
Außerdem ist bei Neuanlage noch die valetudeUtils fehlerhaft.

Was muss noch geändert werden? Die zwei Änderungen von drhirn sind drin ...
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 17 Oktober 2022, 23:35:30
was steht nach dem Befehl in lastPublish des MQTT Servers drin?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 17 Oktober 2022, 23:39:15
im m2s

lastPublish

cmnd/Waschmaschine/Backlog:StateText1 off; StateText2 on; StateText3 toggle; StateText4 hold; SetOption26 1; SaveData 1


Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 18 Oktober 2022, 08:55:47
Hehe
Lass mal einen Befehl auf den Staubsauger los (via FHEM). Und poste das dann bitte nochmal. Die Waschmaschine ist jetzt nicht so interessant ;D
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 18 Oktober 2022, 09:57:35
lastPublish ändert sich nicht, egal was ich mache. Scheint ein Anzeigefehler zu sein. Auf Start/Stop usw. reagiert der D9 auch ganz normal. Nur Seqmente mag er wohl nicht.

Oder ist das falsch:

defmod m2s MQTT2_SERVER 1883 global
attr m2s autocreate simple


Über Nacht haben sich auch wieder die Segmente eingestellt. Sieht jetzt nur etwas anders aus.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 18 Oktober 2022, 11:39:23
Das heißt? Funktioniert bei dir jetzt alles?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 18 Oktober 2022, 12:30:52
@Otto123: Ich hab da mal einen Patch für die 99_valetudoUtils.pm angehängt. Eh die bekannte Änderung.
Testen ist irgendwie mühsam, wenn man das dauernd händisch ändern muss ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 18 Oktober 2022, 13:01:57
Die IP wird nicht oft genug via MQTT aktualisiert, als dass valetudo_f die Möglichkeiten des Roboters erfragen könnte. Deswegen auch keinen set-Befehl clean_segment. IP müsste man im Template als Parameter abfragen. Aber ich komme gerade nicht drauf, wie man das macht.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 18 Oktober 2022, 13:57:19
ZitatIP müsste man im Template als Parameter abfragen. Aber ich komme gerade nicht drauf, wie man das macht.

Wenn das wirklich so sein sollte und umgesetzt wird:

dann wie gerade die Tage erst umgesetzt hier (https://forum.fhem.de/index.php/topic,129544.msg1239611.html#msg1239611).

Parameter kann man dann über die Kommandozeile (mehrere Parameter Leerzeichengetrennt) direkt übergeben
<templatename> <varname=x.x.x.x>

oder über den setter attTremplate, dann wird der Parameter über das Dialogfeld abgefragt.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 18 Oktober 2022, 15:02:57
Zitat von: drhirn am 18 Oktober 2022, 12:30:52
@Otto123: Ich hab da mal einen Patch für die 99_valetudoUtils.pm angehängt. Eh die bekannte Änderung.
Testen ist irgendwie mühsam, wenn man das dauernd händisch ändern muss ;)
Habe es eingecheckt - war schon vorbereitet, ich dachte es springt noch einer auf, der mir sagt warum das Internal DEVICETOPIC weggefallen ist.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 18 Oktober 2022, 15:06:52
Da wäre ein Patch für mqtt2.template. Die IP wird jetzt als Parameter abgefragt und ein Reading "ip4" gesetzt (das ja ein readingsList dann auch verwendet wird). Damit kann sich die 99_valetudoUtils.pm die Fähigkeiten des Roboters richtig holen.

Die Segmente werde nur an MQTT gesendet, wenn der Roboter der Meinung ist, er will jetzt ein Update der Map schicken. Hier (https://github.com/Hypfer/Valetudo/discussions/1616) hab ich nachgefragt. Man könnte die ja aber auch über das API holen. Bzw. ist das in der 99_valetudoUtils.pm eh schon so halb vorbereitet wenn ich das richtig sehe. Das fertig zu machen, übersteigt aber leider meine Kompetenz.

**edit**
Ich darf darauf hinweisen, dass auch dieser Patch nur ein Vorschlag ist. Keine Ahnung, ob das alles so passt oder ob man's anders/besser lösen kann.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 18 Oktober 2022, 15:15:51
Zitat von: drhirn am 18 Oktober 2022, 13:01:57
Die IP wird nicht oft genug via MQTT aktualisiert, als dass valetudo_f die Möglichkeiten des Roboters erfragen könnte. Deswegen auch keinen set-Befehl clean_segment. IP müsste man im Template als Parameter abfragen. Aber ich komme gerade nicht drauf, wie man das macht.
Naja, das zweite Problem sind ja die segments - die kommen nun auch uU nicht mehr mit. Ich überlege so eine Art setup setter, der einfach die Abfrage der Werte und Features triggert. Hypfer sagt ja selbst: Es kommt nicht alles per mqtt - man wird einige Dinge über Rest machen müssen.

Und man könnte natürlich aus dem Wert was machen (Beispiel)
Zitatmqtt2s_CONN mqtt2s_192.168.55.100_53438
Den sollte es ja immer geben - falls man Internals überhaupt "strategisch" verwenden sollte  ::)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 18 Oktober 2022, 15:17:07
Zitat von: drhirn am 18 Oktober 2022, 11:39:23
Das heißt? Funktioniert bei dir jetzt alles?

Bis auf die Segmente - Ja (war ja auch schon vor meiner Anfrage so). Bisher im Verhalten keine Änderung.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 18 Oktober 2022, 15:19:31
Zitat von: drhirn am 18 Oktober 2022, 15:06:52
Die IP wird jetzt als Parameter abgefragt und ein Reading "ip4" gesetzt (das ja ein readingsList dann auch verwendet wird).

Nach einiger Zeit (wenn auch die Segmente übertragen wurden) habe ich auch ein Reading ip4 - das passt auch zur tatsächlich verwendetetn IPV4.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 18 Oktober 2022, 15:20:38
Zitat von: Otto123 am 18 Oktober 2022, 15:15:51
Hypfer sagt ja selbst: Es kommt nicht alles per mqtt - man wird einige Dinge über Rest machen müssen.

Hypfer hat aber auch gerade gesagt, die segments sind retained. Kann ich zwar gerade nicht nachvollziehen. Aber wenn das so ist, sollten die ja auf jeden Fall irgendwo sein.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 18 Oktober 2022, 15:22:11
@SalvadoreXXl
Wirf das mal angepasst mit Deinen Namen in die FHEM Kommanozeile
{my $name='MQTT2_ClumsyQuirkyCattle';;my $EVENT='clean_segment BadDusche';;valetudo_c($name,$EVENT)}

@drhirn
Aber wenn man das MQTT2 Device löscht und neu aufsetzen will? Wer sagt dem Roboter schicke jetzt die segments?
Danke für den Vorschlag ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 18 Oktober 2022, 15:23:44
Zitat von: Otto123 am 18 Oktober 2022, 15:22:11
@SalvadoreXXl
Wirf das mal angepasst mit Deinen Namen in die FHEM Kommanozeile
{my $name='MQTT2_ClumsyQuirkyCattle';;my $EVENT='clean_segment BadDusche';;valetudo_c($name,$EVENT)}

@drhirn
Aber wenn man das MQTT2 Device löscht und neu aufsetzen will? Wer sagt dem Roboter schicke jetzt die segments?


valetudo/MQTT2_valetudo_ImpressionableDecimalWasp/MapSegmentationCapability/clean/set {"customOrder":"true","iterations":1,"segment_ids":[null]}
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 18 Oktober 2022, 15:25:25
Zitatvaletudo/MQTT2_valetudo_ImpressionableDecimalWasp/MapSegmentationCapability/clean/set {"customOrder":"true","iterations":1,"segment_ids":[null]}
Da fehlt die ID :(
Edit: Moment! Da fehlt die Anpassung in der 99_valetudoUtils!!! Hier steht der Devicename und nicht der Topic!
Siehe Antwort #211

Hast Du auch den Segment Namen von Dir genommen? Oder BadDusche?

Da bräuchte ich mal die Ausgabe von
{my $NAME='MQTT2_valetudo_ImpressionableDecimalWasp';;ReadingsVal($NAME,'.segments',q{})}

Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 18 Oktober 2022, 15:26:44
Zitat von: Otto123 am 18 Oktober 2022, 15:22:11
Aber wenn man das MQTT2 Device löscht und neu aufsetzen will? Wer sagt dem Roboter schicke jetzt die segments?
Ja, eh. Der Broker kennt sie aber. Kann man sie dem nicht irgendwie entlocken?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 18 Oktober 2022, 15:29:57
vielleicht  ??? aber man kann sie auch per RestAPI holen ;) und vielleicht andere Dinge die im Template auch bloß wieder "aufwendig" gehen. Zumal jeder Dialog an der Stelle für den User immer irgendwie verwirrend ist. das hat an der Stelle immer was von der Frage " Willst Du Cookies"?  ;D
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 18 Oktober 2022, 15:30:36
Zitat von: Otto123 am 18 Oktober 2022, 15:29:57
vielleicht  ??? aber man kann sie auch per RestAPI holen ;)

Haha, ja. Hab ich in der Sekunde, in der deine Antwort kam, auch gedacht ;D
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 18 Oktober 2022, 15:48:58
Zitat von: Otto123 am 18 Oktober 2022, 15:25:25
Da bräuchte ich mal die Ausgabe von
{my $NAME='MQTT2_valetudo_ImpressionableDecimalWasp';;ReadingsVal($NAME,'.segments',q{})}


{"1":"Kinderzimmer","2":"Kueche","3":"Bad","4":"Wohnzimmer","5":"Schlafzimmer","6":"Flur"}
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 18 Oktober 2022, 15:57:48
Zitat von: Otto123 am 18 Oktober 2022, 15:25:25
Da fehlt die ID :(
Edit: Moment! Da fehlt die Anpassung in der 99_valetudoUtils!!! Hier steht der Devicename und nicht der Topic!
Siehe Antwort #211

Hab die beiden Änderungen von drhirn drin. Hab nochmals in die Valetudoutils nochmal reingeschaut. Änderung war wieder weg, obwohl FHEM gestoppt war und kein Fehler beim Speichern kam.  Hab anschließend nochmal geschaut und die Änderung war drin. Jetzt nicht mehr. Ich seh hier so langsam nicht mehr durch mit den ganzen Änderungen ...

Kannst du mir mal beide Dateien komplett hier anhängen?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 18 Oktober 2022, 16:02:54
Sobald du das Template auf das Device anwendest, wird die 99_valetudoUtils.pm wieder mit der aus dem SVN überschrieben. Das ist fies.
Aber nachdem Otto123 die Änderung von mir eingecheckt hat, müsste die inzwischen richtig sein.
https://svn.fhem.de/trac/export/26554/trunk/fhem/contrib/AttrTemplate/99_valetudoUtils.pm (zum Download)
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/AttrTemplate/99_valetudoUtils.pm (zum Ansehen)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 18 Oktober 2022, 16:27:09
Oder in der FHEM Kommandozeile holen:
{ $data{f}='99_valetudoUtils.pm';;{ Svn_GetFile("contrib/AttrTemplate/$data{f}", "FHEM/$data{f}", sub(){CommandReload(undef, $data{f})}) } }
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 18 Oktober 2022, 18:23:18
Zitat von: Otto123 am 18 Oktober 2022, 16:27:09
Oder in der FHEM Kommandozeile holen:
{ $data{f}='99_valetudoUtils.pm';;{ Svn_GetFile("contrib/AttrTemplate/$data{f}", "FHEM/$data{f}", sub(){CommandReload(undef, $data{f})}) } }

Ausgeführt, D9 gelöscht und wieder anlegen lassen. Nach knapp 10 Minuten waren die Segmente da. Mein D9 hat jetzt auf clean_seqment reagiert. Hab leider keine Zeit zu weiteren Tests jetzt. Melde mich später nochmal.

Danke vorerst!

Gruß aus dem Leipziger Norden!
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 18 Oktober 2022, 20:29:35
Zitat von: drhirn am 18 Oktober 2022, 15:06:52
Da wäre ein Patch für mqtt2.template. Die IP wird jetzt als Parameter abgefragt und ein Reading "ip4" gesetzt (das ja ein readingsList dann auch verwendet wird). Damit kann sich die 99_valetudoUtils.pm die Fähigkeiten des Roboters richtig holen.

Die Segmente werde nur an MQTT gesendet, wenn der Roboter der Meinung ist, er will jetzt ein Update der Map schicken. Hier (https://github.com/Hypfer/Valetudo/discussions/1616) hab ich nachgefragt. Man könnte die ja aber auch über das API holen. Bzw. ist das in der 99_valetudoUtils.pm eh schon so halb vorbereitet wenn ich das richtig sehe. Das fertig zu machen, übersteigt aber leider meine Kompetenz.

**edit**
Ich darf darauf hinweisen, dass auch dieser Patch nur ein Vorschlag ist. Keine Ahnung, ob das alles so passt oder ob man's anders/besser lösen kann.
Was hältst Du von der Variante?
Index: contrib/AttrTemplate/99_valetudoUtils.pm
===================================================================
--- contrib/AttrTemplate/99_valetudoUtils.pm    (Revision 26554)
+++ contrib/AttrTemplate/99_valetudoUtils.pm    (Arbeitskopie)
@@ -120,9 +120,10 @@
sub valetudo_f {
     my $NAME = shift;   # Devicename of the robot
     my $substr = shift; # requested Feature like GoToLocation or MapSegmentation
-    my $ip = ReadingsVal($NAME,'ip4',(split ',',ReadingsVal($NAME,'ips','error'))[0]);
+    # my $ip = ReadingsVal($NAME,'ip4',(split ',',ReadingsVal($NAME,'ips','error'))[0]);
+    my $ip = ( split '_', InternalVal($NAME,ReadingsVal($NAME,'IODev','').'_CONN','error') )[1] ;
     my $string = GetHttpFile($ip, '/api/v2/robot/capabilities');
-    index($string, $substr) == -1 ? '0':'1';
+    index($string, $substr) == -1 ? 0:1;
}
#######
# add a line to multiline Attribute setList or regList
Nur Änderung in der Utils, keine Änderung im Template.

Das Internal <IODev>_CONN muss ja zu dem Zeitpunkt da sein, sonst gäbe es das Device nicht. 8)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 18 Oktober 2022, 20:51:35
Zitat von: Otto123 am 18 Oktober 2022, 20:29:35
Was hältst Du von der Variante?
Deine Idee ist weniger Aufwand für den User und in der Umsetzung. Also, nicht, dass er nötig wäre, aber meinen Segen hast du ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 18 Oktober 2022, 21:05:23
So, vielen Dank ihr Beiden! Funktioniert jetzt wie gewollt. Der WAF steigt jetzt enorm, wenn Frauchen das selbst mit ein paar Knöpfen bedienen kann  :) Sie mag die App nicht so ...
Paar Kleinigkeiten noch an der Oberfläche und ich bin zufrieden.
:)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 19 Oktober 2022, 09:17:38
Zitat von: Otto123 am 18 Oktober 2022, 20:29:35
Nur Änderung in der Utils, keine Änderung im Template.

Andererseits, das Template ändern sollten wir sowieso. Es kam ja ein neues Topic dazu. Und Readings wieder löschen, die extra gesetzt wurden (attrTemplateVersion), ist jetzt auch eher unvorteilhaft ;)

*edit*
Patch angehängt
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 19 Oktober 2022, 09:29:17
Moin,

ja da hast Du Recht. Die Änderungshäufigkeit des Templates will ich gering halten. Und im Template stehen noch ein paar Änderungen an, da brauch ich noch etwas. Ich würde gerne sowas wie ein setup setter machen, der u.a. auch die Zonen abspeichern kann, was valetudo ja nicht mehr macht.

Zumal es ja derzeit so ist: Die Anwendung des Templates verursacht Fehler die darin liegen, dass die Utils das neue Verhalten von Valetudo nicht berücksichtigt.

Welches Topic meinst Du kam hinzu?

Gruß Otto
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 19 Oktober 2022, 09:47:13
Ja, versteh ich.

Das Topic: OperationModeControlCapability/preset
Fehlt leider noch in der valetudo-Doku. Bei der ganz neuen Valetudo-Version kann man da einstellen, ob der Roboter im Modus "saugen", "saugen und wischen" oder nur "wischen" laufen soll.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 19 Oktober 2022, 10:49:34
ja ok den habe ich auch gesehen. Ich war mir nicht sicher ob der nur Ergebnis meiner Versuche war. Ich habe da jetzt sogar in Summe 3 in meiner Readinglist
valetudo/ClumsyQuirkyCattle/MapSegmentationCapability/clean:.* { json2nameValue($EVENT) }
valetudo/ClumsyQuirkyCattle/OperationModeControlCapability/preset:.* preset
valetudo/ClumsyQuirkyCattle/StatusStateAttribute/error_description:.* error_description
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 19 Oktober 2022, 11:32:15
Den ersten hab ich (noch) nicht. Aber stimmt, den dritten hab ich vergessen.
StatusStateAttribute/error liefert inzwischen ein JSON. Z.B. {"severity":{"kind":"none","level":"none"},"subsystem":"none","message":""}. Ist die Frage, ob man das aufdröseln will.
Und dann gäbe es noch die von "I can't believe it's not valetudo". Da könnte man sich überlegen, ob man die nicht einfach einbaut, aber standardmäßig nichts anzeigen lässt.

Ich persönlich finde übrigens eine Select-Liste bei clean_segment schöner als extra noch ein Pop-Up (multiple-strict).
Edit: Wusste zu diesem Zeitpunkt nicht, dass man auch mehrere Segmente gleichzeitig saugen kann. Deswegen macht multiple-strict Sinn.

Meine produktive readingsList hab ich händisch zusammen gebaut. Vielleicht findet sich darin ja noch ein bisschen Inspiration:

attr Staubi readingList $DEVICETOPIC/StatusStateAttribute/status:.* state\
$DEVICETOPIC/WifiConfigurationCapability/signal:.* wifiSignal\
$DEVICETOPIC/WifiConfigurationCapability/ssid:.* wifiSSID\
$DEVICETOPIC/WifiConfigurationCapability/frequency:.* wifiFrequency\
$DEVICETOPIC/BatteryStateAttribute/level:.* batteryLevel\
$DEVICETOPIC/BatteryStateAttribute/status:.* batteryState\
$DEVICETOPIC/StatusStateAttribute/detail:.* stateDetail\
$DEVICETOPIC/StatusStateAttribute/error:.* stateError\
$DEVICETOPIC/AttachmentStateAttribute/[a-zA-Z\-_]+:.* { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),;; {"$1"=>$EVENT} }\
$DEVICETOPIC/CurrentStatisticsCapability/time:.* { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),;; {"cleaningTime"=>($EVENT / 60)." min"} }\
$DEVICETOPIC/MapData/segments:.* .segments\
$DEVICETOPIC/MapData/map:.* { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),;; {"map"=>"<html><div style='width: 300px;; height: 600px;;'><img src='".$EVENT."'></div></html>"} }\
$DEVICETOPIC/FanSpeedControlCapability/preset:.* fanSpeed\
$DEVICETOPIC/WaterUsageControlCapability/preset:.* waterUsage\
$DEVICETOPIC/LocateCapability/locate:.* locate\
$DEVICETOPIC/CurrentStatisticsCapability/area:.* { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),; {"cleanedArea"=>sprintf("%.2f",($EVENT / 10000))." m2"} }\
$DEVICETOPIC/ConsumableMonitoringCapability/[a-zA-Z\-_]+:.* { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),;; {"consumable-$1"=>Time::Seconds->new($EVENT)->pretty} }
$DEVICETOPIC/MapSegmentationCapability/clean/set:.* {}
$DEVICETOPIC/ZoneCleaningCapability/start/set:.* {}
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 19 Oktober 2022, 11:39:26
Zitat von: Otto123 am 18 Oktober 2022, 20:29:35
Das Internal <IODev>_CONN muss ja zu dem Zeitpunkt da sein, sonst gäbe es das Device nicht. 8)

Ich hab das Internal nirgends. Wo finde ich das?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: rudolfkoenig am 19 Oktober 2022, 11:52:30
ZitatIch hab das Internal nirgends. Wo finde ich das?
Das kriegen nur die Instanzen mit einem MQTT2_SERVER als IODev:
   IODev      m2s
   LASTInputDev m2s
   MSGCNT     302328
   NAME       <deleted>
   NR         306
   STATE      ON
   TYPE       MQTT2_DEVICE
   eventCount 302328
   m2s_CONN   m2s_192.168.178.33_2485
   m2s_MSGCNT 302328
   m2s_TIME   2022-10-19 11:45:49
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 19 Oktober 2022, 11:54:02
Ah, ok. Danke Rudi!
Dann funktioniert die Lösung nicht, sobald einer MQTT2_CLIENT verwendet.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: rudolfkoenig am 19 Oktober 2022, 12:00:52
Bei MQTT2_CLIENT ist die Gegenseite dieser Netzwerkschicht nicht bekannt.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 19 Oktober 2022, 14:42:15
Zitat von: drhirn am 19 Oktober 2022, 11:54:02
Ah, ok. Danke Rudi!
Dann funktioniert die Lösung nicht, sobald einer MQTT2_CLIENT verwendet.
Du meinst wenn einer valetudo -> mosquitto -> M2_CLIENT verwendet. Ok daran habe ich nicht gedacht. Dann brauchen wir final die Kombination aus meinem und deinem Vorschlag  :D
Aber zur Ehrenrettung hatte ich für mein "Forschungsprojekt" ja MQTT2_SERVER als Voraussetzung definiert  :P
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 19 Oktober 2022, 14:54:25
Hehe, ja, stimmt :D
Und trotzdem, soll ja Leute geben, die das nicht machen. Mich z.B. ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: meier81 am 19 Oktober 2022, 22:00:22
Hallo euch allen,

gibt es die Möglichkeit die readings zu runden, geht um folgendes hier:

   2022-10-19 21:54:11   cleanedArea     44.8775 m2

Dann könnte ich das auf 2 Stellen runden und die Anzeige wäre gleich wie in valetudo. Ist zur Zeit so konfiguriert:

$DEVICETOPIC/CurrentStatisticsCapability/area:.* { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),;; {"cleanedArea"=>($EVENT / 10000)." m2"} }

Gruß Markus
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 19 Oktober 2022, 22:23:14
ja, in der Art (als Test für die FHEM Kommandozeile){return sprintf "%.2f", 44.8775}
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 20 Oktober 2022, 11:50:40
Gute Idee!
$DEVICETOPIC/CurrentStatisticsCapability/area:.* { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),; {"cleanedArea"=>sprintf("%.2f",($EVENT / 10000))." m2"} }
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 20 Oktober 2022, 12:31:13
Ich habe das mit Zonen mal so leidlich implementiert, vielleicht will es jemand testen.
Die dazu notwendige utils liegt derzeit auf meiner GitHub Seite (https://github.com/heinz-otto/scripts/tree/master/fhem), die sollte kompatibel zu allem bisherigen sein:
{ $data{f}='99_valetudoUtils.pm';; qx(wget -qO "./FHEM/$data{f}" "https://raw.githubusercontent.com/heinz-otto/scripts/master/fhem/$data{f}");; fhem("sleep 2;;reload $data{f}") }
ein neues Reading anlegen (Wird in Zukunft automatisch gemacht)
setreading MQTT2_ClumsyQuirkyCattle valetudo_release 2022.10.0
dazu dann drei neue setList Einträge:
  zoneNew:textField { fhem("setreading $NAME .zones ".valetudo_z($NAME,$EVENT) );return undef}
  zoneRename:textField {fhem("setreading $NAME .zones ".valetudo_z($NAME,$EVENT) );return undef}
  zonesDelete:noArg {fhem("deletereading $NAME .zones");return undef}

Dann in der valetudo Oberfläche eine Zone "machen" -> Add -> Position und Größe festlegen -> lange auf "Clean 1 Zones" drücken (https://github.com/Hypfer/Valetudo/releases/tag/2022.05.1)
Mit etwas FHEM Code könnte man auch ein GoTo Location implementieren, was mein Dreame L10 pro von Hause aus nicht kann. Beispiel: kleine Zone Eimer definiert und dann:
set MQTT2_ClumsyQuirkyCattle clean_zone Eimer;sleep MQTT2_ClumsyQuirkyCattle:cleanerState:.returning; set MQTT2_ClumsyQuirkyCattle stop

Ich hoffe das es gut funktioniert.  :)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 20 Oktober 2022, 12:43:02
Zitat von: Otto123 am 20 Oktober 2022, 12:31:13
lange auf "Clean 1 Zones" drücken

Haha, da muss man mal drauf kommen. Kannte ich nicht den Trick.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 20 Oktober 2022, 12:49:35
findet man hier https://github.com/Hypfer/Valetudo/releases/tag/2022.05.1
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 20 Oktober 2022, 13:01:14
Hmm. Anlegen, umbenennen und löschen geht. Bei "clean_zone" bekomme ich aber keine Auswahl. Und wenn ich einfach set ... clean_zone Zone1 mache, tut sich gar nichts.


defmod staubi MQTT2_DEVICE fhem_test
attr staubi alias staubi
attr staubi devicetopic valetudo/staubi
attr staubi event-on-change-reading .*
attr staubi icon vacuum_top
attr staubi model valetudoV2
attr staubi readingList $DEVICETOPIC/\x24state:.* _state\
  $DEVICETOPIC/(Att.*|Basic.*|Consum.*|Curr.*|Loc.*|Wifi.*)/[a-zA-Z\-_]+:.* { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),;; $1 eq 'ips'? {"ip4"=> (split ',',$EVENT)[0]}:{"$1"=>$EVENT} }\
  $DEVICETOPIC/BatteryStateAttribute/level:.* batteryPercent\
  $DEVICETOPIC/BatteryStateAttribute/status:.* batteryState\
  $DEVICETOPIC/FanSpeedControlCapability/preset:.* fanSpeed\
  $DEVICETOPIC/GoToLocationCapability/presets:.* .locationsPresets\
  $DEVICETOPIC/GoToLocationCapability/go:.* {}\
  $DEVICETOPIC/MapData/map-data:.* {}\
  $DEVICETOPIC/MapData/segments:.* .segments\
  $DEVICETOPIC/StatusStateAttribute/status:.* { {"state"=>$EVENT,"cleanerState"=>$EVENT} }\
  $DEVICETOPIC/StatusStateAttribute/detail:.* stateDetail\
  $DEVICETOPIC/StatusStateAttribute/error:.* stateError\
  $DEVICETOPIC/StatusStateAttribute/error_description:.* stateErrorDescription\
  $DEVICETOPIC/WaterUsageControlCapability/preset:.* waterUsage\
  $DEVICETOPIC/ZoneCleaningCapability/presets:.* .zonesPresets\
  $DEVICETOPIC/ZoneCleaningCapability/start:.* {}\
  $DEVICETOPIC/OperationModeControlCapability/preset:.* operationMode\
  $DEVICETOPIC/MapSegmentationCapability/clean:.* { json2nameValue($EVENT,'clean_') }\
fhem_test:valetudo/staubi/MapSegmentationCapability/clean/set:.* { json2nameValue($EVENT) }
attr staubi room MQTT2_DEVICE
attr staubi setList pause:noArg $DEVICETOPIC/BasicControlCapability/operation/set PAUSE\
  start:noArg $DEVICETOPIC/BasicControlCapability/operation/set START\
  stop:noArg $DEVICETOPIC/BasicControlCapability/operation/set STOP\
  charge:noArg $DEVICETOPIC/BasicControlCapability/operation/set HOME\
  clean_zone:{valetudo_w($name,'zones')} { valetudo_c($NAME,$EVENT) }\
  fanSpeed:off,min,low,medium,high,turbo,max $DEVICETOPIC/FanSpeedControlCapability/preset/set $EVTPART1\
  waterUsage:off,min,low,medium,high,turbo,max $DEVICETOPIC/WaterUsageControlCapability/preset/set $EVTPART1\
  locate:PERFORM   $DEVICETOPIC/LocateCapability/locate/set $EVTPART1\
  x_raw_payload:textField { valetudo_c($NAME,$EVENT) }\
  clean_segment:{'multiple-strict,'.valetudo_w($name,'segments')} { valetudo_c($NAME,$EVENT) }\
  zoneNew:textField { fhem("setreading $NAME .zones ".valetudo_z($NAME,$EVENT) );;return undef}\
  zoneRename:textField {my $val = ReadingsVal($NAME,'.zones','');;$val =~ s/$EVTPART1/$EVTPART2/;;fhem("setreading $NAME .zones ".$val);;return undef}\
  zonesDelete:noArg {fhem("deletereading $NAME .zones");;return undef}
attr staubi setStateList operation clean_segment clean_zone goto fanSpeed waterUsage locate x_raw_payload
attr staubi stateFormat <a href="http://xxx.xxx.xxx.xxx" target="_blank">state</a>
attr staubi timestamp-on-change-reading .*

setstate staubi 2022-10-20 12:56:27 .zones {"Zone1":{"action":"clean","zones":[{"iterations":1,"points":{"pA":{"x":2905,"y":2993},"pB":{"x":3055,"y":2993},"pC":{"x":3055,"y":3143},"pD":{"x":2905,"y":3143}}}]}}
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 20 Oktober 2022, 13:12:53
Ja sorry da fehlt bei dir die release Info - warte ...
auf die Schnelle:
setreading MQTT2_.... valetudo_release 2022.10.0

und das funktioniert bei dir nicht :(
{my $NAME='MQTT2_ClumsyQuirkyCattle';;
my $url = '/api/v2/valetudo/version' ;;
my $ip = ( split '_', InternalVal($NAME,ReadingsVal($NAME,'IODev','').'_CONN','error') )[1] ;;
my $json = GetHttpFile($ip, $url);;
my $ret = decode_json($json)->{release};;
fhem("setreading $NAME valetudo_release $ret")
}

Da muss ich mir noch was einfallen lassen.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 20 Oktober 2022, 13:13:56
Hab's gerade gesehen. Hab das Reading händisch erstellt und jetzt am Broker gefunden:
call method "encode_json" on unblessed reference at ./FHEM/99_valetudoUtils.pm line 110.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 20 Oktober 2022, 13:17:27
ersetz das mal mit toJSON - kommt zweimal vor
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 20 Oktober 2022, 13:20:54
Funktioniert. Sehr gut!

GoTo wäre übrigens superpraktisch
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 20 Oktober 2022, 13:23:59
Zitat von: drhirn am 20 Oktober 2022, 13:20:54
GoTo wäre übrigens superpraktisch
hab ich noch rein editiert https://forum.fhem.de/index.php/topic,121017.msg1240531.html#msg1240531

Und den Code im Github gefixed
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 20 Oktober 2022, 13:26:39
set MQTT2_ClumsyQuirkyCattle clean_zone Eimer;sleep MQTT2_ClumsyQuirkyCattle:cleanerState:.returning; set MQTT2_ClumsyQuirkyCattle stop
Wilder Hack ;D

Werde ich nie verstehen, warum der Roboter das nicht kann.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 20 Oktober 2022, 13:31:01
Für die Nachrüstung solcher Features und andere Ideen gibt es ja FHEM ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 25 Oktober 2022, 08:56:36
Zitat von: Otto123 am 20 Oktober 2022, 12:31:13
Ich habe das mit Zonen mal so leidlich implementiert, vielleicht will es jemand testen.

...

Mit etwas FHEM Code könnte man auch ein GoTo Location implementieren, was mein Dreame L10 pro von Hause aus nicht kann. Beispiel: kleine Zone Eimer definiert und dann:
set MQTT2_ClumsyQuirkyCattle clean_zone Eimer;sleep MQTT2_ClumsyQuirkyCattle:cleanerState:.returning; set MQTT2_ClumsyQuirkyCattle stop

Ich hoffe das es gut funktioniert.  :)



Hab das mal implementiert. Funktioniert soweit, bis man die Zonen versucht umzubennnen und zu löschen. Da bekommt man keine Asuwahlfelder bzw. bei 2 Zonen sind alle im Textfeld vorbelegt. Ansonsten fährt er die jeweilige Zone richtig an und fegt  :)

Tante Edit: Hab das mit dem Renaming wohl falsch verstanden. Funktioniert jetzt - Auch der Eimer  :D

Daumen hoch!
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 25 Oktober 2022, 11:16:27
Ja - besser habe ich das nicht hinbekommen, aber es ist ja ein äußerst seltener Vorgang. Da muss das Admin Interface nicht besser sein :)
Löschen geht nur komplett.
rename geht mit: Altername Neuername im Textfenster. Dabei steht der automatisch erzeugte Name (wegen dem Z) vorn. Man braucht also nur den Rest zu überschreiben.
Ich habe die Routine jetzt auch für location vorbereitet, wenn der Sauger es unterstützt (wie der V1) kann man das auch noch implementieren.
Ich bin mit der utils soweit fertig - ich mache mich jetzt mal noch ans Template. ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 25 Oktober 2022, 11:57:43
Was ist location? Kenne nur locate.

Das mit dem Rename habe ich nach ein bischen trial&error auch hinbekommen   8)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 25 Oktober 2022, 12:21:29
manche Sauger können goto location - siehts Du wenn Du in der Karte auf einen Punkt klickst, dort eine Marke entsteht und unten dann Goto Location erscheint.
Der allererste Saug Roboter der mit valetudo ausgestattet wurde (Roborock / xiaomi v1) kann keine Segmente sondern nur Zonen und Goto.

Ich nutze das dafür, dass der Sauger wenn er unterwegs war und ich komme nach Hause, eine Begrüßungsfahrt zum Mülleimer macht ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 25 Oktober 2022, 12:49:35
Zitat von: Otto123 am 25 Oktober 2022, 12:21:29
Ich nutze das dafür, dass der Sauger wenn er unterwegs war und ich komme nach Hause, eine Begrüßungsfahrt zum Mülleimer macht ;)

Hahaha, grandiose Idee! ;D
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: SalvadoreXXL am 25 Oktober 2022, 14:06:14
Zitat von: Otto123 am 25 Oktober 2022, 12:21:29
Ich nutze das dafür, dass der Sauger wenn er unterwegs war und ich komme nach Hause, eine Begrüßungsfahrt zum Mülleimer macht ;)

Also quasi direkt zum Eimer und keine Runden darum  :)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 01 November 2022, 10:21:58
Zitat von: MadMax-FHEM am 16 Oktober 2022, 12:36:06
Zitat von: TomLee am 16 Oktober 2022, 12:34:56
    ValetudoRE -> Template roborockRE

-------

Ah, ok, ich werde mir das mal anschauen...
...wenn wieder Zeit ist.

Wann immer das sein wird... ;)

Danke, Joachim

Hmmm, irgendwie kann ich das nicht finden.

Mein fhem ist ca. 1 Woche alt, OS ist aktuell (Bullseye)...
Probleme beim Update hatte ich auch keine gesehen...

Aktuell würde ich eher mal ungern ein Update anwerfen, mir wird dazu gerade zu viel in fhem-WEB rumgefuhrwerkt ;)

Evtl. schaue ich mal auf einem Testsystem -> nö auch nicht. Hier könnte ich (zur Not ;)  ) mal ein Update machen...

Oder gibt es das so gar nicht als Template?
Eine Suche nach roborockRE führt mich hierhin: https://forum.fhem.de/index.php/topic,123112.msg1176471.html#msg1176471
oder auch: https://forum.fhem.de/index.php/topic,104804.0.html oder auch hier: https://forum.fhem.de/index.php/topic,94495.msg1155613.html#msg1155613 (welcher aber irgendwie wieder "zurück verweist")...

In /opt/fhem/contrib/AttrTemplate gibt es eine 99_attrTmqtt2_roborock_Utils.pm (mit nur einer Funktion und klingt eher als Eweiterung statt "eigenständig")

Kurzum: ich bin zu dumm das Template zu finden :-\

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 01 November 2022, 10:53:49
Hallo Joachim,

es gibt in Summe drei Templates zu diesem Thema:
rockrobo filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*valetudo[/].*
rockroboRE filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*\/valetudo.*
valetudo filter:TYPE=MQTT2_DEVICE

Das erste wird eventuell nicht mehr funktionieren (zu alt) zu der gehört auch die von Dir erwähnte utils.pm
das zweite war mein erster Versuch für valetudoRE
das dritte ist aktuell für valetudo

Das Problem, dass sie bei Dir nicht angezeigt werden liegt sicher an den Filtern.

Gruß Otto
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 01 November 2022, 10:56:21
Bei mir befindet sich das Template, in der Liste von attrTemplate, genau über dem von valetudo.

Evtl. passt was mit dem Filter aus den Templates was nicht (der ist verantwortlich für das was in der Liste steht und was nicht), hatte ich auch mal bei einem anderen Device, keine Ahnung aber wi jetzt suchen.
Dazu kann man aber was sagen wenn man die adefinition des automatisch angelegten Device sehen würde.

Wenn das Template in der mqtt2.template vorhanden ist (davon gehe ich aus, opt/fhem/FHEM/lib/AttrTemplate), und mit dem Filter irgendwas derzeit halt nicht passt, kann man trotzdem über die Befehlszeile jedes beliebige Template anwenden auch wenn es in der Liste nicht angezeigt wird. Vermutlich merkst dann was gerade nicht passt und das Dialogfeld poppt auf um den Wert abzufragen der gerade unbekannt ist.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 01 November 2022, 11:15:34
Ah, ok.

Naja ich habe ja nur mal sehen wollen und einfach ein vorhandenes MQTT2-Device genommen (keinen Sauger ;) ).
Da ist dann bestimmt was eingestellt, dass ich das nicht sehe...
Wobei ja valetudo dort auftaucht :)

Ok, ich dachte ich habe immer bei allen Devices (also zumindest TYPE=MQTT2_DEVICE) die komplette Auswahl.

Ja, in der .../lib/attrTemplate/mqtt2.template ist es drin :)

Danke und sorry! ;)

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 01 November 2022, 11:26:01
Irgendwie bin ich auch nicht glücklich mit den Filtern, deshalb habe ich das valetudo Template dann nur mit TYPE=MQTT2_DEVICE ausgestattet.
Das Filter bei rockroboRE funktioniert eh nur aufgrund einer "Unebenheit" :) das ist viel zu scharf. Da muss in einer readingList ja etwas/valetudoETWAS vorkommen - kommt es, aber eher zufällig.  :-[
homeassistant/vacuum/valetudo_rockrobo/config:.* {}
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 01 November 2022, 11:37:57
Wann gibts die letzten Änderungen zu Valetudo denn per update ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 01 November 2022, 11:39:10
noch die Woche, bin am testen ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 01 November 2022, 14:45:22
Zitat von: TomLee am 01 November 2022, 11:37:57
Wann gibts die letzten Änderungen zu Valetudo denn per update ?
Ach heute ist ein schönes Datum ;) habe es eingecheckt. Für Ungeduldige:
{ Svn_GetFile("FHEM/lib/AttrTemplate/mqtt2.template", "FHEM/lib/AttrTemplate/mqtt2.template", sub(){ AttrTemplate_Initialize() }) }
Ich habe das mit zwei Saugern Dreame L10 pro / Roborock V1 und der valetudo Version 2022.10. getestet.
Ich frage jetzt die Firmware Features über die Rest API ab und bilde die setter entsprechend:
MapSegmentation   Dreame L10 pro
WaterUsageControl Dreame L10 pro
GoToLocation          Roborock V1

Ich frage die IPv4 Adresse im Template ab, diejenigen die mit MQTT2_CLIENTs arbeiten müssen diese im Dialog bereithalten!

In der mqtt Konfiguration von valetudo sollte außer dem Server und dem Account nichts eingetragen sein. Auch provide map-data ist jetzt verzichtbar, da man die segmente per set abfragen kann bzw. bei Änderungen in dem Fall dann muss.
Alle MQTT Features für homie und hass sind nicht berücksichtigt und produzieren "Müll" im Device.

Zonen und Goto Locations
valetudo speichern die Zonen und Locations nicht mehr, in FHEM habe ich das so eingebaut:
In der valetudo Oberfläche:
Aus dem PopUp Fenster den kompletten json String kopieren
Dann in FHEM:
mit set ... clean_zone / goto kann man die Zone / den Punkt auswählen und ansteuern.

Ich habe das Template etwas schlanker gemacht und ein paar Dinge direkt in die Utils verlagert, da muss ich bei Änderungen nur die Utils anpassen.
Ich hoffe ich habe keinen Blödsinn eingebaut und freue mich auf feedback. Sehr Fehlertolerant ist das Ganze sicher nicht.

Gruß Otto

Nachtrag
Probieren vor update ;) wer ssh Zugang zum Roboter hat
wget https://github.com/Hypfer/Valetudo/releases/latest/download/valetudo-armv7 -O valetudo
service valetudo stop
./valetudo
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 01 November 2022, 15:29:52
Bevor ich jetzt noch länger Suche und hier erkläre was bei mir falsch läuft, hast du das was du hochgeladen hast danach getestet ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 01 November 2022, 15:37:15
eigentlich schon. Aber Du weißt: eine Maschine zur Entwicklung ist nicht unbedingt die Realität :)
Vielleicht habe ich nicht jede Funktion getestet :(
Merke gerade: goto geht nicht :(
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 01 November 2022, 16:17:12
Bin denk ich etwas weiter und jetzt passts glaub ich, irgendwas lief offenbar erstmal schief beim update  ::), hab mich noch nicht weiter mit beschäftigt weil ich an was anderem dran bin. Beschäftige mich heute Abend mit.

Hier passt doch aber was nicht, nicht das zweite Element sondern das dritte ?

Also korrekt so:

Zitatpar:IP4;Device IP Adress;{(split q{,}, ReadingsVal("DEVICE",'ips',undef))[0] || (split q{_}, InternalVal("DEVICE",ReadingsVal("DEVICE",'IODev',undef).'_CONN',undef))[2] || undef }
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 01 November 2022, 16:23:20
Es gibt auf jeden Fall zwei neue Topics (v2022.11.0):

.../StatusStateAttribute/error_description:.* error_description
.../OperationModeControlCapability/preset:.* preset
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 01 November 2022, 16:48:31
Zitat von: TomLee am 01 November 2022, 16:17:12
Hier passt doch aber was nicht, nicht das zweite Element sondern das dritte ?
Also korrekt so:
Weil Dein Name einen _ enthält  :-X habe ich nicht bedacht - es muss das vorletzte sein
habe es in [-2] geändert, das sollte passen ;)

habe die fixes eingecheckt - goto geht jetzt beim V1. Hatte den Code für goto vergessen auf die neue Version umzustellen.

Es gibt auf jeden Fall zwei neue Topics (v2022.11.0): warum ist da derzeit die Update Frequenz so hoch?  ::)

Wobei ich beide topics in den Readings "schon drin" habe :)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 01 November 2022, 16:59:13
Zitat von: Otto123 am 01 November 2022, 16:48:31
Es gibt auf jeden Fall zwei neue Topics (v2022.11.0): warum ist da derzeit die Update Frequenz so hoch?  ::)

Ja, hehe, geht ordentlich was weiter :)

Bei mir hat übrigens alles geklappt. Allerdings wird die IP wird nicht abgefragt, wenn ich das Template setze. Sollte sie aber doch eigentlich, oder?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 01 November 2022, 17:00:58
wenn Du es auf ein neues Device setzt ja, wenn ips schon existiert: nicht. ;) 
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 01 November 2022, 17:31:10
Nope. Extra ein neues Device angelegt. Zwei Mal. Aktuelles FHEM.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 01 November 2022, 18:55:03
und hat er dann die ip4 oder hat er sie nicht? Du sagst ja es hat alles geklappt, das erfordert: er hat die IP
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 01 November 2022, 19:06:34
Ich werde das morgen nochmal durchspielen und melde mich dann mit brauchbareren Infos.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 01 November 2022, 19:33:22
Zum Verständnis für die Ermittlung der IP
Ein neues Device mit einem halbwegs kompletten MQTT Datensatz, liefert über den topic WifiConfigurationCapability das reading ips.
Das ist die erste Option beim Template, die zweite (falls der Datensatz nur rudimentär war) ist die Ermittlung über das Internal _CONN - das schlägt bei Dir fehl. Die Dritte ist die manuelle Abfrage ;)
Normalerweise sollte, auch bei Dir, die erste Option treffen.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 01 November 2022, 20:37:51
Hab mich noch immer nicht damit beschäftigt, aber das mit -2 klappt (Fuchs!), Danke, für die Zonen-Anleitung in #272, man kann sich ja nicht alles merken und ich fang "von vorne an", zum Verständnis: ich lass den Sauger einmal alles saugen (in Fhem mit dem setter start oder im UI) dann kopier ich die Koordinaten nach zoneNew und hab meine Zone(n), was aber wenn ich wieder mit dem setter start "starte", die alte Karte mit den hinterlegten Zonen in Fhem ist doch dann weg ? In ValetudoRE kann ich sie wieder herstellen, wie sieht deine Lösung hier mit Valetudo aus ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 01 November 2022, 21:35:39
Ich habe da keine  >:(
So richtig produktiv mit valetudo fahre ich den Dreame, der Alte steht so rum und ich kann die Feature Abfrage testen.
Dieses Zurücksetzen der Karte war bei mir auch so ein Glücksspiel. Auf dem Rockrobo läuft auch noch als Dienst valetudoRE, ich starte die valetudo Software dort immer nur zum Test.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 02 November 2022, 09:18:34
***EDIT***
Meine mqtt2.template war nicht ganz aktuell. Da hat sich wohl gestern abend noch was getan. Post daher hinfällig.

---
So. Also. Die IP-Adresse wird vom Roboter ja eher so zufällig übertragen. Wann genau, habe ich noch nicht raus gefunden.
Dieses Device wurde um 09:02 angelegt:

defmod MQTT2_staubi MQTT2_DEVICE staubi
attr MQTT2_staubi readingList valetudo/staubi/WifiConfigurationCapability/signal:.* signal
attr MQTT2_staubi room MQTT2_DEVICE

setstate MQTT2_staubi 2022-11-02 09:02:47 IODev Mosquitto
setstate MQTT2_staubi 2022-11-02 09:02:47 associatedWith MQTT2_fhem_test
setstate MQTT2_staubi 2022-11-02 09:13:47 signal -51

So weit, so gut. Inzwischen sind 15min vergangen und die IP wurde noch nicht übertragen.
Ich setze jetzt das Template mit den Dropdowns.
Dann sieht das Device so aus:

defmod MQTT2_staubi MQTT2_DEVICE staubi
attr MQTT2_staubi alias staubi
attr MQTT2_staubi devicetopic valetudo/staubi
attr MQTT2_staubi event-on-change-reading .*
attr MQTT2_staubi icon vacuum_top
attr MQTT2_staubi model valetudoV2
attr MQTT2_staubi readingList $DEVICETOPIC/\x24state:.* _state\
  $DEVICETOPIC/(Att.*|Basic.*|Consum.*|Curr.*|Loc.*|Wifi.*)/[a-zA-Z\-_]+:.* { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),;; $1 eq 'ips'? {"ip4"=> (split ',',$EVENT)[0]}:{"$1"=>$EVENT} }\
  $DEVICETOPIC/BatteryStateAttribute/level:.* batteryPercent\
  $DEVICETOPIC/BatteryStateAttribute/status:.* batteryState\
  $DEVICETOPIC/FanSpeedControlCapability/preset:.* fanSpeed\
  $DEVICETOPIC/GoToLocationCapability/presets:.* .locationsPresets\
  $DEVICETOPIC/GoToLocationCapability/go:.* {}\
  $DEVICETOPIC/MapData/map-data:.* {}\
  $DEVICETOPIC/MapData/segments:.* .segments\
  $DEVICETOPIC/StatusStateAttribute/status:.* { {"state"=>$EVENT,"cleanerState"=>$EVENT} }\
  $DEVICETOPIC/StatusStateAttribute/detail:.* stateDetail\
  $DEVICETOPIC/StatusStateAttribute/error:.* stateError\
  $DEVICETOPIC/WaterUsageControlCapability/preset:.* waterUsage\
  $DEVICETOPIC/ZoneCleaningCapability/presets:.* .zonesPresets\
  $DEVICETOPIC/ZoneCleaningCapability/start:.* {}
attr MQTT2_staubi room MQTT2_DEVICE
attr MQTT2_staubi setList pause:noArg $DEVICETOPIC/BasicControlCapability/operation/set PAUSE\
  start:noArg $DEVICETOPIC/BasicControlCapability/operation/set START\
  stop:noArg $DEVICETOPIC/BasicControlCapability/operation/set STOP\
  charge:noArg $DEVICETOPIC/BasicControlCapability/operation/set HOME\
  clean_zone:{valetudo_w($name,'zones')} { valetudo_c($NAME,$EVENT) }\
  fanSpeed:off,min,low,medium,high,turbo,max $DEVICETOPIC/FanSpeedControlCapability/preset/set $EVTPART1\
  waterUsage:off,min,low,medium,high,turbo,max $DEVICETOPIC/WaterUsageControlCapability/preset/set $EVTPART1\
  locate:PERFORM   $DEVICETOPIC/LocateCapability/locate/set $EVTPART1\
  x_raw_payload:textField { valetudo_c($NAME,$EVENT) }
attr MQTT2_staubi setStateList operation clean_segment clean_zone goto fanSpeed waterUsage locate x_raw_payload
attr MQTT2_staubi stateFormat <a href="http://ip4" target="_blank">state</a>
attr MQTT2_staubi timestamp-on-change-reading .*

setstate MQTT2_staubi <a href="http://ip4" target="_blank">state</a>
setstate MQTT2_staubi 2022-11-02 09:02:47 IODev Mosquitto
setstate MQTT2_staubi 2022-11-02 09:02:47 associatedWith MQTT2_fhem_test

Nach einer IP wurde ich aber nicht gefragt. Dementsprechend ist das Reading auch noch nicht vorhanden.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 02 November 2022, 09:23:08
Zitat von: TomLee am 01 November 2022, 20:37:51
was aber wenn ich wieder mit dem setter start "starte", die alte Karte mit den hinterlegten Zonen in Fhem ist doch dann weg ? In ValetudoRE kann ich sie wieder herstellen, wie sieht deine Lösung hier mit Valetudo aus ?
Das ist leider ein Problem mit dem Gen1 Sauger. War auch der Grund, warum ich vor kurzem auf den L10Pro umgestiegen bin. Auch wenn der Gen1 noch super funktioniert hat. Was echt beeindruckend ist.
Meiner Meinung nach kann's da keine zufriedenstellende Lösung geben. Man könnte sicher irgendwie die Karten-Daten exportieren. Aber wann genau sollte man sie wieder importieren? Und würden sie dem Roboter was helfen oder kommt er eher durcheinander? Außerdem, sobald sich die Basis-Station des Roboters ein bisschen verschiebt, stimmt die Karte ja nicht mehr.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 02 November 2022, 09:34:09
ZitatMeiner Meinung nach kann's da keine zufriedenstellende Lösung geben.

Doch, auch wenn da nix mehr passiert, mit ValetudoRE bin ich auf dem anderen Sauger zufrieden, dort kann man mehrere Karten speichern/wiederherstellen.




Heißt dein MQTT2_SERVER Mosquitto ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 02 November 2022, 09:37:07
Zitat von: TomLee am 02 November 2022, 09:34:09
Doch, auch wenn da nix mehr passiert, mit ValetudoRE bin ich auf dem anderen Sauger zufrieden, dort kann man mehrere Karten speichern/wiederherstellen.
Das kann dann aber schon ValetudoRE, oder?

ZitatHeißt dein MQTT2_SERVER Mosquitto ?
Nein. Mein Mosquitto heißt Mosquitto ;). Ich arbeite mit einem externen MQTT-Server.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 02 November 2022, 09:41:23
Zitat von: drhirn am 02 November 2022, 09:18:34
***EDIT***
Meine mqtt2.template war nicht ganz aktuell. Da hat sich wohl gestern abend noch was getan. Post daher hinfällig.

Hat sich gestern Abend nichts getan. Der Download via Svn_GetFile hat wohl nicht richtig funktioniert.
Wie auch immer, ziehe alles zurück. Ich werde brav nach einer IP gefragt, wenn ich das Template anwende.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 02 November 2022, 09:48:11
ZitatDas kann dann aber schon ValetudoRE, oder?

Ja, deshalb hab ich es ja erwähnt.




Dann ist Mosquitto ein MQTT2_CLIENT-Device ?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 02 November 2022, 09:51:04
Zitat von: TomLee am 02 November 2022, 09:48:11Ja, deshalb hab ich es ja erwähnt.
Ach so, jetzt versteh ich. Du meinst, wir sollten das Mqtt-Template dementsprechend anpassen? Oder am RE-Template was tun?
Da tu ich mir mangels valetudoRE leider schwer.

ZitatDann ist Mosquitto ein MQTT2_CLIENT ?
Ja, genau. Hätte ich vielleicht noch dazu schreiben sollen.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 02 November 2022, 10:18:41
ZitatAch so, jetzt versteh ich. Du meinst, wir sollten das Mqtt-Template dementsprechend anpassen? Oder am RE-Template was tun?
Da tu ich mir mangels valetudoRE leider schwer.

Nee, so war das nicht gemeint, es gibt bereits schon lange ein Template für ValetudoRE.

Es war einfach nur ein Hinweis darauf das ValetudeRE das erstellen mehrerer Karten unterstützt.

Wegen dieser Aussage:
ZitatDas ist leider ein Problem mit dem Gen1 Sauger. War auch der Grund, warum ich vor kurzem auf den L10Pro umgestiegen bin.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 02 November 2022, 12:32:45
Zitat von: TomLee am 02 November 2022, 10:18:41
Wegen dieser Aussage:
Zitat

    Das ist leider ein Problem mit dem Gen1 Sauger. War auch der Grund, warum ich vor kurzem auf den L10Pro umgestiegen bin.

Geht das wirklich "sauber" auch beim Gen1?

Also ich habe mir ein Script geschrieben, mit dem ich mir die Karten (auch V1) wegsichere.
Mehrere Karten verwalten habe ich noch nicht probiert und es ist auch das Rückspielen einer gesicherten Karte immer etwas Pfriemelei...
Habe/hatte das Script aber auch schon wo ich noch ohne valetudo(RE) unterwegs war, also "nur" gerootete FW.

Habe ja mittlerweile valetudoRE drauf (nicht mehr ganz aktuell) aber ich wüsste nicht, dass es Kartenunterstützung für V1 gäbe?
Hab ich da was übersehen?

Gruß, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 02 November 2022, 14:32:01
ZitatGeht das wirklich "sauber" auch beim Gen1?

Also bei mir ohne Probleme, auch mehrere, mit 0.10.7 ging aber auch schon vorher.

ZitatAlso ich habe mir ein Script geschrieben, mit dem ich mir die Karten (auch V1) wegsichere.
Mehrere Karten verwalten habe ich noch nicht probiert und es ist auch das Rückspielen einer gesicherten Karte immer etwas Pfriemelei...
Habe/hatte das Script aber auch schon wo ich noch ohne valetudo(RE) unterwegs war, also "nur" gerootete FW.

Ich weiß, ich frage mich auch immer wenn du das erwähnst warum du dir das weiterhin antust. Das speichern und wiederherstellen der Kart(en) ist doch ganz einfach und Zonen zu definieren genauso (das erwähnst ja auch immer das darauf soviel Wert legst und es viel Arbeit für dich war diese zu erstellen), Ruckzuck hast mit RE Zonen erstellt.

ZitatHabe ja mittlerweile valetudoRE drauf (nicht mehr ganz aktuell) aber ich wüsste nicht, dass es Kartenunterstützung für V1 gäbe?

Auf der ersten Seite im Ui gibts den Button Karte speichern und Karte laden, wieviele weiß ich jetzt nicht auf jedenfall mehrere.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 02 November 2022, 15:43:24
Und Karte speichern und laden war auch im V1 Template verbaut:
ZitatDie aktuelle Karte auf dem Sauger speichern und wieder laden (set sauger map store Name, set sauger map load Name)
Aber das hat bei mir auch nicht wirklich zuverlässig funktioniert. Deswegen bin ich auf den L10 umgestiegen. :)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: MadMax-FHEM am 02 November 2022, 16:23:24
Zitat von: TomLee am 02 November 2022, 14:32:01
Ich weiß, ich frage mich auch immer wenn du das erwähnst warum du dir das weiterhin antust. Das speichern und wiederherstellen der Kart(en) ist doch ganz einfach und Zonen zu definieren genauso (das erwähnst ja auch immer das darauf soviel Wert legst und es viel Arbeit für dich war diese zu erstellen), Ruckzuck hast mit RE Zonen erstellt.

Naja, meine Automatisierungen laufen ja (noch) auf Basis des Xiaomi-Moduls und da sind die Zonen nicht kompatibel zu den Zonen aus valetudoRE.
Ich hatte zwar mal eine Umrechnungsfunktion aber die stimmt wohl irgendwie auch nicht (mehr).
Die Zonen die ich aktuell (noch) verwende stammen noch aus der Flole App :)
Daher muss auch die Karte passen und nachdem das früher schon ab und an passiert ist, dass der Sauger die "einfach vergisst" halt das Script.

Ich habe die ja auch nur mal vor Jahren gesichert und so 1-2 mal (bei einem Sauger) zurück gespielt.
(Bzw. als ich den Sauger zurücksetzen musste wegen FW aufspielen auch mal bei fast jedem Sauger)

Und da die Sauger ja tun was sie sollen und jede "Spielerei" die Gefahr birgt, dass das eben nicht mehr so ist bin ich (nur hier ausnahmsweise ;)  ) eher vorsichtig 8)


Zitat von: TomLee am 02 November 2022, 14:32:01
Also bei mir ohne Probleme, auch mehrere, mit 0.10.7 ging aber auch schon vorher.

...

Auf der ersten Seite im Ui gibts den Button Karte speichern und Karte laden, wieviele weiß ich jetzt nicht auf jedenfall mehrere.

Also ich hab eben noch mal geschaut: ich habe keine Möglichkeit gefunden Karte speichern/laden :-\

valetudoRE 010.6.2

Ich habe ja einen "Testsauger", zufällig ein V1, evtl. spiele ich da mal eine neuere FW auf bzw. andere Frage: muss für das Feature mqtt aktiviert sein?
-> habe ich noch nicht mehr gemacht...

Kostet halt alles Zeit (ohne viel Nutzen: läuft ja alles wunderbar :)  )...

Nun genug OT ;)

Danke, Joachim
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 07 November 2022, 12:34:46
Ich hab gerade wieder mal meinen Sauger gelöscht und neu anlegen lassen.
An folgendem RAW passen ein paar Sachen aber nicht so ganz:

defmod MQTT2_staubi MQTT2_DEVICE staubi
attr MQTT2_staubi alias staubi
attr MQTT2_staubi devStateIcon docked:rc_PLAY:start (moving|cleaning):rc_PLAY@blue:pause (idle|paused):rc_PAUSE@red:start returning:refresh:pause
attr MQTT2_staubi devicetopic valetudo/staubi
attr MQTT2_staubi event-on-change-reading .*
attr MQTT2_staubi icon vacuum_top
attr MQTT2_staubi model valetudoV2
attr MQTT2_staubi readingList $DEVICETOPIC/\x24state:.* _state\
  $DEVICETOPIC/.*/[a-zA-Z\-_]+:.* { $TOPIC =~ m,$DEVICETOPIC\/(.*)\/([a-zA-Z\-_]+),;; valetudo_r($NAME,$1,$2,$EVENT) }
attr MQTT2_staubi room MQTT2_DEVICE
attr MQTT2_staubi setList pause:noArg $DEVICETOPIC/BasicControlCapability/operation/set PAUSE\
  start:noArg $DEVICETOPIC/BasicControlCapability/operation/set START\
  stop:noArg $DEVICETOPIC/BasicControlCapability/operation/set STOP\
  charge:noArg $DEVICETOPIC/BasicControlCapability/operation/set HOME\
  clean_zone:{valetudo_w($name,'zones')} { valetudo_c($NAME,$EVENT) }\
  fanSpeed:min,low,medium,high,max $DEVICETOPIC/FanSpeedControlCapability/preset/set $EVTPART1\
  locate:PERFORM   $DEVICETOPIC/LocateCapability/locate/set $EVTPART1\
  x_raw_payload:textField { valetudo_c($NAME,$EVENT) }\
  delete:zones,locations {fhem("deletereading $NAME .$EVTPART1");;;;return undef}\
  zoneNew:textField { valetudo_z($NAME,$EVENT) }\
  zoneRename:textField { valetudo_z($NAME,$EVENT) }\
  get:segments,release,ip { valetudo_g($NAME,$EVENT) }\
  clean_segment:{'multiple-strict,'.valetudo_w($name,'segments')} { valetudo_c($NAME,$EVENT) }\
  waterUsage:low,medium,high $DEVICETOPIC/WaterUsageControlCapability/preset/set $EVTPART1
attr MQTT2_staubi setStateList operation clean_segment clean_zone goto fanSpeed waterUsage locate x_raw_payload
attr MQTT2_staubi stateFormat cleanerState\
<a href="http://ip4" target="_blank">cleanerState</a>
attr MQTT2_staubi timestamp-on-change-reading .*

setstate MQTT2_staubi docked\
<a href="http://xxx.xxx.xxx.xxx" target="_blank">docked</a>
setstate MQTT2_staubi 2022-11-07 12:25:39 10 Schlafzimmer
setstate MQTT2_staubi 2022-11-07 12:25:39 11 Kueche
setstate MQTT2_staubi 2022-11-07 12:25:39 3 Flur
setstate MQTT2_staubi 2022-11-07 12:25:39 4 Vorraum
setstate MQTT2_staubi 2022-11-07 12:25:39 5 Klo
setstate MQTT2_staubi 2022-11-07 12:25:39 6 Bad
setstate MQTT2_staubi 2022-11-07 12:25:39 7 Wohnzimmer
setstate MQTT2_staubi 2022-11-07 12:24:18 IODev Mosquitto
setstate MQTT2_staubi 2022-11-07 12:25:24 area 0
setstate MQTT2_staubi 2022-11-07 12:25:53 associatedWith MQTT2_fhem_test
setstate MQTT2_staubi 2022-11-07 12:26:54 attrTemplateVersion 20221101
setstate MQTT2_staubi 2022-11-07 12:25:24 brush-main 871200
setstate MQTT2_staubi 2022-11-07 12:29:59 charge set
setstate MQTT2_staubi 2022-11-07 12:30:18 cleanerState docked
setstate MQTT2_staubi 2022-11-07 12:25:24 detail none
setstate MQTT2_staubi 2022-11-07 12:25:24 filter-main 331200
setstate MQTT2_staubi 2022-11-07 12:25:53 frequency 2.4ghz
setstate MQTT2_staubi 2022-11-07 12:27:18 get set release
setstate MQTT2_staubi 2022-11-07 12:26:54 ip4 xxx.xxx.xxx.xxx
setstate MQTT2_staubi 2022-11-07 12:25:53 ips xxx.xxx.xxx.xxx,fe80::xxxx:xxxx:xxxx:xxxx
setstate MQTT2_staubi 2022-11-07 12:25:24 level 100
setstate MQTT2_staubi 2022-11-07 12:25:24 message
setstate MQTT2_staubi 2022-11-07 12:25:24 mop false
setstate MQTT2_staubi 2022-11-07 12:29:59 operation HOME
setstate MQTT2_staubi 2022-11-07 12:29:55 pause set
setstate MQTT2_staubi 2022-11-07 12:25:23 preset vacuum
setstate MQTT2_staubi 2022-11-07 12:25:24 sensor-all 18000
setstate MQTT2_staubi 2022-11-07 12:29:59 set HOME
setstate MQTT2_staubi 2022-11-07 12:30:23 signal -45
setstate MQTT2_staubi 2022-11-07 12:25:53 ssid DAHOAM
setstate MQTT2_staubi 2022-11-07 12:29:35 start set
setstate MQTT2_staubi 2022-11-07 12:30:18 state docked
setstate MQTT2_staubi 2022-11-07 12:25:24 status docked
setstate MQTT2_staubi 2022-11-07 12:25:24 subsystem none
setstate MQTT2_staubi 2022-11-07 12:25:23 time 0
setstate MQTT2_staubi 2022-11-07 12:25:24 watertank false


Zum einen fehlt die Release. Das hab ich öfter versucht, die wird nicht automatisch gesetzt.
Zum anderen sind die Segmente nicht mehr im Reading .segments sondern einzeln aufgelistet.
Ist das bei euch auch so?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 07 November 2022, 12:49:11
und release kommt auch nicht mit set ... get ...?
und die segmente auch nicht mit set ... get ...?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 07 November 2022, 13:12:26
Nein. Leider. Ich hab aber auch keine Fehlermeldung. verbose 5 meldet bei beiden leider nur den Befehl.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 07 November 2022, 13:47:40
funktioniert das in der FHEM Kommandozeile - oder erreicht FHEM den Sauger nicht?
{GetHttpFile('xxx.xxx.xxx.xxx', '/api/v2/valetudo/version')}

lokale IPs aus-x-en ist unnütz :)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 07 November 2022, 14:02:25
Haha, die IP ist bei mir in FHEM schon richtig. Aber muss ja nicht jeder wissen, wie mein Heimnetz aussieht ;).
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 07 November 2022, 14:22:01
war das jetzt schon die eigentliche Antwort auf meine Frage?

ich habe keine Idee was da bei Dir passieren soll, die Routine an der Stelle ist eigentlich simpel.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 07 November 2022, 14:31:52
Bin ein Depp. Der Docker-Container, in dem FHEM residiert, kommt natürlich nicht zum Roboter. Bitte entschuldigt die Störung!
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 07 November 2022, 14:43:44
Naja diese Methode über REST API ist eine Krücke, das ist mir klar. Ich weiß aber nicht wie man es besser lösen könnte.

Die beiden Readings kannst Du natürlich per Hand setzen, die ändern sich ja nicht so oft. Eleganter wäre ein Job auf deinem MQTT der das einmal am Tag oder auf Anforderung macht ;) Aber auch das ist eine Krücke.
Die Segmente sollten aber gesendet werden - bei Änderung oder morgens beim Neustart von valetudo.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 07 November 2022, 15:07:18
Bin doch kein Depp. Der FHEM-Container kommt schon zum Roboter. Der Roboter verliert nur leider verdammt oft die WLAN Verbindung (kennt jemand eine Lösung?). Das macht das Testen extrem mühsam. Aber im dem Fall ist es doch genau so, wie beschrieben. set MQTT2_staubi get release tut einfach gar nichts. Die Segmente kommen, wenn ich den Roboter neu starte.
Ich kann aber von FHEM aus mit wget die API erreichen. Daran liegt's also nicht.

Wir könnten ja bei Valetudo mal nachfragen, ob sie nicht einen MQTT-Befehl einbauen möchten, der ein "Info-Topic" zurück liefert?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 07 November 2022, 18:17:26
In Zeile 244 in 99_valetudoUtils liegt der Hund begraben.
Füge ich das || ReadingsVal($NAME,'ip4',undef) dazu, funktioniert's. Die IP wurde nie gefunden.
Mir ist nur nicht ganz klar, warum. Hab's jetzt aber auch nicht genau verfolgt, weil da hätte ich mir einen MQTT2_SERVER einrichten müssen.

my $ip = (split q{ },$load)[1] || ReadingsVal($NAME,'ip4',undef) || ReadingsVal($NAME,'ip4',(split q{_}, InternalVal($NAME,ReadingsVal($NAME,'IODev','').'_CONN','') )[-2] || return 'error no ip');
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 07 November 2022, 18:18:44
Aber was anderes, was jetzt ein bisschen vom Thema abkommt: Eigentlich wäre die IP ja "retained". Die ist also schon da. Gibt's keine Möglichkeit, den Wert nach FHEM zu bekommen, ohne dass da neu gepublished werden muss?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: rudolfkoenig am 07 November 2022, 18:57:23
ZitatGibt's keine Möglichkeit, den Wert nach FHEM zu bekommen, ohne dass da neu gepublished werden muss?
Sicher doch, Du musst ihn nur aus dem retain Internal des MQTT2_SERVERS rauspuhlen, z.Bsp. so
{ %{json2nameValue($defs{m2s}{retain}{"..."}{val})}{ip}  }


Nachtrag:
Aus dem Reading kann man es auch holen, ist halt dann einmal mehr eingepackt:
{ %{json2nameValue(%{json2nameValue(ReadingsVal("m2s", "RETAIN", "{}"))}{"..."})}{ip}  }
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 07 November 2022, 18:58:22
Und wenn man MQTT2_CLIENT verwendet? ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: rudolfkoenig am 07 November 2022, 19:07:53
ZitatUnd wenn man MQTT2_CLIENT verwendet? ;)
Selbst schuld :)

Subscription nochmal setzen muesste reichen, dass muss aber jemand testen und bestaetigen.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 07 November 2022, 19:51:24
Zitat von: rudolfkoenig am 07 November 2022, 19:07:53
Subscription nochmal setzen muesste reichen, dass muss aber jemand testen und bestaetigen.

Hmm, weiß jetzt leider nicht, was du damit meinst.

Aber ich hab im Valetudo mal eine Diskussion gestartet, ob ein "Info"-Topic nicht sinnvoll wäre. Hypfer klingt nicht abgeneigt. Mal schauen, ob da was dabei raus kommt.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: meier81 am 07 November 2022, 20:48:21
Hallo euch allen,

so, hab mich jetzt auch mal an das aktuelle Template gewagt. Hat soweit erstmal alles funktioniert, alle verfügbaren readings angelegt, soweit so gut.

Hier mal meine Definition / readings:

defmod EG_fl_HW_Saugroboter MQTT2_DEVICE valetudo_ExpensiveRegalMongoose
attr EG_fl_HW_Saugroboter alias Frida
attr EG_fl_HW_Saugroboter devStateIcon docked:rc_PLAY:start (moving|cleaning):rc_PLAY@blue:pause (idle|paused):rc_PAUSE@red:start returning:refresh:pause
attr EG_fl_HW_Saugroboter devicetopic valetudo/rockrobo
attr EG_fl_HW_Saugroboter event-on-change-reading .*
attr EG_fl_HW_Saugroboter group Geräte
attr EG_fl_HW_Saugroboter icon vacuum_top
attr EG_fl_HW_Saugroboter model valetudoV2
attr EG_fl_HW_Saugroboter readingList $DEVICETOPIC/\x24state:.* _state\
  $DEVICETOPIC/.*/[a-zA-Z\-_]+:.* { $TOPIC =~ m,$DEVICETOPIC\/(.*)\/([a-zA-Z\-_]+),;; valetudo_r($NAME,$1,$2,$EVENT) }
attr EG_fl_HW_Saugroboter room Erdgeschoß->Flur
attr EG_fl_HW_Saugroboter setList pause:noArg $DEVICETOPIC/BasicControlCapability/operation/set PAUSE\
  start:noArg $DEVICETOPIC/BasicControlCapability/operation/set START\
  stop:noArg $DEVICETOPIC/BasicControlCapability/operation/set STOP\
  charge:noArg $DEVICETOPIC/BasicControlCapability/operation/set HOME\
  clean_zone:{valetudo_w($name,'zones')} { valetudo_c($NAME,$EVENT) }\
  fanSpeed:min,low,medium,high,max $DEVICETOPIC/FanSpeedControlCapability/preset/set $EVTPART1\
  locate:PERFORM   $DEVICETOPIC/LocateCapability/locate/set $EVTPART1\
  x_raw_payload:textField { valetudo_c($NAME,$EVENT) }\
  delete:zones,locations {fhem("deletereading $NAME .$EVTPART1");;;;return undef}\
  zoneNew:textField { valetudo_z($NAME,$EVENT) }\
  zoneRename:textField { valetudo_z($NAME,$EVENT) }\
  get:segments,release,ip { valetudo_g($NAME,$EVENT) }\
  goto:{valetudo_w($name,'locations')} { valetudo_c($NAME,$EVENT) }\
  locationNew:textField { valetudo_z($NAME,$EVENT) }\
  locationRename:textField { valetudo_z($NAME,$EVENT) }
attr EG_fl_HW_Saugroboter setStateList operation clean_segment clean_zone goto fanSpeed waterUsage locate x_raw_payload
attr EG_fl_HW_Saugroboter stateFormat cleanerState\
<a href="http://ip4" target="_blank">cleanerState</a>
attr EG_fl_HW_Saugroboter timestamp-on-change-reading .*

setstate EG_fl_HW_Saugroboter idle\
<a href="http://192.168.179.26" target="_blank">idle</a>
setstate EG_fl_HW_Saugroboter 2022-11-07 20:24:28 .segments {}
setstate EG_fl_HW_Saugroboter 2022-11-07 20:17:52 IODev NN_xx_SW_MQTT2_Server
setstate EG_fl_HW_Saugroboter 2022-11-07 20:24:28 _state ready
setstate EG_fl_HW_Saugroboter 2022-11-07 20:24:58 area 46.64 m²
setstate EG_fl_HW_Saugroboter 2022-11-07 20:19:27 attrTemplateVersion 20221101
setstate EG_fl_HW_Saugroboter 2022-11-07 20:24:43 batteryPercent 100
setstate EG_fl_HW_Saugroboter 2022-11-07 20:24:43 batteryState discharging
setstate EG_fl_HW_Saugroboter 2022-11-07 20:19:21 brush-main 623280
setstate EG_fl_HW_Saugroboter 2022-11-07 20:24:58 brush-side_right 263280
setstate EG_fl_HW_Saugroboter 2022-11-07 20:24:43 cleanerState idle
setstate EG_fl_HW_Saugroboter 2022-11-07 20:19:21 detail none
setstate EG_fl_HW_Saugroboter 2022-11-07 20:24:43 error_description No error
setstate EG_fl_HW_Saugroboter 2022-11-07 20:24:28 fanSpeed medium
setstate EG_fl_HW_Saugroboter 2022-11-07 20:19:21 filter-main 540000
setstate EG_fl_HW_Saugroboter 2022-11-07 20:19:21 frequency 2.4ghz
setstate EG_fl_HW_Saugroboter 2022-11-07 20:19:28 ip4 192.168.179.26
setstate EG_fl_HW_Saugroboter 2022-11-07 20:24:58 ip6 fe80::52ec:50ff:fe04:3e83
setstate EG_fl_HW_Saugroboter 2022-11-07 20:19:21 ips 192.168.179.26,fe80::52ec:50ff:fe04:3e83
setstate EG_fl_HW_Saugroboter 2022-11-07 20:19:21 level 100
setstate EG_fl_HW_Saugroboter 2022-11-07 20:19:21 message
setstate EG_fl_HW_Saugroboter 2022-11-07 20:19:20 preset medium
setstate EG_fl_HW_Saugroboter 2022-11-07 20:19:21 sensor-all 108000
setstate EG_fl_HW_Saugroboter 2022-11-07 20:40:28 signal -45
setstate EG_fl_HW_Saugroboter 2022-11-07 20:19:21 ssid FRITZ!Box 7590
setstate EG_fl_HW_Saugroboter 2022-11-07 20:24:43 state idle
setstate EG_fl_HW_Saugroboter 2022-11-07 20:24:43 stateDetail none
setstate EG_fl_HW_Saugroboter 2022-11-07 20:24:43 stateError {"severity":{"kind":"none","level":"none"},"subsystem":"none","message":""}
setstate EG_fl_HW_Saugroboter 2022-11-07 20:19:21 status discharging
setstate EG_fl_HW_Saugroboter 2022-11-07 20:17:52 subscriptions valetudo/rockrobo/BasicControlCapability/operation/set valetudo/rockrobo/CurrentStatisticsCapability/refresh/set valetudo/rockrobo/FanSpeedControlCapability/preset/set valetudo/rockrobo/GoToLocationCapability/go/set valetudo/rockrobo/LocateCapability/locate/set valetudo/rockrobo/WifiConfigurationCapability/refresh/set valetudo/rockrobo/ZoneCleaningCapability/start/set
setstate EG_fl_HW_Saugroboter 2022-11-07 20:19:21 subsystem none
setstate EG_fl_HW_Saugroboter 2022-11-07 20:19:21 time 3344
setstate EG_fl_HW_Saugroboter 2022-11-07 20:19:28 valetudo_release 2022.11.0


Was mir nun auffällt ist das beim reading "area" die Umrechnung anscheinend korrekt ist, zeigt bei mir 46.64 m² an, wie beim Sauger. Es werden aber die readings "brush-main", "brush-side_right", "filter-main", "sensor-all" und "time" nicht umgerechnet, diese stehen in der "ursprünglichen" Zahl da. Lässt sich das in dem Template auch noch automatisieren oder hab ich hier noch einen Fehler drin bei mir?

Gruß Markus
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 07 November 2022, 21:19:40
Zitat von: drhirn am 07 November 2022, 18:17:26
In Zeile 244 in 99_valetudoUtils liegt der Hund begraben.
Füge ich das || ReadingsVal($NAME,'ip4',undef) dazu, funktioniert's. Die IP wurde nie gefunden.
Mir ist nur nicht ganz klar, warum. Hab's jetzt aber auch nicht genau verfolgt, weil da hätte ich mir einen MQTT2_SERVER einrichten müssen.

my $ip = (split q{ },$load)[1] || ReadingsVal($NAME,'ip4',undef) || ReadingsVal($NAME,'ip4',(split q{_}, InternalVal($NAME,ReadingsVal($NAME,'IODev','').'_CONN','') )[-2] || return 'error no ip');
Der Originalcode:    my $ip = (split q{ },$load)[1] || ReadingsVal($NAME,'ip4',(split q{_}, InternalVal($NAME,ReadingsVal($NAME,'IODev','').'_CONN','') )[-2] || return 'error no ip');in $load wird entweder ein Wort (segments|release|ip) oder ip 192.168.4.1 übergeben.
Im letzten Fall wird ip auf den Übergabewert gesetzt, existiert der nicht
wird ReadingsVal($NAME,'ip4', gelesen, ist das Reading leer
wird InternalVal() gelesen, wenn der nicht existiert
wird eine Fehlermeldung zurück gegeben.

Was soll bei Deiner Variante anders laufen, für den Fall das schon ip4 gefüllt ist? Der Code muss doch bei Dir auch funktionieren wenn keine MQTT2 Server da ist, denn das erste ReadingsVal() greift doch, ob Du das ein zweites mal hinschreibst ist doch egal. :-[ ich versteh das nicht :'(
Hat da einer ne Idee?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: meier81 am 07 November 2022, 21:26:16
Zitat von: Otto123 am 07 November 2022, 21:19:40
Der Originalcode:    my $ip = (split q{ },$load)[1] || ReadingsVal($NAME,'ip4',(split q{_}, InternalVal($NAME,ReadingsVal($NAME,'IODev','').'_CONN','') )[-2] || return 'error no ip');in $load wird entweder ein Wort (segments|release|ip) oder ip 192.168.4.1 übergeben.
Im letzten Fall wird ip auf den Übergabewert gesetzt, existiert der nicht
wird ReadingsVal($NAME,'ip4', gelesen, ist das Reading leer
wird InternalVal() gelesen, wenn der nicht existiert
wird eine Fehlermeldung zurück gegeben.

Was soll bei Deiner Variante anders laufen, für den Fall das schon ip4 gefüllt ist? Der Code muss doch bei Dir auch funktionieren wenn keine MQTT2 Server da ist, denn das erste ReadingsVal() greift doch, ob Du das ein zweites mal hinschreibst ist doch egal. :-[ ich versteh das nicht :'(
Hat da einer ne Idee?

Also das hat bei mir auch ohne Probleme funktioniert, da weiß ich auch nicht was hier nicht gehen sollte. Direkt nach dem anlegen ging der Link zur valetudo-Oberfläche schon, also war die IP ja schon da. Dann Template ausgewählt, Staubsauger neu gestartet und einen Moment gewartet, alles da  ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: meier81 am 07 November 2022, 21:29:13
Bezüglich meiner Frage wegen der Umrechnung der noch im raw-Format vorliegenden Werte, hab gerade gesehen du machst das in der Utils bei "sub valetudo_r", das müsste man doch hier mit einbauen können?
Hätte es ja auch probiert, bin hier allerdings nicht ganz so fit (leider).
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 07 November 2022, 21:36:59
Hallo Markus,

diese Zeiten habe ich nicht als Umrechnung eingebaut. Aus meiner Sicht stehen da sekunden drin (ich hatte irgendwo mal was von Minuten gelesen - kann aber eigentlich nicht sein)
Ich finde aus Automatisierungssicht, sind die Sekunden da ganz brauchbar. Da muss man nicht alles erst vor oder zurück rechnen.

Man könnte ne extra Anzeige bauen {strftime("%H:%M:%S",gmtime( ReadingsVal() ) )}

Gruß Otto
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: meier81 am 07 November 2022, 21:58:59
Zitat von: Otto123 am 07 November 2022, 21:36:59
Hallo Markus,

diese Zeiten habe ich nicht als Umrechnung eingebaut. Aus meiner Sicht stehen da sekunden drin (ich hatte irgendwo mal was von Minuten gelesen - kann aber eigentlich nicht sein)
Ich finde aus Automatisierungssicht, sind die Sekunden da ganz brauchbar. Da muss man nicht alles erst vor oder zurück rechnen.

Man könnte ne extra Anzeige bauen {strftime("%H:%M:%S",gmtime( ReadingsVal() ) )}

Gruß Otto

Kann ich natürlich nachvollziehen, gibt aber bestimmt auch einige die vielleicht die readings einfach nur in der Oberfläche anzeigen lassen wollen, die freuen sich natürlich wenn da schon der fertige Wert drin steht.
Cool wäre es wenn man ein Attribut setzen könnte, z.B. "timeformat", hier kann man dann auswählen zwischen "rawtime" oder "HH:MM:SS".
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 08 November 2022, 18:48:02
Zitat von: Otto123 am 07 November 2022, 21:19:40Was soll bei Deiner Variante anders laufen, für den Fall das schon ip4 gefüllt ist? Der Code muss doch bei Dir auch funktionieren wenn keine MQTT2 Server da ist, denn das erste ReadingsVal() greift doch, ob Du das ein zweites mal hinschreibst ist doch egal. :-[ ich versteh das nicht :'(

Ja, ich doch auch nicht. Und ich hab langsam echt Angst, dass ihr mich für komplett bescheuert haltet. Aber ich hab's gerade nochmal durchgespielt.

FHEM Update, Device komplett gelöscht und gewartet, bis es neu angelegt wird. Sieht dann so aus (gilt auch für den zweiten Fall):

defmod MQTT2_staubi MQTT2_DEVICE staubi
attr MQTT2_staubi readingList valetudo/staubi/WifiConfigurationCapability/signal:.* signal
attr MQTT2_staubi room MQTT2_DEVICE

setstate MQTT2_staubi 2022-11-08 18:13:46 IODev Mosquitto
setstate MQTT2_staubi 2022-11-08 18:13:46 associatedWith MQTT2_fhem_test
setstate MQTT2_staubi 2022-11-08 18:14:16 signal -45


Dann hab ich das Template valetudo angewendet. Ergebnis war, dass ich kein Reading valetudo_release hatte, aber im Broker eine Message error = no ip. Reading ip4 ist aber da.

defmod MQTT2_staubi MQTT2_DEVICE staubi
attr MQTT2_staubi alias staubi
attr MQTT2_staubi devStateIcon docked:rc_PLAY:start (moving|cleaning):rc_PLAY@blue:pause (idle|paused):rc_PAUSE@red:start returning:refresh:pause
attr MQTT2_staubi devicetopic valetudo/staubi
attr MQTT2_staubi event-on-change-reading .*
attr MQTT2_staubi icon vacuum_top
attr MQTT2_staubi model valetudoV2
attr MQTT2_staubi readingList $DEVICETOPIC/\x24state:.* _state\
  $DEVICETOPIC/.*/[a-zA-Z\-_]+:.* { $TOPIC =~ m,$DEVICETOPIC\/(.*)\/([a-zA-Z\-_]+),;; valetudo_r($NAME,$1,$2,$EVENT) }
attr MQTT2_staubi room MQTT2_DEVICE
attr MQTT2_staubi setList pause:noArg $DEVICETOPIC/BasicControlCapability/operation/set PAUSE\
  start:noArg $DEVICETOPIC/BasicControlCapability/operation/set START\
  stop:noArg $DEVICETOPIC/BasicControlCapability/operation/set STOP\
  charge:noArg $DEVICETOPIC/BasicControlCapability/operation/set HOME\
  clean_zone:{valetudo_w($name,'zones')} { valetudo_c($NAME,$EVENT) }\
  fanSpeed:min,low,medium,high,max $DEVICETOPIC/FanSpeedControlCapability/preset/set $EVTPART1\
  locate:PERFORM   $DEVICETOPIC/LocateCapability/locate/set $EVTPART1\
  x_raw_payload:textField { valetudo_c($NAME,$EVENT) }\
  delete:zones,locations {fhem("deletereading $NAME .$EVTPART1");;;;return undef}\
  zoneNew:textField { valetudo_z($NAME,$EVENT) }\
  zoneRename:textField { valetudo_z($NAME,$EVENT) }\
  get:segments,release,ip { valetudo_g($NAME,$EVENT) }
attr MQTT2_staubi setStateList operation clean_segment clean_zone goto fanSpeed waterUsage locate x_raw_payload
attr MQTT2_staubi stateFormat cleanerState\
<a href="http://ip4" target="_blank">cleanerState</a>
attr MQTT2_staubi timestamp-on-change-reading .*

setstate MQTT2_staubi cleanerState\
<a href="http://10.168.1.63" target="_blank">cleanerState</a>
setstate MQTT2_staubi 2022-11-08 18:13:46 IODev Mosquitto
setstate MQTT2_staubi 2022-11-08 18:13:46 associatedWith MQTT2_fhem_test
setstate MQTT2_staubi 2022-11-08 18:15:06 attrTemplateVersion 20221101
setstate MQTT2_staubi 2022-11-08 18:15:06 get set release
setstate MQTT2_staubi 2022-11-08 18:15:06 ip4 10.168.1.63
setstate MQTT2_staubi 2022-11-08 18:14:16 signal -45


Also alles nochmal gelöscht und der von mir oben erwähnte Zeile
|| ReadingsVal($NAME,'ip4',undef)
hinzugefügt und den Lösch- und Wieder-Download-Code im Template gelöscht. Dann FHEM neu gestartet und gewartet, bis das Device angelegt wird. Sah genau gleich aus wie oben.
Template angewendet und siehe da:

defmod MQTT2_staubi MQTT2_DEVICE staubi
attr MQTT2_staubi alias staubi
attr MQTT2_staubi devStateIcon docked:rc_PLAY:start (moving|cleaning):rc_PLAY@blue:pause (idle|paused):rc_PAUSE@red:start returning:refresh:pause
attr MQTT2_staubi devicetopic valetudo/staubi
attr MQTT2_staubi event-on-change-reading .*
attr MQTT2_staubi icon vacuum_top
attr MQTT2_staubi model valetudoV2
attr MQTT2_staubi readingList $DEVICETOPIC/\x24state:.* _state\
  $DEVICETOPIC/.*/[a-zA-Z\-_]+:.* { $TOPIC =~ m,$DEVICETOPIC\/(.*)\/([a-zA-Z\-_]+),;; valetudo_r($NAME,$1,$2,$EVENT) }
attr MQTT2_staubi room MQTT2_DEVICE
attr MQTT2_staubi setList pause:noArg $DEVICETOPIC/BasicControlCapability/operation/set PAUSE\
  start:noArg $DEVICETOPIC/BasicControlCapability/operation/set START\
  stop:noArg $DEVICETOPIC/BasicControlCapability/operation/set STOP\
  charge:noArg $DEVICETOPIC/BasicControlCapability/operation/set HOME\
  clean_zone:{valetudo_w($name,'zones')} { valetudo_c($NAME,$EVENT) }\
  fanSpeed:min,low,medium,high,max $DEVICETOPIC/FanSpeedControlCapability/preset/set $EVTPART1\
  locate:PERFORM   $DEVICETOPIC/LocateCapability/locate/set $EVTPART1\
  x_raw_payload:textField { valetudo_c($NAME,$EVENT) }\
  delete:zones,locations {fhem("deletereading $NAME .$EVTPART1");;;;return undef}\
  zoneNew:textField { valetudo_z($NAME,$EVENT) }\
  zoneRename:textField { valetudo_z($NAME,$EVENT) }\
  get:segments,release,ip { valetudo_g($NAME,$EVENT) }
attr MQTT2_staubi setStateList operation clean_segment clean_zone goto fanSpeed waterUsage locate x_raw_payload
attr MQTT2_staubi stateFormat cleanerState\
<a href="http://ip4" target="_blank">cleanerState</a>
attr MQTT2_staubi timestamp-on-change-reading .*

setstate MQTT2_staubi cleanerState\
<a href="http://10.168.1.63" target="_blank">cleanerState</a>
setstate MQTT2_staubi 2022-11-08 18:19:16 IODev Mosquitto
setstate MQTT2_staubi 2022-11-08 18:19:16 associatedWith MQTT2_fhem_test
setstate MQTT2_staubi 2022-11-08 18:19:37 attrTemplateVersion 20221101
setstate MQTT2_staubi 2022-11-08 18:19:37 ip4 10.168.1.63
setstate MQTT2_staubi 2022-11-08 18:19:16 signal -45
setstate MQTT2_staubi 2022-11-08 18:19:37 valetudo_release 2022.11.0


Und dann, dann hatte ich eine Erkenntnis: Da scheint in meiner beanstandeten Zeile was mit den Klammern nicht zu stimmen. Die erste ist die Original-Zeile, die zweite die von mir geänderte.

my $ip = (split q{ },$load)[1] || ReadingsVal($NAME,'ip4',(split q{_}, InternalVal($NAME,ReadingsVal($NAME,'IODev','').'_CONN','') )[-2] || return 'error no ip');
my $ip = (split q{ },$load)[1] || ReadingsVal($NAME,'ip4',(split q{_}, InternalVal($NAME,ReadingsVal($NAME,'IODev','').'_CONN','') )[-2]) || return 'error no ip';

Mit der zweiten Zeile funktioniert's bei mir wie's soll. Aber da sind so viele Klammern, dass ich mir nicht sicher bin, ob das so stimmt ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 08 November 2022, 21:06:41
womit Du sowas von Recht hast! --> Bugfix folgt ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 08 November 2022, 21:55:32
Gott sei Dank. Hab schon angefangen, an mir zu zweifeln ;D
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 09 November 2022, 00:37:49
bug fix ist eingecheckt und Wunsch ungefähr erfüllt.  8)
Zitat von: meier81 am 07 November 2022, 21:58:59
Cool wäre es wenn man ein Attribut setzen könnte, z.B. "timeformat", hier kann man dann auswählen zwischen "rawtime" oder "HH:MM:SS".

Neue Datei holen
{ $data{f}='99_valetudoUtils.pm';;{ Svn_GetFile("contrib/AttrTemplate/$data{f}", "FHEM/$data{f}", sub(){CommandReload(undef, $data{f})}) } }
Wenn man das Zeitformat von derzeit Sekunden (im Minutenraster) ändern will muss man das Attribute timeformat nachrüsten:
attr a:model=valetudoV2 userattr timeformat
Und in das attr timeformat irgendwas reinschreiben, das wird derzeit nicht weiter beachtet. Es führt aber dazu, dass die Zeiten wie in der valetudo UI gesetzt werden:
time in HH:MM:SS
Consumables 1d 12h 00m
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: meier81 am 09 November 2022, 10:05:16
Hi Otto,

vielen Dank für das Nachrüsten der Minutenzeitanzeige.

Kannst du mir mal kurz helfen wo ich das Attribut "timeformat" nachrüsten muss, denke ja das ist kein userattr.

Gruß Markus
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: rudolfkoenig am 09 November 2022, 10:15:34
Zitat{ $data{f}='99_valetudoUtils.pm';;{ Svn_GetFile("contrib/AttrTemplate/$data{f}", "FHEM/$data{f}", sub(){CommandReload(undef, $data{f})}) } }

Statt den globalen Hash fuer sowas zu missbrauchen empfehle ich eine lokale Variable:
{ my $f='99_valetudoUtils.pm';;{ Svn_GetFile("contrib/AttrTemplate/$f", "FHEM/$f", sub(){CommandReload(undef, $f)}) } }
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 09 November 2022, 10:21:45
Zitat von: meier81 am 09 November 2022, 10:05:16
Kannst du mir mal kurz helfen wo ich das Attribut "timeformat" nachrüsten muss, denke ja das ist kein userattr.
wie soll ich das anders beschreiben? 2 Schritte:
Codezeile steht oben um ein userattr einzutragen (das devspec realisiert es für alle valetudoV2 Geräte).
dann dieses attr wie jedes andere Attribute auch mit irgendetwas beschreiben, von mir aus mit willi.
Ist das attr nicht vorhanden (leer) dann werden sekunden ausgegeben.

Ich hatte vor, das Format wirklich aus diesem Attribute zu lesen, aber das sind dann schon zwei. Und welchen Formatsyntax sollte man dann nehmen?
strfmtime arbeitet mit posix syntax und realisiert Datumsangaben. Ginge hilfsweise für HH:MM:SS
Beides sind aber Zeitdauern, das passt nicht. Deswegen habe ich es erstmal so gemacht, bis mir was besseres einfällt.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: meier81 am 09 November 2022, 12:27:39
Hi Otto,

sorry das ich so doof gefragt hatte, ich dachte nur ich hätte da bei mir was falsch gemacht.

Hab jetzt bei mir das wie folgt im MQTT2_DEVICE stehen
attr EG_fl_HW_Saugroboter userattr timeformat Minuten

sollte so ja dann richtig sein. Ich werde ihn jetzt mal auf die Reise schicken und schauen ob sich die Zeiten dann in das Minutenformat ändern, zur Zeit stehen dort noch die Sekunden. Ich berichte wieder.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 09 November 2022, 12:29:58
falsch! :o
So wars gedacht!   ;)
attr EG_fl_HW_Saugroboter userattr timeformat
attr EG_fl_HW_Saugroboter timeformat Minuten


Das unnötige Attribute Minuten kannst Du wieder löschen  :D
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: meier81 am 09 November 2022, 12:41:30
Zitat von: Otto123 am 09 November 2022, 12:29:58
falsch! :o
So wars gedacht!   ;)
attr EG_fl_HW_Saugroboter userattr timeformat
attr EG_fl_HW_Saugroboter timeformat Minuten


Das unnötige Attribute Minuten kannst Du wieder löschen  :D

Ha, dann war ich beim ersten Versuch doch eigentlich richtig, hatte dann nur attr EG_fl_HW_Saugroboter timeformat Minuten nicht so gemacht.  ;)

Danke dir für deine Geduld  ;D
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: meier81 am 09 November 2022, 16:45:47
Hallo Otto,

jetzt konnte ich die ganzen Sachen mal ausgiebig testen. Leider habe ich noch einen Fehler bei der Umrechnung der Saugzeit (reading time) gefunden.

Habe mal nachgeschaut und deine Utils dementsprechend angepasst, hab dir mal meine Änderungen hier eingestellt, vielleicht willst du sie ja übernehmen.

Zum einen hab ich noch ein sub eingefügt und das Originale vom Namen geändert und die Sekunden gelöscht (gibt jetzt einen für dhm und einen für hms):

sub valetudo_dhm{
  my $s = shift;

  my $d = int($s/86400);
  $s -= $d*86400;
  my $h = int($s/3600);
  $s -= $h*3600;
  my $m = int($s/60);

  return ($d,$h,$m);
}

sub valetudo_hms{
  my $s = shift;

  my $h = int($s/3600);
  $s -= $h*3600;
  my $m = int($s/60);
  $s -= $m*60;

  return ($h,$m,$s);
}


Dann für die Consumables die Zeile angepasst (valetudo_dhms --> valetudo_dhm geändert):

{return ($TMF ne '') ? {"$value"=>sprintf "%dd %02dh %02dm",valetudo_dhm($EVENT)}:

und die Zeile für die Saugzeit noch angepasst (valetudo_dhms --> valetudo_hms geändert, zudem die Anzeige geändert bzw. korrigiert):

($value eq 'time' and $TMF ne '') ? {"$value"=>sprintf "%02dh %02dm %02ds",valetudo_hms($EVENT)}:

Hab das eben soweit alles durchgetestet, funktioniert und passt alles einwandfrei.

Gruß Markus
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 09 November 2022, 17:21:14
Ok war schon spät gestern, habe ich übersehen.
Habe hier noch mal etwas gelesen: https://perldoc.perl.org/functions/sprintf
Gegenangebot für den time String
           ($value eq 'time' and $TMF ne '') ? {"$value"=>sprintf '%2$02dh %3$02dm %4$02ds',valetudo_dhms($EVENT)}:
Der Rest bleibt wie er ist. ;)

Edit: Ist im svn ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: meier81 am 09 November 2022, 17:37:52
Zitat von: Otto123 am 09 November 2022, 17:21:14
Ok war schon spät gestern, habe ich übersehen.
Habe hier noch mal etwas gelesen: https://perldoc.perl.org/functions/sprintf
Gegenangebot für den time String
           ($value eq 'time' and $TMF ne '') ? {"$value"=>sprintf '%2$02dh %3$02dm %4$02ds',valetudo_dhms($EVENT)}:
Der Rest bleibt wie er ist. ;)

Oder so, hab´s getestet, Utils neu runtergeladen, Änderung durchgeführt, funzt einwandfrei  8)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: michisa86888 am 14 November 2022, 20:24:52
Hallo zusammen,
ich habe nun meinem S50 auch das aktuelle valetudo verpasst. Installation ging problemlos auch die Einbindung über Mqtt wahr erfolgreich. Template "valetudo" aktiviert. Und nach dem Start des Saugers kommen readings rein.
Habe jetzt beim Reading "map-data-hass" eine riesige Zeichenkette... Denke das wird irgenwie die Karte sein? Wie macht ihr das mit der Karte, kann man das png irgendwie einbinden?

Hier mal ein list vom Device:

Internals:
   CID        GenuineGentleMeerkat
   DEF        GenuineGentleMeerkat
   FUUID      637150db-f33f-487e-7e46-2242cd988787c3cf
   FVERSION   10_MQTT2_DEVICE.pm:0.266090/2022-10-28
   IODev      MQTT2_FHEM_Server
   LASTInputDev mqtt_io
   MQTT2_FHEM_Server_CONN MQTT2_FHEM_Server_172.17.0.1_49008
   MQTT2_FHEM_Server_MSGCNT 13481
   MQTT2_FHEM_Server_TIME 2022-11-14 20:23:19
   MSGCNT     20746
   NAME       MQTT2_valetudo_GenuineGentleMeerkat
   NR         140
   STATE      docked
<a href="http://172.17.0.1" target="_blank">docked</a>
   TYPE       MQTT2_DEVICE
   eventCount 7636
   mqtt_io_MSGCNT 7265
   mqtt_io_TIME 2022-11-14 20:23:20
   OLDREADINGS:
   READINGS:
     2022-11-14 18:21:44   IODev           MQTT2_FHEM_Server
     2022-11-14 18:24:36   area            0.00 m²
     2022-11-14 18:23:56   attrTemplateVersion 20221101
     2022-11-14 18:29:45   batteryPercent  100
     2022-11-14 18:29:45   batteryState    charged
     2022-11-14 18:25:20   cleanerState    docked
     2022-11-14 18:23:56   get             set release
     2022-11-14 18:23:56   ip4             172.17.0.1
     2022-11-14 20:23:19   map-data-hass   �PNG


IHDR�����\6IDATx����oUڷ��@�r�}�HHH-�R !�M?4��y�%�~���HBB搄@B�@�CB�y��8sbǙ�ؙlj۱�؎��݋��ZU��vU�ڃ��K(xW�Z�V�Z�5��
��H���(�� B B�p `8�p`8�p�! �! `8�0a80a8Á0��@���@��0�0��@�p ���p �� �p�! �! `8�p`8�p�a8Á�Á�0��0�0��@���@��� B B�p `8�p`8�p�! �! `8�0a80a8Á0��@���@��0�0��@�p ���p �� �p�! �! `8�p`8�p�a8Á�Á�0��0�0��@���@��� B B�p `8�p`8�p�! �! `8�0a80a8Á0��@���@��0�0��@�p ���p �� �p��p ���p �� B B�p `8�p`8�p�!~��0�0��@���@��� B B�p ���p ���p �� B B�p `8�p`8�p�! �! �! `8�p`8�p�a8Á�Á�0a8|�p�����w�s��s���p �����+��oj� Uנ&,%C���u�od�0}�#g�R��� ).:�ۥs�:�0e��,��Q��v���\�>����{\+���G��k��S��I�7��"`8�b�t]�U_���`Gd.]����=�W �p@b�C�ե�_�� `8��3�N���ߪQ ՞㺉l��C�:��p $a8L>����K1�� �p@҆C�_fs�Fd���H��D�Ҽס��޽�.\U���Gy����5"Gvw��n�ڦ.^S��RO
�>剡j�NU]�O��ѣ?M-��%}���IU:{�{<�=���]]���v�ž�U{�/�;��69�����$�Ң�����vUyE����$7n���vX��==<��1��t�����%���������Q�.�ku�X�4���! G~
ǼM�1�-� nj5��ӻ�n5�����fDPY���� �)���;��x.Ј�������.5{�lj����!�N��@��=9T��)u�W�2�����s7�-|�[����O�\"]q�
�0<%��d� B�<�[ �q'��0����z,�h ���Hk��`U�t���ɤ*�������<΍t����G�~q��e������ɖ����w��)�T�'U.���]@�Z_�[Á�#_����}��ڰ���iv�[TZ�'�>1TW�����i��'��N�1�ԋc��xy�Z��1�d�f��o�;Z��,խp�ʀ��yZsS�2>�T�F��a�=��c��q�1���
x-��p���#,��kz��a�w�)z<%�pDJy� �K�+��>vVw�<>Dg�Y��HF-�E��@Ñ{�1h��a7���5e���;����~l��h�.4zY�γ��z��w�w��I0U��#�T�V�.5��<���(n�ҍ�Yb�� �u��\-U^q��2�R��O�\B^�qE�eק؟^���Á�#��b�_��f�S���L��!�e��{� ��ᴕ����P�����|�#��"�K�MU���T۟~�<TY�ݣܔ9��I�G�̴�^U��6?��1�C<�;߹��p��<d��l���������&����<6XO��4����0y �%M�o��
�5ɘX๶����[�J�5���mǪ]S��z��5q�E��
6�L��t{���G׵~�e�}s��xJ�������:�4�0)S�'[.a�hN|�x��q�1J0�Yi=��`8o�P�O�[��w���VG��%W�f&�A+�]�a��o� �&UQ
��}�����v�{�l���9�kxfD(�af¡�Ȇ#j��T�ɖK�+������c�n�Q��090]��c�o҃��gx�`8֕D(A�|�+�S�*��A:��_w��'��
�S�p��mL|)q���z��5w��W�6Q������.���3��G G������-��W�3�))=ŻÁ�#��T�0�vF(�cg���$�0 �����$=�ߒV?�m��5��q�QG�ڣ������)������=�p�Ky��?�r s�%����p ��x( ��jϹ�Ғ��IWrք�{A���혵ֱ�Rd���KU��#�=�4Ξ�x�^��v��mn��-�g8f���^Q�p�K����s2�r s�o�:� 3>�D�p ��(���H���vH��6=�?��+;&,u�pXK .��_�lGV�J�pds���s�y�J=�3f�һ�<B���x)?m�5v�wN&[.a�h�g�H\���̱�* B�B��r����W�O�n�ZU�/%
o8\q���*U��l��\`b՗==ޛ���hhv�΄1�R���}ֶþ��`�����s�a��Ķ�?�ZNjÁ����c�~�ܶv��/_۟��<��U]{�4N7����],ߩ_�f���v�>^���`�g�6~�^�)�b�\�Z��ّj�bcے�!F�r7��=���s:do�^���dݦ��z����oH%|����]:D؋cuVK���zA�����#�~���4*�0-���<^�0�4�Z͔.]��v�'�
�=�Q�ɬ��@�jjѵH6�J�pĸG�Ei+H�wW�h8�a�O�/�
�皤��K�\�_1�^*��p ��(��vu�E�ɴ��h�}=�a��x�Q2�jf�fv�{�
�5�QS��ب�h"�ɜ[u;x�|�{2j� ����tdO�_H�\"]1x��_����@�Q$�C��To��xGWE �x������+z�O9��GW*u
���[=�J�:A/��Z�k9��Wu��֡�F���;�c{k�����C%_.
֮n�o�ܒm:��_���*A��]��:?��i8,q�Z�������:=����d��dR��8�M%{;:uɵn4���$^.1��f��e��#�\�M}�������@��3��s� �p@2|<�^���D��! @\��W�l;����6Q<=6X�j��YdXZ��� B���]��gUs3h �a8 ����^CF�! @<;R��Q���Ѡe���U*����[�@�o` �p�! �! `8�p`8�p�a8Á�Á�0��p ���p �� B B�p `8�p`8�p�! �! ��0�ݬ����ܠ���B��jh�p@��q�u"���Z�Y��Sk�II�I�I!JQNZ���"3g�Iyn�:P�z{������N�W/�s�cU
���p�����y$����6UyЍ5l�G �SH��O����s�izd�Z�CuާN/Ru�W���G��`� ���~Ȑ��&��zTl���ޜ���ޞ���1Ph�н������|Q��Y�_���c8�����G
�!��Rm<����� &��m��C#�ڛ�Uw�
g8���������ר� 3���wq�� #b��0���}���Y�Z��yRs��aU���t�
d8\�7b��Ԟ�ڸ��{(Wόȶ�.\�p@! DŽ�ɤ{�u�� '�\�>��L1�[��������!�^!1ut�( ��p���5��L�U����� h�> ��ptu��|�p�ߛZ����$3ߛ�p�2^��p`8�S�O}�Ţ��[�UU�:tIm9���T?T������K�?~:�����>��m�V|�A9(�s�1�|i�ʄ���̢�ZV��5�jW��Z��W���h|�Q�,է�6�N�C�&\R�Wc80yѽv04٤��T�ч�uj��8&Ï�6�e��
�U�q����K�������胳��-X}�Ъ�D>ܘ��H�
j�9u�^��q������Y �#���,�t�?������� ��R�k��ӳ�.�Va80���p_=>$�D�?-�����g5\�rD5����J�&�+�S���. �#�:]�p�K�� �K����`n#�?V�u�T[g�n��T�\��O�����n+��k5���M�&�o�SJ����mk,�E[1�\���I�xɶ|�[��j�"�&�����|d���Iܫ0�ܭ�hJ8�yس����H�F�/���ֵ��ˮ��Ñ>�drߜ��a�Z����H��$�z�$���9 GQ��({:v{�zty��7���}�F����.'c�d��_�1wc��]�7��=v���C���p�gbn��dž��Igô�vNVT�!0w���T6_%>o���]�׻xr���c>=������i��p�99��^�e�����X
���s�'��I߿~�p5{O�9�h+�z#^��9Y}�й9�F,N�FT ���'����hmKx�a��ol>�'�F
I|�rH�'X�w�a8�s��߿!C���;��;�#���U{r5$����K�8�el?ɴ�k8.\M2�K��*���r��U��%]�U�,؜d!�:D,?��<=\�D����dH�� ��gp����P���p�2��dZ�5��&�ֲʜ$�L�� �T�?t�Z]�N\�[ȶu��a����z[Ͻ����5�8�9
�q*�
��N{ GQ1�W;w#C"Pr2�y-m���6�0s�M��Ї-c�I��_�1{]�imn����F�����1�ԁ�8ۭ�jQ{/�Q;�Y�R���W��u�/~ұ�q�����LZ�j^�:z,拟Ը���Gᯣ��c�2W�^�Oyvd�7�?R������c>�n�w�!o��>�<Iի�����~щ����U��������9_b}*��Q�QoMQ�~�G��e_��u�S�ҟ�R��l�26�d�d��d��9}G�2I�4ȇ��`zb }}R��k�T�ޔ�:�_�_��m�UY��|�Q��Aַ�$V���旟tl.���j]���i��i+U�u���s�����
���>��Q����H=�v����F$��gĿ�gF���g0`��_������z~��ȹ���ytG?����Ƥ.ς�*s�vu�^U�-=��u�㔞Uy�#�2"���w�vu�m#ߛ!c#%� �y2���56s�'��9���6m���t$��V5�@V��s8���%�����p!�S����s������-�t5�:���,h'?s�H�#�1�B��C��.Ŋz;�.�g ��M��y+���y|�)���F�[|������ҽTSK���� ���y_�\�I{j��~��;:�.������<g��p�~�Yr�<����R�|Kn�4�/�ls��Kzbf��b�pd���-ɛ��
��ìZ�<B���˞j������n���/�ǿ6Qo�cָu
zu��؝�)򑞘 xrhPs�\�v��G�V�qG�8y��V�[0w�r-���`�z�p�v�wwԀ��oxi��э�e��}d�n�\�$&����}U��,9E܏�пs7���F��u9)Vqx)g��d�����|f��p\�M2���'���V=�!�f�U���Ǔ�שGX�� og_]�hQ�b8��:j����?;�����M��+�д3����m����������st}c����Ys��0!�ku9ܽ�k�ط��m��g�N��jl�<����m�#+T�ܣ5� UZ�+�-iS�f��m*���B��V�$�;��5�Yf�`1�ͶG���
�X�Vy�>^r^,���� �K��#Iy�4ȷ�8v6Ʉ�$Z��*�S��ת�>���K1#�~_�d2�Ր`QJ�QlX˕���j�ْ�Fz��3@^��V:��.Is�ޙj���O JR�#=�6Z����������ؒ�nG�ʪ��u�룱���S�|��s���:ai���8€Ed�ʎ�(ذ_�y-]ꛥ��4V���=�nvO�]�%� ��sͭbBdl�$�3Ӡ�c�$#$��[q��7V��:�]���;VgL�;�<?:���w�Q\<2������}0;�G�o5�]��@��K�].��� c,Ü'��Q��AK��=��v�,������!���T�Vo|{�w�Oz,6�ڇ��+he�5��ճ����N���wy����Og�m�K�Y�R��z�Lp�dl�$�3Ӡ�cَ�R��O��J1#��A}g�^ER(ɥ߉��������l4(���k�a8���s������x�G3��մp�/��?��Z]�������Gf\�;ey��vL�`�"�UZ�^pWa��:y��H*H�I&�a��t|d�44{O��\4Fc��/��i^�oM��8ey�#�36v��iPÑ`���[�r�j��� �6̢��Ɉ�������6�� ^����?f,���(f����u����<]��Zk���5]��.������=^�!��؁��?����.{чUIľs������R5{��5���)��<�{�4�?~�뭔��H���XCj]��#g����Ac4�z�
�=���4j'·
�&x�_��KR>3
c8 �:�Mb�>dk����=|SvMo '�?���l�x*����/�$��aΐϒq�1Ņ9[�5��\.kN�3��0����zE�S�\}�{a��.�7F�#әl�"֦���!3a�n��v5���='&@M-�lGA�U�;'LwT啠~s���e��9e�\r�،���-�a �\!��L=U/I��4(���xfr1�-QY���x:�U��Ԏs:ƹ�w�ޥ�xmi��͒���?�В���'8@��Hk��T����^�=��Z�lNA�0{&�f��?M��t������V�?�k���2�����T;�� �g����q���>ц&=�еX� »rw����yr�L��$�
����Yw!���Hq���D�t�-�86Cم��HI�g�Aa G�ӗ&�cjI��z�N�f(�jnS���]W�_���c�9J4��5nw�[��ѡ��J���"�C�8NV5�����黂��!��vZ��F���� i��[�\H�XRU��:�㾞Ha�vV��m�Zu��Aj&�ؒ�z�e�:�!!3�טE��e��H��gu ���AW��+H��֜k݅g�ַ��� ڌ���j������L����bP��Bʺ;���HT����8�=�Z�7a��
{���ȓ9�7%�{��m�f���p�_�M��� jƙS��e���Z��n av�0c��3
8����̳���44;��.���>���\3?����φx𪜏~ � �yr��
M�l��T��F�-�]��Vc�H��jo[�Y"f���WDX����xI�g�Aa ��vM� �F�NE����
��]j�����|H�����J�Q�t��X�W�c8�sfWϰ^.��=�Μ�g���S��y�\<;�#�|g�ѡ��[$���M�#R�;��E* kD�3 a��q��Z��7x���Wtm.�ZF��b�㘫l���i�>�R��E%Ya,
}j���ko���q�L6� �� l~%bV��NW���N# cc$)ϙ�1�@7�p9���4J����.��N9l���z��7��������?�"������J�/_c8��;��mqs��k����ݭge~�\���
Y��!5���7���a��,�=
f���� ��R~�w����s�>��q�p]]zr���=�Htu��l��9o�^�y�N��R�ˏ���W��L-ު�63��d����iͻv�pm4c.D�����:W�n3y���*�x�#��b���RRfP�1�c���˭�
�Z�vӉ7}^@��HR�3
c8��>�yms��O�A���3{�a��n�HIU�o�~Yo�����%��X0� �7�/\�2��������AC�� 6��j>��$���-�u�݊���ҳ>����l�{�9?�l�{굉��jܿ���F�]Ĭ8�-wݡ&�ܠk9��U� lnu8�����8]�V�#Iy�4����l����"T��ӣ$a�����F�5�Ƕߏ~4��P�W^�ȃ��(�����O_.�����gx��{zt�nk��X�/~z�0��߁�����3����V3��TԬ�JOeE�۱X���H0'�I%WrҷsQ��j�{�;����8L�c�N��f��m�I��Yt��ߩ$o��v���k:�������Pp�l�o�Aq��;6c�&)��0OM,�f7]<}�#B��:\��f�n#Ro�X�H�5Y�*��۞��(V�7#M�]Q������)Jy_�_Џ���ͥ,��~��6_�o�ˎ#�x����z�Z����G�6Q���c���=g�3TR�p�2�f��n����z���幙Ȁ���S�w
��;�jS��z�ы�M�7�X��Wt�6{�����d�n�����\��� �������b���.Y!)9{I��6�y{�}�g�� KuJ$U�$����������X"b$�e�2D�M\��ƅ���I*T�A^
dz�M5�o�PG��[�*��1�wJ�' �F6|�#��J�A�WW9v����B�
�Ñ��-p��tUV)�z;B�<t{��"=<�B�Y��U�elU}VyX�ܲؗY���HP��6�T��*%�.%��t����˯����������H���Ñ�<���a�C�N$�������
w�D��,�<L��!s1��4aib�\�5�����񷕪-D0��U97GC̓mm�����������f��? �#�ܞ~��R�ɦ����[B}�#97K�'|k�g�)�g��x�����HN�v$���f�OFo��%d��]�n�{�GeX����C��meV[�4=ɥ� Gbڙ܆���n�P�/9�;�Ϲ�� \�įQ���u��Þ^w �l�{���HNe�I&�Nk�d4�F��������krn8^_*%�6rk����-Ie�E �#9]��dBco{�)B���b���ֆJ���|�S_y%ɢ�V���p$�;�I&t��|��p�>ߒs���M�ƭ���p�ﲑ
w�a80ɩ�WﶗTB���#)R�]�^g���fVn:�;o4~��s��k��菆Cy�0��G�7,���U�o'C}犲����E�i���8�m4��1���pK�im�5"���J.�XyM�
G��P)�,�v*��q2��v���e 7 ��C�N&���q�s���%�l����:�*�ܹ��Z�/��
܉���9f��>�d!(�p`8�{�ʷq��>�b^n���� 6��h�4��2��S��hF.H�knb80I�~�ztPbi}r����s!B���k���n4��p�YN��mu�� q��^G�%��/UW7�Ñ%�g�p�*N�5F��W���ю*�'?]T�L(x��Asr���识#�U�kbE��Q�oC���o+UMc�>�w�%�6�WwB���r['2��~�Q�'��i+�,�U{0�ܨ�b��}|�j��!Ț�h��[BM�<]���ș����R_D�<��T�LkkW�
N���]�p`8r�{�ꑁI����8ɨi�\��>*�ǁ���ƞ�,$I1�޸'���H���1h��p`8r�As�L�?�L�Ľ���ݕ����*��Z�6OI11�@��3�,��?��Y�'
Џ
dž� ':���3���꿭Te��M��G����Hb�Ƨ���9k���u ���C G.u-�k�Ƙ!���\[��*l�Ϧ6�����?�4��u: X���+fH��.�� G.%�k�L���TcK��\�3�g�N��z�}I���n��T!�oĊmz�!NF�nNx���U~�O���� �[�0�~�<��ա֏Xj��J.���ֻ��:��މ�E��Z��XnCn6��nO��~ۉ��p�^�5 ��ɡ�%�ާ-�����Sy�m��w1�;���:b�I=|9�����A��ZB|���d��j�Ñ�Q�7''�ti��Ӊk�ג�,�a��i�N�O�1�;oS�%���7��׆#kU��b&f��������~γK.iϹx���u�v³7�M� G��М|�X31������/���_-�j�ՠm�'��w�� K�/��& �#��j~�7p�j��4���Į���Z�o�i��^�� �ڍ%�:[���W�/��������p(u�|�7����;�W���'ل��P�-WB��C�r8����&殰"����&_@1�_��ݭ^��=l9?I�7�D�2�������u�N��MJ��R/����{�/)�� ��p��J��n4�ORٵv|]xT�툙����� ��r�R�L����\Qa��<?_��0���M=14���d��>�f�D���{��n�b����M \}�����խ>��|�<=\����Ѳ9���%Y��@U����{�ܾg�ϑ�cW���u%9)����p��p�GM-z$�;���W��t�z�sH��W�W����R��%s���vɹ�:�r1��Ԃ���т�9���G�;�Y%��m��|������T����l'��kR.����=7*'e�d[A�,~�3Ɲ�tr#d5�CTߪ>ۜ�!��a{����ȝ�}��n����QW�4''����܊��B���c-m�6m-�j�Ĝ�0e�ތ>�/��$��KK��
2{������{��_��JʲM^w��|&I�� ��T]Y��},W�/��چ���0���ruW��s!�W���{���Wg� %�� 9�(�bǑ>S��0^sޞ��{r��Z��t��j��pC�f;i����9 ������#�c80������U}c2�heY��ƚ�d*�[�ꯣr��y�9�����~����2^�'�7z�M�mJ����lR�u��BC���79���K
�4��p��l�a���D�
7ut�u���6�Ol7ڛ����s��O
S�-(VÑ�)ޘ�mMR�xK}�9�V�7� %%q/��m&�>^ �?i ��zz�й��Oi�g���K�]z��?V��j��*���MIJr�/��m��㎩����3��O���>3BU�$����dv_3��O��I2�r�ώ�m�>1T�E-�xhx~�2W�;MV`8֞�9�[�4�/�����?���nֻ�%�#grB�$�0k���Q�ّ��L��S�2�g W�����;>��R������M}�#?�#Q�����r~��B�L:2UW�*�Vﭏi5�Y�v�W�I���T��h�R]p���AstK��^��e����Ӓ�n�a� �PY:v��9񮬒�Ñ����SKb����S��׾��5�ƫ�Ԋ2�֑��Vs7�#��
ż���\�?Z9c�-��G(�����14����燿_��zd`>�|��l���T�=%,�|R9@�FSj��;�����@)������<̿��KTi��Xv�O㝋���Pl�Q~��h�> �#7�v8O7��XUU��[hi��X�{��~(9���W�pc~ro��"|v���%��a80}��m8��#&\��V��S+���?��^5}u����Aj�!�.7j�P���))���:���"9ZZ��$�[�������n`8x�b82�Qp0��p�:�g,甑 Tsk��K����ٮfM-��]��� �8�������p��c8��v�^1�����(UvA�E>���U�2�1����pĮ-�m��x|��YO �����&�xN"�s��>������P��9r�|��<��twc���vGh�<l�B}�όH�p�5E;{��H�a�@��J�^m�ы|����]�9��!�O�a���+�5�|g� �䆤M
e�/��Fxx��S�~�a�&���1�d�}i�t�]X���K GޕӍ�=�aU�-��)Ҧ�]�����t����t����~�҃H)u���������\�/\U�ݎNʓ�����m*U��tzLIROWyOy�s�w$�R���k����=�}2meL�!u�zǰ��[j�� ��~\ms�����%��\���l\�y�R��Y_����2�,�E[�_�я:��k�a{�~��.��?uQ/���Gz���8~��Z/�s�����8�á� ����G�����(����Pk�˙�b� G*�L��6���5g�y*��G~����+ܧH�-`֔��Yk���V�uXJ�����E�x?������]]�n��k���u_�^�}b�bׂ<B��4���
�<T��a��)�}'=z&��H���9�Gw�zd�O���bH�`�u��"t��"ֶ͐h
�D����_��p����us�y{��S�M��3u�:�!��k:�4��
�M���$/��F�Flhr�W<��hhv߻USz&��tN9��9��o���[<΍Q�k�\{K���uֿ~�?�x�!�ȯ�rw�J��.j��p<;R�L�X�v3r �m�x�=W���gB�����̽�Q3q���|`8
�- �5ώ�/�b[�q�|�wb�d1�Ĥ��Kͬy��>��~S�X�%[�1a���T�3�ؽ����]��>q��m�@�g��%]qB���;L�s�¨u�"��ڭo;X�m�Hl<`�}]�� o�v���G�v�I��#�b�1�֩�!�Q?�av���sLU���'��=rئR�~ƚh�#�cl>3����&IO���1�O��t�,*�9�ͭ�)��`��ׂ�0��v�?�����1�A�;W�~>@�(��*���Ɍ)�-���Lu��#��bL�zojV�T��-^|����+�pA.Y�G��
j7�#dV���FX��g8��2><淉��~���c���ί�9N�_���
V��6�/L==\?����G?�4�DX��=#��p�<�>���{¼�\27��xi�����dz�g��7��{��kn&l8���Ֆ���f�I��^��N�"�����/�f������R �Ѐ��.�0 ��S뷀%d9�
޽�-� ��c,j�H�����(}���`Z��`9%�����,�|��p!��� ����<F�Q{����sx>��-��k.�����<4�v����@Q~\�S����f"�c����{RߖM����4����S|��l���'��2�?�/$c8^��X�r�K<�geƎ�r���B!
G����^n<3f���`8�I�v,��4!?qIM_RV�=��U����
�o�2�@昺��c�eQ��\�9�Y\Q>.�c�^�9" ~[6E0y�� r*&�4�ͱ;R�*�A,�4K��e<2���n�h�֫9�=V5f|x�kV�%�7Q�Ogy��<2P��o��_E��m����_����=�����l�b8���0�w�,��u�}Liy|�a^+�d�JG%���,�c�Q��/��p�}[6E�/���ߣqHA�C��|�T���ƶ av��#d~�g/W<�!|�����ҵ:��h���v k8b<�B]��3C�����p��)/�v>��l'q��.�R��е(�Q T��-l��T���7K������X����K3���n����S�Y��}�pdY�.>�{w����v/c�*�zX�����B���"y��� G�$i8��v�����U��U�����R�/�����XUV*|r�X���/I���cF)�QZ�w����z�}���>f�\��뷼�9m�k�+3��;fQ����҈w�^������Ȳ̙1�5o㋟c.7��E�YZ��Ј��������Npı�[��1[�澡��85.oE��sW�0mjqtba8�W�p����LDŽ�,%����zb�*�ا�����j�,�n����v���$_k�di���_�|������tu�F9�W��܇��4���,���!�����m��6�S�܋���אݽ���B5�v�^�Ñ�n�\.\�Ϗ�c���ƅz��=��Sn͐�K�c8�^RI��HA*�Df��:�yUxy����z����6׫YB�yo3^�W��I]r���G��%��q�� ;"��_������r�D�u^z�·�pd_�[+�0o�5 JO�#d�H�����5O
�~���h��r�u{Pn��O��x�q�w���c�tu�_
����M/I*l>N_�vif���5�������p�����Lɋr�Zݯ.Ճ���g?�gGڝ���h��w�ݶ�mF��vg�cs͂�����E�O_�d�[SMmy���<�W�0ieVT���'3��-�Gr��5�;�,6o�#�"0����X��a9��Wԏ��՝V���N={T.�q�X?���j�'q���kt���Wn����z�w9�3,���zpj�G�3��]}��8}��%�5��"���� ��Mׁ���VcPȿ�����n ÑO�^�t���?�mǃ�"Cn���o���8��a�;3=<s��!�m�ܚ����Ȳ��wC,��E��P�Ա�a� �����˂�-��ȸ[u�o9(��x����X��& G���GX����G��W�
���)����^��p<7��&3U᜶��� AS�H
�����~�\7��j���S�r�;�dm}�rtun�9Ñe���j�՟�zox��7&e�k:��8]���
�l��9���t�P��F~�c<�~�@<��b8����p/��?k�m[lu�0jj��5w0EˤeztY^X����W������+\j�m�tE"m>y��>����3:K�iC//P����O���J]n�>k�Ϯ%�y}��=m����?�6��W����/�a��
X�|��5��?o�|׉|[�"x}���/Oo�JbR]��9��G(�{S�@[�!I_;�޹y�� �#זoC�걘��)� �1��<~����Q߻<��9K9�J�fi����d����u�#�)#�8[�]��,�~?�g��P]��ӄ�+�*��N�9��>��^��y����,�@���65��B&쑁�����P�<�W(:���l����p*��^O�,`�6Q�hp$����{����-�1���5;����O���5m������0 �^Y��c;�|[k�DU�z��+�l~xV�`8���K^u�{�����8T?���oL.X?6X=�'`0���� ^�Pl��^ڪ`�˔���8T�P{����?o ����1Я��)��1I�9�V��~�*u �~W�����_�m��S�oL�]I�� G���v��Ց7~Z��u���I`8�HWo��C�B}u�#��0�\���@�m��V�ƽ�~[���0���Q�z����o�o�����:V���:�y����gbu��,��Wg/Q���p ����O���~w�ύRώ|n���v9~8�� 0�k�X�����
G�nO�k��7^[�EOZ�0ܑ܅��]�0�������UP\��p�2^�xq�/~����u���Sb�;rƾ��
Gp��-�av��nʚ���Rp�f�y�B���{��������=�ύR���F.P��T/�
�,�R5nq�x�c�w��i�px�vs��f��'��m
��7��)-�{��ޟV��c�Q��m���A��w��-;��0!3�o��7�_�ܪ�a����O9Y�7~,R^vwu��������}�g�ռMA9��w�䤪or��xG��/䀄���X����oy1���.��Yq���z�+����u�֊�p�����Lu���������Vͅ���}�pl��(���2��d��Rm�7�q%?3���}ɇO��� �_p�A�i8D[b8��N�WO/��~��b�p���Ǡd��r@"�*�#$������ ��fƦz|���p�>K{�V�����mku�w�W_ro��Րs忽��z{Jf�!�a�yI����EQI2j�) G1�u%v�;��C|��ӗ���,�p��p��b���;����m�Mu��ۆ����y�ь|t��Z��LO�H�b�rŚl;��8[ȿ�/fo����~�t�!Y�73���%
������j�~n8�m�g�����t�!�T^����s��_N^�r�<���8���I����վGN[i����F�+W1_}5O�'
��p����nΓ�j��%r!��gF���Ij�\�`ӷ�'��u�r;���y��4�]�{Ϸ2;x��g�����̕���w�Olj���X������_(.�RG��g�y�����ЇOg6���)#��N��I�t���!ՍzG��[j�� �Hw)�/���z���1�ZQ�{ة��a�:4k�M��Z��y}�K��ҫ b�H�2Ã;B̀��x\E����' ?�!��%�-�۩GUרo�����̉��x� X��`W^�(,�u��C?����p��Ч��~�ܲyw?�:X>����~$L�a~�<��]G��T.����`8���𲺔͖�KR�|�"TR�mrt>{���]FMi�*�/����[x��Ȇ#ƭ��p�4N�h�\^�C�
 ���{0�Z�Q{�#hi�y�8E2ܜe9|�{\,ja�yD��̼�)��0_����wg�e�x�cI���p�_�[���h�+y\"u5g�����u���-��p��߷y}�~�V.��q �4di
ˉ�4 q�*
B�q9������ֹ?������oԭ�&�?pQ�h8b�Z� �m8�Gm�L��_n6���� ��Ǯa�����]��[�RiY�pU�u�=ώ���gt��i+�-,�mh�7{���u��x6��4?�v\��N��C�\�e;3�b�q�M����y�C
�o2�9TQ��2Hi���&�1A���\*+��Cu�K��
&,�?�w��5�������<�QU�q��k�K��?�N|����l���-%�z�`���Bfxlñb�cZ�w���4:~�� AZ�Vo�|�9�`��$P����&�3�"��y�zc���/��]�5��������9(v�g?�!MD�ɥt�Vߠ_�.�2��P��L=?��p�_F.���Ā��X rK^(�� �W}�l�p$�JE��9%r5����=Q�3�5-����3���y��#��5?��W����~2n���g�#�x��k�aVɳ�FX�r�6��횊kN�2�������n�r<�sr��;\���V�B*s^����/�}�{{"�)1j�� F�xSa*~yi�2{��
�+8�Σ��s�hlE~���B���Ś
��k� , ����5;��n �`3�k��ـ��a`�j �� k8b�ZN
ǀ����܍�,������b��Cb2<ìm;��j���YA��Ѯ���_F�w;�l
+���� ��#�>=\π���}/i>|ڱ�g�/FRO���C�e0b
-O,Ϫu<��N�J<ֽ��I�p$k8��n�c�r��U�Ү���X���k��걯7��'�4Q��)z���l*aM,p�} G�[˩�0�2�_�`8f�1fi��2gx��k�v������S�C��m7��p����1~���V�P1'+�m�Ihs�1j�nG�:K�G����Y��¼��S���4���ִ'��)ǃ�@�*=�pyHÑ��0M�9�nv�g��"ύr�C��[�c�/r�SQ�y�Rx���rj8� Rd�
�o�쿻V@d�rs2�5㵉vs\��Xc(䗍�?�^ʶ�2���"���0b�$�]km,_�����l���x�)f�H?���X:T��@����)6 �����
�J�*Z_�=p�Q�w�2�S��{��2��f}ٛi����#����p����1�3��x�ɯ�=��տe�)�O�BO���X+��Q���k�-����q�q$��
�v��1�(5�󑁎^1N,�����mN�
0��j�@ �I��DB ˋ���^'չ4K��ois/u ;��k��S�4kEW�c���tU`��*R�����
G�[ ���r�Of�5f����c���]M� Qj�F�c��\#y�.s_1�2=�C���h8�Q����y����/^SVh3|��l)K��O������������a8P���]����P��P3���g$l8�,�<3 �F� �el�0�I�T�^c����ط2�+.�G�3�4������p~A��6힌u�S��-v�r����/��8��{�Ӛmae4f���`���v��X�?� d'v�űA� �����p��٘�p om9�U1��Ob8<(����J�p<1Ԟo!���Wj$���z�^C�f�l�w����6�k��ط2�w �p�g8��1zQX���@u��������`罽��5[ꮼ5'�*�PcV%�q?��
~D�m�����{\�-�6�$��9�3Q,�#�e�a?�fZJ����Vw�3��*�`8Phuw�]���;�9vF@ϙt�������(��p��U5]��������ҵ���|z8T�:�,�},��;�����Ɇ3���+�{@36���Ƥ�q8��?�zñ�Tx�<��J�Q9W+�w3FK�(V!� ���x�e>����|;q����J���r��eqmY'��٘���)& �̲�G�,�o�;�N]��
Q�RQ������a ��fÁ2H��vZ��!�0� ��;y/�^��<I�#UŔ��y͙�K#_5{�&���[[^��ӧ)ddS�G���4WX��$
3��P��+-͵=�z^���孅�pi����������J�9T�2R/���;��Q�����J��q�&�|��mu�J�JK0~�[�"\-��`���c�WX�#*�%��`��m �8b�I�)����@w�럿�M�7;s�����2:T�/�\7ui���H_�cNeU��E-=�b���_��ko�)�a ���* 
R�s���d�#s~�{ �`��#3��~�\��>r�_�X+jl�g ��Ya��U��M��pu�ǻ�0.�q��ɜ�����/m�OL��|v���O_O�`� �61Z!��S����
�y�����݆=%�µ�2ԥ%�^����L��7�:����9���@�q_�19B�4�m��#���l��v���p��$�#��6.��_"�ok#S?�w����1���2ƭ��p+��9$�pRyg���=�[S|�_��}-3��9d���G4}�@��I���@17�ؽP���1k1�G��;��� w_�K�t��==��HyJ�*�Ag�#�k�a8���LOY��ڥ�z� �����ܴe;�E��,u�;s����|/��L=�N^��B���O��2=�>�>$�M��+_���̧�Y�M��*}|�u}�R[l.���/���I�TRå�{�[ �ps�9��|9RlJ��ۀ���?��<HU�������vH�=R���X����-�wF�u�@�}n����
��7��"��xM��h������_O��w'W�4�=����d#)� Ku��sr�Z{P9��%������ɫt�KO�<O�.�pK�m�䱴�1cL�M���9ݱ ��(�n�f���x�ɸ,�TQ���-�[v�j�KVa80��@Y(?��6�p`8Á"��n8���gމa80��@�u���ǜ�T�D�`80��@ i�a�7#" @ x!`8P���Q;�~0]0���߲�+�� u��,�p`8P�lǃ�^����p`8Pn��{���&z�E JFg/i�Á��<?Z
�j���|#M.a8�p��S��)^_���J̇��qb~�9m僽L[�<6H�C���)�\ B���`M��ى�ܺ=�������e�}��sz#ŖK��@��4����vc.yuM>r���ɡ�zNo$���0���p�_��_�/� �D����F}���%_�9����`8�p`8N�������pU��k ���� ˅����-�Á���p���k���@�p`80��@����է��� ���
��1 ���s�?�
k8v��>O�5%�[p��$�B��J�V�O�s:S��}�߿�\�����C ��y��_��_�!e=r�Ι�Fż ����o�K�g/�\���7,È��y�_?�G�M��( ���Y��C��@Ñ��A�nc{���d�z�� � �ͥꉡ����]�B��Ub��Bj��%��NХ=+��'�9�.���_�5l����}ާ��i8�e���E%�7�����ջQ�^�F��~T�{e�w��Uj��\�R�'_���T]��;~��ߥ��젤�](�౑����Z���zsrb!�! G�HCj��=�[������U��T2�w6����$s �K�ԍ��M��c���t&^�(ϡ������nD���۶.��x�������=E�e�Z�tn=�mY���-��Á�#�qU�Ҳ4CHK�o�|�J�U�r��믱E��Tw�9���`��hh�MjA�}�44u�����+ǘjiӗK]�V�oE��<�3�����t�}���o�l8jo=�6������M]�%�<;R7�����^M���L�5�\J�ɷB����oԅ���6�aXws#9&�,�kn�`8b<��0 0a��5s���{���х����}8��z���Cѩ�����=��a���%�^��H=��-��mt&w����1c���tfS���/�;Tax��\M������
�� y#?���.i0g� ��+��Q�ع�͓/�ڣ��O_��l�#�+��E��k���:��!�p ��Hin�U���Ҁ3�����GG�8>zd���Yo�0 �,w����t�n�|��^a�G��Τ��T�K���{S�J%��~7"�%����(��R�'ߏq��S�T;>�x��h�q���#�C��@Ñ-/�����Z�^��ic�����jn�ptMB̸B���g4'�[�Ʈ�;w#,7�}b�әlU*���k�,ּ��5�nd���R}�-`�E.�~�&WYs;�/|n��,uu��|�p���c8�pdˏ�����6��u,�k������w� 6G3�O���=�[0;ޥ&_��>1��L�pl9h�lg� G�E�n䵉��)����Sj��|��O������|��O�5���m���+2�}��ؿw B�l��xx��^��,����
�h86�:���sbĞ�*��'�9��s� ��"��������S8k�՜��Fϝ��� C檊*�0�O��X�������#��Á�#[��:Y���G�^�fjyDñ~�}��#Y݂y�gKί"O��<�3qñҰ>�K�d8.�����;��թW'�0��=�b+3�n5
��m���#��Á�#[�l�便ͽv�ź������|�x�`��=�"�}b��Yp�Q]P�aM�����:�:ne��ȧ�4��6���'��ÑHG��;�! G��1ם�Jlߓi�Z��,�[1�>��1BE��<������U���g�p�xu�c��h��"2fT�K��!�:< Ǵ��)��p���c8�pd�C�,��:������'�Ӯn�԰�n��A�hУ���c���t�p��2"W��p�/xɸ\6����e���~q��i8^c��t����#��Á�#��_U�����{��Ny6/���{K�������Z���V�O�s: k8��M�T{V���
�8Qό5�_��� �����z��R�A���
G�Á�#^�d��Dw��W��u:����-XQ��~23����-VҰ�j3Œ����<ǻ��G;���w�Y�r|�]Xc���t�p �����8�����<�gLY�+���j݈?wY?c�����E�����Ed8̅HR���3��x��b]C��[��߬�ݮ�k� G��Á�#�����ϫ��+ӻ��݂0p����)�"�}b��Y@�ኆ钵�H�#�S$�qQ�R�����O<�2����Q�{��{1a8��u�j�V�.��8�{��x���I:ht��<��yNg
�s�t��SU�2�s���cw�"Y;`���+^ �KtoD��xb/�z1a8㓙z����z�4���_���
H�;c�{��7K=�gIQ�6������W�~�����*u�>���-��7Uw&��JO���ɟ��tZH�i�j����5��?o��PMZ��3�����e�O[���End�\=�t⼮�/��GH�-��:7�\���[KHvыG�y���s��9��U���AkpV�ҿ1r�;��]�����N�!�p ���\����ӣ�ޏ��*
a8���n�k�ԕ�;���� ^���^���M�nԫ~&-S�6�y<fdՐ��b8�px�ê�o��a�5 B( �>��j�Г�Cn���@����t����zuIu�^�r�Z�ڝ����@��0�0��@�p ���p �� B B��B�p ���p �� �p�! �! `8�p`8�p�a8Á�Á�0��0�0��@���@��� B B�p `8�p`8�p�! �! `8�0a80a8Á0��@���@��0�0��@�p ���p �� �p�! �! `8�p`8�p�a8Á�Á�0��0�0��@���@��� B B�p `8�p`8�p�! �! `8�0a80a8Á0��@���@��0�0��@�p ���p �� �p�! �! `8�p`8�p�a8Á�Á�0��0�0��@���@��� B B�p ?i B B�p ���p �� �p�! �! `8�'
��@���@��0�0��@�p ���p �� B B B�p ���p ��_�����7^_�?zTXtValetudoMapx��X]o[7 �/���}��a���!nc75�؁�v͂����"�-��$'�%�ԑ�����n���������^>m����<=l/��e��������xb���t���f�N���0]�y:w[@lٖ����~ӯ��׫�~(W5��)��JK��<�w�m%��P ����M��/��_��yگO<�t���7��e�!��5��-�M���q.O�����QV���f��=���c
���� yG\eQ�����\K��~�z�B�;%������K�d~9~:\�k*$�����=���w��R�,��,�
�Y� �8��
Pw$\u( ��G��ϩ�mX�s�\��@�ќs�;s H�Ȉ�����`��*"����@�o�|sG@i�D @�U�p��%7�шkwk�ِ%�/hD��5 ��ʑ��ȹ��0���epH�$Jq��O8d�Y 2��K@2V"w�8�#
��c4�*�s$���F\QAip ~���p�
�̯8W|ԃ;Is�yT�akj����݊%��*��Vd����ڂY��+�ʍ܏0�r�W�U*�z~����E�qeZ�x��P�dV�^n��e���K@ͭx��~��ʬͭz<��T��5�g�rn��5�k��U����.#���a�*������IQD�s�C#Ī\R��:Y���Y���<�d�ᇾ��#G�5RD��@RyQ]�#��V7#��#:�g�
:$gP9�GGU��<k�s/>�4F����j�le�Ƚ��`��a�
?�GVԁ���'�i- P�s NꓻV��5ET%/��.z�2�/�V==ip�^�E���zt�&���.���wC�f���,k���@��x78x����P"r�l ��jD �� �'��O "�j�d�1 ��(
�4/zj�=�jH9BIYm���U�����A,�f��1���EH��)B�dS2Z$^Â��dW�$��xa+*)PիϽ�,QM'��Y���*�Π3�4J��µ�kUR�5��6,����t��G��IR�cI�L*J�S*w�D*�ҞQS�y|94z����kJ�2�;P���V$�p�d�9�t�2��y�/���u��߿�q~�8-?}�F�d�S��yӫ�i��goSyU�0�mM��\�[)�J�Ҍ�e�w�胾HO��}9D�+�/9��/�V��-�P�4H����]��
��T��W�t�R|lq�2�荍��8��~�U�����֝C��B�P٩�[��bIsB��2�2��~����
7�\�HE��;J��8.i�՘$�`l`0NuE�7ۈ2dM�c�.�y�k�U����ʸ��Ʃ_�� ����������>�RA6��uq�2�S�X� -?�6���,2�����j��MC�/��^ZϤ+���.��.8�!*������nP�9�]{CF�����v��6�֎���⮉�z�~e�c��.��n��C�����7�>}/��=���"C��ʷ���͈[X>1J��Q�"Q X�P���\͎��F����K�#�3}/��$��縔���>�����v�[/�-��#O��~�1��W��^����x�}<�w:����.����"IEND�B`�
     2022-11-14 18:24:36   signal          -45
     2022-11-14 18:25:20   state           docked
     2022-11-14 18:24:36   time            0
   hmccu:
Attributes:
   alias      RoboRock
   comment    For original code for "attrTmqtt2_roborock_valetudo2svg()" see <a href="https://forum.fhem.de/index.php/topic,104687.msg986304.html#msg986304">this forum thread</a>. To display generated map seperately, define a weblink device: <br>define valetudo_map weblink htmlCode <img src="fhem/images/GenuineGentleMeerkat_map.svg">
   devStateIcon docked:rc_PLAY:start (moving|cleaning):rc_PLAY@blue:pause (idle|paused):rc_PAUSE@red:start returning:refresh:pause
   devicetopic valetudo/GenuineGentleMeerkat
   event-on-change-reading .*
   icon       vacuum_top
   model      valetudoV2
   readingList $DEVICETOPIC/\x24state:.* _state
$DEVICETOPIC/.*/[a-zA-Z\-_]+:.* { $TOPIC =~ m,$DEVICETOPIC\/(.*)\/([a-zA-Z\-_]+),; valetudo_r($NAME,$1,$2,$EVENT) }
   room       MQTT2_DEVICE
   setList    pause:noArg $DEVICETOPIC/BasicControlCapability/operation/set PAUSE
  start:noArg $DEVICETOPIC/BasicControlCapability/operation/set START
  stop:noArg $DEVICETOPIC/BasicControlCapability/operation/set STOP
  charge:noArg $DEVICETOPIC/BasicControlCapability/operation/set HOME
  clean_zone:{valetudo_w($name,'zones')} { valetudo_c($NAME,$EVENT) }
  fanSpeed:min,low,medium,high,max $DEVICETOPIC/FanSpeedControlCapability/preset/set $EVTPART1
  locate:PERFORM   $DEVICETOPIC/LocateCapability/locate/set $EVTPART1
  x_raw_payload:textField { valetudo_c($NAME,$EVENT) }
  delete:zones,locations {fhem("deletereading $NAME .$EVTPART1");;return undef}
  zoneNew:textField { valetudo_z($NAME,$EVENT) }
  zoneRename:textField { valetudo_z($NAME,$EVENT) }
  get:segments,release,ip { valetudo_g($NAME,$EVENT) }
   setStateList operation clean_segment clean_zone goto fanSpeed waterUsage locate x_raw_payload
   stateFormat cleanerState
<a href="http://ip4" target="_blank">cleanerState</a>
   timestamp-on-change-reading .*
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 14 November 2022, 20:38:05
Dazu braucht man einen extra Dienst, siehe die Beschreibung von Valetudo. https://valetudo.cloud/
Das Template geht davon aus, dass die gesamte provide map Geschichte ausgeschaltet ist.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 14 November 2022, 21:17:33
Ich hab da auch was zum Thema Map geschrieben: https://forum.fhem.de/index.php/topic,121017.msg1226278.html#msg1226278
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: michisa86888 am 26 November 2022, 07:37:24
Ich habe doch nach wie vor das Problem mit dem Karten-Reading. Nach einiger Zeit kommt es trotzdem das die provide map geschichte in valetudo ausgeschaltet ist.
Kann man die reading list evtentuell so editieren dass dieses map-data-hass reading ausgeschlossen wird? Habe das aktuelle valetudo template angewendet
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 26 November 2022, 13:18:30
Die Map-Messages sind alle "retained". Das heißt, am MQTT Server gespeichert. Heißt nicht, dass die noch gesendet werden. Einfach nur, dass sie mal gesendet wurden. Kannst du löschen. Im Falle eines MQTT2_SERVER:
set MQTT2_FHEM_Server clearRetain

Readings nicht anzeigen kannst du zum Beispiel so in der readingList. Musst du halt für dich anpassen, ausschlaggebend sind die zwei geschwungenen Klammern.
$DEVICETOPIC/MapData/map-data:.* {}
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: michisa86888 am 27 November 2022, 13:02:34
Okay habe ich mal so übernommen.
Eine Frage noch zu valetudo. Wie kann ich die Audioausgabe auf deutsch stellen ohne valetudo wieder komplett neu aufzusetzen? Kann man die Weboberfläche auch auf deutsch stellen?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: drhirn am 27 November 2022, 13:04:37
Unter Robot Settings - Misc Settings kannst du Language Packs installieren. Da hab ich aber keine Erfahrung. Weboberfläche dürfte sich nicht umstellen lassen.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: michisa86888 am 26 Dezember 2022, 11:31:26
Zitat von: drhirn am 27 November 2022, 13:04:37
Unter Robot Settings - Misc Settings kannst du Language Packs installieren. Da hab ich aber keine Erfahrung. Weboberfläche dürfte sich nicht umstellen lassen.
Irgendwie finde ich da keine passende Download URL? Wo ladet ihr eure Sprachpakete?

Und noch eine andere Frage zu valetudo, ist es möglich den in der Orginal-Firmware enthaltenen automatischen Teppichmodus auch zu aktivieren?
Bzw. wie habt ihr das in Fhem realisiert?
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 26 Dezember 2022, 11:55:13
Valetudo Home - Robot Settings -  Carpet Mode bzw:
http:/xxx/#/robot/settings
und
http:/xxx/#/robot/settings/quirks Carpet Mode Sensitivity usw.

Ich meine über MQTT kann man da nichts machen, einige Dinge gehen nur über die Rest API.  Siehe Swagger UI -> http:/xxx/swagger/

Sprachpakte: wie schon gesagt - für den L10 pro nie welche gefunden ;) mein V1 redet deutsch, das habe ich mal ganz am Anfang drauf geladen, ich denke mit dem mii Tool.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: michisa86888 am 26 Dezember 2022, 12:30:06
Zitat von: Otto123 am 26 Dezember 2022, 11:55:13
Sprachpakte: wie schon gesagt - für den L10 pro nie welche gefunden ;) mein V1 redet deutsch, das habe ich mal ganz am Anfang drauf geladen, ich denke mit dem mii Tool.
Okay gefunden. Aber weiss jemand wie ich am einfachsten und schnellsten meinen Token vom Robbi bekomme? Habe das aktuelle valetudo drauf
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 26 Dezember 2022, 12:36:07
Da habe ich mal das aufgeschrieben:
printf $(cat /mnt/data/miio/device.token) | xxd -p

Wozu brauchst Du den jetzt noch? achso um mit dem mirobo Tool die Sprachpakte zu installieren? Ich weiß nicht ob das mittlerweile nicht anders geht...
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: BM030 am 13 Januar 2023, 06:32:23
Zitat von: michisa86888 am 26 Dezember 2022, 11:31:26
Irgendwie finde ich da keine passende Download URL? Wo ladet ihr eure Sprachpakete?

Und noch eine andere Frage zu valetudo, ist es möglich den in der Orginal-Firmware enthaltenen automatischen Teppichmodus auch zu aktivieren?
Bzw. wie habt ihr das in Fhem realisiert?

Hi,
https://vacuumz.info/download/voice/ (https://vacuumz.info/download/voice/) es gibt keine offiziellen Sprachpakete diese sind wohl von der Community erstellt.
Greetings Gordon
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: michisa86888 am 17 Januar 2023, 18:22:31
Zitat von: Otto123 am 26 Dezember 2022, 12:36:07
Da habe ich mal das aufgeschrieben:
printf $(cat /mnt/data/miio/device.token) | xxd -p

Wozu brauchst Du den jetzt noch? achso um mit dem mirobo Tool die Sprachpakte zu installieren? Ich weiß nicht ob das mittlerweile nicht anders geht...
Nochmals dazu zurück. Der Befehl wirf bei mir nur
[code]-ash: xxd: not found
[/code]
aus. Brauche den Token aber wie du vermutest für die installation der Sprachpakete
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 17 Januar 2023, 22:01:17
Dann kopiere Dir die Datei auf ein anderes Linux System und führe den Befehl entsprechend abgewandelt dort aus ;)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: michisa86888 am 19 Januar 2023, 08:42:45
Zitat von: Otto123 am 17 Januar 2023, 22:01:17
Dann kopiere Dir die Datei auf ein anderes Linux System und führe den Befehl entsprechend abgewandelt dort aus ;)
Hat geklappt, wunderbar dankeschön nun spricht mein Robo auch wieder deutsch.

Noch eine andere Frage, ich habe ja das aktuelle Valetudo 2023.01.0 mit Firmware ver 2034 drauf. Hier müsste doch die Raumerkennung (Segmente) für meinen S5 auch funktionieren.
Unter Map / Segmente kann ich in der valetudo Oberfläche aber nichts bearbeiten, die Karte ist auch komplett "blau" hinterliegt, keine angelegte Segmente zu erkennen?

Funktioniert die Raumerkennung beim S5 doch nicht - ich meine gelesen zu haben das mit dem update auf 2008 dies ergänzt wurde.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 19 Januar 2023, 09:58:42
Unter Map müsstest Du die Robot Managed Features sehen, wenn da nix ist? siehe Anhang bei mir (L10 Pro)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: michisa86888 am 19 Januar 2023, 17:28:11
Ja die Robot Managed Features sehe ich auch, kann dort auch Segement Managment auswählen aber darin kann ich nichts bearbeiten bzw. ändern. Scheint eben auch nur die Karte zu sein und keine Segmente.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 19 Januar 2023, 17:33:18
Naja er kann offenbar keine Segmente selbst ermitteln, aber wenn Du mal store machts, dann kannst Du nicht mit Modify was bewegen? 
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Darkmann am 04 Februar 2023, 13:57:52
Hi,

bin gerade dabei das ganze hier mal zu verstehen.

Ich hab zumindest mal den Roboter in FHEM installiert bekommen und eine Goto Location.
Kann man den Staubbehälter irgendwie triggern? Plan ist, ich fahre ihm zum entleeren auf die Goto Entleeren, dann wenn der Staubbehälter entnommen wird und wieder eingesetzt das er automatisch zum Dock fährt oder wenn 5 Minuten nichts passiert das er dann auch einfach zurück fährt.

Kann ich eigentlich einfach einen AlexaNamen vergeben und die Funktionen dann per sprache steuern?

Gruß
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 04 Februar 2023, 14:16:39
Hallo Darkmann,

welchen Sauger hast Du?
Mein V1 hatte im alten Xiaomi Modul einen Event für dustbin. Mein L10 pro hat das nicht. Die Valetudo Software überträgt aber auch nicht alles per MQTT, ich meine mit MQTT hatte ich auch kein dustbin mehr.
Ich habe jetzt bei mir folgende Logik mit der ich eigentlich gut zurecht kommen:
"Goto Eimer"
Die Leerung quittiere ich einfach mit der "Goto Home" Taste am Sauger :) 

Alexa bin ich nicht fit, aber die kann doch nur bestimmte "Kommando Typen" - da müsste man eventuell einen Übersetzer bauen?

Gruß Otto
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: TomLee am 04 Februar 2023, 16:07:41
ZitatKann ich eigentlich einfach einen AlexaNamen vergeben und die Funktionen dann per sprache steuern?

Für ValetudoRE hätt ich eine Lösung über einen zusätzlichen pct-setter anzubieten.

Zur Umsetzung wird benötigt:

ein zusätzlicher Eintrag im Attribut userreadings, !ergänzt mit Komma!
.available_cmnds:valetudo_state_name:.Idle {return join(',',sort map {(split ':',$_)[0]} split '\s',getAllSets($name))}
damit wird ein verstecktes Reading erstellt das alle setter-Namen des Device kommgetrennt beinhaltet.

In setList müssen zwei weitere setter (speech_cmnd und pct) ergänzt werden:
speech_cmnd:{'multiple-strict,'.ReadingsVal($name,'.available_cmnds','none');} {sleep 0.5;;fhem("setreading $NAME $EVTPART0 $EVTPART1")}
pct:{'slider,1,1,'.(scalar(split(/,/,ReadingsVal($name,'speech_cmnd','none')))+scalar(split(/,/,ReadingsVal($name,'zones','none')))).',1'} {my @d = split(/,/,ReadingsVal($NAME,'speech_cmnd','none'));my @e = split(/,/,ReadingsVal($NAME,'zones','none'));;my ($i,%pct2cmd);map {$i++;$pct2cmd{$i} = $_;} (@d);$i= keys %pct2cmd;map {$i++;$pct2cmd{$i} = 'zone '.$_;} (@e);my $cmd = $pct2cmd{$EVTPART1};return if !$cmd;return fhem("set $NAME $cmd;setreading $NAME pct $EVTPART1");}


Mit dem setter speech_cmnd wählt man sich aus der Liste, die in dem Reading .available_cmnds steht, die Befehle aus die man zusätzlich zu den Zonen per Sprache absetzen möchte. An diese ausgewählte Liste wird automatisch im pct-setter die Liste aller verfügbaren Zonen angehangen. (Ich geb zu das das nicht optimal umgesetzt ist, ergänzt man im nachhinein einen setter in speech_cmds muss man die bereits erstellten Routinen anpassen).

In der App erscheint der pct-setter als slider, zu jedem Wert legt man sich dann den entsprechenden Sprachbefehl über eine Routine an.
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Darkmann am 04 Februar 2023, 20:21:48
Hi,

ich hab einen Roborock S50, hab gerade mal geschaut hab leider auch kein dustbin in der Auflistung.

Ich hab Valetudo auf dem Sauger. Wird wohl nichts mit Sprachsteuerung?

Danke
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 04 Februar 2023, 21:57:19
Zitat von: Darkmann am 04 Februar 2023, 20:21:48
Wird wohl nichts mit Sprachsteuerung?
hat ja keiner gesagt :)
Titel: Antw:MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: schwatter am 19 Februar 2023, 10:34:01
Moin,

mein Deebot 950 hat sich selbst zerstört. Jetzt ist einer unterwegs, auf dem ich Valetudo installieren kann.
Frage, ist Valetudo Re immer noch vorzuziehen oder hat
Valetudo aufgeholt?

Gruß schwatter
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: meier81 am 12 April 2023, 17:31:52
Hallo Otto,

hab mal eine Frage: Ich hatte eben einen Fehler im meinem Drucker da die Hauptwalze blockiert war.

In FHEM habe ich aber leider keinen Fehler stehen, nur state "idle".

Hast du da eine Idee warum da nichts kommt oder muss dann die Info über die API ausgelesen werden?

Gruß Markus
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 12 April 2023, 18:22:08
Also ich hoffe Du meintest nicht wirklich den Drucker? ;D

Fehlermeldungen kommen über MQTT, aber ob wirklich alle möglichen?
Ich hatte bisher sowas:
Zitat2022-12-19_09:30:05 MQTT2_ClumsyQuirkyCattle error_description: Cannot reach target
2023-01-08_14:40:15 MQTT2_ClumsyQuirkyCattle error_description: Wall sensor dirty
2023-01-24_09:10:11 MQTT2_ClumsyQuirkyCattle error_description: Filter jammed
gab es denn wenigsten eine Fehlermeldung in FHEM?

Gruß Otto
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: meier81 am 12 April 2023, 20:35:07
Hi Otto,

war natürlich der Sauger gemeint ;D

Also im Log habe ich zu der Uhrzeit heute morgen leider auch keine Einträge.

Sicherheitshalber hier mal meine Definition:

define EG_fl_HW_Saugroboter MQTT2_DEVICE valetudo_ExpensiveRegalMongoose
attr EG_fl_HW_Saugroboter userattr timeformat
attr EG_fl_HW_Saugroboter devStateIcon docked:rc_PLAY:start (moving|cleaning):rc_PLAY@blue:pause (idle|paused):rc_PAUSE@red:start returning:refresh:pause
attr EG_fl_HW_Saugroboter devicetopic valetudo/rockrobo
attr EG_fl_HW_Saugroboter event-on-change-reading .*
attr EG_fl_HW_Saugroboter icon vacuum_top
attr EG_fl_HW_Saugroboter model valetudoV2
attr EG_fl_HW_Saugroboter readingList $DEVICETOPIC/\x24state:.* _state\
  $DEVICETOPIC/.*/[a-zA-Z\-_]+:.* { $TOPIC =~ m,$DEVICETOPIC\/(.*)\/([a-zA-Z\-_]+),;; valetudo_r($NAME,$1,$2,$EVENT) }
attr EG_fl_HW_Saugroboter room Erdgeschoß->Flur
attr EG_fl_HW_Saugroboter setList pause:noArg $DEVICETOPIC/BasicControlCapability/operation/set PAUSE\
  start:noArg $DEVICETOPIC/BasicControlCapability/operation/set START\
  stop:noArg $DEVICETOPIC/BasicControlCapability/operation/set STOP\
  charge:noArg $DEVICETOPIC/BasicControlCapability/operation/set HOME\
  clean_zone:{valetudo_w($name,'zones')} { valetudo_c($NAME,$EVENT) }\
  fanSpeed:min,low,medium,high,max $DEVICETOPIC/FanSpeedControlCapability/preset/set $EVTPART1\
  locate:PERFORM   $DEVICETOPIC/LocateCapability/locate/set $EVTPART1\
  x_raw_payload:textField { valetudo_c($NAME,$EVENT) }\
  delete:zones,locations {fhem("deletereading $NAME .$EVTPART1");;;;return undef}\
  zoneNew:textField { valetudo_z($NAME,$EVENT) }\
  zoneRename:textField { valetudo_z($NAME,$EVENT) }\
  get:segments,release,ip { valetudo_g($NAME,$EVENT) }
attr EG_fl_HW_Saugroboter setStateList operation clean_segment clean_zone goto fanSpeed waterUsage locate x_raw_payload
attr EG_fl_HW_Saugroboter stateFormat cleanerState\
<a href="http://ip4" target="_blank">cleanerState</a>
attr EG_fl_HW_Saugroboter timeformat Minuten
attr EG_fl_HW_Saugroboter timestamp-on-change-reading .*
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 12 April 2023, 20:57:10
die Definition sieht gut aus.
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 25 Mai 2023, 12:19:39
Hinweis:
Mit valetudo Version 2023.03.0 wurde der json String für die Zonen geändert. Im Code ist da nichts zu tun, bei neuer Definition auch nicht - aber bei einem existierenden Reading .zones.
Um nicht alles neu zu machen, holt man sich das reading aus der Raw Def und editiert es:
Zitatsetstate MQTT2_ClumsyQuirkyCattle 2023-01-26 13:33:33 .zones {"Eingang":{"action":"clean","zones":[{"iterations":1,"points":{"pA":{"x":2465,"y":3120},"pB":{"x":2650,"y":3120},"pC":{"x":2650,"y":3245},"pD":{"x":2465,"y":3245}}}]}, ...
ändern in
Zitatsetreading MQTT2_ClumsyQuirkyCattle .zones {"Eingang":{"action":"clean","zones":[{"points":{"pA":{"x":2465,"y":3120},"pB":{"x":2650,"y":3120},"pC":{"x":2650,"y":3245},"pD":{"x":2465,"y":3245}}}],"iterations":1}, ...
anschließend neu abspeichern.

Aus dem alten Reading detail wird jetzt das Reading flag - bei mir stand da immer none drin. Für mich ist das  egal ;), kann aber sein bei anderen Saugern war das anders.
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: sherwood am 08 August 2023, 13:00:52
Seit dem ich ein neues MQTT2_Device für meine Valetudo (2023.05.0, L10Pro) angelegt und das valetudo Template angewendet habe, bekomme ich laufend (minütlich) folgende Fehler im log:

Use of uninitialized value in concatenation (.) or string at FHEM/SetExtensions.pm line 98.
Use of uninitialized value in concatenation (.) or string at FHEM/SetExtensions.pm line 98.
Use of uninitialized value in concatenation (.) or string at FHEM/SetExtensions.pm line 98.


Beim Ausführen von "get segments" oder "get release" diese:
2023.08.08 12:36:03 1: JSON decoding error, >No credentials provided< seems not to be valid JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "No credentials provi...") at ./FHEM/99_valetudoUtils.pm line 29.
2023.08.08 12:36:03 1: ERROR evaluating my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $EVTPART1=   $evalSpecials->{'%EVTPART1'};my $NAME=   $evalSpecials->{'%NAME'};{ valetudo_g($NAME,$EVENT) }: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/99_valetudoUtils.pm line 267.


Habe ich irgendetwas in meiner Definition vergessen oder weiß jemand wie ich die Fehler im Log weg bekomme?
Readings kommen rein und der L10Pro lässt sich steuern.

 



Hier meine Definition:
defmod Valetudo MQTT2_DEVICE
attr Valetudo alias valetudo
attr Valetudo devStateIcon docked:rc_PLAY:start (moving|cleaning):rc_PLAY@blue:pause (idle|paused):rc_PAUSE@red:start returning:refresh:pause
attr Valetudo devicetopic device/valetudo
attr Valetudo event-on-change-reading .*
attr Valetudo icon vacuum_top
attr Valetudo model valetudoV2
attr Valetudo readingList $DEVICETOPIC/\x24state:.* _state\
  $DEVICETOPIC/.*/[a-zA-Z\-_]+:.* { $TOPIC =~ m,$DEVICETOPIC\/(.*)\/([a-zA-Z\-_]+),;; valetudo_r($NAME,$1,$2,$EVENT) }
attr Valetudo setList pause:noArg $DEVICETOPIC/BasicControlCapability/operation/set PAUSE\
  start:noArg $DEVICETOPIC/BasicControlCapability/operation/set START\
  stop:noArg $DEVICETOPIC/BasicControlCapability/operation/set STOP\
  charge:noArg $DEVICETOPIC/BasicControlCapability/operation/set HOME\
  clean_zone:{valetudo_w($name,'zones')} { valetudo_c($NAME,$EVENT) }\
  fanSpeed:min,low,medium,high,max $DEVICETOPIC/FanSpeedControlCapability/preset/set $EVTPART1\
  locate:PERFORM   $DEVICETOPIC/LocateCapability/locate/set $EVTPART1\
  x_raw_payload:textField { valetudo_c($NAME,$EVENT) }\
  delete:zones,locations {fhem("deletereading $NAME .$EVTPART1");;;;return undef}\
  zoneNew:textField { valetudo_z($NAME,$EVENT) }\
  zoneRename:textField { valetudo_z($NAME,$EVENT) }\
  get:segments,release,ip { valetudo_g($NAME,$EVENT) }
attr Valetudo setStateList operation clean_segment clean_zone goto fanSpeed waterUsage locate x_raw_payload
attr Valetudo stateFormat cleanerState\
<a href="http://ip4" target="_blank">cleanerState</a>
attr Valetudo timestamp-on-change-reading .*

setstate Valetudo docked\
<a href="http://192.168.1.25" target="_blank">docked</a>
setstate Valetudo 2023-08-08 09:50:17 .segments {"1":"LivingRoom","5":"Passage"}
setstate Valetudo 2023-08-08 12:50:30 .zones {"Test":{"action": "clean","zones": [{"points": {"pA": {"x": 3170,"y": 3180},"pB": {"x": 3245,"y": 3180},"pC": {"x": 3245,"y": 3325},"pD": {"x": 3170,"y": 3325}}}],"iterations": 1}}
setstate Valetudo 2023-08-08 09:33:42 IODev mosqittoMQTTbroker
setstate Valetudo 2023-08-08 09:43:37 area 0.00 m²
setstate Valetudo 2023-08-08 09:34:37 attrTemplateVersion 20221101
setstate Valetudo 2023-08-08 09:46:06 batteryPercent 100
setstate Valetudo 2023-08-08 09:37:21 charge set
setstate Valetudo 2023-08-08 09:44:46 cleanerState docked
setstate Valetudo 2023-08-08 09:40:14 fanSpeed medium
setstate Valetudo 2023-08-08 09:48:09 get set get segments
setstate Valetudo 2023-08-08 09:34:37 ip4 192.168..X.XX
setstate Valetudo 2023-08-08 09:44:26 operation HOME
setstate Valetudo 2023-08-08 09:43:14 pause set
setstate Valetudo 2023-08-08 09:43:24 sensor-all 93600
setstate Valetudo 2023-08-08 09:44:26 set HOME
setstate Valetudo 2023-08-08 12:30:39 signal -80
setstate Valetudo 2023-08-08 09:40:25 start set
setstate Valetudo 2023-08-08 10:11:56 state set_fanSpeed
setstate Valetudo 2023-08-08 09:43:22 stop set
setstate Valetudo 2023-08-08 09:43:37 time 0
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: rudolfkoenig am 08 August 2023, 18:18:17
Die Fehlermeldung aus SetExtensions wird im Log von einer Zeile wie
Zitat2023.08.08 18:10:52 3: eval: valetudo_w($name,'zones')
gefolgt (wenn man global verbose nicht geaendert hat).

Diese Funktion (in 99_valetudoUtils.pm) kann z.Zt. nicht damit umgehen, wenn das Reading .zonesPresets nicht gesetzt ist.
Weiterhelfen muss der Mainainer dieser Datei (99_valetudoUtils.pm).
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: sherwood am 08 August 2023, 19:09:11
OK, nach einem setreading Valetudo .zonesPresets {} funktionierrt jetzt set zoneNew, zoneRename, zoneRename und cleanZone.

Keine Ahnung ob das value von .zonesPresets korrekt ist? Scheint aber nicht zu stören.
Sollte ".zonesPresets" nicht automatisch generiert werden, evtl. bug im Template/Script?



Ich habe auch mal setreading Valetudo valetudo_release 2022.10.0 gesetzt. Eine set Valetudo get release schmeißt noch immer den gleichen JSON error und aktualisiert auch nicht das reading.
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 09 August 2023, 08:04:43
Guten Morgen,

ich schau mir das an, komme aber heute nicht dazu.

Gruß Otto
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 09 August 2023, 21:16:50
Zitat von: rudolfkoenig am 08 August 2023, 18:18:17Diese Funktion (in 99_valetudoUtils.pm) kann z.Zt. nicht damit umgehen, wenn das Reading .zonesPresets nicht gesetzt ist.
Zitat von: sherwood am 08 August 2023, 19:09:11Sollte ".zonesPresets" nicht automatisch generiert werden, evtl. bug im Template/Script?
Eigentlich lese ich das Reading so aus: ReadingsVal($NAME,'.'.$setter.'Presets','{}')Das kann also auch leer sein. In der Version  (2023.05.0, L10Pro) ist es auch leer und der Code wird gar nicht verwendet.
Irgendwas stimmt mit der Version nicht, wenn die von Hand falsch gesetzt wird ?

Aber warum wir release nicht gelesen?

@sherwood Ist der Robot überhaupt von FHEM erreichbar?
Was gibt das zurück?
{GetHttpFile(ReadingsVal('Valetudo','ip4',''), '/api/v2/valetudo/version')}
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: sherwood am 10 August 2023, 08:21:00
Entscheiden war das setzen des Readings ".zonesPresets". Das Release Reading habe ich später gesetzt.

Da das Release nicht ausgelesen wird (werden kann), wird trotzdem versucht .zonesPresets auszulesen.

if (ReadingsVal($NAME,'valetudo_release','') lt '2022.05.0') {
         # old code
          my $json = ReadingsVal($NAME,'.zonesPresets',q{});
          my $decoded = decode_j($json);
          for (keys %{$decoded}) {
            if ( $decoded->{$_}->{'name'} eq $load ) {$ret = $devicetopic.'/ZoneCleaningCapability/start/set '.$_ }
          }
       } else {
           my $json = ReadingsVal($NAME,'.zones',q{});
           my $decoded = decode_j($json);
           for (keys %{$decoded}) {
               if ( $_ eq $load ) {$ret = $devicetopic.'/ZoneCleaningCapability/start/set '.toJSON $decoded->{$_} }
           }
       }



Die Abfragen via REST API schlagen fehl, da "HTTP Basic Auth" aktiviert ist und das script nicht vorsieht sich zu authentifizieren.

{GetHttpFile(ReadingsVal('Valetudo','ip4',''), '/api/v2/valetudo/version')} -> No credentials provided


Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 10 August 2023, 10:29:07
Zitat von: sherwood am 10 August 2023, 08:21:00Entscheiden war das setzen des Readings ".zonesPresets".
Aber im Code wird ja der default Wert (also wenn Reading nicht lesbar / gesetzt) genauso gesetzt wie Du es mit setreading gemacht hast. Verstehe nicht wie es zum Fehler kommen kann.  :o

Die Sache mit Basic Auth macht den Fehler mit release klar. Ok, muss ich mir was überlegen, ich dachte nicht, dass jemand den isolierten Staubsauger gegen interne Hacker absichert ;)
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: sherwood am 10 August 2023, 11:58:41
Ist es den unbedingt nötig den Release zu prüfen?
Würde es nicht reichen, mit .zones zu beginnen und wenn dieses fehlschlägt, auf das für die älteren Releases auf .zonesPresets zu gehen?


Habe noch ein paar weitere Unklarheiten/Bugs, die mir beim anlegen aufgefallen sind:

- "clean_segment" wurde in setlist nicht angelegt. ".segements" wurde allerdings korrekt ausgelesen. Manuel hinzugefügt funktioniert es problemlos. clean_segment:{valetudo_w($name,'segments')} { valetudo_c($NAME,$EVENT) }- Zu setlist hinzugefügt: operationMode:vacuum_and_mop,vacuum,mop $DEVICETOPIC/OperationModeControlCapability/preset/set $EVTPART1- Die Readings mit time werden nicht richtig formatiert. Meine Readings sind zB. brush-side_right: 489600.
  Liegt wohl am  "my $TMF = AttrVal($NAME,'timeformat','')". Ein <defaultvalue> setzen löst das Problem.
- Neue Readings für TotalStatisticsCapability und SpeakerVolumeControlCapability fehlen.
  ++Zeile 228 in 99_valetudoUtils.pm
if ($feature eq 'TotalStatisticsCapability')
       {return $value eq 'area' ? {"totalArea"=>sprintf("%.2f",($EVENT / 10000))." m²"}:
               $value eq 'time' ? {"totalTime"=>sprintf '%2$02dh %3$02dm %4$02ds',valetudo_dhms($EVENT)}:
               $value eq 'count' ? {"totalCount"=>$EVENT}:
               {"total"."$value"=>$EVENT} }
if ($feature eq 'SpeakerVolumeControlCapability')
    {return $value eq 'value' ? {"speakerVolume"=>$EVENT}:{"$value"=>$EVENT} }




Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: schwatter am 19 Dezember 2023, 14:06:45
@Otto123

Hallo Otto,

habe heute einen 2ten Valetudo Robi eingerichtet.
Dabei ist mir aufgefallen, es kommen keine Segmente an. Beim nachforschen zur Api und deinem
Aufruf in "sub valetudo_g" gibt es wohl ein Problem mit Umlauten. Bei mir führt der Raum "Küche" zum Fehler.
Im ersten Robi hatte ich ich schon "Kueche" gesetzt, um Problemen aus dem Weg zu gehen.
Das bewahrt aber andere User nicht davor.

Log:
2023.12.19 13:18:29 1: JSON decoding error, >{"10":"Badezimmer","11":"Wohnzimmer","12":"Flur","13":"Küche","14":"Arbeitszimmer","15":"Esszimmer"}< seems not to be valid JSON data: malformed UTF-8 character in JSON string, at character offset 56 (before "\x{fffd}"14":"Arbeit...") at ./FHEM/99_valetudoUtils.pm line 29.

Der Thread ist auch sehr populär zu dem Problem.

https://forum.fhem.de/index.php?topic=126088.0


Danach bin ich unsicher. Soll Fhem es abfangen oder das Modul?


Gruß schwatter
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 19 Dezember 2023, 14:21:39
Hallo Schwatter,

ich schaue es mir an. Ich kann mich erinnern, dass ich da schon dran war, es aber irgendwie kaum wirklich lösbar war.

Gruß Otto
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: KyleK am 19 Dezember 2023, 21:58:39
Ich hab vor einer Weile diese Zeile:

if ( eval { $data = decode_json($maybe_json); 1 } ) { return $data }

gegen diese getauscht:

if ( eval { $data = JSON->new->utf8->decode(encode('UTF-8', $maybe_json)); 1 } ) { return $data }

Weil ich auch ein Problem mit Umlauten hatte.
Ich sehe aber gerade, dass ich gar keine Umlaute bei Segmenten (mehr) verwende, daher weiß ich nicht sicher, ob diese Änderung das Problem behebt.
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: schwatter am 20 Dezember 2023, 12:38:31
Danke,

das funktioniert.


Gruß schwatter
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: schwatter am 20 Dezember 2023, 16:27:19
Ok,

edit:

Muss nochmal schauen.  Habe geschrieben, das ich weiterhin Fehler habe. Aber die angepasste Zeile ist nicht mehr da.
Anscheinend hatte ich kein Save gemacht?

edit2:
Ah, ich hatte nochmal attrTemplate Valetudo angewandt. Dachte die 99_valetudoUtils.pm liegt in /fhem/Fhem.
Aber die liegt ja in /fhem/contrib/AttrTemplate/99_valetudoUtils.pm. Daher muss ich die da auch anpassen.

Gruß schwatter

Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 20 Dezember 2023, 20:03:13
Zitat von: schwatter am 20 Dezember 2023, 16:27:19Ah, ich hatte nochmal attrTemplate Valetudo angewandt.
Wenn Du das tust wird die Originale vom SVN geholt. Da habe ich noch nichts angepasst.

Eine wiederholte Anwendung von attrTemplate ist in der Regel nicht sinnvoll, es sei denn man selbst keine Änderungen gemacht und weiß das im SVN eine Verbesserung liegt. :)
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: schwatter am 20 Dezember 2023, 20:24:37
Ja,
das hatte ich dann auch gesehen  :)
Steht direkt oben im Template...brauch ne Brille  8)
Ich hab das Template nochmal drüber gewischt,
da ich viel angepasst hatte, und der Fehler mit Json
nicht sofort ersichtlich war.


Gruß schwatter
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: schwatter am 29 Dezember 2023, 23:10:34
Nabend,

@Otto123
Seit 9 Tagen läuft der Änderungsvorschlag von @KyleK bezüglich Umlauten stabil.
Ich denke du kannst ihn einchecken.

Darüber hinaus habe ich mal "I can't believe it's not Valetudo" eingerichtet. Erstes Problem,
das Map_Rotating ist im orig Fork kaputt.
Zweites Problem sind ständig wechselnde ClientId's. Bedeutet, bei jedem (Neu)Start ein neues MQTT-Device.

Das erste Problem konnte ich durch ein Fork von algirdasc beheben. Das zweite Problem habe ich gefixt.
In der Readme unter Configuration, bin ich mehr auf Fhem eingegangen. Insgesamt habe ich jetzt 2 Robis
und habe dazu 2 Ordner angelegt. Beide "ICBINV" laufen per "pm2" mit jeweils knapp 100mb auf meinem
Fhemserver im Background. Keine Ahnung, ob das eine hohe Speicherauslastung dafür ist. Muss ich beobachten.

https://github.com/schwatter/ICantBelieveItsNotValetudo


So schaut das angelegte, ich nen es mal MapBridgeDevice von "ICBINV" aus. Welches vorher immer wieder
mit neuer ClientId angelegt wurde.

defmod MQTT2_dreamed9_mapper MQTT2_DEVICE dreamed9_mapper
attr MQTT2_dreamed9_mapper readingList dreamed9_mapper:homeassistant/camera/DreameD9/Valetudo_DreameD9_map/config:.* { json2nameValue($EVENT) }
attr MQTT2_dreamed9_mapper room MQTT2_DEVICE

setstate MQTT2_dreamed9_mapper 2023-12-29 10:41:43 IODev myFhembroker
setstate MQTT2_dreamed9_mapper 2023-12-29 17:02:14 device_identifiers_1 DreameD9
setstate MQTT2_dreamed9_mapper 2023-12-29 17:02:14 device_name DreameD9
setstate MQTT2_dreamed9_mapper 2023-12-29 17:02:14 name DreameD9 Rendered Map
setstate MQTT2_dreamed9_mapper 2023-12-29 14:10:22 subscriptions Valetudo/DreameD9/MapData/map-data
setstate MQTT2_dreamed9_mapper 2023-12-29 17:02:14 topic Valetudo/DreameD9/MapData/map
setstate MQTT2_dreamed9_mapper 2023-12-29 17:02:14 unique_id DreameD9_rendered_map

Für die Livemap habe ich extra ein MQTT2_DEVICE angelegt, damit ich mein "stateFormat" im Robi-Device
nicht so sehr mit Perl quälen musste.
Das Mapreading in der "readingsList" hat auch extra noch Autoresize.

defmod DreameD9_Map MQTT2_DEVICE
attr DreameD9_Map devicetopic Valetudo/DreameD9
attr DreameD9_Map icon location_sign
attr DreameD9_Map readingList $DEVICETOPIC/MapData/map:.* { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),;; {"map"=>"<html><div style='margin-left: auto;; margin-right: auto;;width: 90%;; height: 90%;;'><img src='".$EVENT."' style='width: 90%;;height: 90%'></div></html>"} }
attr DreameD9_Map room 04.Esszimmer_EG
attr DreameD9_Map stateFormat map
attr DreameD9_Map subType Saugroboter


Gruß schwatter
Titel: Aw: MQTT2 für Xiaomi Vacuum Sauger
Beitrag von: Otto123 am 02 Januar 2024, 14:15:46
Zitat von: schwatter am 29 Dezember 2023, 23:10:34Seit 9 Tagen läuft der Änderungsvorschlag von @KyleK bezüglich Umlauten stabil.
Ich denke du kannst ihn einchecken.
Gesundes neues Jahr euch allen!

Danke fürs testen, Ich habe das jetzt so eingecheckt.

Gruß Otto