Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

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

Vorheriges Thema - Nächstes Thema

viegener

Zitat von: Andre09 am 24 April 2022, 19:17:14
Da ich irgendwie meinen Beitrag nicht editieren kann, was mir noch aufgefallen ist ein Log eintrag den ich nicht zuordnen kann:

2022.04.24 19:07:14.218 1: ERROR evaluating my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $EVTPART1=   $evalSpecials->{'%EVTPART1'};my $NAME=   $evalSpecials->{'%NAME'};my $SELF=   $evalSpecials->{'%SELF'};my $TYPE=   $evalSpecials->{'%TYPE'};{ Telegram("teleBot","msgText")}: Undefined subroutine &main::Telegram called at (eval 5354) line 1.


Ich kann die Meldung erstmal auch nicht zuordnen, es sieht so aus, als ob die aus einer (von Dir ?) erstellten Routine kommt. Also z.B. DOIF, notify, oder auch in den Favoriten, etc

Vielleicht schaust bei Dir irgendwo "Telegram(" vorkommt?
Denn "telebot" ist vermutlich der Name Deines TelegramBots und irgendwie wird versucht eine Routine "Telegram(" aufzurufen - vermutlich aus einem Kommando -
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Pete37

Hallo allwissendes Forum,

ich habe ein Problem mit meinem TelegramBot, das mich ziemlich ratlos macht:
Vor ein paar Tagen ist das Device sang und klanglos aus der fhem.cfg verschwunden. Vor vier Tagen habe ich noch eine Nachricht bekommen, gestern war das Device nicht mehr da. So weit so rätselhaft. Jetzt versuche ich seit gestern, das Device anhand der Daten aus einem Backup wieder neu anzulegen. Aber es tut nicht so richtig. Insbesondere sind keine Contacts gelistet, egal wie oft ich meinem Bot eine Nachricht schicke.
Meine Vermutung ist daher, dass die Verbindung zwischen Fhem und Bot nicht wirklich funktioniert. Das kann ich aber aus dem Protokoll (Verbose = 5) nicht sehen:

2022.05.27 10:59:26 5: TelegramBot_Callback DEV_SYS_TelegramBot: called from Polling
2022.05.27 10:59:26 5: TelegramBot_Callback DEV_SYS_TelegramBot: data returned :{"ok":true,"result":[]}:
2022.05.27 10:59:26 5: TelegramBot_Deepencode DEV_SYS_TelegramBot: found an ARRAY
2022.05.27 10:59:26 5: TelegramBot_Deepencode DEV_SYS_TelegramBot: encoded a String from :true: to :true:
2022.05.27 10:59:26 5: TelegramBot_Deepencode DEV_SYS_TelegramBot: found a HASH
2022.05.27 10:59:26 5: TelegramBot_Callback DEV_SYS_TelegramBot: after encoding
2022.05.27 10:59:26 5: TelegramBot_Callback DEV_SYS_TelegramBot: polling returned result? 0
2022.05.27 10:59:26 5: UpdatePoll DEV_SYS_TelegramBot: number of results 0
2022.05.27 10:59:26 5: TelegramBot_UpdatePoll DEV_SYS_TelegramBot: called
2022.05.27 10:59:26 5: TelegramBot_UpdatePoll DEV_SYS_TelegramBot: - Initiate non blocking polling - With callback set
2022.05.27 10:59:26 5: TelegramBot_readToken: Read Telegram API token from file
2022.05.27 10:59:26 4: TelegramBot_UpdatePoll DEV_SYS_TelegramBot: initiate polling with nonblockingGet with 120s
2022.05.27 10:59:26 5: TelegramBot_UpdatePoll DEV_SYS_TelegramBot: - Ende > next polling started
2022.05.27 10:59:26 4: TelegramBot_Callback DEV_SYS_TelegramBot: resulted in SUCCESS from Polling
2022.05.27 10:59:26 5: TelegramBot_Callback DEV_SYS_TelegramBot: - Ende > Control back to FHEM


