Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

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

Vorheriges Thema - Nächstes Thema

zelli001

Ja, bin ja auch am suche... werd mich erst mal weiterhin durchlesen...

und ja, ich will ja letztendlich in beide richtungen kommunizieren....

danke erst mal

zelli001

Zitat von: viegener am 09 Februar 2017, 13:58:56
@zelli001: Ich denke Du fängst mit zu komplexen Dingen an. Routinen in myutils oder ähnliches ist eigentlich nicht erforderlich um Nachrichten bei Licht eingeschaltet zu senden.

Generell solltest Du wohl Dich mit dem Konzept der Events (Event Monitor) und notify befassen. Du findest viele Beispiele in diesem Thread (und wohl auch im fhemwiki) wie man auf Änderungen mit notify (oder DOIF reagiert)

Im einfachsten Fall ist das soetwas wie


define LeuchteAn notify Leuchte:on set teleBot message Die Leuchte wurde eingeschaltet


Also den notify hab ich angelegt, der statuswechsel wir auch in meinem event monitor und auch im notify selbst angezeigt.
es wird aber keine message abgesetzt....

gruß

viegener

Zitat von: zelli001 am 09 Februar 2017, 15:31:42
Also den notify hab ich angelegt, der statuswechsel wir auch in meinem event monitor und auch im notify selbst angezeigt.
es wird aber keine message abgesetzt....

gruß


Ahhhrg - Der notify war ein Beispiel ("soetwas wie") und funktioniert natürlich nur, wenn die devices bei Dir entsprechend heissen und entsprechende Events vorkommen. Sorry, aber irgendwie habe ich einen Sprung in der Platte - Doku lesen (speziell Anfängerdoku) / notify anschauen / Event monitor und ausprobieren.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

zelli001

natürlich habe ich das auf meine devices angepasst......

und lesen tu ich auch wie ein blöder.....

ich denke mir fehlt vielleicht irgendwie ein attribut oder so, keine ahnung...

aber niergends ist irgenwie etwas zusammenhängend erklärt... zumindest nicht für anfänger... sorry

zelli001

hätte vielleicht auch mal in den logfile schauen sollen:

2017.02.09 15:20:37 3: WCLichtAn return value: TelegramBot_Set: Command message, without explicit peer requires defaultPeer being set


zelli001

Zitat von: zelli001 am 09 Februar 2017, 15:45:42
hätte vielleicht auch mal in den logfile schauen sollen:

2017.02.09 15:20:37 3: WCLichtAn return value: TelegramBot_Set: Command message, without explicit peer requires defaultPeer being set

gelesen, behoben....funktioniert

linuxq

Hallo,

ich habe den Telegram-Bot am laufen und seit heute einen Amazon Echo Dot. Nun wollte ich per Alexa->IFTTT->Telegram mein FHEM per Sprache steuern. Dazu habe ich in Telegram eine Gruppe erstellt und dieser meinen FHEM-Bot und den IFTTT-Bot hinzugefügt. Dann ein IFTTT-Applet erstellt.

Wenn ich nun den Sprachbefehl per Echo-Dot auslöse, sendet IFTTT auch die richtige Nachricht an die Gruppe. Aber der FHEM-Telegram-Bot reagiert nicht. Wenn ich aus meinem Account in der Gruppe den identischen Befehl sende, funktioniert es. Ich habe auch die User-ID des @IFTTT zu den cmdRestrictedPeer hinzugefügt.


##### Telegram ######
define Telegram TelegramBot meintoken:bhbfhjebrkwewer
attr Telegram allowUnknownContacts 0
attr Telegram cmdFavorites /cmd
attr Telegram cmdKeyword doit
attr Telegram cmdRestrictedPeer USERIDSmartphone UserIDIFTTTBot
attr Telegram defaultPeer USERIDSmartphone
attr Telegram favorites [Radio an]=set sw_WoZiSound on
attr Telegram group Messaging
attr Telegram pollingTimeout 180
attr Telegram room Messaging


Woran liegt das? Geht das mit Bots evtl. nicht? Nur mit echten Usern?

Danke LinuxQ

Ma_Bo

Bot zu Bot funktioniert nicht, das ist von Telegram extra unterbunden, da gibt es auch bisher keine Lösung für.

Ich habe mal den weg probiert, funktioniert mit viel Fleißarbeit auch, hast aber ein delay von 5-30 Sekunden:

Alexa (oder auch andere Sachen die IFTTT triggern) -> IFTTT -> Pushover -> Tasker -> andFHEM Premium -> FHEM

Damit wird irgendwas was bei IFTTT triggert per Pushover an ein Handy gesendet, dann wird diese Nachricht mit Hilfe von Tasker über andFHEM Premium an FHEM weitergeleitet.

Das ganze ging auch noch so, aber nicht ganz so zuverlässig und auch noch nicht ganz zu ende getestet:

Alexa (oder auch andere Sachen die IFTTT triggern) -> IFTTT -> TelegramBotNachricht auf einem Handy empfangen -> Tasker -> AutoNotification -> andFHEM Premium -> FHEM

Damit wird irgendwas was bei IFTTT triggert per TelegramBot an ein Handy gesendet, auf dem Tasker läuft, mit Hilfe von AutoNotification wird dann diese Nachricht über andFHEM Premium an FHEM weitergeleitet.
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

neonet

Hallo @ all,
ich benötige Hilfe bei der Definition des notify bzgl.. "Abfall", denn es wird nicht ausgelöst.

define Schwarze_Tonne_raus notify .* set teleBot msg.*

.* telebot msg.* { if ($EVTPART1 eq 'Abfall') {my $Meldung_Schwarze_Tonne_raus = ReadingsVal("Abfall", "Muelltonnen_Kalender_Restmuell_tage", == 1}
{ fhem("set teleBot send Morgen wird die schwarze Tonne abgeholt.");
}
}

oder alternativ

define Meldung_Schwarze_Tonne_raus at *18:30:00 a

*18:30:00 { if((ReadingsVal("ABFALL", "Muelltonnen_Kalender_Restmuell_text", 99)) == 1)
{ fhem("set teleBot send 'Müll: ' 'Morgen wird die schwarze Tonne abgeholt'")}}

Hier ein Auszug aus der Logfile:

2017.02.14 01:53:30 3: Schwarze_Tonne_raus return value: syntax error at (eval 1277) line 2, near ", =="
Missing right curly or square bracket at (eval 1277) line 3, at end of line
syntax error at (eval 1277) line 3, at EOF

2017.02.14 01:57:05 3: Schwarze_Tonne_raus return value: Unknown command telebot, try help.
2017.02.14 02:07:06 3: Schwarze_Tonne_raus return value: Please define telebot first

Unknown command }
}, try help.


Gruß und vielen Dank und im voraus, für eure Unterstützung.


gloob

Im Screenshot steht telebBot. Ich denke da ist b zuviel.

ansonsten zeig doch mal das Ergebnis von

list teleBot
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

JanHH

Zitat von: linuxq am 12 Februar 2017, 00:43:10
Ich habe den Telegram-Bot am laufen und seit heute einen Amazon Echo Dot. Nun wollte ich per Alexa->IFTTT->Telegram mein FHEM per Sprache steuern. Dazu habe ich in Telegram eine Gruppe erstellt und dieser meinen FHEM-Bot und den IFTTT-Bot hinzugefügt. Dann ein IFTTT-Applet erstellt.

Das geht so nicht, weil Telegram Bots nicht miteinander reden lässt (wahrscheinlich, um sich endlos aufschaukelnde Schleifen zu vermeiden).

Aber lies dir doch im FHEM-Wiki den Artikel https://wiki.fhem.de/wiki/Alexa-Fhem durch. Das sieht zwar zuerst total sperrig aus, aber ich habe den Home Automation-Skill in ca. 3 Stunden am Laufen gehabt, und es klappt wunderbar. Ohne Umwege über IFTTT und Telegram, damit eher zuverlässiger.

neonet

Zitat von: gloob am 14 Februar 2017, 07:10:31
Im Screenshot steht telebBot. Ich denke da ist b zuviel.

Vielen Dank das zusätzliche b, habe ich entfernt


Hier nochmal die Logfile:

2017.02.14 10:42:09 3: Schwarze_Tonne_raus return value: Please define telebBot first
Unknown command }

2017.02.14 11:05:26 3: Schwarze_Tonne_raus return value: TelegramBot_Set: Unknown argument msg.*, choose one of queryEditInline:textField reply:textField send:textField sendVoice:textField msg:textField zDebug:textField queryInline:textField replaceContacts:textField _msg:textField reset msgForceReply:textField msgEdit:textField message:textField sendImage:textField sendPhoto:textField sendDocument:textField sendLocation:textField queryAnswer:textField sendMedia:textField
Unknown command }
}, try help.


ansonsten zeig doch mal das Ergebnis von

list teleBot
Internals:
   DEF        XXX
   FAILS      0
   NAME       teleBot
   NR         35
   OLD_POLLING 41
   POLLING    41
   SNAME      teleBot
   STATE      Polling
   TYPE       TelegramBot
   Token      XXX
   UPDATER    0
   URL        https://api.telegram.org/botXXX
   WAIT       0
   me         XXX
   offset_id  XXX
   sentLastResult SUCCESS
   sentMsgId  295
   sentMsgPeer XXX
   sentMsgPeerId XXX
   sentMsgResult SUCCESS
   sentMsgText Preis: 1.12
   Contacts:
    XXX
   Hu_do_params:
     NAME
     addr       https://api.telegram.org:443
     boundary   TelegramBot_boundary-x0123
     buf
     code       200
     conn
     data
     displayurl <hidden>
     header     agent: TelegramBot/1.0

User-Agent: TelegramBot/1.0

Accept: application/json

Accept-Charset: utf-8

Content-Type: multipart/form-data; boundary=TelegramBot_boundary-x0123
     hideurl    1
     host       api.telegram.org
     httpheader HTTP/1.1 200 OK

Server: nginx/1.10.0

Date: Tue, 14 Feb 2017 10:07:57 GMT

Content-Type: application/json

Content-Length: 229

Connection: close

Access-Control-Allow-Origin: *

Access-Control-Allow-Methods: GET, POST, OPTIONS

Access-Control-Expose-Headers: Content-Length,Content-Type,Date,Server,Connection

Strict-Transport-Security: max-age=31536000; includeSubdomains
     hu_blocking 0
     hu_filecount 26
     hu_portSfx
     loglevel   4
     method     POST
     path       /bot344000656:AAGRH1mmcvXnfz40xpVJI8MlCiX6ccLAHf0/sendMessage
     protocol   https
     redirects  0
     timeout    30
     url        https://api.telegram.org/botXXX/sendMessage
     args:
       XXX
       Preis: 1.12
       undef
       0
       undef
       1
     Hash:
     Sslargs:
   Hu_upd_params:
     FD         16
     NAME
     addr       https://api.telegram.org:443
     buf
     code       200
     displayurl <hidden>
     header     agent: TelegramBot/1.0

User-Agent: TelegramBot/1.0

Accept: application/json

