Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

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

Vorheriges Thema - Nächstes Thema

viegener

@Floriky: Kannst Du Deinen use case beschreiben?

Ich frage deshalb, weil die Frage nach Formaten und Übergaben und Captions/Bildbeschreibungen noch offen ist und mir auch nicht klar ist, warum eine Schleife über die Fotos nicht passt?

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

arthur_dent_2015

Moin zusammen,
ich musste vor kurzem mein Raspbian neu aufsetzen, FHEM war nicht betroffen da auf USB Stick ausgelagert. Der Telegrambot sendet weiter fleißig, nimmt aber keine Befehle mehr an und bringt polling errors:
list vom Bot:

Internals:
   CHANGED   
   FAILS      0
   FUUID      5c4332fc-f33f-371b-692a-77082445ef7c1a10
   FVERSION   50_TelegramBot.pm:?-s19451/2019-05-23
   NAME       my_fhem_bot
   NR         305
   OLDFAILS   317
   OLD_POLLING 63
   POLLING    0
   SNAME      my_fhem_bot
   STATE      Polling
   TYPE       TelegramBot
   UPDATER    0
   WAIT       0
   me         123456789:zweiundvierzig:@my_42_bot
   sentLastResult SUCCESS
   sentMsgId  50723
   sentMsgOptions
   sentMsgPeer
   sentMsgPeerId 987654321
   sentMsgText EP_Btn1 on
   Contacts:
   HU_DO_PARAMS:
     NAME       
     addr       https://api.telegram.org:443
     auth       0
     boundary   TelegramBot_boundary-x0123
     buf       
     code       200
     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.16.0
Date: Thu, 01 Aug 2019 15:04:38 GMT
Content-Type: application/json
Content-Length: 278
Connection: close
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Expose-Headers: Content-Length,Content-Type,Date,Server,Connection
     loglevel   4
     method     POST
     path       /bot123456789:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/sendMessage
     protocol   https
     redirects  0
     timeout    30
     url        https://api.telegram.org/bot123456789:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/sendMessage
     args:
       987654321
       EP_Btn1 on
       undef
       0
       undef
       
       1
     hash:
     sslargs:
   HU_UPD_PARAMS:
     NAME       
     addr       https://api.telegram.org:443
     auth       0
     buf       
     code       409
     compress   1
     conn       
     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
     httpheader HTTP/1.1 409 Conflict
Server: nginx/1.16.0
Date: Thu, 01 Aug 2019 17:20:47 GMT
Content-Type: application/json
Content-Length: 143
Connection: close
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Content-Length,Content-Type,Date,Server,Connection
     hu_blocking 0
     hu_filecount 4
     hu_port    443
     hu_portSfx
     isPolling  update
     loglevel   4
     method     GET
     offset     0
     path       /bot123456789:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/getUpdates?offset=0&limit=5&timeout=20
     protocol   https
     redirects  0
     timeout    45
     url        https://api.telegram.org/bot123456789:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/getUpdates?offset=0&limit=5&timeout=20
     hash:
     sslargs:
   Helper:
     DBLOG:
       state:
         fhemlogDB:
           TIME       1564679053.47506
           VALUE      reset
   READINGS:
     2019-08-01 19:20:47   PollingErrCount 353
     2019-08-01 19:20:47   PollingLastError Callback returned error :Conflict: terminated by other getUpdates request; make sure that only one bot instance is running:
     2019-08-01 17:04:39   sentMsgId       50723
     2019-08-01 17:04:39   sentMsgPeerId   987654321
     2019-08-01 17:04:39   sentMsgResult   SUCCESS
   inlinechats:
Attributes:
   allowUnknownContacts 0
   cmdKeyword machet
   defaultPeer 987654321
   event-on-change-reading 1
   pollingTimeout 20
   room       Telegram
   verbose    5

Log Auszug verbose 5:

2019.08.01 19:01:02 5: TelegramBot_UpdatePoll my_fhem_bot: called
2019.08.01 19:01:02 5: TelegramBot_UpdatePoll my_fhem_bot: - Initiate non blocking polling - With callback set
2019.08.01 19:01:02 5: TelegramBot_readToken: Read Telegram API token from file
2019.08.01 19:01:02 4: TelegramBot_UpdatePoll my_fhem_bot: initiate polling with nonblockingGet with 20s
2019.08.01 19:01:02 5: TelegramBot_UpdatePoll my_fhem_bot: - Ende > next polling started
2019.08.01 19:01:05 5: TelegramBot_Callback my_fhem_bot: called from Polling
2019.08.01 19:01:05 5: TelegramBot_Callback my_fhem_bot: data returned :{"ok":false,"error_code":409,"description":"Conflict: terminated by other getUpdates request; make sure that only one bot instance is running"}:
2019.08.01 19:01:05 5: TelegramBot_Deepencode my_fhem_bot: encoded a String from :0: to :0:
2019.08.01 19:01:05 5: TelegramBot_Deepencode my_fhem_bot: encoded a String from :Conflict: terminated by other getUpdates request; make sure that only one bot instance is running: to :Conflict: terminated by other getUpdates request; make sure that only one bot instance is running:
2019.08.01 19:01:05 5: TelegramBot_Deepencode my_fhem_bot: encoded a String from :409: to :409:
2019.08.01 19:01:05 5: TelegramBot_Deepencode my_fhem_bot: found a HASH
2019.08.01 19:01:05 5: TelegramBot_Callback my_fhem_bot: after encoding
2019.08.01 19:01:05 5: TelegramBot_Callback my_fhem_bot: polling returned result? <undef>
2019.08.01 19:01:05 5: TelegramBot_UpdatePoll my_fhem_bot: called
2019.08.01 19:01:05 5: TelegramBot_UpdatePoll my_fhem_bot: got fails :313: wait 315 seconds
2019.08.01 19:01:05 4: TelegramBot_Callback my_fhem_bot: resulted in Callback returned error :Conflict: terminated by other getUpdates request; make sure that only one bot instance is running: from Polling
2019.08.01 19:01:05 5: TelegramBot_Callback my_fhem_bot: - Ende > Control back to FHEM

Wo kommt die zweite Instanz her?
Ich hab noch eine zweite FHEM Installation die mit einem anderen TelegramBot kommuniziert. Der kann ja wohl nicht gemeint sein, oder?
Ich hab keine Idee mehr :(
Gruß
Arthur

MadMax-FHEM

list TYPE=TelegramBot

Und dann mal in der cfg schauen wo der definiert ist...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

arthur_dent_2015

da taucht auch nur der schon oben gelistete auf. Auch configdb search %telegram% findet nur die eine Definition.
Noch andere Ideen?

viegener

Zitat von: arthur_dent_2015 am 01 August 2019, 19:33:31
Wo kommt die zweite Instanz her?
Ich hab noch eine zweite FHEM Installation die mit einem anderen TelegramBot kommuniziert. Der kann ja wohl nicht gemeint sein, oder?
Ich hab keine Idee mehr :(
Gruß
Arthur

Ich kann Dir auch nicht sagen, wo der zweite Bot herkommt denn das kann ja irgendwo sein und muss nicht unbedingt innerhalb derselben FHEM-Instanz sein.

Der einfachste Weg den Spuk das erstmal weiterzubringen wäre doch im botfather erstmal ein neues API-Token anzufordern und dann im device zu setzen. Dann sollte eigentlich der Spuk erstmal vorbeisein.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

arthur_dent_2015

das war ne gute Idee! :) jetzt funzt es wieder. Danke!

Gruß
Arthur

Mohrengemuse

Hallo @viegener und alle anderen.

Ich baue gerade einen Telegram Bot, dessen einzige Aufgabe es ist, den Standort eines GPS Trackers zurückzuschicken. Das klappt auch soweit sehr gut.

Nun habe ich in der Telegram Bot API (https://core.telegram.org/bots/api/#sendlocation) die Möglichkeit gefunden, den Standort zu einem Live Standort zu machen. Ist diese Implementation auch in Fhem möglich? Für meinen Use Case wäre sie sehr sinnvoll. Falls das Feature schon mal angefragt wurde, sorry, aber über die Suche habe ich nichts gefunden.

Gruß Mohrengemuse

viegener

@Mohrengemuse: Bisher ist es nur möglich locations als einzelne messages zu senden / ein regelmässiges update mit livelocations ist bisher nicht mögich
Bisher hatte ich angenommen FHEM-Installationen als relativ ortsstabil angenommen  ;)
Ich verstehe aber Deinen use case, trotzdem kann ich da momentan nichts zusagen, also bleibt momentan nur der Zugang über sendLocation in FHEM


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

Mohrengemuse

@viegener

Danke, sendLocation benutze ich schon. Wäre nur interessant gewesen, da es ja theoretisch funktionieren müsste.

speedy90

Hallo liebe Gemeinde,

ich hoffe auf eure Hilfe.

Hintergrund: Mein Bot ist gemeinsam mit meiner Frau in unserer Smart-Home-Telegramgruppe, dass ich Befehle und Nachrichten bündeln kann.

Wenn ich meinem Bot in dieser Gruppe einen Favoriten schicke, z.B. ,,/b1" funktioniert der Befehl dahinter super. (Das ist per Hand eingegeben.)

Wenn ich allerdings über das Favoritenmenü den Befehl anklicke, generiert Telegram daraus ,,/b1@Botname". Damit funktionieren die Befehle nicht mehr.

Jetzt die Fragen:
-Ist das ein Bug? Könnt ihr in fixen?
-Ist meine Erwartung falsch?  Habt ihr eine einfache andere Idee?
-Könnte bei mir was falsch konfiguriert sein? Wenn ja, was könnte es sein?

Vielleicht könnt ihr mir helfen. Das wäre super.



Maista

Moin Speedy90

Wie immer will die FHEM-GEMEINDE mehr Infos zu deinem Problem wie z.B.
das define von deinem Bot.
Bei vielen ist es sonst in der Glaskugel ziemlich dunkel  >:(

Gruss Gerd @ Kreta

speedy90

Ersteinmal danke für die schnelle Antwort.
Hier das Define:
define teleBot TelegramBot
attr teleBot cmdFavorites /b
attr teleBot cmdRespondChat 0
attr teleBot cmdRestrictedPeer xxxxxxxxx xxxxxxxxx -xxxxxxxxx -xxxxxxxxx
attr teleBot cmdReturnEmptyResult 0
attr teleBot defaultPeer xxxxxxxxx
attr teleBot favorites /[Scheune 5 min]= set A_38_A on-for-timer 300;;/[Drucker]=set A_49_A on-for-timer 3600;;/[Tor]=set Mosquito publish /Garage/todo/ T05003;;/[Alles ausschalten]={ALLES_AUS}
attr teleBot pollingTimeout 120
attr teleBot room 998_Telegram

Sagt Bescheid, wenn ihr mehr Infos braucht. Danke

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

speedy90

Ja, wie gesagt. Botnachrichten an sich gehen.

Bps: ich sende
"\b1" --> Befehl wird ausgeführt
"\b1@Botname" --> Befehl wird nicht ausgeführt --> Das ist mein Problem

amenomade

Ja, ich war nur nicht sicher

Ich habe kurz im Code geschaut, und es scheint nicht vorgesehen zu sein, die BotId rauszuwerfen. Aber kannst Du trotzdem verbose 5 setzen, und einen Logauzug posten? (Nur das Teil, nachdem Du auf einem Favorit gedrückt hast. ggf anonymisieren)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus