msgDialog: Instant Messaging als FHEM Interface

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

Vorheriges Thema - Nächstes Thema

ErzGabriel

Ich habe mit der Zeile

defmod meta_Dialog msgDialog {}

das Device angelegt und will dann über RAW definition folgendes einkopieren

{\
  "%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'))), '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



Wobei ich heute ide Backslahs entfernt habe.

igami

Und das Ergebnis?

Zitat von: igami am 06 Januar 2018, 15:05:31
Und nun bitte ein list oder Raw definition vom msgConfig device.
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

ErzGabriel

Uppps, überlesen. Sorry.

Meine msgConfig sieht wie folgt aus.

define myMsgConfig msgConfig
attr myMsgConfig userattr msgDialog_evalSpecials:textField-long msgDialog_msgCommand:textField
attr myMsgConfig comment FHEM Global Configuration for command 'msg'
attr myMsgConfig group Global
attr myMsgConfig msgContactPush *******
attr myMsgConfig msgDialog_evalSpecials me=*****\TelegramBot=*****
attr myMsgConfig msgType text
attr myMsgConfig room Telegram
attr myMsgConfig stateFormat fhemMsgState
attr myMsgConfig verbose 3


* sind durch den Namen vom Bot ersetzt. Beim nalgen, keine Probleme gehabt.
Ergebnis heute bei dem meta_Dialog. Immer noch die Fehleermeldung und Device wird nicht angelegt.

igami

guck dir mal dein msgDialog_evalSpecials Attribut an, das stimmt so nicht.
Laut commandref:
Zitat
Leerzeichen getrennte Liste von Name=Wert Paaren.
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

ErzGabriel

Jo, das war es. Danke.
Habe mir den Waschmaschinen Dialog zum testen angelegt aber irgendwie zeigt der Bot mir das nicht an.
Ich habe sämtliche Versionen zum starten des Dialogs probiert, die mir einfallen.
Mir will es nicht in den Kopf, wie das funktioniert, bin ich wohl zu blöde für.

Danke allen für die Hilfe aber ich gebe auf.

igami

Zitat von: ErzGabriel am 07 Januar 2018, 11:00:09
Danke allen für die Hilfe aber ich gebe auf.
Schade :(
Falls du es dir anders überlegst melde dich einfach wieder.
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

ErzGabriel

Ich werde mir das nicht anders überlegen, da ich es nicht schaffe ein laufendes Grundsystem hinzukriegen.
Da ich jetzt keine Idee mehr habe, was ich wie noch falsch machen kann und es mich nur noch frustet.

Währe mir nicht mein Fhem abgeschmiert und hätte ich auf eine neue Version updaten müssen, hätte ich ein funktionierendes Grundsystem, was Spaß machte zu testen und zu basteln aber so macht es kein Spaß mehr.

igami

Trotzdem ein häufiger "Fehler": Es wurde das Attribut allowed nicht gesetzt.
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

ToM_ToM

Hallo igami,

ich habe mir heute mal die Zeit genommen und wollte meine Eigenprogrammierung des Telegramm-Dialogs durch deinen ablösen, da ich Probleme habe, wenn mehrere User gleichzeitig Anfragen stellen.
Nun habe ich mich durch die Commandref, durchs Wiki und durchs Forum gekämpft, jede Menge an meinem FHEM verändert, aber ich blicke trotzdem noch nicht ganz durch. Bei all den Erklärungen kann ich nirgends einen roten Faden finden. Könntest du vielleicht die Commandref oder das Wiki um ein Minimal-Beispiel erweitern? Welche Steps muss ich gehen um ein einfaches Frage - Antwort -Szenario hinzubekommen? Was ist mit ROOMMATE oder GUEST? Brauche ich das zwingend um das Modul nutzen zu können oder nur wenn ich später irgendwelche Berechtigungen steuern möchte?

Ich habe jetzt meine msgConfig angepasst und wenn ich es richtig verstanden habe, kann ich in meinem Fall mit dem Wort "startMD" den Dialog starten...?


defmod myMsgConfig msgConfig
attr myMsgConfig userattr msgDialog_evalSpecials:textField-long msgDialog_msgCommand:textField
attr myMsgConfig DbLogExclude .*
attr myMsgConfig comment FHEM Global Configuration for command 'msg'
attr myMsgConfig group Global
attr myMsgConfig msgContactPush TelegramBot
attr myMsgConfig msgDialog_evalSpecials me=startMD
attr myMsgConfig msgType text
attr myMsgConfig room SYSTEM->Fhem
attr myMsgConfig stateFormat fhemMsgState
attr myMsgConfig verbose 2


Aber wie geht's dann weiter? Ich definiere einen einfachen Dialog. Und jetzt?


defmod TelegramMainMsgDialog msgDialog {\
  "%me%": {\
    "match": "test",\
    "message": [\
      "Das ist ein Test"\
    ]\
  }\
}
attr TelegramMainMsgDialog DbLogExclude .*
attr TelegramMainMsgDialog group Telegram


Mir fehlt leider irgendwie der rote Faden. Ich hoffe, du verstehst mein Problem und kannst mir helfen. ;)

VG, Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

igami

Ich schreibe mir die Überarbeitung der Commandref auf meine Liste.

Zitat von: ToM_ToM am 07 Januar 2018, 16:35:56
Was ist mit ROOMMATE oder GUEST? Brauche ich das zwingend um das Modul nutzen zu können oder nur wenn ich später irgendwelche Berechtigungen steuern möchte?
Ja, wird zwingend benötigt

Zitat von: ToM_ToM am 07 Januar 2018, 16:35:56
Ich habe jetzt meine msgConfig angepasst und wenn ich es richtig verstanden habe, kann ich in meinem Fall mit dem Wort "startMD" den Dialog starten...?


defmod myMsgConfig msgConfig
attr myMsgConfig userattr msgDialog_evalSpecials:textField-long msgDialog_msgCommand:textField
attr myMsgConfig DbLogExclude .*
attr myMsgConfig comment FHEM Global Configuration for command 'msg'
attr myMsgConfig group Global
attr myMsgConfig msgContactPush TelegramBot
attr myMsgConfig msgDialog_evalSpecials me=startMD
attr myMsgConfig msgType text
attr myMsgConfig room SYSTEM->Fhem
attr myMsgConfig stateFormat fhemMsgState
attr myMsgConfig verbose 2


Aber wie geht's dann weiter? Ich definiere einen einfachen Dialog. Und jetzt?


defmod TelegramMainMsgDialog msgDialog {\
  "%me%": {\
    "match": "test",\
    "message": [\
      "Das ist ein Test"\
    ]\
  }\
}
attr TelegramMainMsgDialog DbLogExclude .*
attr TelegramMainMsgDialog group Telegram

Dein TelegramMainMsgDialog reagiert auf startMD und antwortet dann mit "Das ist ein Test". Aber nur wenn der Nutzer dazu berechtigt ist (Attribut allowed)
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

ToM_ToM

ZitatJa, wird zwingend benötigt

Okay, ich habe das jetzt angelegt.

defmod Thomas ROOMMATE
attr Thomas DbLogExclude .*
attr Thomas alias Status
attr Thomas devStateIcon .*home:user_available:absent .*absent:user_away:home .*gone:user_ext_away:home .*gotosleep:scene_toilet:asleep .*asleep:scene_sleeping:awoken .*awoken:scene_sleeping_alternat:home .*:user_unknown:home
attr Thomas group Thomas
attr Thomas icon people_sensor
attr Thomas rr_realname group
attr Thomas sortby 1
attr Thomas webCmd state


Da das Roommate im msgDialog bei allowed nicht auftaucht, habe ich dort mal auf "everyone" gesetzt.


defmod TelegramMainMsgDialog msgDialog {\
  "%me%": {\
    "match": "test",\
    "message": [\
      "Das ist ein Test"\
    ]\
  }\
}
attr TelegramMainMsgDialog DbLogExclude .*
attr TelegramMainMsgDialog allowed everyone
attr TelegramMainMsgDialog group Telegram


Wenn ich nun den Text "startMD" per Telegram an meinen Bot sende, bekomme ich aber trotzdem keine Antwort.


VG, Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

igami

Im ROOMMATE muss auch noch das Attribut msgContactPush gesetzt werden.
Beispiel:

attr Thomas msgContactPush TelegramBot:@<deineTelegramID>

Danach im Dialog noch "set update allowed" ausführen.
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

ToM_ToM

Vielen Dank!

Jetzt bekomme ich auch eine Nachricht. :) Nun kann ich mich mal durchhangeln und versuchen, ein Inline Menü aufzusetzen. :)

VG, Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

ToM_ToM

Hi igami,

ich habe jetzt die ersten Dialoge gebastelt bekommen.
Nun aber folgendes Problem.

Wenn ich folgenden Code verwende, bekomme ich keine Antwort:


defmod TelegramMsgDialog_Security msgDialog {\
  "Sicherheit": {\
    "message": [\
"(abbrechen)"\
    ]\
  }\
}
attr TelegramMsgDialog_Security DbLogExclude .*
attr TelegramMsgDialog_Security allowed everyone,Thomas
attr TelegramMsgDialog_Security group Telegram


lasse ich aber die Klammern in der message weg, dann kommt wie erwartet "abbrechen" als Nachricht.


defmod TelegramMsgDialog_Security msgDialog {\
  "Sicherheit": {\
    "message": [\
"abbrechen"\
    ]\
  }\
}
attr TelegramMsgDialog_Security DbLogExclude .*
attr TelegramMsgDialog_Security allowed everyone,Thomas
attr TelegramMsgDialog_Security group Telegram
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

igami

Zitat von: Flipper92 am 07 Januar 2018, 18:32:46
Hey,

Ich hab ein Problem.
Seit ca. 2 Tagen funktioniert mein Chat nicht mehr.
Ich weiß nur nicht woran es leigt.

Ich hab schon rausgefunden, das meine User rausgefallen sind. Nach dem neuen einrichten hab ich folgenden log:

2018.01.07 19:15:21 3: msg rr_Dominik: ID=[ZENSIERT].[ZENSIERT].1 TYPE=push ROUTE=TelegramBot RECIPIENT=@[ZENSIERT] STATUS=OK PRIORITY=0 TITLE='' MSG='(Wohnzi # Soll 20.0°C # Ist T: 22.4 H: 48:Heizungwozi)
(Schlaf # Soll 21.0°C # Ist T: 20.2 H: 56:Heizungschlaf)
(Jenni # Soll 20.0°C # Ist T: 19.6 H: 67:Heizungjenni)
(Küche # Soll 18.0°C:Heizungkueche|Bad # Soll 17.0°C:Heizungbad)
(An/Aus:heizunganaus|zurück:%me%)
(Aktualisieren:aktulaisierenheizung)
Aktuell ist die Heizungsautomation: on

Wohnzimmer Ventil: 22 On-Time: 33.848
Schlafzimmer Ventil: 12 On-Time: 100.607
Bad Ventil: 0 On-Time: 2.064
Arbeitszimmer Ventil: 0 On-Time: 87.565
Küche Ventiel: 0 On-Time: 3.470

Paul: 38.1°C 18%'


Eine Nachricht kommt jedoch nicht an.

Edit: Log bereinigt
Was meinst du mit neu einrichten? im TelegramBot utf8-specials auf 1 gesetzt? %me% wird nicht aufgelöst.

Zitat von: ToM_ToM am 07 Januar 2018, 18:56:03
Hi igami,

ich habe jetzt die ersten Dialoge gebastelt bekommen.
Nun aber folgendes Problem.

Wenn ich folgenden Code verwende, bekomme ich keine Antwort:


defmod TelegramMsgDialog_Security msgDialog {\
  "Sicherheit": {\
    "message": [\
"(abbrechen)"\
    ]\
  }\
}
attr TelegramMsgDialog_Security DbLogExclude .*
attr TelegramMsgDialog_Security allowed everyone,Thomas
attr TelegramMsgDialog_Security group Telegram


lasse ich aber die Klammern in der message weg, dann kommt wie erwartet "abbrechen" als Nachricht.


defmod TelegramMsgDialog_Security msgDialog {\
  "Sicherheit": {\
    "message": [\
"abbrechen"\
    ]\
  }\
}
attr TelegramMsgDialog_Security DbLogExclude .*
attr TelegramMsgDialog_Security allowed everyone,Thomas
attr TelegramMsgDialog_Security group Telegram

Man kann keinen Button ohne Nachricht senden ;)
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