Autor Thema: TelegramBot: Temperaturlisten in mehreren Räumen  (Gelesen 383 mal)

Offline FHEm2005

  • Sr. Member
  • ****
  • Beiträge: 588
    • Squeezebox mit RFID-Karten steuern
TelegramBot: Temperaturlisten in mehreren Räumen
« am: 22 Mai 2018, 12:07:08 »
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ählenDas 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
« Letzte Änderung: 22 Mai 2018, 12:09:01 von FHEm2005 »
FHEM auf RaspPi 3 mit CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge und Tradfri-Bridge

Online binford6000

  • Full Member
  • ***
  • Beiträge: 466
  • 🏠⚙️🛠📱
Antw:TelegramBot: Temperaturlisten in mehreren Räumen
« Antwort #1 am: 22 Mai 2018, 13:16:49 »
Zitat
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?
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

FHEM 5.8 auf RPi3, IOserver für alle CULs mit ser2net, Testumgebung: docker pull fhem/fhem
Homematic, EnOcean, IT, HUE + Nanoleaf Aurora,  SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking

Offline FHEm2005

  • Sr. Member
  • ****
  • Beiträge: 588
    • Squeezebox mit RFID-Karten steuern
Antw:TelegramBot: Temperaturlisten in mehreren Räumen
« Antwort #2 am: 22 Mai 2018, 14:08:47 »
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
FHEM auf RaspPi 3 mit CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge und Tradfri-Bridge

Online binford6000

  • Full Member
  • ***
  • Beiträge: 466
  • 🏠⚙️🛠📱
Antw:TelegramBot: Temperaturlisten in mehreren Räumen
« Antwort #3 am: 23 Mai 2018, 13:14:10 »
Zitat
2018-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.

Zitat
wieder 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

FHEM 5.8 auf RPi3, IOserver für alle CULs mit ser2net, Testumgebung: docker pull fhem/fhem
Homematic, EnOcean, IT, HUE + Nanoleaf Aurora,  SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking

Offline FHEm2005

  • Sr. Member
  • ****
  • Beiträge: 588
    • Squeezebox mit RFID-Karten steuern
Antw:TelegramBot: Temperaturlisten in mehreren Räumen
« Antwort #4 am: 23 Mai 2018, 19:34:21 »
Hallo Sebastian,

das ist genau der Punkt den ich x-mal gelesen habe.
Zitat:
Zitat
Fü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:
Zitat
Anschließ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.

« Letzte Änderung: 24 Mai 2018, 08:39:07 von FHEm2005 »
FHEM auf RaspPi 3 mit CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge und Tradfri-Bridge

Online binford6000

  • Full Member
  • ***
  • Beiträge: 466
  • 🏠⚙️🛠📱
Antw:TelegramBot: Temperaturlisten in mehreren Räumen
« Antwort #5 am: 24 Mai 2018, 20:46:51 »
Hallo Eberhard,
Zitat
Ist es also richtig, dass ich für jeden User ein device ROOMMATE oder GUEST definieren muss?
Ja.
Zitat
Braucht dieses Device besondere Merkmale?
Ein gesetztes msgContactPush Attribut.
Zitat
Gibt es eine Musterdefinition?
Nein.
Zitat
Im 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...  ;)

Zitat
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.

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

FHEM 5.8 auf RPi3, IOserver für alle CULs mit ser2net, Testumgebung: docker pull fhem/fhem
Homematic, EnOcean, IT, HUE + Nanoleaf Aurora,  SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking