Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

Begonnen von viegener, 20 Juni 2015, 18:59:41

Vorheriges Thema - Nächstes Thema

viegener

Zitat von: wthiess am 17 Dezember 2016, 22:58:17
Danke für die Antworten. Leider verstehe ich das nicht.
Ich geb's auf. Gebe mich mit den Favoriten zufrieden. Die funktionieren super.

lg
Wolfgang

Deine Entscheidung - ich denke man könnte hier noch helfen - denn notify und mit FHEM Kommandos reagieren auf events (also Änderungen von Readings) ist ja in FHEM nicht gerade ein Sonderfall ;)
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

viegener

Ich habe mir gerade nochmal die Benennung angeschaut und gedacht, das das auch konsistenter geht, bevor ich das ins normale update gebe:

Also Achtung: Umbenennung der bisherigen callback... Readings nach query....

Also heissen jetzt alle Teile (set-Befehl/attribute und auch Readings) im Umfeld der inline keyboard "queries" gleich.
Ich habe gerade dafür eine neue Version in github hochgeladen. Damit diese aktiv wird, muss aber der FHEM-Server einemal durchgestartet werden.

Sorry an alle, die jetzt ihre notifies anpassen müssen

Johannes

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

wthiess

Hallo Johannes!
Zitatich denke man könnte hier noch helfen

#Telegram
define teleBot TelegramBot xxxxxxxxxxxxxxxxxx
attr teleBot cmdFavorites /s
attr teleBot cmdKeyword d
attr teleBot cmdRestrictedPeer xxxxxxxxxxxxxxxxx
attr teleBot defaultPeer xxxxxxxx_xxxxxxxxxxx
attr teleBot favorites [Port5 ein]=set  prxPortB5 on;; [Port5 aus]=set prxPortB5 off;; [Port4 ein]=set  prxPortB4 on;; [Port4 aus]=set prxPortB4 off;; [SVG_FileLog_Temp_Ist_1]=set svgsend on
attr teleBot pollingTimeout 120
attr teleBot room Telegram

define teleBot1 notify queryData:prxPortB4on  set prxPortB4 on
attr teleBot1 room Telegram
define teleBot2 notify queryData:prxPortB4off  set prxPortB4 off
attr teleBot2 room Telegram

Buttonerzeugung:
#set teleBot queryInline (Port4ein:prxPortB4on) (Port4aus:prxPortB4off) Ports ein aus


Ich mach noch einen Versuch! Kannst mir mein Notify ändern?  Ich sehe wie sich das Reading ändert, kann es aber nicht auswerten, weil ich den Sysntax nicht hinbekomme.

lg
Wolfgang
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

viegener

Zitat von: wthiess am 17 Dezember 2016, 23:55:02
Hallo Johannes!
#Telegram
define teleBot TelegramBot xxxxxxxxxxxxxxxxxx
attr teleBot cmdFavorites /s
attr teleBot cmdKeyword d
attr teleBot cmdRestrictedPeer xxxxxxxxxxxxxxxxx
attr teleBot defaultPeer xxxxxxxx_xxxxxxxxxxx
attr teleBot favorites [Port5 ein]=set  prxPortB5 on;; [Port5 aus]=set prxPortB5 off;; [Port4 ein]=set  prxPortB4 on;; [Port4 aus]=set prxPortB4 off;; [SVG_FileLog_Temp_Ist_1]=set svgsend on
attr teleBot pollingTimeout 120
attr teleBot room Telegram

define teleBot1 notify queryData:prxPortB4on  set prxPortB4 on
attr teleBot1 room Telegram
define teleBot2 notify queryData:prxPortB4off  set prxPortB4 off
attr teleBot2 room Telegram

Buttonerzeugung:
#set teleBot queryInline (Port4ein:prxPortB4on) (Port4aus:prxPortB4off) Ports ein aus


Ich mach noch einen Versuch! Kannst mir mein Notify ändern?  Ich sehe wie sich das Reading ändert, kann es aber nicht auswerten, weil ich den Sysntax nicht hinbekomme.

lg
Wolfgang

Wie gesagt ich kann helfen, auch wenn das ganz oben in derCommandref zu notify steht:
Zitat<Suchmuster> ist entweder der Name des auslösenden ("triggernden") Gerätes oder die Kombination aus Gerät und auslösendem Ereignis (Event) Gerätename:Event.

Bei Dir ist es aber nur ein Reading/Event name - Der device fehlt

define teleBot1 notify teleBot:queryData.*prxPortB4on  set prxPortB4 on
attr teleBot1 room Telegram


Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

wthiess

Danke Johannes!  Funktioniert.

Ich habe alle Varianten probiert aber immer einen kleine Fehler im Syntax. Ich habe alles gelesen aber ich verstehe vieles nicht. Ich bin kein Programmierer. Ich bin Elektriker mit EDV-Kenntnissen.

lg
Wolfgang
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

viegener

Zitat von: wthiess am 18 Dezember 2016, 00:27:15
Danke Johannes!  Funktioniert.

Ich habe alle Varianten probiert aber immer einen kleine Fehler im Syntax. Ich habe alles gelesen aber ich verstehe vieles nicht. Ich bin kein Programmierer. Ich bin Elektriker mit EDV-Kenntnissen.

lg
Wolfgang

Ist doch schön, dass es geht.
Das mit dem Programmieren ist kein Thema, trotzdem ist es gut zentrale Konzepte wie events und wie man darauf ein notify definiert zu verstehen. Die Hürde regular expressions / regexp verstehe auch, das erfordert etwas mehr einarbeitung
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Prof. Dr. Peter Henning

#1071
Guten Morgen !

Neue Version ist bei mir aufgespielt, inklusive "callback" -> "query". Vielleicht kannst Du bei Gelegenheit noch (der Konsistenz halber) den Namen des Readings "queryID" in "queryId" ändern.

Ich habe das jetzt mit den Parametern so gelöst:

1.Benutzer tippt im Client auf den Button "Einkauf hinzu"
2.Im FHEM wird über ein notify, das auf queryData triggert, meine Erkennungsroutine aufgerufen
3.Diese stellt fest, dass etwas hinzugefügt werden soll sendet an den Client eine msgForceReply "Eingabe hinzuzufügender Posten"
4.Im TelegramBot wird ein Userreading gesetzt auf "add Einkaufsliste"
5. Client sendet die Antwort des Users nach Eingabe an FHEM. Dasselbe notify triggert AUCH auf msgReplyMsgId und ruft erneut die Erkennungsroutine
6. Erkennungsroutine weiß aus dem userReading, was sie zu tun hat und führt aus "set Task set PostIt add Einkaufsliste Gegenstand".

Bilder dazu gibt es hier: https://wiki.fhem.de/wiki/Modul_PostMe#Noch_komfortabler_verwalten_mit_Inline-Keyboards

Ich sage mal: Sehr hoher WAF.

LG

pah

viegener

@pah: Ich sage mal reife Leistung - und sehr schön dokumentiert - Danke!
Die Einkaufsliste aus Chorizo und Kalbsgulasch erscheint mir aber nicht vollständig  ;)
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

wthiess

Hallo!

Ich habe bitte wieder eine Frage! Kann man die Antwort abschalten?
Ich sende einen Behehl. Dann kommen die Button's und eine Meldung:

lg
Wolfgang
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

viegener

Ja, das steht ein paar EInträge über diesem. Es gibt das Attribut "textResponseResult". Dieses kann man auf einen Wert setzen, der dann herausgefiltert wird (Also z.B. "\n") - also quasi eine leere Meldung.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

viegener

Achso jetzt kenn ich schon selber die Funktionen nicht mehr:

Es gibt auch ein Attribut "cmdReturnEmptyResult", wenn das auf 0 gesetzt wird, kommen diese Meldungen nur, wenn das Ergebnis eine (Fehler-)meldung ist.

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

boeho

Hallo,
habe ein Problem und brauche Hilfe.
Seit längerer Zeit sendet Telegram aus FHEM - alles ok.
Jetzt sitze ich schon einige Zeit und möchte Befehle an FHEM senden. Bekomme eine forbidden-Meldung.
Hier meine def:

attr telebotdevice allowUnknownContacts 0
attr telebotdevice cmdFavorites /cmd
attr telebotdevice cmdKeyword FHEM
#attr telebotdevice cmdRestrictedPeer 243146746 248832587
attr telebotdevice cmdReturnEmptyResult 0
attr telebotdevice favorites set Jalousie_Modus manuell;;set Jalousie_Modus auto
attr telebotdevice pollingTimeout 20
attr telebotdevice room Telegram
attr telebotdevice defaultPeer @hb15370_ubot


Wenn ich an FHEM /cmd1 sende erhalte ich:

TelegramBot FHEM :
  Befehl:set Jalousie_Modus manuell:
  Ergebnis:
Forbidden command set.


und im LOG steht
2016.12.19 15:27:12 3: TelegramBot_SendIt telebotdevice: Failed with :FAILED peer not found :@hb15370_ubot::
2016.12.19 15:27:12 3: TelegramBot_Callback telebotdevice: resulted in :NonBlockingGet: returned FAILED peer not found :@hb15370_ubot:: from SendIt


Der Bot benutzt doch aber den peer zum Senden und das geht ja.

Lob:Die Doku ist sehr gut und schön ausführlich.
VG boeho

viegener

#1077
@boeho: Kann es sein, dass Du mal das attribute "allowedCommands" verwendet hast?

Diese Meldung kommt, wenn eine Einschränkung per allowedCommands definiert hast - dadurch gibt es ein device allowed_... wobei ... der Name Deines telegrambot devices ist

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

boeho

Hallo viegener,
das war perfekt. Grosses Lob.
Habe dieses device und seine attr gelöscht und alles lief sofort
Danke boeho

viegener

Gern geschehen, und diese Struktur mit den allowedCommands kann etwas überraschend sein und nicht vollständig intuitiv,
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können