msgDialog: Instant Messaging als FHEM Interface

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

Vorheriges Thema - Nächstes Thema

Esjay

Zitat von: Keule_09 am 21 November 2017, 14:22:48
Hab jetzt mal alles gelöscht und neu konfiguriert.

Kann jetzt den Befehl absetzen und kommt auch an meinem <ROOMMATE> an.

Allerdings passiert immer noch nichts bei wenn ich den Befehl "/start" eingebe.

Habe den meta_Dialog und dein Beispiel_Dialog "Waschmaschine" erstellt.

Logfile gibt bei /start folgendes aus:
2017.11.21 13:34:42 5: msgConfig TelebotConfiq: called function msgConfig_Notify()

Hast du dran gedacht, im Dialog die Berechtigung für den Roommate zu setzen?

Grüße

Keule_09

Ja hab die Berechtigungen alle gesetzt bei den Dialogen auf "everyone" gesetzt.


igami

Wird auch das msgPushReceived Reading im ROOMMATE Device aktualisiert, sodass es im Eventmonitor zu sehen ist?
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

schnitzelbrain

Zwischenfrage , lässt sich das logging einschränken?
Ich hab den ganzen msg Zweig auf verbose 0 stehen abef die Logdatei explodiert gerade.

Grüße

Schnitzelbrain


igami

Zitat von: schnitzelbrain am 21 November 2017, 16:37:58
Zwischenfrage , lässt sich das logging einschränken?
Ich hab den ganzen msg Zweig auf verbose 0 stehen abef die Logdatei explodiert gerade.

Grüße

Schnitzelbrain
Welche LogDatei? Und mit welchem Inhalt?
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

Keule_09

#230
Zitat von: igami am 21 November 2017, 16:05:38
Wird auch das msgPushReceived Reading im ROOMMATE Device aktualisiert, sodass es im Eventmonitor zu sehen ist?

im Eventmonitor sieht man keine Einträge meines Roommate
aber in den Readings im Roommate stehen diese Einträge:


fhemMsgPush               Test2546                                            2017-11-21 12:49:46
fhemMsgPushGw         TelegramBot:@34XXXXXX8:OK     2017-11-21 12:49:46
fhemMsgPushPrio                                                                    2017-11-21 12:49:46
fhemMsgPushState                                                                  2017-11-21 12:49:46
fhemMsgPushTitle       -                                                          2017-11-21 12:49:46
fhemMsgRcvPush       /start                                                  2017-11-21 20:23:47
fhemMsgRcvPushGw  TelegramBot                                    2017-11-21 20:23:47
fhemMsgState                1                                                        2017-11-21 12:49:46
fhemMsgStateTypes     push:1                                              2017-11-21 12:49:46


msgPushReceived fehlt in der Auflistung

igami

Okay, ist fhemMsgRcvPush. Hast du Einschränkungen durch event-on- Attribute?
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

schnitzelbrain

#232
Zitat von: igami am 21 November 2017, 17:13:43
Welche LogDatei? Und mit welchem Inhalt?
Das Logfile das über die Oberfläche erreichbar ist und das mit Verbose zu beeinflussen ist.

Reset SAT 2017.11.19 21:48:06 3: get TYPE=msgDialog:FILTER=NAME!=meta_dialog:FILTER=allowed=.*(rr_Frank|everyone).* trigger : [emoji362] Beleuchtung [emoji536] Rolladen Reset SAT 2017.11.19 21:49:04 3: get TYPE=msgDialog:FILTER=NAME!=meta_dialog:FILTER=allowed=.*(rr_Frank|everyone).* trigger : [emoji362] Beleuchtung [emoji536] Rolladen Reset SAT 2017.11.19 21:49:08 3: get TYPE=msgDialog:FILTER=NAME!=meta_dialog:FILTER=allowed=.*(rr_Frank|everyone).* trigger : [emoji362] Beleuchtung [emoji536] Rolladen Reset SAT 2017.11.19 21:49:37 3: get TYPE=msgDialog:FILTER=NAME!=meta_dialog:FILTER=allowed=.*(rr_Frank|everyone).* trigger : [emoji362] Beleuchtung [emoji536] Rolladen Reset SAT 2017.11.19 21:50:04 3: get TYPE=msgDialog:FILTER=NAME!=meta_dialog:FILTER=allowed=.*(rr_Frank|everyone).* trigger : [emoji362] Beleuchtung [emoji536] Rolladen Reset SAT 2017.11.19 21:50:27 3: get TYPE=msgDialog:FILTER=NAME!=meta_dialog:FILTER=allowed=.*(rr_Frank|everyone).* trigger : [emoji362] Beleuchtung



Jeder Tastendruck wird eben protokolliert.

Grüße

Schnitzelbrain

igami

Zitat von: schnitzelbrain am 21 November 2017, 21:29:46
Jeder Tastendruck wird eben protokolliert.
Das kommt aus dem meta_Dialog. Die Begündung:
Zitat
To use FHEM commands from the perl expression, use the function fhem(), which takes a string argument, this string will be evaluated as a FHEM command:

    { fhem "set light on" }
    define n1 notify piri:on { fhem "set light on" }

Note: if this function returns a value, it will also be logged into the global FHEM log. Use 1 as a second argument to disable this logging, this makes sense when obtainig some values via FHEM "get...".

Da ich im global das verbose auf 2 stehen habe merke ich das nicht.
Das verhalten lässt sich durch eine Änderung des meta_Dialog abstellen.
Versuch doch mal bitte den folgenden:

defmod meta_Dialog msgDialog {\
  "%me%": {\
    "match": "\/?(start|%me%)",\
    "commands": "deletereading TYPE=msgDialog $recipient_history",\
    "message": [\
      "{return('(' . join(') (', sort(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 ? $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

Dort habe ich die 1 nach dem get Aufruft ergänzt.
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

Keule_09

Zitat von: igami am 21 November 2017, 21:26:15
Okay, ist fhemMsgRcvPush. Hast du Einschränkungen durch event-on- Attribute?

Danke für den Tip.Das war der Grund  :)
Jetzt funktionieren die Dialoge.

Vielen Dank für die Hilfe

igami

Steht übrigens auch in der Commandref zu dem Modul :P
Noch ein Tip: es sollte am besten auch in event-on-update-reading aufgenommen werden und nicht in event-on-change-reading.
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

schnitzelbrain

Zitat von: igami am 21 November 2017, 21:39:40
Das kommt aus dem meta_Dialog. Die Begündung:
Da ich im global das verbose auf 2 stehen habe merke ich das nicht.
Das verhalten lässt sich durch eine Änderung des meta_Dialog abstellen.
Versuch doch mal bitte den folgenden:

defmod meta_Dialog msgDialog {\
  "%me%": {\
    "match": "\/?(start|%me%)",\
    "commands": "deletereading TYPE=msgDialog $recipient_history",\
    "message": [\
      "{return('(' . join(') (', sort(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 ? $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

Dort habe ich die 1 nach dem get Aufruft ergänzt.
Perfect, logging unterdrückt

Dank dir


Schnitzelbrain


Esjay

Hallo Igami,
gibt es eine Möglichkeit, das "set Dialog xyz say xyz " in verschiedene Chats zu schicken?
Ich habe einen für die Alarmanlage, einen für meinen Staubsauger, einen für das Haus.
Macht das Ganze einfach übersichtlicher!

Grüße

Marlen

Hallo,

sehr nettes Modul!

Aber bei mir bekomme ich immer die Nachrichten vom metaDialog doppelt.

Woran kann das liegen?

LG
  Marlen

schnitzelbrain

#239
Zitat von: Marlen am 01 Dezember 2017, 15:05:30
Hallo,

sehr nettes Modul!

Aber bei mir bekomme ich immer die Nachrichten vom metaDialog doppelt.

Woran kann das liegen?

LG
  Marlen
Hast du mehrere Residents eingetragen?
Schau mal on msgContactpush Einträge mit der richtigen ID gesetzt ist.

Das war es bei mir. Ich hatte dann meine und die von meiner Frau bekommen.

Beim mymsgconfig nur den bot
Und bei den residents bot:@id_code vom jeweiligen resident

Schnitzelbrain