Kommando über msgDialog senden geht nicht

Begonnen von kumue, 03 Mai 2025, 21:12:44

Vorheriges Thema - Nächstes Thema

kumue

Hallo,
ich möchte eine Dummy über Telegram on oder off schalten:
defmod DU_TEST dummy
attr DU_TEST alias Automatic Test
attr DU_TEST devStateIcon on:general_an@0CFB0C off:general_aus@grey
attr DU_TEST group Services
attr DU_TEST readingList Automatic
attr DU_TEST room Schalter
attr DU_TEST setList Automatic:on,off
attr DU_TEST stateFormat Automatic
attr DU_TEST webCmd Automatic

Auf Kommandozeile funktioniert ein
set DU_Test Automatic on bzw.
set DU_Test Automatic off wunderbar.

Nur aus msgDialog heraus nicht.
defmod MD_Schalter_Dialog_M msgDialog {\
  "Schalten": {\
    "message": [\
      "(Automatik Test EIN|Automatik Test AUS) ",\
      "(%me%) ",\
      "Aktueller Status: Automatik ist <b>[DU_Test:Automatic]</b>"\
    ],\
    "Automatik EIN": {\
      "commands": [\
        "set DU_Test Automatic on",\
        "set $SELF say @$recipient Schalten"\
      ]\
    },\
    "Automatik AUS": {\
      "commands": [\
        "set DU_Test Automatic off",\
        "set $SELF say @$recipient Schalten"\
      ]\
    }\
  }\
}

Was mache ich falsch ?
Gruß KU

TomLee

Hallo,

Du bist in Perl, da musst die fhem-Funktion für den set-Befehl nutzen.

Gruß Thomas

betateilchen

Zitat von: TomLee am 03 Mai 2025, 21:20:09Du bist in Perl,

Du siehst offenbar etwas anderes als ich.

Zitat von: TomLee am 03 Mai 2025, 21:20:09da musst die fhem-Funktion für den set-Befehl nutzen.

Nein, muss er nicht.
Geschweifte Klammern kennzeichnen bei msgDialog primär JSON Inhalte, nicht nur perl.
Umgekehrt wird ein Schuh daraus: "Wenn man fhem() in commands verwendet, muss man das in 'geschweifte perl-Klammern' setzen." Aber das ist ja hier nicht der Fall.

Ich geh mal Popcorn holen, ich glaube, das wird lustig...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

#3
Hat er recht.

So sollte es in geschweiften tun:

..."commands": [
"{fhem('set DU_Test Automatic on;set $SELF say @$recipient Schalten')}"]},...

Oder Du entfernst die eckigen:

..."commands":
"set DU_Test Automatic on;set $SELF say @$recipient Schalten"},...

TomLee

Du rufst im Dialogfeld Automatik Test EIN bzw. Automatik Test AUS auf.

Die Kommandos heißen aber Automatik EIN und Automatik AUS

defmod MD_Schalter_Dialog_M msgDialog {\
  "Schalten": {\
    "message": [\
      "(Automatik EIN|Automatik AUS) ",\
      "(%me%) ",\
      "Aktueller Status: Automatik ist <b>[DU_Test:Automatic]</b>"\
    ],\
    "Automatik EIN": {\
      "commands": [\
        "set DU_Test Automatic on",\
        "set $SELF say @$recipient Schalten"\
      ]\
    },\
    "Automatik AUS": {\
      "commands": [\
        "set DU_Test Automatic off",\
        "set $SELF say @$recipient Schalten"\
      ]\
    }\
  }\
}

kumue

Perfekt, es funktioniert.
Vielen Dank und einen angenehmen Sonntag !