Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

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

Vorheriges Thema - Nächstes Thema

viegener

Ja, die GIT Hib-Version ist aktueller, ich betrachte die Versionen in github als Beta-Versionen, die neue Funktionen enthalten, die ich erst noch einige Zeit testen will bevor sie in die offizielle SVN-Verteilung kommen. Ich bin da immer wieder auf Testergebnisse und Rückmeldungen wie von Dir angeweisen, um zu überprüfen ob die neueste Version auch stabil läuft.

Über SVN wird doch an deutlich mehr Leute verteilt. Die Keyboards funktionieren zwar sind aber aus meiner Sicht noch nicht fertig (bisher gibt es sie nur bei Favoriten und neuerdings auch bei lastCommands).

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

Maista

Hallo Johannes,

habe noch eine ältere Version (29.10) am laufen. Nicht die Aktuelle vom Git.
Diese Meldung hab ich gerade im Log gesehen:
Zitat
2015.11.04 18:31:10 1: TelegramBot_checkCmdKeyword(cmdFavorites) unauthorized cmd from user :MxxE: (3xxxxxx1)
  Cmd: start
2015.11.04 18:31:25 1: TelegramBot_checkCmdKeyword(cmdKeyword) unauthorized cmd from user :MxxE: (3xxxxxx1)
  Cmd:
2015.11.04 18:31:25 1: TelegramBot_checkCmdKeyword(cmdFavorites) unauthorized cmd from user :MxxE: (3xxxxxx1)
  Cmd: hey
2015.11.04 18:38:09 1: PERL WARNING: Use of uninitialized value $ret in concatenation (.) or string at ./FHEM/50_TelegramBot.pm line 813.


Weis nicht ob die Oberen Meldungen etwas damit zu tun haben?!
Bekannter hat seine ID mitgeteilt. Danach habe ich seine ID eingetragen.
Immer das Theater mit den leeren Variablen ;)

Gruss Gerd

Edit: Neue Version von Git installiert

viegener

Ich korrigiere das und mache es mit dem nächsten Update auch verfügbar, Ist aber wiederum kein problematischer Logeintrag.
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

JoJota

Guten Abend,

ich möchte gerne als Favorit einen Befehl einspeichern, der bei Aufruf ein Reading zurückschickt. Bekomme leider immer nur den Text statt der Variable zurück.

set TelegramBot message Aktuelle Temperatur: ReadingsVal("wetterstation","temperatur","1")

Wo liegt der Fehler?

Danke

Gruß JoJota

viegener

Hallo Jojota,
Der telegrambot selber wertet keine perlausdruecke aus, sondern schickt den text so wie er ist. Fuer die auswertung von perl ausdrücken oder fhem kommandos muss man eines der fhem kommandos bemuehen, die auch perl ausdruecke auswerten.

Ich kann die jetzt keine vollstaendige syntax geben, da ich geschäftlich unterwegs bin, aber wenn Du deinen ausdruck in als notify mit {} umschlossen definierst, dann kannst du den befehl als favoriten mit trigger ... definieren. Dann wird im notify auch der readingsval ausgewertet.

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

JoJota

Hallo Johannes,
danke für die schnelle Antwort.
Habe das ganze jetzt in die 99_myUtils.pm ausgelagert und rufe jetzt einfach unter favorites nur die fertige Funktion auf, die dann die Befehle ausführt und die Nachricht verschickt.
Hat auch den Vorteil, dass alles etwas übersichtlicher wird.

Eine Frage habe ich aber noch: Kann man diese automatische Antwort, die beim Ausführen von einem Befehl zurückgesendet wird irgendwie stumm schalten?
Möchte als Bestätigung gerne meine eigene Nachricht senden und die automatische Antwort stört da ein wenig.  ;)

Danke und schönen Abend,
Johannes

viegener

Zitat von: JoJota am 10 November 2015, 21:55:50
Hallo Johannes,
danke für die schnelle Antwort.
Habe das ganze jetzt in die 99_myUtils.pm ausgelagert und rufe jetzt einfach unter favorites nur die fertige Funktion auf, die dann die Befehle ausführt und die Nachricht verschickt.
Hat auch den Vorteil, dass alles etwas übersichtlicher wird.

Eine Frage habe ich aber noch: Kann man diese automatische Antwort, die beim Ausführen von einem Befehl zurückgesendet wird irgendwie stumm schalten?
Möchte als Bestätigung gerne meine eigene Nachricht senden und die automatische Antwort stört da ein wenig.  ;)

Danke und schönen Abend,
Johannes

Bisher kann man das noch nicht  :D
Macht aber vermutlich sinn so etwas schaltbar zu machen, so dass leere responses nicht gesendet werden muessen. Auch wenn es eher danach klingt, als ob Du auch eine art dialogfukntion brauchst, wo man einen dialog über telegram abwickeln kann. Also auf ein kommando über telegram mit einem selbstdefinierten rückgabetext (reading oder anderes) antworten.

Aber wie gesagt noch bin ich unterwegs und habe nicht mal zugriff auf meinen entwicklungsrechner...



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

Maista

Hallo JoJota-Johannes  :)

Wie wärs wenn du dein 99_myutils.pm als Beispiel hier abrufbar machst?

Danke  ;D

Gruss Gerd

JoJota

Zitat von: Maista am 10 November 2015, 22:30:34
Hallo JoJota-Johannes  :)

Wie wärs wenn du dein 99_myutils.pm als Beispiel hier abrufbar machst?

Danke  ;D

Gruss Gerd

Hallo Gerd,

ist jetzt kein weltbewegendes Stück Code geworden, aber wenn es manchen hilft, gerne:

sub SendWeather()
{
my $weather_condition = ReadingsVal("MeinWetter","condition","1");
my $weather_temp = ReadingsVal("wetterstation","Temperatur","1");
my $weather_hum = ReadingsVal("wetterstation","Luftfeuchtigkeit","1");
fhem("set TelegramBot message Daten der Wetterstation: Draußen ist es $weather_condition bei ".$weather_temp."°C. Die Luftfeuchtigkeit beträgt: ".$weather_hum."%.");
}


Aufgerufen wird die Funktion dann unter favorites über { SendWeather() }

Gruß JoJota-Johannes :D

JoJota

Zitat von: viegener am 10 November 2015, 22:02:11
Bisher kann man das noch nicht  :D
Macht aber vermutlich sinn so etwas schaltbar zu machen, so dass leere responses nicht gesendet werden muessen. Auch wenn es eher danach klingt, als ob Du auch eine art dialogfukntion brauchst, wo man einen dialog über telegram abwickeln kann. Also auf ein kommando über telegram mit einem selbstdefinierten rückgabetext (reading oder anderes) antworten.

Aber wie gesagt noch bin ich unterwegs und habe nicht mal zugriff auf meinen entwicklungsrechner...

So ungefähr habe ich mir das vorgestellt. Lasse mir im Moment beispielsweise über Favoritenbefehle das aktuelle Bild meiner IPCAM schicken, jetzt auch Wetterdaten und möchte das gerne noch mit anderen Geräten erweitern. Da stört die automatische Meldung dann immer etwas. Und wenn man das ganze jetzt noch mit frei definierbaren Befehlen machen könnte, also nicht nur /favorit1 /favorit2 etc. sondern z.B. /camera oder /weather wäre das natürlich perfekt.  ;)

viegener

In der github-Version habe ich das mal eingebaut. Ich habe dazu ein Attribut: cmdReturnEmptyResult eingebaut. Bei Wert 1 (default) wird weiterhin auch ein leeres Result gesendet. Beim Wert 0 wird nach einem Kommando nur dann eine Antwort gesendet, wenn eine Fehlermeldung oder ein anderes Resultat als Ergebnis des Kommandos kommt.

Wie gesagt, momentan ist die Version nur in Github
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Marekh

Bei mir scheitert es schon an der Definition:

define Mein_bot TelegramBot 14540XXXX:AAGQVRx4MAXXXXXXXXXXXXXXXXXXXX

Antwort:

Cannot load module TelegramBot

Hier mein log:

2015.11.12 16:11:48 1: PERL WARNING: Bareword found where operator expected at ./FHEM/50_TelegramBot.pm line 5, near ""en" class"
2015.11.12 16:11:48 1: PERL WARNING: (Missing operator before class?)
2015.11.12 16:11:48 1: PERL WARNING: Bareword found where operator expected at ./FHEM/50_TelegramBot.pm line 13, near "<title>Telegram"
2015.11.12 16:11:48 1: PERL WARNING: (Missing operator before Telegram?)
2015.11.12 16:11:48 1: PERL WARNING: Ambiguous use of -fhem resolved as -&fhem() at ./FHEM/50_TelegramBot.pm line 13.
2015.11.12 16:11:48 1: reload: Error:Modul 50_TelegramBot deactivated:
Unrecognized character \xC2; marked by <-- HERE after gram-fhem <-- HERE near column 80 at ./FHEM/50_TelegramBot.pm line 13.

2015.11.12 16:11:48 0: Unrecognized character \xC2; marked by <-- HERE after gram-fhem <-- HERE near column 80 at ./FHEM/50_TelegramBot.pm line 13.

2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 148) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 149) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 150) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 151) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 152) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 153) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 154) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 155) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 156) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 157) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 158) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 159) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 160) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 161) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 162) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 163) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 164) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 165) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 166) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 167) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 168) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 169) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 170) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 171) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 172) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 173) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 174) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 175) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 176) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 177) line 1.
2015.11.12 16:13:22 1: PERL WARNING: Useless use of string eq in void context at (eval 178) line 1.
2015.11.12 16:13:32 1: PERL WARNING: Argument "100]" isn't numeric in subtraction (-) at ./FHEM/98_SVG.pm line 1224.
2015.11.12 16:13:39 1: PERL WARNING: Useless use of string eq in void context at (eval 190) line 1.
2015.11.12 16:13:40 1: PERL WARNING: Useless use of string eq in void context at (eval 194) line 1.
2015.11.12 16:13:43 1: PERL WARNING: Useless use of string eq in void context at (eval 196) line 1.
2015.11.12 16:13:43 1: PERL WARNING: Useless use of string eq in void context at (eval 197) line 1.
2015.11.12 16:14:00 1: reload: Error:Modul 50_TelegramBot deactivated:
Unrecognized character \xC2; marked by <-- HERE after gram-fhem <-- HERE near column 80 at ./FHEM/50_TelegramBot.pm line 13.

2015.11.12 16:14:00 0: Unrecognized character \xC2; marked by <-- HERE after gram-fhem <-- HERE near column 80 at ./FHEM/50_TelegramBot.pm line 13.

2015.11.12 16:15:19 1: HMLAN_Parse: HMLAN1 new condition ok
2015.11.12 16:17:41 1: reload: Error:Modul 50_TelegramBot deactivated:
Unrecognized character \xC2; marked by <-- HERE after gram-fhem <-- HERE near column 80 at ./FHEM/50_TelegramBot.pm line 13.

2015.11.12 16:17:41 0: Unrecognized character \xC2; marked by <-- HERE after gram-fhem <-- HERE near column 80 at ./FHEM/50_TelegramBot.pm line 13.


Ich benutze die version von Github, die 50_TelegramBot.pm liegt im FHEM Verzeichnis


Danke
Marek


viegener

Zitat von: Marekh am 12 November 2015, 16:31:39
Bei mir scheitert es schon an der Definition:

define Mein_bot TelegramBot 14540XXXX:AAGQVRx4MAXXXXXXXXXXXXXXXXXXXX

Antwort:

Cannot load module TelegramBot

Hier mein log:

2015.11.12 16:11:48 1: PERL WARNING: Bareword found where operator expected at ./FHEM/50_TelegramBot.pm line 5, near ""en" class"
2015.11.12 16:11:48 1: PERL WARNING: (Missing operator before class?)
2015.11.12 16:11:48 1: PERL WARNING: Bareword found where operator expected at ./FHEM/50_TelegramBot.pm line 13, near "<title>Telegram"
2015.11.12 16:11:48 1: PERL WARNING: (Missing operator before Telegram?)

[/quote]

Die log deuten daraufhin, dass die Datei, die Du im fhem-verzeichnis hast nicht die 50_TelegramBot.pm datei ist, sondern ein HTML-File.
Das Modul enthält in Zeile 5 eine Kommentarzeile und der text [code]"<title>Telegram"
kommt nicht vor.

Wenn Du aus Githib herunterlädsts, solltest Du den "raw" button verwenden, sonst speicherst Du vielleicht die github HTML-Seite.

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

Marekh

ZitatWenn Du aus Githib herunterlädsts, solltest Du den "raw" button verwenden, sonst speicherst Du vielleicht die github HTML-Seite.

Danke das wars!
Läuft prima jetzt :-)

Marek

viegener

Zitat von: Marekh am 13 November 2015, 10:52:29
Danke das wars!
Läuft prima jetzt :-)

Marek

Schön, ich habe noch eine Bemerkung dazu in den ersten Post mitaufgenommen.
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können