MQTT2 für Xiaomi Vacuum Sauger

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

Vorheriges Thema - Nächstes Thema

drhirn

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.

waldy

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?

Che007

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.

Otto123

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.
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 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 gepostet, wenn das Device anders heißt, als das Topic, müsste die 99_valetudoUtils.pm geändert werden.

waldy

Zitat von: drhirn am 21 Juni 2022, 12:55:54
...
Würde es nicht Sinn machen, Zeile 68 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.

laberlaib

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
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

TomLee

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.

laberlaib

#158
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.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

laberlaib

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
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

Che007

#160
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

drhirn

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?

Che007

#162


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.

drhirn

Mir scheint, da fehlt noch das Attribut "IODevice", oder?

Bei mir wird - beim Segment-Start via FHEM - nur ein Segment gesaugt.

Che007

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.