msgDialog: Erkennt den Trigger nicht

Begonnen von FHEm2005, 23 Mai 2018, 14:22:59

Vorheriges Thema - Nächstes Thema

FHEm2005

Ich habe diese Thema aus meinem vorherigen Thread hierhin verschoben, weil es letztendlich ein neues Problem behandelt.

Ich habe mir die msgConfig eingerichtet und eine msgDialog. Beide haben sich sehr nah an den vorhandenen Mustern orientiert.

Hier die RAW-definition der msgConfig
defmod msgConfig msgConfig
attr msgConfig userattr msgDialog_evalSpecials:textField-long msgDialog_msgCommand:textField
attr msgConfig comment FHEM Global Configuration for command 'msg'
attr msgConfig group Global
attr msgConfig msgContactPush VillaLuehl
attr msgConfig msgDialog_evalSpecials me=HSHSmart TelegramBot=VillaLuehl
attr msgConfig msgType text
attr msgConfig room TelegramBot->msg
attr msgConfig stateFormat fhemMsgState
attr msgConfig verbose5


... und hier die RAW-definition der msgDialog:
defmod msg_Wz_Heizung msgDialog { "EW":{
  "message": [
      "{return('(Zeitprogramm stoppen) ')}",
      "{return('(programmieren) (einschalten) ')}",
      "(Verlaufsdiagramm) ",
      "(abbrechen) ",
      "{return('Waschmaschine: ' . (ReadingsVal('Li_Di_Tuerbogen_Sw', 'state', '') eq 'on' ? 'eingeschaltet' : 'ausgeschaltet'))}",
      "{return('Modus: ' . (ReadingsVal('Th_Wz_Ez_Climate', 'controlMode', '') eq 'auto' ? 'Automatik' : 'Manuell (' . ReadingsVal('Th_Wz_Ez_Climate', 'desired-temp', '') . ')'))}"
    ]},
"Zeitprogramm stoppen": {
      "commands": "set Th_Wz_Ez_Climate controlMode manual",
      "message": [
        "(%me%) ",
        "Das Zeitprogramm wurde gestoppt."
      ]
  }
}
attr msg_Wz_Heizung allowed everyone
attr msg_Wz_Heizung evalSpecials me=HSHSmart TelegramBot=VillaLuehl
attr msg_Wz_Heizung msgCommand set VillaLuehl message
attr msg_Wz_Heizung room TelegramBot->msg


Mit msg Hallo kann ich eine Nachricht  an Telegram schicken, aber unter keinen  Umständen regiert msgDialog auf die Buschstabenfolge "EW".

Fehlermeldungen im eventmonitor:
2018.05.23 14:20:31 5 : msgConfig msgConfig: called function msgConfig_Notify()
2018.05.23 14:20:31 4 : msg: ERROR RCV VillaLuehl 579955383: Missing reference in msgContact attribute of any device
2018-05-23 14:20:31 msgConfig msgConfig ERROR RCV VillaLuehl 579955383: Missing reference in msgContact attribute of any device
2018-05-23 14:20:31 TelegramBot VillaLuehl msgText: EW


Offenbar kommt der Text ja in FHEM an; er triggert nur nicht den msgDialog. Die Devices Li_Di_Tuerbogen_Sw und Th_Wz_Ez_Climate haben kein attr msgContact lediglich msgContactAudio, ~Light, ~Mail, ~Push und ~Screen. Ich weiß nicht welche ich wie verwenden muss. Li_Di_Tuerbogen ist ein IT-device und Th_Wz_Ez_Climate ein HM-Thermostat (CUL_HM-device).
Kannst mir jemand helfen?

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

binford6000

Hallo Eberhard,
warum postest du nicht im passenden Thread:
https://forum.fhem.de/index.php/topic,77297.0.html
Da liest bestimmt auch der Modulautor igami mit.  ;)

Hast Du auch einen Meta-Dialog angelegt?
defmod meta_Dialog msgDialog {\
  "%me%": {\
    "match": "\/?(start|%me%)",\
    "commands": "deletereading TYPE=msgDialog $recipient_history",\
    "message": [\
      "{return('(' . join(') (', sort{lc($a) cmp lc($b)} (split('\n', fhem('get TYPE=msgDialog:FILTER=NAME!=$SELF:FILTER=allowed=.*($recipient|everyone).* trigger', 1)))) . ') (abbrechen) ')}",\
      "Ich kann folgendes für dich tun:"\
    ]\
  },\
  "zurück": {\
    "commands": "set $recipient_history=.+ say @$recipient {(ReadingsVal($DEV, '$recipient_history', '') =~ m/((.+)\\|.+$)/;;;; return($2 || $1);;;;)}"\
  },\
  "abbrechen": {\
    "match": "\/?abbrechen",\
    "commands": "deletereading TYPE=msgDialog $recipient_history",\
    "message": [\
      "TelegramBot_MTYPE=queryInline (%me%) ",\
      "Dialog abgebrochen."\
    ]\
  },\
  "beenden": {\
    "match": "\/?beenden",\
    "commands": "deletereading TYPE=msgDialog $recipient_history",\
    "message": [\
      "TelegramBot_MTYPE=queryInline (%me%) ",\
      "Dialog beendet."\
    ]\
  }\
}

attr meta_Dialog allowed everyone


Der Meta-Dialog dient zum Anzeigen deiner Dialoge (get TYPE=msgDialog:FILTER=NAME!=$SELF:FILTER=allowed=.*)
und reagiert auf %me%, also bei dir auf "HSHSmart".

VG Sebastian