MQTT2 für Xiaomi Vacuum Sauger

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

Vorheriges Thema - Nächstes Thema

TomLee

Wann gibts die letzten Änderungen zu Valetudo denn per update ?

Otto123

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

Otto123

#272
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:

  • eine Zone "machen" -> Add -> Position und Größe festlegen -> lange auf "Clean 1 Zones" drücken
  • einen Punkt "machen" -> auf die Karte klicken (ab 2022.11. lange drücken) -> lange auf "GO TO LOCATION" drücken
Aus dem PopUp Fenster den kompletten json String kopieren
Dann in FHEM:

  • im Textfeld hinter set ... zoneNew / locationNew den kompletten String einfügen und set drücken (hat man attr global showInternalValues 1 gesetzt sieht man das reading .zones / .locations). Jedes set ... zoneNew / locationNew fügt eine neue Zone / Punkt mit fortlaufender Nummer ein
  • mit set ... zoneRename / locationRename alterName neuerName das reading umbenennen. Das Eingabefeld wird mit den vorhandene Zonennamen vor belegt, der letzte Eintrag sollte vorn stehen, also einfach den Rest überschreiben.
  • jedes set ... delete zones / locations löscht das komplette Reading.
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
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

TomLee

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 ?

Otto123

#274
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 :(
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

TomLee

#275
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 }

drhirn

Es gibt auf jeden Fall zwei neue Topics (v2022.11.0):

.../StatusStateAttribute/error_description:.* error_description
.../OperationModeControlCapability/preset:.* preset

Otto123

#277
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 :)
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

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?

Otto123

#279
wenn Du es auf ein neues Device setzt ja, wenn ips schon existiert: nicht. ;) 
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

Nope. Extra ein neues Device angelegt. Zwei Mal. Aktuelles FHEM.

Otto123

und hat er dann die ip4 oder hat er sie nicht? Du sagst ja es hat alles geklappt, das erfordert: er hat die IP
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

Ich werde das morgen nochmal durchspielen und melde mich dann mit brauchbareren Infos.

Otto123

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.
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

TomLee

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 ?