[Gelöst] FHEMWEB - Kombination von webCmd, widgetOverride und eventMap

Begonnen von rhya, 29 April 2020, 13:22:35

Vorheriges Thema - Nächstes Thema

rhya

Hallo allesamt,

ich bekomme es irgendwie nicht hin, daher hier mein Problem:

Ich habe einen roborock Staubsaugerroboter, der mit dem Befehl "set clean_segment xx,yy,zz" einen oder mehrere Räume saugen geht, wobei xx,yy,zz eine Liste an RaumIDs ist.

Um das nun Verlobten-kompatibel zu bekommen war mein Gedanke eine Auswahlliste in der die Räume benannt ausgewählt werden können.
Soweit so gut, also erstmal das benennen mit
attr roborock eventMap /16:Bad/18:Arbeitszimmer/20:Wohnzimmer/21:Flur/22:Schlafzimmer/23:Küche/
Dann natürlich die Anzeige als webCmd
attr roborock webCmd clean_segment
und dem Anzeigen eines widgets
attr roborock widgetOverride clean_segment:multiple-strict,Bad,Arbeitszimmer,Wohnzimmer,Flur,Schlafzimmer,Küche

So, Anzeige geht, Auswahl geht, Staubsauger fährt los wenn ich einen einzelnen Raum wähle.
Beim Wählen von mehreren Räumen steht im Ergebnis zwar das richtige, der Robbi tut aber nichts.

Wenn ich aber das Attribut eventMap lösche und widgetOverride anpasse, dann stehen natürlich überall nur die RaumIDs, aber dann funktioniert es auch mit einer Mehrfachauswahl.
attr roborock widgetOverride clean_segment:multiple-strict,16,18,20,21,22,23

Das legt mir den Gedanken nahe, dass die Kombination mit eventMap nicht so funktioniert wie ich mir das wünsche.

Gehe ich das irgendwie falsch an oder verraffe ich es einfach?
Ggf. muss ich das mit dieser RegEx Syntax von eventMap lösen? Da haben meine Hirnwindungen aber bisher immer die Grätsche gemacht :D

Vielen lieben Dank auf jeden Fall für jeden Hinweis

rhya

Stunden und graue Haare später funktioniert nun diese eventMap:

{ usr=>{'clean_segment'=>'"=~m/x/;; my %v=(Bad=>16,Arbeitszimmer=>18,Wohnzimmer=>20,Flur=>21,Schlafzimmer=>22,Kueche=>23);; $nstr=~s/clean_segment.//;; $nstr=~s/([^,]+)/$v{$1}/ge;; "clean_segment $nstr' } }

Bestimmt nicht optimal gelöst, aber gelöst ;)
Sobald ich übrigens "Kueche" in "Küche" ändere funktioniert es nicht mehr. Aber damit kann ich erstmal leben

Auf den Trichter gebracht hat mich das hier
https://forum.fhem.de/index.php?topic=88904.0

TWART016

Hallo rhya,

Zitat von: rhya am 06 Mai 2020, 18:30:03
Stunden und graue Haare später funktioniert nun diese eventMap:

{ usr=>{'clean_segment'=>'"=~m/x/;; my %v=(Bad=>16,Arbeitszimmer=>18,Wohnzimmer=>20,Flur=>21,Schlafzimmer=>22,Kueche=>23);; $nstr=~s/clean_segment.//;; $nstr=~s/([^,]+)/$v{$1}/ge;; "clean_segment $nstr' } }

Bestimmt nicht optimal gelöst, aber gelöst ;)
Sobald ich übrigens "Kueche" in "Küche" ändere funktioniert es nicht mehr. Aber damit kann ich erstmal leben

Auf den Trichter gebracht hat mich das hier
https://forum.fhem.de/index.php?topic=88904.0

ich konnte bei mir gleiches beobachten. Allerdings wird auch mit dem EventMap gar kein Raum angesteuert, es passiert nichts:
attr Xiaomi_Staubsauger webCmd clean_segment
attr Xiaomi_Staubsauger widgetOverride clean_segment:multiple-strict,Wohnzimmer,Hobbyzimmer,Flur,Küche,Schlafzimmer,Bad
attr Xiaomi_Staubsauger eventMap { usr=>{'clean_segment'=>'"=~m/x/;;;; my %v=(Wohnzimmer=>1,Hobbyzimmer=>2,Flur=>3,Kueche=>4,Küche=>5,Bad=>6);;;; $nstr=~s/clean_segment.//;;;; $nstr=~s/([^,]+)/$v{$1}/ge;;;; "clean_segment $nstr' } }


Im Event Monitor steht allerdings das richtige
2020-05-16 14:25:47 XiaomiDevice Xiaomi_Staubsauger clean_segment Wohnzimmer

KernSani

Hi,
meiner Beobachtung nach fangen die RoomIDs immer bei 16 an und werden dann in der Reihenfolge des Anlegens hochgezählt...(zumindest wenn man das über die XIAOMI-App macht)
Sicher, dass du korrekte IDs hast?


Kurz, weil mobil....
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

TWART016

Zitat von: KernSani am 18 Mai 2020, 16:36:37
Hi,
meiner Beobachtung nach fangen die RoomIDs immer bei 16 an und werden dann in der Reihenfolge des Anlegens hochgezählt...(zumindest wenn man das über die XIAOMI-App macht)
Sicher, dass du korrekte IDs hast?


Kurz, weil mobil....
Ja, bei mir sind es 1-6. Mit den commands funktioniert das auch, nur nicht mit widgetOverride und eventMap.