Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

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

Vorheriges Thema - Nächstes Thema

Panik

Hallo,

ich benutze auch seit kurzer Zeit den TelegramBot mit FHEM.
Ich sende mit dem Smartphone diese auch im Forum behandelten Alias-Befehle. Funktioniert 1A!

Nun eine Frage, die FHEM nur indirekt betrifft (ich hoffe man verzeiht):
Hat es schon mal jemand geschafft, mit Tasker + Telegram einen Befehl an FHEM zu senden?
Ich kann dazu auch gern per PN angeschrieben werden, wenn es hier nicht passt.

Gruß! Panik
Raspberry3+,  CUL USB V3 mit V 1.66 CUL868, TRXRFX433, HM-MOD-UART, Phoscon-GW

ulli


arthur_dent_2015

Hallo Johannes,
der Telegambot läuft ja soweit ganz gut aber ich finde haufenweise die folgende Fehlemeldung im Log:
TelegramBot_Callback my_fhem_bot: resulted in :NonBlockingGet: returned gethostbyname api.telegram.org failed: from SendIt
Die zu sendende msg geht nicht raus. Was ist da los?
Gruß
Arthur

viegener

Zitat von: arthur_dent_2015 am 22 Januar 2016, 19:53:37
Hallo Johannes,
der Telegambot läuft ja soweit ganz gut aber ich finde haufenweise die folgende Fehlemeldung im Log:
TelegramBot_Callback my_fhem_bot: resulted in :NonBlockingGet: returned gethostbyname api.telegram.org failed: from SendIt
Die zu sendende msg geht nicht raus. Was ist da los?
Gruß
Arthur

Die Meldung besagt, dass der FHEM-Server die IP-Adresse von api.telegram.org nicht auflösen kann. Auf dem Rechner scheint die Internetverbindung nicht korrekt zu funktionieren (Namensauflösung / DNS). Das müsste normalerweise auch alle anderen Dienste betreffen, die von dem Rechner auf das Internet zugreifen.

Wenn das linux ist, was steht in der /etc/resolv.conf

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

viegener

Zitat von: Reinerlein am 22 Januar 2016, 11:14:28
Hallo Johannes,

ich bin seit Gestern auch Benutzer des Moduls. Danke für die hervorragende Arbeit...

Ich hätte jetzt einen zusätzlichen Anwendungsfall:
Als Antwort auf eine Command-Anfrage per Telegram-App ein Bild/Plot erhalten.
Konkret geht es um Plots, die ich auf eine Anfrage hin erhalten möchte.

Damit könnte man dann so Anweisungen versenden wie

ok fhem { plotAsPng('weblink_aussen_Temperatur') }
und würde als Antwort direkt den Plot erhalten.

Das ganze kann/sollte man natürlich/vielleicht um die anderen möglichen Bildtypen erweitern, falls noch andere use cases existieren...

Meinst du das wäre von deiner Seite aus möglich?

Danke schon mal für deine Reaktion...

Grüße
Reiner

Hallo Reiner.
na da bin ich ja froh, denn Dein Sonos-Modul nutze ich schon lange :-)
Dein Fall klingt erstmal exotisch ist aber sicher elegant, wenn man nicht erst eine Datei erzeugen, versenden, lsöchen will.
Ich muss mir das aber trotzdem erstmal anschauen, damit ich das bei mir auch nachbauen kann.
Also bitte noch etwas Geduld...
Gruss,
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

rtv

Zitat von: viegener am 23 Januar 2016, 01:53:59
Dein Fall klingt erstmal exotisch ist aber sicher elegant, wenn man nicht erst eine Datei erzeugen, versenden, löschen will.
Johannes
Hallo Johannes und Reiner,

das ist genau der Anwendungsfall, nach dem ich mich ein paar Seiten vorher erkundigt hatte ;-)
Wäre klasse wenn ihr das hinbekommen würdet!

Hermann

Da ich trotz vielen Stunden ausprobieren nicht mehr weiterkomme, hier meine Bitte um Hilfe.

Ich habe nach Wiki einen Bot angelegt. In fhem steht folgendes:

define teleBot TelegramBot xxxxx:key
attr teleBot defaultPeer @BotnameBot
attr teleBot pollingTimeout 20

Mit diesen Satz in der Wiki komme ich ins schleudern, trotz vielem testen: Der TelegramBot kann erst dann Nachrichten an einen telegram user schicken, wenn dieser zuerst an den telegram bot eine Nachricht gesendet hat.

Versuche ich eine Nachricht zu senden (set teleBot message Dies ist eine Nachricht von FHEM) erscheint in fhem immer: FAILED peer not found :@BotnameBot:

Ich komm nicht weiter.

Hermann

Ralli

Umgekehrt. Du musst von dem, der zukünftig Nachrichten empfangen soll, eine Nachricht an den Bot schicken.
Gruß,
Ralli

Proxmox 8.1 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.6.20240316) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

Reinerlein

Hi rtv,

bislang helfe ich mir mit einer (bzw. zwei) kleinen Prozedur in meiner 99_myUtils.pm:

sub sendPlot($) {
  my ($plotName) = @_;
 
  writeFile('/tmp/plot_'.$plotName.'.png', plotAsPng($plotName));
  fhem('set telegram sendImage /tmp/plot_'.$plotName.'.png '.AttrVal($plotName, 'alias', $plotName));
 
  return undef;
}

sub writeFile($$) {
my ($fileName, $data) = @_;

open IMGFILE, '>'.$fileName;
binmode IMGFILE;
print IMGFILE $data;
close IMGFILE;
}


Für die Funktion "plotAsPng" (kommt aus dem SVG-Modul, und ist damit schon da), brauchst du aber noch eine Library:

sudo apt-get install libimage-librsvg-perl



Dabei bleiben aber Reste im tmp-Ordner übrig, die man irgendwann mal wegräumen könnte/müsste. Da der Plot jeweils nur eine Datei übrigläßt, bleibt das aber im Rahmen...

Grüße
Reiner

arthur_dent_2015

Zitat von: viegener am 23 Januar 2016, 01:30:15
Die Meldung besagt, dass der FHEM-Server die IP-Adresse von api.telegram.org nicht auflösen kann. Auf dem Rechner scheint die Internetverbindung nicht korrekt zu funktionieren (Namensauflösung / DNS). Das müsste normalerweise auch alle anderen Dienste betreffen, die von dem Rechner auf das Internet zugreifen.

Wenn das linux ist, was steht in der /etc/resolv.conf

Gruss,
Johannes

in der resolv.conf ist meine FB eingetragen. Der Raspi hängt per Powerline an der FB. Auf dem Netz scheint es ab und an Aussetzer zu geben. In der Weboberfläche sehe ich dann connection lost, trying to reconnect. Kann das damit zusammen hängen?
Gruß
Arthur

rtv

Zitat von: Reinerlein am 23 Januar 2016, 12:57:15
Hi rtv,
bislang helfe ich mir mit einer (bzw. zwei) kleinen Prozedur in meiner 99_myUtils.pm

Danke Reiner, funktioniert perfekt und ist direkt in die Favoriten gewandert - sehr praktisch!

Das Telegram Modul ermöglicht wirklich einige "smarte" Ideen.
Hab' z.B. gerade noch Anrufe in Abwesenheit hinzugefügt:

define Notify_Anruf_Telegram notify CallMonitor:missed_call.* set telegram msg ☎️ Anruf in Abwesenheit: [CallMonitor:missed_call]


Grüße
Ralf

RitterSport

Hallo,

gibt es eine elegante Lösung um an verschiedene Smartphone über Telegram unterschiedliche Nachrichten zu senden?
Mit WhatsApp (yowsup) kann ich send 49171 usw und dann eben an eine nadere auch noch schicken.


viegener

Zitat von: RitterSport am 23 Januar 2016, 17:50:46
Hallo,

gibt es eine elegante Lösung um an verschiedene Smartphone über Telegram unterschiedliche Nachrichten zu senden?
Mit WhatsApp (yowsup) kann ich send 49171 usw und dann eben an eine nadere auch noch schicken.

Ich bin nicht sicher ob ich das verstehe:

Natürlich kann man unterschiedliche Nachrichten senden  ;) --> Einfach verschiedene Befehle  :D
Man kann auch eine Nachricht an unterschiedliche Empfänger schicken --> Dazu gibt es die Möglichkeit bei message mehrere peers jeweils mit @ am Anfang anzugeben (siehe commandref)
Verschiedene Nachrichten an verschiedene Empfänger geht damit natürlich auch verschiedene Befehle, bei der jeweils andere Empfänger angegebene sind.

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

viegener

So ich habe (bisher nur in github) mal den oben erwähnten Anwendungsfall eingebaut, bei der man das Ergebnis eines Kommandos (z.B. Favoriten) direkt als Bild verschicken kann. Es war etwas aufwändiger, da Telegram sich als etwas störrisch herausgestellt hat.

Das ganze funktioniert mit Favoriten oder auch direkt hinter dem Command Keyword. Generell sollten auch andere Dateiformate (jpg, mp3 und office-Formate funktionieren).

@Reiner,rtv: Ich habe das bisher nur mit plotAsPng getestet. Vielleicht könnt Ihr das auch mal ausprobieren, bevor ich das ins SVN hochlade

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

Reinerlein

Hallo Johannes,

ich werde das heute Abend testen...

Zwischendurch mal eine andere Frage:
Ich versuche gerade eine Telegram-Tonaufnahme auf einem Sonos-Player wiederzugeben. Das klappt nicht auf Anhieb, weil der Player das Format nicht abspielen kann (obwohl Ogg auf der Website als funktionierend deklariert ist).

Nun habe ich mir mal das Format mittels avprobe angeschaut (und wollte es einfach in MP3 konvertieren), erhalte aber folgende Ausgabe:

avprobe version 0.8.6-6:0.8.6-1+rpi1, Copyright (c) 2007-2013 the Libav developers
built on Mar 31 2013 13:58:10 with gcc 4.6.3
[ogg @ 0x1eb6660] Codec not found
/mnt/SonosSpeak/telegram_file_13.ogg: End of file

Ich bekomme avconv einfach nicht dazu, diese Datei zu akzeptieren, und zu konvertieren...
In der Datei sind unter den ersten Bytes die Zeichenfolge "ogg" vorhanden, und weiter hinten wird was von opuslib geschrieben...

Hat jemand schon mal diese Tonaufnahmen weiterverwendet? Weiß jemand wie ich diese korrigeren/konvertieren kann?

Danke schon mal für sachdienliche Hinweise :)

Grüße
Reiner