Wenn ich versuche, eine Nachricht rauszuschicken, kommt der Hinweis, dass er meine Peer-ID nicht finden/zuordnen kann:
2022.05.27 11:01:54 5: TelegramBot_Set DEV_SYS_TelegramBot: called
2022.05.27 11:01:54 4: TelegramBot_Set DEV_SYS_TelegramBot: Processing TelegramBot_Set( _msg )
2022.05.27 11:01:54 5: TelegramBot_Set DEV_SYS_TelegramBot: start send for cmd :_msg: and sendType :0:
2022.05.27 11:01:54 5: TelegramBot_SendIt DEV_SYS_TelegramBot: called
2022.05.27 11:01:54 5: TelegramBot_SendIt DEV_SYS_TelegramBot: try to send message to :myID: -:Hallo: - add :<undef>: - replyid :<undef>::    options ::
2022.05.27 11:01:54 4: TelegramBot_GetFullnameForContact # Contacts is <undef>
2022.05.27 11:01:54 3: TelegramBot_SendIt DEV_SYS_TelegramBot: Failed with :FAILED peer not found :myID::
2022.05.27 11:01:54 5: TelegramBot_Callback DEV_SYS_TelegramBot: called from SendIt
2022.05.27 11:01:54 3: TelegramBot_Callback DEV_SYS_TelegramBot: resulted in NonBlockingGet: returned FAILED peer not found :myID: from SendIt
2022.05.27 11:01:54 5: TelegramBot_Callback DEV_SYS_TelegramBot: - Ende > Control back to FHEM


Wenn ich dem Bot eine Nachricht schicke, passiert in Fhem gar nichts.

Ich habe das Device schon mehrfach gelöscht und wieder neu angelegt. Hat nichts geändert. Der Bot hat jetzt sicher zwei Jahre anstandslos funktioniert. Weiß jemand Rat, in welche Richtung ich weiter suchen kann? Ich weiß grad nicht, was ich noch probieren könnte.

UPDATE: Vor einer halben Stunde ist eine Nachricht vom Bot auf meinem Handy angekommen. Allerdings ohne das Menü, das dabei sein sollte. Und jetzt funktioniert das Senden schon wieder nicht mehr: "peer not found"...

UPDATE: GELÖST! Als ich bei der Peer-ID die ID selber (also die Zahlen, aber ohne @) eingegeben habe, gingen die Nachrichten plötzlich raus. Und Für eingehende Nachrichten musste ich "allowUnknownContacts" vorübergehend auf 1 setzen, damit er "mich kennenlernen konnte". Dadurch wurde ich wieder als Contact gelistet und jetzt kann ich "allowUnknownContacts" wieder auf 0 setzen und der Bot funktioniert wieder, so wie ich das kenne!!

Vielen Dank schon mal,
Pete37
Fhem auf Raspberry Pi3 mit Fritzbox inkl. Steckdosen, Philips Hue inkl. Orsam Lightify-Lampen, eq-3 Max!, SONOS, Rollotron Rolläden, Asus ZenPad, Samsung Galaxy xCover 3

TWART016

Ich sende eine queryInline set Telegram queryInline (Ja:Yeinschalten|Nein:Xausgeschalten) Soll das Licht eingeschalten werden?

Kann ich nach dem Drücken auf Ja oder Nein die queryInline Nachricht löschen lassen?

stera

Ja, du kannst anhand der msg id das wieder löschen.

Bin nun am Handy, könnte Dir aber sonst ein Beispiel zeigen.

Gruß SteRa

TWART016

msgDelete kenne ich. Nur muss ich die Verknüpfung zu der "Antwort" herstellen. Die ID bekomme ich leider nicht heraus.

stera

Man hat doch sogar nur eine Änderung im Reading "queryReplyMsgId", dass dort erst die ID generiert wird, wenn man Antwortet. Wenn sich das ändert und vllt. im Zusammenhang mit dem Reading "queryData" kann ich doch die Nachricht z.B. mit einem DoIf löschen..

Gruß,
Stefan

andies

Evtl so
defmod TelegramBot_loeschen notify TelegramBot:sentMsgResult:.SUCCESS {if ((ReadingsVal("Profil", "housemode", "normal") eq "normal") and (ReadingsNum("TelegramBot","sentMsgId", 0)>0)) {fhem("defmod TelegramBot_loeschen_".ReadingsVal("TelegramBot","sentMsgId", 0)." at +11:00:00 set TelegramBot msgDelete ".ReadingsVal("TelegramBot", "sentMsgId", 0))} }
nach 11 Stunden wird das gelöscht. Bei mir aber jede Nachricht, wenn ich zu Hause bin.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

TWART016

Über queryReplyMsgId habe ich es mittlerweile hinbekommen. Musste nur set Telegram msgDelete [Telegram:queryReplyMsgId] im DOIF hinzufügen

binford6000

Hallo Zusammen,
vor einigen Tagen habe ich mein Telegrambot device neu anlegen müssen. Es funktioniert auch alles bis auf eine Nachricht an eine Gruppe via
set fhembot msg @#Gruppe Text
Es kommt nur
sentMsgResult NonBlockingGet: returned FAILED peer not found :#Gruppenname:
zurück. Mach ich ein
set fhembot msg @-1234567 Text
landet die Nachricht in der gewünschten Gruppe. Irgendwie findet die Gruppe nicht in das reading contacts. Ein manuelles Eintragen hat jedenfalls nicht geholfen. Dei Gruppe ist auch korrekt als
msgContactPush -1234567::#Gruppenname
im RESIDENTS Modul hinterlegt.

Kann mir bitte mal jemand auf die Sprünge helfen?!

VG Sebastian

viegener

@binford6000: Was steht denn bei Deinem fhembot im Reading Contacts?

Wenn es dort nicht gelistet ist, versuche doch mal eine Nachricht (von einem anderen Account in Telegram) an die Gruppe zu senden. Danach sollte es im Reading Contacts enthalten sein
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

binford6000

Hi,
ZitatWas steht denn bei Deinem fhembot im Reading Contacts?
da stehen nur meine beiden ROMMATES drin. Früher (aus einem alten Backup) stand da auch die Gruppe drin.
Ein manuelles Setzen via setreading hat nichts gebracht. Auch Nachrichten von den anderen Gruppenteilnehmern in die Gruppe
lassen den fhembot nicht in contacts auftauchen. Extra dafür auch wieder allowUnknownContacts wieder auf 1 gesetzt.
Aber bisher leider ohne Erfolg...

VG Sebastian

viegener

Zitat von: binford6000 am 20 November 2022, 21:54:55
Hi,da stehen nur meine beiden ROMMATES drin. Früher (aus einem alten Backup) stand da auch die Gruppe drin.
Ein manuelles Setzen via setreading hat nichts gebracht. Auch Nachrichten von den anderen Gruppenteilnehmern in die Gruppe
lassen den fhembot nicht in contacts auftauchen. Extra dafür auch wieder allowUnknownContacts wieder auf 1 gesetzt.
Aber bisher leider ohne Erfolg...

VG Sebastian

Erhält denn der Bot die Nachrichten der anderen den Bot?
und ist der Bot in Telegram noch in der Gruppe gelistet?

Nur zur Sicherheit: Hast Du in Telegram den Bot neu angelegt? oder nur in FHEM?

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

binford6000

ZitatErhält denn der Bot die Nachrichten der anderen den Bot?
Nein.
Zitatund ist der Bot in Telegram noch in der Gruppe gelistet?
Ja.
ZitatNur zur Sicherheit: Hast Du in Telegram den Bot neu angelegt? oder nur in FHEM?
Nur in FHEM. Die Gruppe in Telegram habe ich nicht angerührt.

viegener

@binford6000: Ich habe es gerade bei mir nochmal durchgetestet: Wenn der Kontakt im bot in FHEM fehlt. Reicht es "allowUnknownContacts" auf 1 zu setzen, dann eine Nachricht in die Gruppe zu senden, die auch vom Bot empfangen wird und danach stehen die Kontakte wieder korrekt da in FHEM.

Also den Ablauf nochmal so durchführen und dann prüfen.

Falls das nicht klappt, gibt es noch eine Alternative: Es gibt einen set Befehle (replaceContacts), da kann man den Inhalt des alten Readings aus dem Backup wieder setzen (ACHTUNG: Nicht über setreading sondern über set ... replaceContacts ...)
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

binford6000

Danke dir für den Hinweis - probiere ich gleich morgen aus! Möchte den WAF am späten Sonntag Abend nicht überstrapazieren...  ;)
VG Sebastian