FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: kumue am 03 Mai 2025, 21:12:44

Titel: Kommando über msgDialog senden geht nicht
Beitrag von: kumue am 03 Mai 2025, 21:12:44
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
Titel: Aw: Kommando über msgDialog senden geht nicht
Beitrag von: TomLee am 03 Mai 2025, 21:20:09
Hallo,

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

Gruß Thomas
Titel: Aw: Kommando über msgDialog senden geht nicht
Beitrag von: betateilchen am 03 Mai 2025, 21:32:40
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...
Titel: Aw: Kommando über msgDialog senden geht nicht
Beitrag von: TomLee am 03 Mai 2025, 21:42:47
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"},...
Titel: Aw: Kommando über msgDialog senden geht nicht
Beitrag von: TomLee am 04 Mai 2025, 00:12:50
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"\
      ]\
    }\
  }\
}
Titel: Aw: Kommando über msgDialog senden geht nicht
Beitrag von: kumue am 04 Mai 2025, 09:33:34
Perfekt, es funktioniert.
Vielen Dank und einen angenehmen Sonntag !