MQTT2 für Xiaomi Vacuum Sauger

Begonnen von Otto123, 12 Mai 2021, 12:53:37

Vorheriges Thema - Nächstes Thema

Otto123

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.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

drhirn

#286
***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.

drhirn

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.

TomLee

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 ?

drhirn

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.

drhirn

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.

TomLee

ZitatDas kann dann aber schon ValetudoRE, oder?

Ja, deshalb hab ich es ja erwähnt.




Dann ist Mosquitto ein MQTT2_CLIENT-Device ?

drhirn

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.

TomLee

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.

MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

TomLee

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.

Otto123

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. :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

drhirn

#298
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?

Otto123

und release kommt auch nicht mit set ... get ...?
und die segmente auch nicht mit set ... get ...?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz