Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

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

Vorheriges Thema - Nächstes Thema

FHEM_Starter

Hallo viegener,

ich benutze telegram häufig um über queryInline an Mitglieder einer Gruppe zu schreiben. Dabei werden die Nachrichten solange wiederholt gesendet, bis sie jemand quittiert.

Da das natürlich auch in der Nacht geschehen kann, stellt sich mir die Frage, ob es für Dich möglich ist, das mit einem silent modus zu versehen. Eine generelle Einstellung in Telegram (wie z.B. bei PushOver) zu Quiet Hours habe ich nicht gefunden.

Danke im voraus,
Gruß Wolfgang

ChrisK

Hallo zusammen,

ich habe vor Ewigkeiten mal Favoriten bei mir im TelegramBot eingerichtet und jetzt würde ich gerne die Favoriten um einen ergänzen.
Ich bin mir aber etwas unsicher, ob ein Setzen des Attributes favorites die bestehenden überschreit oder nur ergänzt. Ich habe 8 Favoriten im Menü in Telegram verfügbar, aber das attr favorites zeigt mir nur den ersten Favoriten an. Ich habe hier im Thread auch lange gesucht, aber finde keine Info, wie ich die bisherigen Favoriten auslesen kann.

Komme ich da irgendwie ans Ziel (neuen, zusätzlichen Favoriten) ohne alle bestehenden neu aufsetzen zu müssen?

Vielen Dank schon mal!

wowogiengen

Hallo ChrisK,
bei mir ist es so, dass die Favoriten in einem Attribut hinterlegt sind.
Wenn man dieses Attribut ändert, kann man die angezeigten Favoriten im telegram-Client anpassen.
z.B.:
defmod teleBot TelegramBot
attr teleBot favorites /-[Haustüre Auf]=HaustuereAuf;;\
/-[Rolladen Wohnzimmer Auf]=set RolladenWohnzimmer Auf;;\
/-[Rolladen Wohnzimmer Auf 5]=set RolladenWohnzimmer up 5;;\
/-[Rolladen Wohnzimmer 65]=set RolladenWohnzimmer pct 65;;\
/-[Rolladen Wohnzimmer Runter 5]=set RolladenWohnzimmer down 5;;\
/-[Rolladen Wohnzimmer Zu]=set RolladenWohnzimmer Zu;;\
/-[Rolladen Alle Wohnzimmer Auf]=set RolladenWohnzimmer Auf;;;;set RolladenEssen Auf;;;;set RolladenKueche Auf;;\
/-[Rolladen Alle Wohnzimmer Zu]=set RolladenWohnzimmer Zu;;;;set RolladenEssen Zu;;;;set RolladenKueche Zu;;\
/-[Alle Rolladen Auf]=set AlleRolladen Auf;;\
/-[Alle Rolladen Zu]=set AlleRolladen Zu;;\
/-[Rolladen Buero Auf]=set RolladenBuero Auf;;\
/-[Rolladen Buero Zu]=set RolladenBuero Zu;;\
/-[Rolladen Buero 60]=set RolladenBuero pct 60;;\
/-[Temperatur Bad 22]=set HzgSetBad desired-temp 22;;\
/-[Temperatur Bad 29]=set HzgSetBad desired-temp 29

Vielleicht hilft dir das schon weiter?

Wegen der Anzeige...
Vielleicht musst du nur in das Eingabefeld reinklicken, damit alle Zeilen angezeigt werden?

ChrisK

Danke Dir wowogiengen.

Leider hilft auch das Reinklicken nicht.
Die RawDefinition war ein interessanter Tipp, da ist aber leider auch nur der letzte Favorit drin:

defmod VillaBot TelegramBot
attr VillaBot allowUnknownContacts 0
attr VillaBot cmdReturnEmptyResult 0
attr VillaBot defaultPeer 265935012
attr VillaBot favorites /assistent={telegramRobby("menuData: Hauptmenü")}
attr VillaBot pollingTimeout 120
attr VillaBot room Allgemein

Es sieht für mich eher so aus, dass in dem Attribut der letzte Eintrag steht, der vorgenommen wurde und dass die alten Einträge bei jedem Neusetzen des Attributs bestehen bleiben. Ich traue mich aber nicht das auszuprobieren  :-\

wowogiengen

Vielleicht noch ein Tipp,
wenn man die Favoriten über das attribut ändert, bleiben sie im telegram-Chatbot normalerweise solange auf dem alten Stand, bis man das unter cmdFavorites angegeben Kommando an fhem schickt...
Vielleicht hast du deswegen noch alle Befehle in telegram verfügbar, siehst aber nur das eine im telebot,

Du kannst ja auch deine Konfiguration sichern (Datei oder DB?) und dann die Favoriten mal neu eingeben.
Wenn du das attribut über die Kommandozeile oben eingibst, solltest du darauf achten, bei einem Zeilenwechsel den \ vorher zu machen, also wie bei mir:

teleBot favorites /-[Haustüre Auf]=HaustuereAuf;;\
/-[Rolladen Wohnzimmer Auf]=set RolladenWohnzimmer Auf;;\
/-[Rolladen Wohnzimmer Auf 5]=set RolladenWohnzimmer up 5;;\

Nur darauf achten, dass keine weiteren Zeichen hinter dem \ stehen.


ChrisK

Danke Dir nochmal wowogiengen!

Der Hinweis mit der Konfiguration ist gut. Ich habe in der Datei geschaut, aber durch Deinen Hinweis bin ich ins Grübeln geraten, ob ich nicht zuletzt auf die DB gewechselt bin mit der Konfiguration. Es ist halt mindestens 4-5 Jahre her, wo ich was dran gemacht habe, seitdem lief alles zuverlässig.
Ich muss heute Abend nochmal genauer reingucken. Ich hatte eher das Gefühl, dass die Favoriten gar nicht in der Konfig gespeichert werden und eher nur innerhalb von Telegram, aber wenn ich die Konfig in der DB habe, dann muss ich da mal reingucken.

MadMax

Hallo,

ich habe in einem Docker Image eine Software laufen die bei Bewegung Bilder speichert.
Bisher konnte ich diese auch über diese FHEM-Modul versenden, seit letzten Samstag (Stromausfall) funktioniert das leider nicht mehr.

Das wäre der Pfad.
/var/lib/docker/volumes/f6db69...59d49f/_data/video/XPRCK/2_2024-09-21_15-15-34_582.mp4

Jetzt bekomme ich diese Meldungen.
2024.09.21 17:15:40 3: TelegramBot_SendIt Telegram: Failed with :FAILED file :/var/lib/docker/volumes/f6db69...59d49f/_data/video/XPRCK/2_2024-09-21_15-15-34_582.mp4: not found or empty:
2024.09.21 17:15:40 3: TelegramBot_Callback Telegram: resulted in NonBlockingGet: returned FAILED file :/var/lib/docker/volumes/f6db69...59d49f/_data/video/XPRCK/2_2024-09-21_15-15-34_582.mp4: not found or empty from SendIt

Die rechte sollten Passen, Lesen darf in dem Verzeichnis jeder.

Hat jemand eine Idee?

Danke

Gruß
Max
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

Ruggy

Hallo,

entweder habe ich es falsch verstanden oder/und ich habe einen Fehler gemacht?

Ich habe zwei getrennte FHEM Systeme (z.B. FHEM-A und FHEM-B).

Auf den einen läuft Telegram Bot (MeinFHEMBot_A) ohne Probleme und ich kann Nachrichten mit dem FHEM-A empfangen und auch an mein Smartphone versenden.


Möchte jetzt auch auf dem FHEM-B Telegram Bot nutzen und bin folgdendermaßen vorgegangen:


Am Smartphone dort über den BotFather folgende Eingabeabfolge

/newbot
MeinFHEMBot_B (=BotName)
MeinFHEMBot_B_User (=Username)


Am FHEM-B folgende Befehle

define teleBot TelegramBot 7633149349:AAG1KzR_B4rkSc9g4Y7h2IcseE2BeEJIIeQ0 (den vom BotFather erzeugten Token)
attr teleBot pollingTimeout 120


Beim TeleBot wird aber unter Internals bei STATE immer noch Polling angezeigt.


Wenn ich jetzt folgenden Befehl in FHEM eingebe, wird folgender Fehler ausgegeben.

set teleBot message Test
TelegramBot_Set: Command message, without explicit peer requires defaultPeer being set

Dies ist das List von TeleBot (habe die Daten etwas verändert, weil ich nicht weiß, ob diese jemand anderes kennen sollte)

Internals:
   CFGFN     
   DEF       
   FAILS      0
   FUUID      66f87d20-f23f-144f-954b-2a555caac34a522f
   NAME       teleBot
   NR         115688
   OLD_POLLING 231
   POLLING    231
   SNAME      teleBot
   STATE      Polling
   TYPE       TelegramBot
   UPDATER    0
   WAIT       0
   eventCount 6
   me         7633149349:FHEM_B:@FHEM_B_09_24_bot
   offset_id  33404479
   sourceVersion $Id: 50_TelegramBot.pm 24867 2021-08-23 10:23:15Z viegener $
   Contacts:
     1723333029 1723333029:MeinName:
   HU_DO_PARAMS:
     header     agent: TelegramBot/1.0
User-Agent: TelegramBot/1.0
Accept: application/json
Accept-Charset: utf-8
     hideurl    1
     method     GET
     timeout    30
     url       
   HU_UPD_PARAMS:
     FD         516
     NAME       
     addr       https://api.telegram.org:443
     auth       0
     buf       
     code       200
     compress   1
     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 776
     hu_inProgress  TelegramBot_UpdatePoll:2429 TelegramBot_Callback:729 __ANON__:779
     hu_port    443
     hu_portSfx
     isPolling  update
     loglevel   4
     method     GET
     offset     33405439
     path       /bot7633149349:AAR1KzR_B4rgSc9g4Y7hYIcsE2BeEJIIeQ0/getUpdates?offset=33401479&limit=5&timeout=120
     protocol   https
     redirects  0
     timeout    245
     url        https://api.telegram.org/bot7633149349:AAG1KzR_B4rkSc9g4Y7h2IcseE2BeEJIIeQ0/getUpdates?offset=33401479&limit=5&timeout=120
     hash:
     sslargs:
   READINGS:
     2024-09-29 00:06:33   Contacts        1723333029:MeinName
     2024-09-29 03:09:26   PollingErrCount 1
     2024-09-29 03:09:26   PollingLastError NonBlockingGet timed out on read from <hidden> after 245s
     2024-09-29 00:06:39   msgChat         MeinName
     2024-09-29 00:06:39   msgChatId       1723333029
     2024-09-29 00:06:39   msgFileId       
     2024-09-29 00:06:39   msgId           2
     2024-09-29 00:06:39   msgPeer         MeinName
     2024-09-29 00:06:39   msgPeerId       1723333029
     2024-09-29 00:06:39   msgReplyMsgId   
     2024-09-29 00:06:39   msgText         test
     2024-09-29 00:06:39   prevMsgChat     MeinName
     2024-09-29 00:06:39   prevMsgFileId   
     2024-09-29 00:06:39   prevMsgId       1
     2024-09-29 00:06:39   prevMsgPeer     MeinName
     2024-09-29 00:06:39   prevMsgPeerId   1723333029
     2024-09-29 00:06:39   prevMsgReplyMsgId
     2024-09-29 00:06:39   prevMsgText     /start
   helper:
     bm:
       TelegramBot_Attr:
         cnt        2
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        29.09. 00:03:38
         max        0.00056910514831543
         tot        0.000689029693603516
         mAr:
           set
           teleBot
           pollingTimeout
           120
       TelegramBot_Define:
         cnt        1
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        29.09. 00:03:16
         max        3.29336094856262
         tot        3.29336094856262
         mAr:
           HASH(0x1f89b4e0)
           teleBot TelegramBot 7633149349:AAG1KzR_B4rkSc9g4Y7h2IcseE2BeEJIIeQ0
       TelegramBot_Get:
         cnt        11
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        29.09. 13:53:07
         max        0.000175952911376953
         tot        0.00115108489990234
         mAr:
           HASH(0x1f89b4e0)
           teleBot
           ?
       TelegramBot_Set:
         cnt        34
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        29.09. 13:53:07
         max        0.000651836395263672
         tot        0.0102922916412354
         mAr:
           HASH(0x1f89b4e0)
           teleBot
           ?
   inlinechats:
Attributes:
   pollingTimeout 120
   room       Alarm


Was habe ich falsch gemacht?

Vielen Dank
Grüße
Ruggy

MadMax-FHEM

Du musst erst was ZUM fhem Bot B senden...

Dort allow peers (musst du bei Attribute schauen) setzen, damit dann dein Handy-Telegram als peer gespeichert wird.

Danach disablen bzw. Wiki -> security (oder so)

Dann Handy-peer als default setzen...

Oder beim Senden eben einen peer angeben...

Steht aber alles im Wiki...

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)

Ruggy

Hätte ich schon gemacht (bzw. so wie ich es verstanden habe).

Vom Handy in der App Telegramm nach @MeinFHEMBot_B_User_bot (in echt habe ich einen anderen Namen aber dieser endet mit bot) gesucht und dann z.B. Test gesendet.

In FHEM ist nichts angekommen.
Unter Readings und dort under Contacts steht aber mein Name 1723333029:MeinName

Ruggy

Ich meine, dass es jetzt funktoniert.

Habe noch bei Attributes
defaultPeer MeinName
eingetragen und dann konnte ich eine Nachricht senden.

Kann es sein, dass dies der Grund war?
Muss man defaultPeer per Hand eintragen oder sollte das normalerweise automatisch funktionierten?

xray

Hallo zusammen,

ich würde den Telegram Bot gerne für den automatisierten Versand von Fotos einer Webcam verwenden.
Das funktioniert soweit auch (sendImage, sendPhoto), allerdings werden die Fotos automatisch auf 1280x720px verkleinert.
Gibt es eine Möglichkeit diese Beschränkung aufzuheben oder zumindest Full HD zu ermöglichen?
Die Telegram API selbst ermöglicht offenbar ein Maximum von 2560 Pixeln.

Viele Grüße

Marc

M.Piet

Moin,
ich habe einen seltsamen Fehler.
Meine SD-Karte war voll, darum hat FHEM den Dienst teilweise verweigert.
Nun habe ich Logs bereinigt und dann neu gestartet. Alles ist wieder da.
Aber das Telegram-Modul ist verschwunden, obwohl es in der fhem.cfg mit dem Token definiert ist.

define TelegramBot TelegramBot
setuuid TelegramBot ....hier ist der TOKEN...

Bei einem Neustart von FHEM erscheint das in den Logs:
2024.10.23 12:35:21 3: TelegramBot_Define TelegramBot: called
2024.10.23 12:35:21 1: TelegramBot_readToken: Error: No API token in file
2024.10.23 12:35:21 1: TelegramBot TelegramBot: no predefined token found specify token in define: define <name> TelegramBot <APItoken>
2024.10.23 12:35:21 1: define TelegramBot TelegramBot: no predefined token found specify token in define: define <name> TelegramBot <APItoken>

Der Token wird ja beim Anlegen des Telegram-Devices angegeben. Nachträglich kann ich es aber schwer machen.
Wie gehe ich hier am besten vor? Jemand eine Idee?
Danke euch. :)

MadMax-FHEM

setuuid ist NICHT das Token von Telegram!
Das ist ein fhem-internes "Konstrukt" um fhem Devices unabhängig vom Namen eindeutig identifizieren zu können...
(es kommt sicher pro Device in der fhem.cfg vor)

Ich denke das Token steht in der UniqeID Datei...

Aus Versehen gelöscht?
Durch den SD Defekt/Fülle irgendwie "lost"?

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)

M.Piet

Interessant! Danke dir!
OK, ich habe dann ein Backup eingespielt und alles läuft wieder. War dann der einfachere Weg. :)