Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

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

Vorheriges Thema - Nächstes Thema

rudolfkoenig

Koennt ihr bitte testen, ob folgende Aenderung:--- FHEM/HttpUtils.pm    (revision 19379)
+++ FHEM/HttpUtils.pm    (working copy)
@@ -618,6 +618,7 @@
     $hash->{directWriteFn} = sub($) { # Nonblocking write
       my $ret = syswrite $hash->{conn}, $data;
       if($ret <= 0) {
+        return if($! == EAGAIN);
         my $err = $!;
         RemoveInternalTimer(\%timerHash);
         HttpUtils_Close($hash);

hilft?
Bin unsicher, weil mAn dieser Fehler nicht auftreten darf: syswrite wird nur einmal aufgerufen, nachdem select OK gegeben hat.
Wenn jemand mich aufklaeren kann....

Frank_Huber

Zitat von: rudolfkoenig am 13 Mai 2019, 21:27:07
Koennt ihr bitte testen, ob folgende Aenderung:--- FHEM/HttpUtils.pm    (revision 19379)
+++ FHEM/HttpUtils.pm    (working copy)
@@ -618,6 +618,7 @@
     $hash->{directWriteFn} = sub($) { # Nonblocking write
       my $ret = syswrite $hash->{conn}, $data;
       if($ret <= 0) {
+        return if($! == EAGAIN);
         my $err = $!;
         RemoveInternalTimer(\%timerHash);
         HttpUtils_Close($hash);

hilft?
Bin unsicher, weil mAn dieser Fehler nicht auftreten darf: syswrite wird nur einmal aufgerufen, nachdem select OK gegeben hat.
Wenn jemand mich aufklaeren kann....
Wie fügt man das ein?
Die changelogs im svn verstehe ich, aber das hier sagt mir nix. [emoji848]

Gesendet von meinem Doogee S60 mit Tapatalk


rudolfkoenig

Das ist die Ausgaben von "svn diff"
Die Zeile mit dem + vorne ohne den Plus an dieser Stelle einfuegen.
Alternativ: mit dem kompletten Text das Programm "patch -p0" fuettern, nach "cd /opt/fhem".


Frank_Huber

Ah. OK. Das krieg ich hin.
Ohne die Farbmarkierungen sieht man das als Laie nicht gleich. [emoji6]
Gib mir 15min....

Gesendet von meinem Doogee S60 mit Tapatalk


Frank_Huber

11 min haben gereicht. :-)

Ein Update gefolgt von der Änderung, FHEM restart und alles schaut wieder gut aus.

Danke Rudi,
Ich hab keinen Schimmer was die Zeile bewirkt, aber sie löst das Problem. :-)

knopf_piano

zotac nano mit proxmox und ganz viel zeug drauf

rudolfkoenig

Danke fuers Feedback, habs eingecheckt, fuer FHEM-update wird es morgen ab 8 zur Verfuegung stehen.

viegener

Zitat von: rudolfkoenig am 14 Mai 2019, 08:18:05
Danke fuers Feedback, habs eingecheckt, fuer FHEM-update wird es morgen ab 8 zur Verfuegung stehen.

Danke, Rudi - wie immer eine superschnelle Reaktion und Lösung !
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

blackbite

Zitat von: viegener am 14 Mai 2019, 08:20:23
Danke, Rudi - wie immer eine superschnelle Reaktion und Lösung !
Mein Feedback bzw. der positive Test kommt leider zu spät. Aber Danke @all für die schnelle Fehlersuche & Lösung.
Blackbite

viegener

Zitat von: viegener am 02 Mai 2019, 21:39:27
Ich habe mal in github eine Testversion eingechecked, bei der man statt Leerzeichen auch \s verwenden kann. Das kannst Du ausprobieren.


Habe die Version mit der man \s für spaces in Nachrichten einsetzen kann jetzt auch im SVN freigegeben. Kommt also ab morgen per update.


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

wowogiengen

Hallo,
ich habe nach längerer Zeit mal wieder den telebot benutzen wollen. Bisher war er immer inaktiv, und hat früher höchstens was gesendet. Jetzt sehe ich, nachdem ich das Log aufgedreht habe dieses hier:


2019.05.24 22:23:00 4: TelegramBot_RestartPolling teleBot: called
2019.05.24 22:23:00 5: TelegramBot_UpdatePoll teleBot: called
2019.05.24 22:23:00 5: TelegramBot_UpdatePoll teleBot: - Initiate non blocking polling - With callback set
2019.05.24 22:23:00 5: TelegramBot_readToken: Read Telegram API token from file
2019.05.24 22:23:00 4: TelegramBot_UpdatePoll teleBot: initiate polling with nonblockingGet with 60s
2019.05.24 22:23:01 5: TelegramBot_UpdatePoll teleBot: - Ende > next polling started
2019.05.24 22:23:01 4: TelegramBot_RestartPolling teleBot: finished
2019.05.24 22:23:01 5: TelegramBot_Callback teleBot: called from Polling
2019.05.24 22:23:01 5: TelegramBot_Callback teleBot: data returned :{"ok":false,"error_code":404,"description":"Not Found"}:
2019.05.24 22:23:01 5: TelegramBot_Deepencode teleBot: encoded a String from :false: to :false:
2019.05.24 22:23:01 5: TelegramBot_Deepencode teleBot: encoded a String from :404: to :404:
2019.05.24 22:23:01 5: TelegramBot_Deepencode teleBot: encoded a String from :Not Found: to :Not Found:
2019.05.24 22:23:01 5: TelegramBot_Deepencode teleBot: found a HASH
2019.05.24 22:23:01 5: TelegramBot_Callback teleBot: after encoding
2019.05.24 22:23:01 5: TelegramBot_Callback teleBot: polling returned result? <undef>
2019.05.24 22:23:01 5: TelegramBot_Set teleBot: called
2019.05.24 22:23:01 5: TelegramBot_Set teleBot: called
2019.05.24 22:23:01 5: TelegramBot_UpdatePoll teleBot: called
2019.05.24 22:23:01 5: TelegramBot_UpdatePoll teleBot: - Initiate non blocking polling - With callback set
2019.05.24 22:23:01 5: TelegramBot_readToken: Read Telegram API token from file
2019.05.24 22:23:01 4: TelegramBot_UpdatePoll teleBot: initiate polling with nonblockingGet with 60s
2019.05.24 22:23:01 5: TelegramBot_UpdatePoll teleBot: - Ende > next polling started
2019.05.24 22:23:01 4: TelegramBot_Callback teleBot: resulted in Callback returned error :Not Found: from Polling
2019.05.24 22:23:01 5: TelegramBot_Callback teleBot: - Ende > Control back to FHEM
2019.05.24 22:23:01 5: TelegramBot_Callback teleBot: called from Polling
2019.05.24 22:23:01 5: TelegramBot_Callback teleBot: data returned :{"ok":false,"error_code":404,"description":"Not Found"}:
2019.05.24 22:23:01 5: TelegramBot_Deepencode teleBot: encoded a String from :false: to :false:
2019.05.24 22:23:01 5: TelegramBot_Deepencode teleBot: encoded a String from :Not Found: to :Not Found:
2019.05.24 22:23:01 5: TelegramBot_Deepencode teleBot: encoded a String from :404: to :404:
2019.05.24 22:23:01 5: TelegramBot_Deepencode teleBot: found a HASH
2019.05.24 22:23:01 5: TelegramBot_Callback teleBot: after encoding
2019.05.24 22:23:01 5: TelegramBot_Callback teleBot: polling returned result? <undef>


wie es aussieht, stimmt da was mit der URL an die telegram API nicht (mehr?)...
Wer kann mir helfen?
Viele Grüße
Wolfgang

viegener

Zitat von: wowogiengen am 24 Mai 2019, 22:51:57
Hallo,
ich habe nach längerer Zeit mal wieder den telebot benutzen wollen. Bisher war er immer inaktiv, und hat früher höchstens was gesendet. Jetzt sehe ich, nachdem ich das Log aufgedreht habe dieses hier:

wie es aussieht, stimmt da was mit der URL an die telegram API nicht (mehr?)...
Wer kann mir helfen?
Viele Grüße
Wolfgang

Aus dem log kann ich leider nicht viel lesen.

Erste Frage - gibt es Deinen Bot überhaupt noch --> suchen in telegram bzw. über den botfather herausfinden.

Zweite Frage - ist das API token noch richtig? Wenn unsicher - neues über botfather erzuegen und per set / token hinterlegen

Wenn das nicht hilft ein paar Fragen / Hinweise:
- Ist dein FHEM einigermassen aktuell?
- Hast Du mal einen Reset auf dem Bot device ausgeführt (set ... reset)
- Einen Neustart gemacht?


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

wowogiengen

Hallo @Viegener,
den Bot gibts noch, ich habe auch das API-Token nochmals geprüft, und auch neu eingegeben gehabt.
FHEM habe ich aus dem Grund, dass telegram nicht mehr ging, auch aktualisiert - aber da gab es bei den Events kaum Meldungen, eigentlich gar keine, und so habe ich das update 2 mal gemacht, auch einmal mit "force".

Neustart von FHEM habe ich auch mehrfach gemacht.
Irgendwie bin ich dann drauf  gekommen, dass bei dem Token auch die Bot-# davorstehen muss, und als ich die dann eingegeben hatte, gings wohl wieder...

viegener

Zitat von: wowogiengen am 25 Mai 2019, 12:42:57
Irgendwie bin ich dann drauf  gekommen, dass bei dem Token auch die Bot-# davorstehen muss, und als ich die dann eingegeben hatte, gings wohl wieder...

Ich verstehe nicht was es heissen soll, dass die Bot-# davorstehen muss?

Also funktioniert alles?


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

Timmi

Hallo zusammen,

ich habe ein Problem mit den Umlauten "äöü" und alles was "ß" beinhaltet !
Das Ziel ist die Adresse meines Standortes auf mein Smartphone zu bekommen.
Solange die Strassen- oder Städtenamen keine Umlaute oder ß beinhalten funktioniert alles einwandfrei, sonst wird nichts mehr gesendet.

Eingebunden sind Owntracks mit mosquitto Broker und Telegram_Bot.

define Telegram TelegramBot
attr Telegram allowUnknownContacts 0
attr Telegram cmdRestrictedPeer 495xxxxx
attr Telegram event-on-change-reading state
attr Telegram event-on-update-reading msgText
attr Telegram pollingTimeout 180
attr Telegram verbose 4


define Tracking livetracking
attr Tracking addressLanguage de
attr Tracking addressReading 1
attr Tracking batteryWarning 5
attr Tracking filterAccuracy 200
attr Tracking owntracksDevice owntracks
attr Tracking roundAltitude 5
attr Tracking roundDistance 0.1
attr Tracking stateFormat location
attr Tracking verbose 4

Ein einfaches

{fhem("set Telegram message \@user ßäöü")}

kommt korrekt an.

aber mit den userReadings:

nummer {(split(/,/,ReadingsVal('Tracking','address','')))[0]}
strasse {(split(/,/,ReadingsVal('Tracking','address','')))[1]}
stadt {(split(/,/,ReadingsVal('Tracking','address','')))[2]}


define teleBot_MM notify Telegram:msgText.* {
    if ($EVTPART1 eq 'Adr') {
    fhem("get Tracking address short");
    my $strasse = ReadingsVal("Tracking","strasse","");
    my $nummer = ReadingsVal("Tracking","nummer","");
    my $stadt = ReadingsVal("Tracking","stadt","");
    fhem("set Telegram message \@user $strasse $nummer $stadt");
}
else {
}
}


Funktioniert nur dann wenn die Namen kein ßöäü beinhalten !? 
Zum Beispiel :
Die Adresse  "2, Martin-Luther-Weg, Bad Soden" kommt korrekt an aber "50, Kolpingweg, Nieder-Mörlen" wird nicht gesendet und genauso mit "20, Lutherstraße, Bad Nauheim" wegen "ß" ...

Bei  sentMsgResult steht erst WAITING und dann NonBlockingGet timed out on read from <hidden> after 30s

Linux ist auf DE eingestellt :
- locale -a
C
C.UTF-8
de_DE.utf8
POSIX

- echo $LANG : de_DE.UTF-8
- FHEM und Linux aktualisiert
- Bot resetet

Weiß vielleicht jemand woran es liegen könnte ?

Vielen Dank im Voraus!
Gruß
Tim