msgDialog: Instant Messaging als FHEM Interface

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

Vorheriges Thema - Nächstes Thema

igami

Zitat von: Keule_09 am 30 Januar 2018, 12:36:25
Muss für den zurück-Befehl noch was angegeben werden ?
Da lag wohl noch ein Fehler vor (die ; mussten verdoppelt werden). Hier der aktuelle meta Dialog (hat bei mir bis eben auch nicht funktioniert ::))
@binford6000: bitte ins Wiki übernehmen

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


Zitat von: ToM_ToM am 30 Januar 2018, 12:39:56
hast du schon eine Idee für mich zum Thema "Grad-Zeichen im Temperaturdialog"? :)
Ehrlich gesagt habe ich mich noch nicht damit beschäftigt :-[
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

igami

Zitat von: ToM_ToM am 30 Januar 2018, 12:39:56
hast du schon eine Idee für mich zum Thema "Grad-Zeichen im Temperaturdialog"? :)
Habe es grad mit folgendem Dialog getestet und keine Probleme:

defmod test_Dialog msgDialog {\
  "test": {\
    "message": [\
      "(15 °C|20 °C) ",\
      "(abbrechen) ",\
      "Welche Temperatur soll ich einstellen?"\
    ],\
    "Temperatur": {\
      "match": "\\d\\d( °C)?",\
      "message": [\
        "TelegramBot_MTYPE=queryInline (%me%) ",\
        "ich habe $message eingestellt."\
      ] \
    }\
  }\
}

An welcher Stelle tritt das Problem denn genau auf? Am besten mal die gesamte Fehlermeldung posten.
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

ZitatAn welcher Stelle tritt das Problem denn genau auf? Am besten mal die gesamte Fehlermeldung posten.

Hi igami, schau mal in diesem Thread auf Seite 24 ganz oben der erste Post. Dort habe ich alles schon beschrieben.
Die Rückmeldung bekomme ich in Telegram

Unrecognized character \x{b0}

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

binford6000

Zitat@binford6000: bitte ins Wiki übernehmen
Ist geändert. VG Sebastian

RoBra81

Hallo,

Ich habe mal eine Frage: Ich würde gern alle Nachrichten, die der msgDialog nicht versteht an eine andere Auswertung weiterleiten, aber eben nur die. Wenn ich ein notify auf den TelegramBot definierte, werden ja auch die Nachrichten weitergeleitet, die der msgDialog dann behandelt. Gibt es eine Möglichkeit, nicht erkannte Nachrichten inklusive Absender irgendwie an ein anderes Gerät zu senden?

Vielen Dank
Ronny

Gesendet von meinem SM-G935F mit Tapatalk


igami

Funktioniert denn der Test Dialog oder kommt da auch der Fehler?
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

igami

Zitat von: RoBra81 am 31 Januar 2018, 11:08:24
Hallo,

Ich habe mal eine Frage: Ich würde gern alle Nachrichten, die der msgDialog nicht versteht an eine andere Auswertung weiterleiten, aber eben nur die. Wenn ich ein notify auf den TelegramBot definierte, werden ja auch die Nachrichten weitergeleitet, die der msgDialog dann behandelt. Gibt es eine Möglichkeit, nicht erkannte Nachrichten inklusive Absender irgendwie an ein anderes Gerät zu senden?

Vielen Dank
Ronny

Gesendet von meinem SM-G935F mit Tapatalk
So auf die Schnelle fällt mir da nichts ein.
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

#367
ZitatFunktioniert denn der Test Dialog oder kommt da auch der Fehler?

Hm... mit dem Testdialog geht's. Da muss ich dann mal herausfinden an welcher Stelle er das Problem mit dem Grad-Zeichen hat.

EDIT: Habe jetzt zumindest endlich mal die Fehlerzeile ausfindig machen können.

"{my $room = ReadingsVal(\"$SELF\", \"$recipient_Room\", \"\");;;; my $temp = $message;;;; $temp =~ s/([\\d]{1,2}\\.[\\d{1}])(°C)?/$1/g;;;; return \"Temperatur im $room auf $temp eingestellt.\";;;; }"

Evtl. liegt das Problem im REGEX... :o

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

Keule_09

Hallo,

hab mal wieder eine Frage   ;)
Ich hab mir einen Dialog für die Beschattung erstellt und würde gerne wenn ich im Dialog die Bedienebene von z.B. Fenster Wohnen geöffnet habe, nach den drücken von Ab gerne auch den Stop Befehl absetzen können.

Hier ein Auszug von meinem Dialog:

"Fenster Wohnen":{\
"message": [\
"(auf|ab) ",\
"(stop|Pos Nacht) ",\
"(20%:050|30%:075|40%:100|50%:127) ",\
"(60%:152|70%:177|80%:203|90%:228) ",\
"(abbrechen:%me%|zurück) ",\
"Hier kannst du den Rolladen Wohnbereich bedienen:"\
],\
"setfensterpos": {\
"match": "[0-2][0-9][0-9]",\
"commands": [\
"{my $wert = '$message';;;; fhem(\"set rolladen_wohnen_fenster value $wert\");;;;}",\
"set $SELF say @$recipient Fenster Wohnen"\
]\
},\
"auf":{\
"commands": [\
"set rolladen_wohnen_fenster Auf",\
"set $SELF say @$recipient Fenster Wohnen"\
]\
},\
"ab":{\
"commands": [\
"set rolladen_wohnen_fenster Ab",\
"set $SELF say @$recipient Fenster Wohnen"\
]\
},\
"stop":{\
"commands": [\
"set rolladen_wohnen_fenster Stop",\
"set $SELF say @$recipient Fenster Wohnen"\
]\
},\
"Pos Nacht":{\
"commands": [\
"set rolladen_wohnen_fenster Nacht",\
"set $SELF say @$recipient Fenster Wohnen"\
]\
}\
},\


wie muss ich den set Befehl set $SELF say @$recipient Fenster Wohnen umbauen das es funktioniert ?

Vielen Dank im vorraus.

igami

Zitat von: Keule_09 am 06 Februar 2018, 21:05:30
wie muss ich den set Befehl set $SELF say @$recipient Fenster Wohnen umbauen das es funktioniert ?
Was kommt denn noch vor "Fenster Wohnen"? Du hast ja nicht den ganzen Dialog gepostet ;)
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 07 Februar 2018, 05:15:34
Was kommt denn noch vor "Fenster Wohnen"? Du hast ja nicht den ganzen Dialog gepostet ;)
Danke hab den Fehler gefunden.Dachte ich muss nur die aktuelle Ebene angeben und nicht die ganzen Ebenen darüber.
Jetzt funktioniert es:

"set $SELF say @$recipient 2.Beschattung|Wohnbereich|Fenster Wohnen"

ErzGabriel

Hi.
Gibt es schon ne Lösung für die Heizungssteuerung?
Habe versucht den Code von ToM_ToM zu verwenden aber der wirft mir Fehler aus.
Der Code von Igame funktioniert aber ich weiß nicht, wie ich da meine Device einfügen kann.


igami

Ich habe keinen Dialog für eine Heizung und werde auch keinen bauen, da ich ihn nicht brauche ;)
Ich helfe aber gerne bei der Verbesserung wenn es irgendwo hakt.

Momentan bastel ich an einem Dialog für Beleuchtung, da bin ich aber noch lange nicht "Marktreif"
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

Du hattest hier für Tom_ToM einen Testdialog gepostet, mit zwei Temperaturen.
Der würde mir schon reichen, wenn ich wüsste, wo ich die Heizung hinzufügen muss, weil ich brauche im Endeffekt nur Heizung an oder aus und das kann man mit zwei Temperaturen machen.

ErzGabriel

So, mal ganz von vorne und in ruhe, dann kriege ich das mit Eurer Hilfe schon hin.
Ich habe mir jetzt einen Heizungs Dialog gebastelt auf der Basis von ToM_ToM seinem Dialog.
Klappt auch soweit, das ich ihn angezeigt bekomme und die Nutzung klappt teilweise.
{
"Raumtemperaturen": {
"match": "Raumtemperaturen",
"message": [
"(Arbeitszimmer|Küche) (Schlafzimmer|Wohnzimmer) ",
"TelegramBot_MTYPE=queryInline (%me%) ",
"{return telegramBotGetRoomTemperatureListMessage() }"
],
"Raum": {
"match": "(Arbeitszimmer|Küche|Schlafzimmer|Wohnzimmer)",
"commands": "setreading $SELF $recipient_Room $message",
"message": [
"(5.0°C|10.0°C|16.0°C|17.0°C) ",
"(17.5°C|18.0°C|18.5°C|19.0°C) ",
"(19.5°C|20.0°C|20.5°C|21.0°C) ",
"(21.5°C|22.0°C|22.5°C|23.0°C) ",
"(abbrechen) ",
"Heizung im $message einstellen"
],
"Temperatur": {
"match": "on|off|[0-2][0-9][:.]([0]|[5])",
"commands": [
"{my $temp = $message;;;; $temp =~ s/([\\d]{1,2}\\.[\\d{1}])/$1/g;;;; my $room = ReadingsVal(\"$SELF\", \"$recipient_Room\", \"\");;;; my $clima = ($room==\"Arbeitszimmer\"?\"HZ_BUERO\": ($room==\"Küche\"?\"HZ_KUECHE\":($room==\"Schlafzimmer\"?\"HZ_BED\":($room==\"Wohnzimmer\"?\"HZ_WOHNZ\":\"\"))));;;; fhem (\"set $clima desired-temp $temp\") }"
],
"message": [
"TelegramBot_MTYPE=queryInline (%me%) ",
"{my $room = ReadingsVal(\"$SELF\", \"$recipient_Room\", \"\");;;; return \"Temperatur im $room auf $message eingestellt.\";;;; }"
]
}
}
  }
}

Wähle ich einen Raum aus, wird der Raum gewählt und ich kann eine Temperatur wählen aber erhalte zeitgleich eine Fehlermeldung.
Undefined subroutine &main;;telegramBotGetRoomTemperateListMessage called at (eval 1532) line 1

Habe gestern ein Update in Fhem gemacht, sollte also alles auf dem neusten Stand sein.