Accept-Charset: utf-8
     hideurl    1
     host       api.telegram.org
     hu_blocking 0
     hu_filecount 1060
     hu_portSfx
     isPolling  update
     loglevel   4
     method     GET
     offset     XXX
     path       /botXXX&limit=5&timeout=120
     protocol   https
     redirects  0
     timeout    245
     url        https://api.telegram.org/botXXXtimeout=120
     Hash:
     Sslargs:
   Helper:
     Dblog:
       Pollingerrcount:
         Dblogging:
           TIME       1487026840.76798
           VALUE      0
       Msg 'aktueller spritpreis' 'diesel:
         Dblogging:
           TIME       1487064699.04014
           VALUE      1.12'
       Msgid:
         Dblogging:
           TIME       1487066876.54784
           VALUE      294
       Msgpeer:
         Dblogging:
           TIME       1487066876.54784
           VALUE      XXX
       Msgpeerid:
         Dblogging:
           TIME       1487066876.54784
           VALUE      XXX
       Msgtext:
         Dblogging:
           TIME       1487066876.54784
           VALUE      Spritpreis
       Sentmsgid:
         Dblogging:
           TIME       1487066877.41813
           VALUE      295
       Sentmsgpeerid:
         Dblogging:
           TIME       1487066877.41813
           VALUE      XXX
       Sentmsgresult:
         Dblogging:
           TIME       1487066877.41813
           VALUE      SUCCESS
       State:
         Dblogging:
           TIME       1487066876.54784
           VALUE      msgFileId:
   Readings:
     2017-02-13 17:49:33   Contacts        XXX:XXX:@XXX
     2017-02-14 00:00:40   PollingErrCount 0
     2017-02-13 13:43:11   PollingLastError NonBlockingGet timed out on read from <hidden> after 245s
     2017-02-07 23:23:01   StoredCommands  FHEM set Testlampe off
FHEM set WZ_Papierlampe off
FHEM set Testlampe on
FHEM status

     2017-02-14 11:07:56   msgChat
     2017-02-14 11:07:56   msgFileId
     2017-02-14 11:07:56   msgId           294
     2017-02-14 11:07:56   msgPeer         XXX
     2017-02-14 11:07:56   msgPeerId       XXX
     2017-02-07 21:04:23   msgReplyMsgId   0
     2017-02-14 11:07:56   msgText         Spritpreis
     2017-02-14 11:07:56   prevMsgChat
     2017-02-14 11:07:56   prevMsgFileId
     2017-02-14 11:07:56   prevMsgId       293
     2017-02-14 11:07:56   prevMsgPeer     XXX
     2017-02-14 11:07:56   prevMsgPeerId   XXX
     2017-02-14 11:07:56   prevMsgReplyMsgId 0
     2017-02-14 11:07:56   prevMsgText     Abfall
     2017-02-14 11:07:57   sentMsgId       295
     2017-02-14 11:07:57   sentMsgPeerId   XXX
     2017-02-14 11:07:57   sentMsgResult   SUCCESS
   sentQueue:
Attributes:
   cmdKeyword FHEM
   defaultPeer XXX
   pollingTimeout 120
   room       Geräte

neonet

Anbei noch ein Screenshot vom Abfall-Modul Mueltonnen

viegener

@neonet: Ein paar Anmerkungen:
- Es wäre gut, wenn Du Codetags (für list und code) verwenden würdest - # button
- Du solltest Deinen perl-code erstmal auf Syntax prüfen - Dazu gehört auch Klammern etc
.* telebot msg.* { if ($EVTPART1 eq 'Abfall') {my $Meldung_Schwarze_Tonne_raus = ReadingsVal("Abfall", "Muelltonnen_Kalender_Restmuell_tage", == 1}
{ fhem("set teleBot send Morgen wird die schwarze Tonne abgeholt.");
}
}

Hinter Restmuell_tage", fehlt ein Ausdruck und eine Klammer zu
- Wenn Du Code postest, dann bitte den vollständigen Define, so ist das abgeschnitten und lässt sich schwer zusammensetzen.
- Wenn ich das richtig zusammensetze ist Dein notify so definiert, dass er auf beliebige Events von beliebigen Devices (.*) reagiert, dass kann ja nicht sinn der sache sein?


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

neonet

@ viegener, Danke für die Infos. Leider kenn ich mich nicht gut aus mit den "perl Codes". Könntest du mir bitte sagen wo genau der Ausdruck und welche Klammer hingehören, und ggf. bei der Definition des Gerät und des Event helfen?

Die vollständigen define's findest du in meinem ersten Post  von heute morgen um 03:46:50.


Vielen Dank im Voraus für eure Unterstützung!

Gruß NEONET