msgDialog: Instant Messaging als FHEM Interface

Begonnen von igami, 30 September 2017, 15:09:01

Vorheriges Thema - Nächstes Thema

Fixel2012

Zitat von: Wuehler am 24 Mai 2018, 15:45:46
Hi,

Sieht bei dir nach message ja auch iwie anders aus.

In wie fern? Und ist "anders" in diesem Fall falsch?
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

Wuehler

#451
Bin leider unterwegs und kann es nicht ausprobieren um dir da besser zu helfen.

Laut Wiki muss jede message in einer Zeile stehen. Bei dir sind Es in den Zeilen mit den Namen jeweils zwei.  Ersetz die mal ungefähr folgendermaßen:
"{return('Felix: '.fhem(ReadingsVal('FelixGtag','presence,''))},
Achtung: habe auf dem Handy die Hochkommata nicht richtig hinbekommen!!!

Fixel2012

Zitat von: Wuehler am 24 Mai 2018, 22:28:35
Bin leider unterwegs und kann es nicht ausprobieren um dir da besser zu helfen.

Laut Wiki muss jede message in einer Zeile stehen. Bei dir sind Es in den Zeilen mit den Namen jeweils zwei.  Ersetz die mal ungefähr folgendermaßen:
"{return('Felix: '.fhem(ReadingsVal('FelixGtag','presence,''))},
Achtung: habe auf dem Handy die Hochkommata nicht richtig hinbekommen!!!

Danke für die Hilfe. Allerdings kriege ich die gleiche Meldung wie bei meiner Variante:

Zitatunknown command absent, try help

Was genau hat der Punkt in dem nachfolgendem Code zu bedeuten? Ich nehme an, das Wort fhem leitet den nachstehenden fhem Befehl ein?

{return('Felix: [color=red]'.[/color]fhem(ReadingsVal('FelixGtag','presence,''))}
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

Wuehler

#453
Hi,

Das sind dann jetzt aber ein paar fhem und perl Grundlagen:
- mit der geschweiften Klammer wechselt man in den perl-Modus
- Message möchte einen Text zum vversenden, daher aus oerl ein return
- der Punkt verbindet Zeichenketten.
- fhem() ist der Aufruf eines fhem Befehls(darin gehört kein perl)
- der ist hier natürlich falsch, sorry dafür, aber beim Handytippen sieht man manches nicht so gut.
- hier würde also direkt ReadingsVal(...) als perl Funktion reichen.


{return('Felix: [color=red]'.ReadingsVal('FelixGtag','presence','m)."[/color]"}

Fixel2012

Das wusste ich alles, bis auf dem Punkt. Danke für die Erläuterung :)

Aber warum wird nun mein ausgelesenes Reading mit Readingsval als command interpretiert und nicht als Textausgabe dargestellt? ???
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

Wuehler

Wie sieht dein Dialog denn jetzt in Gänze aus?

Fixel2012

Folgendermaßen sieht er nun aus:


{
   "Anwesenheit":{
      "message":[
"Anwesenheit der Familienmitglieder:",
     "{return('Felix: '.fhem(ReadingsVal('FelixGtag','presence','')))}",
         "{return('Katharina: '.fhem(ReadingsVal('KatharinaGtag','presence','')))}",
         "{return('Martina: '.fhem(ReadingsVal('MartinaGtag','presence','')))}",
         "{return('Rolf: '.fhem(ReadingsVal('RolfGtag','presence','')))}",
"(beenden) ",
"(zurück:Start) "
      ]

   }
}


Wobei das beenden und zurück:Start mir nicht als anklickbare Tastatur angezeigt wird. Wie bei anderen Dialogen. Liegt vielleicht daran, dass dort noch Fehlermeldungen vorkommen.

Hier die Nachricht, wie sie in Telegram ankommt:

Anwesenheit der Familienmitglieder:
Felix: Unknown command absent, try help.
Katharina: Unknown command absent, try help.
Martina: Unknown command present, try help.
Rolf: Unknown command present, try help.
(beenden)
(zurück:Start)
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

Wuehler

Das fhem() kannst du entfernen. Siehe mein post oben.
Was passiert denn wenn du direkt als message ,,Felix: absent" ausgibst?
Und wenn es dann immer noch nicht geht wäre ein log mit verbose=3 hilfreich. Auf welchen devices (dialog und/oder globalmsg) weiss ich auch nicht. Musst du probieren.

igami

Warum nicht einfach

{
   "Anwesenheit":{
     "message":[
       "Anwesenheit der Familienmitglieder:",
       "Felix: [FelixGtag:presence]",
       "Katharina: [KatharinaGtag:presence]",
       "Martina: [MartinaGtag:presence]",
       "Rolf: [RolfGtag:presence]",
       "(beenden) ",
       "(zurück:Start) "
     ]
  }
}

?
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Fixel2012

Das hat Funktioniert! Kenne die Angaben in den eckigen Klammern nur von dem DOIF Modul. Das ist doch eigentlich nicht Perl oder fhem Syntax, oder irre ich mich?

Nun nur noch die Frage, warum das eigentlich klickbare "beenden" in Telegram nur als Text erscheint.


Hier nochmal der gesamte code:


{
   "Anwesenheit":{
     "message":[
       "Anwesenheit der Familienmitglieder:",
       "Felix: [FelixGtag:presence]",
       "Katharina: [KatharinaGtag:presence]",
       "Martina: [MartinaGtag:presence]",
       "Rolf: [RolfGtag:presence]",
       "(beenden) "
     ]
  }
}


Danke!
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

igami

Zitat von: Fixel2012 am 28 Mai 2018, 09:38:08
Das hat Funktioniert! Kenne die Angaben in den eckigen Klammern nur von dem DOIF Modul. Das ist doch eigentlich nicht Perl oder fhem Syntax, oder irre ich mich?
Es ist FHEM Syntax. Siehe commandref zu set
Zitat

Ab featurelevel 5.7 ersetzt das set und setreading Befehl

    [device:name] mit dem Wert des Readings, Internals oder Attributes für device, falls sowohl device, als auch Reading, Internal oder Attribut existiert, und nicht leer ist.
        Man kann einen der Präfixe r:, i: oder a: verwenden, um die Suche einzuschränken, genau wie im devspec.
        Das Suffix :d extrahiert die erste Zahl.
        Das Suffix :i extrahiert die erste Zahl als Ganzzahl.
        Das Suffix :r<n> extrahiert die erste Zahl, und rundet sie auf <n> Dezimalstellen. Falls <n> fehlt, dann wird auf eine Dezimalstelle gerundet.
        Das Suffix :t liefert den Zeitstempel des Readings
        Das Suffix :sec liefert Anzahl der Sekunden seit Änderung des Readings.
    Beispiel:
        set Lamp blink [blinkDummy:number] [r:blinkDummy:duration:d]
    {(perlExpression)} mit dem Ergebnis der perlExpression. $DEV wird dabei mit dem Namen des vom set betroffenen Gerätes ersetzt.

Diese Ersetzungen sind unter dem Namen "set magic" bekannt.

Zitat von: Fixel2012 am 28 Mai 2018, 09:38:08
Nun nur noch die Frage, warum das eigentlich klickbare "beenden" in Telegram nur als Text erscheint.
Vor dem "beenden" steht kein Leerzeichen.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

FHEm2005

#461
msgDialog ist eine klasse Methode Fhem übersichtlich und auch für Nichttechniker verständlich zu gestalten. Einfach gut und Hut ab.

Grundsätzlich gestaltet sich ein ausgewählter Befehl klar nach dem Muster : TRIGGER => COMMAND => MESSSAGE. Dabei wird die gesendete Nachricht als Quittung gewertet bzw. genutzt. Ob das System den Befehl wirklich umgesetzt hat ist nicht sicher.

Bei bedingten Nachrichten wird durch die Verwendung von Readingsabfragen der wirkliche Zustand genutzt. Also habe ich versucht die Nachricht "Das Deckenlicht ist eingeschaltet" durch folgenden Konstrukt zu ersetzen:
"Deckenlicht ein": {
"commands": "set Li_Sz_Decke on","message":[
                                "{return('(Das Deckenlicht wurde eingeschaltet) ') if(ReadingsVal('Li_Sz_Decke', 'state', '') eq 'on')}",
                                "{return('(Ups, da ist was schiefgelaufen!) ') if(ReadingsVal('Li_Sz_Decke', 'state', '') ne 'on')}",
                                "okay?"
                                ]
},

Hierbei wird  Command zwar abgearbeitet, aber die gewünschte Rückmeldung bleibt aus. Mit der Abfrage auf set_on habe ich ERfolg.
Hier der relevante Teil als Code:
"Schlafzimmer": {
"commands": "set $recipient_history=.+ say @$recipient {(ReadingsVal($DEV, '$recipient_history', '') =~ m/((.+)\\|.+$)/;; return($2 || $1);;)}",
"message": [
"{return('(Deckenlicht ein) ') if(ReadingsVal('Li_Sz_Decke', 'state', '') ne 'on')}",
"{return('(Deckenlicht aus) ') if(ReadingsVal('Li_Sz_Decke', 'state', '') ne 'off')}",
"{return('(Nachttischlampen ein) ') if(ReadingsVal('Li_Sz_HUEGroup3', 'any_on', '') ne '1')}",
"{return('(Nachttischlampen aus) ') if(ReadingsVal('Li_Sz_HUEGroup3', 'any_on', '') ne '0')}",
"{return('(linke NTL ein) ') if(ReadingsVal('Li_Sz_HUEDevice21', 'onoff', '') ne '1')}",
"{return('(linke NTL aus) ') if(ReadingsVal('Li_Sz_HUEDevice21', 'onoff', '') eq '1')}",
"{return('(rechte NTL ein) ') if(ReadingsVal('Li_Sz_HUEDevice12', 'onoff', '') ne '1')}",
"{return('(rechte NTL aus) ') if(ReadingsVal('Li_Sz_HUEDevice12', 'onoff', '') eq '1')}",
                        "(zurück) ",
"Bitte wählen:"
],
"Deckenlicht ein": {
"commands": "set Li_Sz_Decke on",
                        "message":[
                                "{return('(Das Deckenlicht wurde eingeschaltet) ') if(ReadingsVal('Li_Sz_Decke', 'state', '') eq 'set_on')}",
                                "{return('(Ups, da ist was schiefgelaufen!) ') if(ReadingsVal('Li_Sz_Decke', 'state', '') ne 'set_on')}",
                                "okay?"
                                ]
},


Der Zustand, auf den aufgeprüft wird, soll "on" sein. Da fhem so schnell ist, befindet sich der Homaticschalter noch im Zustand "set_on", der aber einen Zwischenzustand darstellt. Erst der Zustand "on" ist endgültig. Ich müsste mit der Abfrage ca 1 Sekunde warten, dann dürfte der Befehl zu 95% abgearbeitet sein (hängt von der Auslastung der Funkschnittstelle ab).
Welche Lösungsmöglichkeit gibt es?

Viele Grüße
Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

FHEm2005

Ich habe den Dialog noch einmal verändert und in den Commands eine Wartezeit mit sleep 1  sowie anschließendem erneuten Aufruf des Gesamtschlafzimmers eingefügt.
"Deckenlicht ein": {
"commands": [
                        "set Li_Sz_Decke on",
                        "sleep 1",
                        "set $SELF say @$recipient Schlafzimmer"
                        ],
"message": "Das Deckenlicht wurde eingeschaltet."

},


Ich hatte die Hoffnung, dass beim Aufruf von set $SELF... der Zustand bereits stabil wäre, ist er leider nicht,  da die beiden Zeilen
"{return('(Deckenlicht ein) ') if(ReadingsVal('Li_Sz_Decke', 'state', '') ne 'on')}",
"{return('(Deckenlicht aus) ') if(ReadingsVal('Li_Sz_Decke', 'state', '') ne 'off')}",

zu einer Anzeige führen.  Also sind sie weder on noch off. Wieso? Nach einer Sekunde müsste der Zustand "on" doch erreicht sein, oder?

Zitat aus der CommandRef für sleep:
ZitatBemerkung: falls sleep von keinem Befehl gefolgt wird, dann wird FHEM blockiert. Das ist unerwünscht, und im FHEM-Log wird eine Warnung protokolliert.
Kann es sein, dass fhem den nachfolgenden Befehl set $SELF say ...   nicht als solchen erkennt und blockiert? Ein Blick ins Logbuch zeigt es:
2018.06.01 09:51:58 1 : WARNING: sleep without additional commands is deprecated and blocks FHEM
Was nun?
Bin ich der Einzige, der das Problem mit den HM Tastern/Schaltern hat? Ich werde heute Nachmittag das Thema mit HUE testen.

Viele Grüße
Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

binford6000

ZitatAlso sind sie weder on noch off. Wieso? Nach einer Sekunde müsste der Zustand "on" doch erreicht sein, oder?
Hallo Eberhard,
die Prüfung zum Einschalten
if(ReadingsVal('Li_Sz_Decke', 'state', '') ne 'on')
liefert auch ja zurück, wenn state = "dim irgendwas" steht, also die Lampe bereits eingeschaltet ist. Vorausgesetzt es ist eine HUE oder so wovon ich mal ausgehe.
Probier mal:
if(ReadingsVal('Li_Sz_Decke', 'state', '') eq 'off')
Hier mal mein Beleuchtungs-Dialog als RAW. Vielleicht kannst Du ja was adaptieren...
defmod Beleuchtung_Dialog msgDialog {"01.💡Beleuchtung":{\
  "message": [\
    "(💡Szenen: [Standard.LS:state]:💡Szenen) ",\
    "(💡Lampen einschalten) ",\
"(💡Lampen ausschalten) ",\
"(💡Flur dimmen) ",\
"(💡Wohnzimmer dimmen) ",\
    "(zurück:%me%) ", \
"Möchtest Du Szenen einstellen oder Lampen schalten?"\
  ],\
  "💡Szenen":{\
    "message":[\
      "{return('(💡abwesend einschalten) ') if(ReadingsVal('Standard.LS','state','') ne 'abwesend')}",\
  "{return('(💡anwesend einschalten) ') if(ReadingsVal('Standard.LS', 'state','') ne 'anwesend')}",\
  "{return('(💡anwesend_alle einschalten) ') if(ReadingsVal('Standard.LS', 'state','') ne 'anwesend_alle')}",\
  "{return('(💡anwesend_alle_farbe einschalten) ') if(ReadingsVal('Standard.LS','state','') ne 'anwesend_alle_farbe')}",\
  "{return('(💡schlafen einschalten) ') if(ReadingsVal('Standard.LS','state','') ne 'schlafen')}",\
  "{return('(💡kino einschalten) ') if(ReadingsVal('Standard.LS','state','') ne 'kino')}",\
  "{return('(💡panik einschalten) ') if(ReadingsVal('Standard.LS','state','') ne 'panik')}",\
  "(abbrechen|zurück) ",\
  "Welche Szene soll ich aktivieren?"\
    ],\
"💡abwesend einschalten":{\
    "commands": [\
"set Standard.LS scene abwesend",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
    ]\
    },\
    "💡anwesend einschalten":{\
    "commands": [\
"set Standard.LS scene anwesend",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
    ]\
    },\
    "💡anwesend_alle einschalten":{\
    "commands": [\
"set Standard.LS scene anwesend_alle",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
    ]\
    },\
    "💡anwesend_alle_farbe einschalten":{\
    "commands": [\
"set Standard.LS scene anwesend_alle_farbe",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
    ]\
    },\
    "💡schlafen einschalten":{\
    "commands": [\
"set Standard.LS scene schalfen",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
    ]\
    },\
"💡panik einschalten":{\
    "commands": [\
"set Standard.LS scene panik",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
    ]\
    },\
    "💡kino einschalten":{\
    "commands": [\
"set Standard.LS scene kino",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
    ]\
    }\
    },\
    "💡Lampen einschalten":{\
    "message":[\
      "{return('(💡Flur einschalten: [fl_tischlampe_licht:state]:Flur einschalten) ') if(ReadingsVal('fl_tischlampe_licht', 'state', '') eq 'off')}",\
  "{return('(💡Küche: [SteckdoseIT2:state]:Küche einschalten) ') if(ReadingsVal('SteckdoseIT2', 'state', '') eq 'off')}",\
  "{return('(💡Schlafzimmer: [sz_bett_licht:state]:Schlafzimmer einschalten) ') if(ReadingsVal('sz_bett_licht', 'state', '') eq 'off')}",\
  "{return('(💡Büro: [SteckdoseIT6:state]:Büro einschalten) ') if(ReadingsVal('SteckdoseIT6', 'state', '') eq 'off')}",\
  "{return('(💡Kugel: [wz_kugel_licht:state]:Kugel einschalten) ') if(ReadingsVal('wz_kugel_licht', 'state', '') eq 'off')}",\
  "{return('(💡Linker Spot: [wz_treppe_licht:state]:Linker Spot einschalten) ') if(ReadingsVal('wz_treppe_licht', 'state', '') eq 'off')}",\
  "{return('(💡Rechter Spot: [wz_strasse_licht:state]:Rechter Spot einschalten) ') if(ReadingsVal('wz_strasse_licht', 'state', '') eq 'off')}",\
  "{return('(💡Stehlampe: [wz_stehlampe_licht:state]:Stehlampe einschalten) ') if(ReadingsVal('wz_stehlampe_licht', 'state', '') eq 'off')}",\
  "(abbrechen|zurück) ",\
  "Welche Lampe soll ich einschalten?"\
    ],\
    "Stehlampe einschalten":{\
    "commands": [\
"set wz_stehlampe_licht on",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    },\
"Linker Spot einschalten":{\
    "commands": [\
"set wz_treppe_licht on",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    },\
"Rechter Spot einschalten":{\
    "commands": [\
"set wz_strasse_licht on",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    },\
"Kugel einschalten":{\
    "commands": [\
"set wz_kugel_licht on",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    },\
"Flur einschalten":{\
    "commands": [\
"set fl_tischlampe_licht on",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    },\
    "Küche einschalten":{\
    "commands": [\
"set SteckdoseIT2 on",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    },\
"Büro einschalten":{\
    "commands": [\
"set SteckdoseIT6 on",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    },\
    "Schlafzimmer einschalten":{\
    "commands": [\
"set sz_bett_licht on",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    }\
    },\
"💡Flur dimmen":{\
    "message":[\
      "(abbrechen|zurück) ",\
      "(5%:5|10%:10|20%:20|25%:25) ",\
      "(30%:30|40%:40|50%:50|60%:60) ",\
  "(70%:70|80%:80|90%:90|100%:100) ",\
      "Aktuell sind [fl_tischlampe_licht:pct]% eingestellt. Auf welchen Wert soll ich dimmen?"\
],\
"dimmen_Flur":{\
      "match": "?([1-9][0]|[1][0][0]) ?",\
      "commands": [\
  "{my $dimm = '$message';;;; fhem(\"set fl_tischlampe_licht pct $dimm 3\");;;;}",\
  "set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    }\
},\
"💡Wohnzimmer dimmen":{\
    "message":[\
      "(abbrechen|zurück) ",\
      "(5%:5|10%:10|20%:20|25%:25) ",\
      "(30%:30|40%:40|50%:50|60%:60) ",\
  "(70%:70|80%:80|90%:90|100%:100) ",\
      "Aktuell sind [wz_stehlampe_licht:pct]% eingestellt. Auf welchen Wert soll ich dimmen?"\
],\
"dimmen_WZ":{\
      "match": "?([1-9][0]|[1][0][0]) ?",\
      "commands": [\
  "{my $dimm = '$message';;;; fhem(\"set wz_.*_licht pct $dimm 3\");;;;}",\
  "set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    }\
},\
"💡Lampen ausschalten":{\
    "message":[\
      "{return('(💡Flur: [fl_tischlampe_licht:pct]:Flur ausschalten) ') if(ReadingsVal('fl_tischlampe_licht', 'state', '') ne 'off')}",\
  "{return('(💡Küche: [SteckdoseIT2:state]:Küche ausschalten) ') if(ReadingsVal('SteckdoseIT2', 'state', '') ne 'off')}",\
  "{return('(💡Schlafzimmer: [sz_bett_licht:pct]:Schlafzimmer ausschalten) ') if(ReadingsVal('sz_bett_licht', 'state', '') ne 'off')}",\
  "{return('(💡Büro: [SteckdoseIT6:state]:Büro ausschalten) ') if(ReadingsVal('SteckdoseIT6', 'state', '') ne 'off')}",\
  "{return('(💡Kugel: [wz_kugel_licht:pct]:Kugel ausschalten) ') if(ReadingsVal('wz_kugel_licht', 'state', '') ne 'off')}",\
  "{return('(💡Linker Spot: [wz_treppe_licht:pct]:Linker Spot ausschalten) ') if(ReadingsVal('wz_treppe_licht', 'state', '') ne 'off')}",\
  "{return('(💡Rechter Spot: [wz_strasse_licht:pct]:Rechter Spot ausschalten) ') if(ReadingsVal('wz_strasse_licht', 'state', '') ne 'off')}",\
  "{return('(💡Stehlampe: [wz_stehlampe_licht:pct]:Stehlampe ausschalten) ') if(ReadingsVal('wz_stehlampe_licht', 'state', '') ne 'off')}",\
  "(abbrechen|zurück) ",\
  "Welche Lampe soll ich ausschalten?"\
    ],\
    "Stehlampe ausschalten":{\
    "commands": [\
"set wz_stehlampe_licht off",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    },\
"Linker Spot ausschalten":{\
    "commands": [\
"set wz_treppe_licht off",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    },\
"Rechter Spot ausschalten":{\
    "commands": [\
"set wz_strasse_licht off",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    },\
"Kugel ausschalten":{\
    "commands": [\
"set wz_kugel_licht off",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    },\
"Flur ausschalten":{\
    "commands": [\
"set fl_sw_1 off",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    },\
    "Küche ausschalten":{\
    "commands": [\
"set SteckdoseIT2 off",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    },\
"Büro ausschalten":{\
    "commands": [\
"set SteckdoseIT6 off",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    },\
    "Schlafzimmer ausschalten":{\
    "commands": [\
"set sz_bett_licht off",\
"set $SELF say @$recipient 01.💡Beleuchtung"\
]\
    }\
  }\
}\
}\
\
\

attr Beleuchtung_Dialog allowed rr_Sebastian,1
attr Beleuchtung_Dialog disable 0
attr Beleuchtung_Dialog group Dialog
attr Beleuchtung_Dialog icon dialog@green
attr Beleuchtung_Dialog room 91_Webdevices
attr Beleuchtung_Dialog verbose 0


VG Sebastian

FHEm2005

Hallo Sebastian,
ich habe inzwischen weitergeforscht und eine Lösung gefunden: einfach zwei Befehle in eine Zeile, nämlich so:
"sleep 1;set $SELF say @$recipient Schlafzimmer"
Das führt bei mir zu klaren wechselnden Anzeigen beim ernuten Aufruf des Dialoges. Normalerweise dürfen keine zwei Befehle in eine Zeile, aber diesen hier erkennt er wohl nicht richtig und arbeitet beide ab. Im Log erkenne ich den sleep 1 leider nicht, trotz verbose 5.
Hier mal für zwei Trigger meinen momentanen Code:
"Deckenlicht ein": {
   "commands": [
       "set Li_Sz_Decke on",
       "sleep 1;set $SELF say @$recipient Schlafzimmer"
     ],
   "message": "Das Deckenlicht wurde eingeschaltet."
},

"Deckenlicht aus": {
   "commands": [
        "set Li_Sz_Decke off",
         "sleep 1;set $SELF say @$recipient Schlafzimmer"
         ],
    "message": "Das Deckenlicht wurde ausgeschaltet."
},


ZitatVorausgesetzt es ist eine HUE oder so wovon ich mal ausgehe.
Das ist es ja, kein HUE sondern ein Homematicdeckenlampenschalter  ;).

Deinen Dialog schaue ich mir im Laufe des Tages mal genau an, ob ich was gebrauchen kann. Danke dafür.
ZitatVielleicht kannst Du ja was adaptieren...
Würde ich gerne, deshalb dieFrage: Wie bekommst Du die Icons dort hinein? Den Code davor schreiben reicht wohl nicht, da stehen dann Hex-Zahlen vor der Nachricht. Das ist dann nix für den WAF.

Viele Grüße
Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM