TelegramBot: Temperaturlisten in mehreren Räumen

Begonnen von FHEm2005, 22 Mai 2018, 12:07:08

Vorheriges Thema - Nächstes Thema

FHEm2005

Mittels Kurzbefehlen (wz li, wz hz) rufe ich in TelegramBot(TB) Auswahllisten auf, die über notify eine bestimmte Aktionen auslösen.

Beispiel Heizung im WZ (Kurzbefehl: wz hz):

Definition des Notify:
define not_VLGruppe141 notify TelegramBot.msgText:.(w|W)(z|Z).?(H|h)(Z|z) set TelegramBot message (17|17.5|18|18.5|19|19.5) (20|20.5|21|21.5|22|22.5) (Aktuelle Temperatur im Wohnzimmer: {(ReadingsVal("Th_Wz_Ez_Climate","measured-temp",""))} Grad) Bitte neue Solltemperatur auswählen
Das Ganze sieht dann wie im angehängten Bild sichtbar aus.
Nach Klicken auf die gewünschte Temperatur wird der neue Wert (z.B.) "21.5" als Nachricht abgesandt und kann weiterverarbeitet werden.

Da ich aber (glücklicherweise) mehrere Räume habe, kann die Nachricht nicht sauber identifiziert werden. Eine zusätzliche Angabe wie "WZ 21.5" ist in der Liste nicht gewünscht.

Frage: Wie kann ich aus einer Nachricht "21.5" automatisch ein Raumkürzel (Wz,Ez,Sz ... usw) hinzufügen, sodass "Wz 21.5" bei fhem ankommt?

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

binford6000

ZitatFrage: Wie kann ich aus einer Nachricht "21.5" automatisch ein Raumkürzel (Wz,Ez,Sz ... usw) hinzufügen, sodass "Wz 21.5" bei fhem ankommt?
Hallo Eberhard,
das geht nur mit dem Inline Keyboard. Schau doch mal ins Modul msgDialog rein:
WIKI: https://wiki.fhem.de/wiki/MsgDialog
Forum: https://forum.fhem.de/index.php?topic=77297
In einem Dialog sieht das JSON dann etwa so aus:
"(5°C:05.0|10°C:10.0|16°C:16.0) ",\
Der : trennt die Anzeige(links) vom Wert (rechts).
VG Sebastian


FHEm2005

Hallo Sebastian,
wieder ein Modul das ich verstehen muss. ;D
Danke für den Wegweiser. Wenn ich es umgesetzt habe werde ich es hier posten, damit der Thread komplett ist.
Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

binford6000

Zitat2018-05-22 20:04:44 msgConfig msgConfig ERROR RCV VillaLuehl XXXXXXXXX: Missing reference in msgContact attribute of any device
Hallo Eberhard,
die Fehlermeldung ist relativ sprechend. Aus dem WIKI:

Für jeden Dialog kann festgelegt werden welche Person dazu berechtigt ist. Dazu sind Geräte vom Typ ROOMMATE oder GUEST mit definiertem msgContactPush Attribut erforderlich. Es ist darauf zu achten, dass das Reading fhemMsgRcvPush ein Event erzeugt. Siehe auch Attribut "allowed" in msgDialog.

Zitatwieder ein Modul das ich verstehen muss. ;D
Das gilt insbesondere für msgDialog!  ;)
Wenn du dich reingefuchst hast ist es aber eine sehr smarte Art dein fhem von außen zu steuern!  :)

VG Sebastian


FHEm2005

#4
Hallo Sebastian,

das ist genau der Punkt den ich x-mal gelesen habe.
Zitat:
ZitatFür jeden Dialog kann festgelegt werden welche Person dazu berechtigt ist.
Im Wiki steht kann und nicht muss! Also habe ich es auf dem Punkt verschoben, bis ich msgDialog verstanden habe. Ist es also richtig, dass ich für jeden User ein device ROOMMATE oder GUEST definieren muss? Braucht dieses Device besondere Merkmale? Gibt es eine Musterdefinition?

Ich versteh einfach nicht, warum ich für meinen bisherigen Dialog so wenig Aufwand treiben musste und nun mit msgDialog an verschiedenen Ecken noch Baustellen habe. Wenn es ein Schaubild gäbe, in dem das Zusammenspiel der einzelnen Devices und deren Aufgabe erläutert würde wäre vielen Lesern geholfen. Das ist rein konstruktiv gedacht und kein Meckern!

Trotzdem bin ich dankbar, dass es immer noch Orte (Foren) gibt "wo einem geholfen wird".

Zusatzfrage: Offenbar steht hinter %me% der Text, der als Eingangsdialog sowohl in msgConfig als auch in msgDialog steht. Wenn ich nun zwei Dialog Einstiege haben möchte (z.B. 'Hzg'. und 'Li') brauche ich dann zwei msgConfig?? Ich möchte nämlich keine umfangreiche Baumstruktur in meinen Dialogen haben.



Mit Dank
Eberhard

Edit:
Zitat commandRef:
ZitatAnschließend ist eine weitere Konfiguration über die Attribute msgContact* oder msgRecipient* notwendig, die auf entsprechende Gateway Devices verweisen, die an dieser Lokation stehen.
Bei dem Attribut msgContactPush habe ich den Namen des Gateways für TelegramBot eingetragen für msgRecipient* (passend vermutlich: msgRecipientPush) weiß ich nicht welches GatewayDevice eingetrragen werden muss.

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

binford6000

Hallo Eberhard,
ZitatIst es also richtig, dass ich für jeden User ein device ROOMMATE oder GUEST definieren muss?
Ja.
ZitatBraucht dieses Device besondere Merkmale?
Ein gesetztes msgContactPush Attribut.
ZitatGibt es eine Musterdefinition?
Nein.
ZitatIm Wiki steht kann und nicht muss!
Exakt.
Kann = Es gibt mehrere Benutzer (ROOMMATES) die auf unterschiedliche Dialoge zugreifen können. Siehe Attribut allowed von msgDialog.
Muss = msgContactPush muss bei mindestens einem Benutzer (ROOMMATE) gesetzt sein.
Und das steht doch alles genauso im WIKI...  ;)

ZitatZusatzfrage: Offenbar steht hinter %me% der Text, der als Eingangsdialog sowohl in msgConfig als auch in msgDialog steht. Wenn ich nun zwei Dialog Einstiege haben möchte (z.B. 'Hzg'. und 'Li') brauche ich dann zwei msgConfig?? Ich möchte nämlich keine umfangreiche Baumstruktur in meinen Dialogen haben.

Bin mir nicht sicher ob sowas geht. Zum Ordnen der Dialoge mache ich zB. sowas:
{"00.⭐️Favoriten":{
  "message": [
    "{return('(' . join(') (', sort(split('\n', fhem('get TYPE=msgDialog:FILTER=NAME=.*_fav:FILTER=allowed=.*($recipient|everyone).* trigger')))) . ') ')}",
    "(zurück:%me%) ",
    "Ich habe folgende Favoriten:"
  ]
}
}

Hier werden also nur die Dialoge angezeigt, welche mit "_fav" enden. Details dazu siehe im Forum...
VG Sebastian