Telegram instant messaging TelegramBot - Empfangen und Senden per FHEM

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

Vorheriges Thema - Nächstes Thema

RalfRog

#2715
Danke für den Vorschlag, das hatte ich noch nicht probiert.

Nützt aber auch nicht. Bricht immer an der gleichen Stelle ab.

Mein tägliches Backup in 99_myUtils ("normale" Sub per AT) meldet über:
    fhem "msg push |Taegliches DB-Backup| $text" ;  => geht bisher immer
(über msg ist Telegram eingebunden)

  • Test 1 (wie oben)  klappt nicht
          #zu debug zwecken wg msg
          Log3 $name, 2, "$name Test TelegramBot";
          my $text = "TEST";
          fhem "msg push |Taegliches DB-Backup| $text" ;

Log
2023.03.28 14:51:48.179 2: Fritzbox INFO: fritzLogInfo: fon
2023.03.28 14:51:48.181 2: Fritzbox Test TelegramBot
2023.03.28 14:51:48.232 5: TelegramBot_Set teleBot: called
2023.03.28 14:51:48.233 4: TelegramBot_Set teleBot: Processing TelegramBot_Set( message )
2023.03.28 14:51:48.234 5: TelegramBot_Set teleBot: start send for cmd :message: and sendType :0:
2023.03.28 14:51:48.235 5: TelegramBot_SendIt teleBot: called
2023.03.28 14:51:48.236 5: TelegramBot_SendIt teleBot: try to send message to :-123456789: -:TEST: - add :<undef>: - replyid :<undef>::    options ::
2023.03.28 14:51:48.236 4: TelegramBot_GetFullnameForContact # Contacts is -123456789::#UserName:
2023.03.28 14:51:48.237 4: TelegramBot_GetFullnameForContact # name is #UserName
2023.03.28 14:51:48.238 5: TelegramBot_readToken: Read Telegram API token from file
2023.03.28 14:51:48.243 4: TelegramBot_SendIt parseMode 0
2023.03.28 14:51:48.245 4: TelegramBot_SendIt teleBot: Message for sending :--TelegramBot_boundary-x0123
Content-Disposition: form-data; name="chat_id"

-123456789
--TelegramBot_boundary-x0123
Content-Disposition: form-data; name="text"

TEST
--TelegramBot_boundary-x0123--:
2023.03.28 14:51:48.245 4: TelegramBot_SendIt teleBot: timeout for sent :30:
2023.03.28 14:51:48.252 5: TelegramBot_Set teleBot: message done succesful:
2023.03.28 14:51:48.261 5: TelegramBot_Set teleBot: called
2023.03.28 14:51:48.267 5: TelegramBot_Set teleBot: called
2023.03.28 14:51:48.272 3: msg globalMsg: ID=1680007908.18594.1 TYPE=push ROUTE=teleBot STATUS=OK PRIORITY=0 TITLE='Taegliches DB-Backup' MSG='TEST'


  • Test 2    escaped, klappt nicht
          #zu debug zwecken wg msg
          Log3 $name, 2, "$name Test TelegramBot";
          my $text = "TEST";
          fhem("set teleBot message \@#UserName Filter abgeprueft nun Hash auswerten",1);

Log
2023.03.28 14:55:54.049 2: Fritzbox INFO: fritzLogInfo: fon
2023.03.28 14:55:54.051 2: Fritzbox Test TelegramBot
2023.03.28 14:55:54.053 5: TelegramBot_Set teleBot: called
2023.03.28 14:55:54.054 4: TelegramBot_Set teleBot: Processing TelegramBot_Set( message )
2023.03.28 14:55:54.054 5: TelegramBot_Set teleBot: start send for cmd :message: and sendType :0:
2023.03.28 14:55:54.055 5: TelegramBot_SendIt teleBot: called
2023.03.28 14:55:54.056 5: TelegramBot_SendIt teleBot: try to send message to :#UserName: -:Filter abgeprueft nun Hash auswerten: - add :<undef>: - replyid :<undef>::    options ::
2023.03.28 14:55:54.057 4: TelegramBot_GetFullnameForContact # Contacts is -123456789::#UserName:
2023.03.28 14:55:54.058 4: TelegramBot_GetFullnameForContact # name is #UserName
2023.03.28 14:55:54.059 5: TelegramBot_readToken: Read Telegram API token from file
2023.03.28 14:55:54.063 4: TelegramBot_SendIt parseMode 0
2023.03.28 14:55:54.064 4: TelegramBot_SendIt teleBot: Message for sending :--TelegramBot_boundary-x0123
Content-Disposition: form-data; name="chat_id"

-123456789
--TelegramBot_boundary-x0123
Content-Disposition: form-data; name="text"

Filter abgeprueft nun Hash auswerten
--TelegramBot_boundary-x0123--:
2023.03.28 14:55:54.065 4: TelegramBot_SendIt teleBot: timeout for sent :30:
2023.03.28 14:55:54.070 5: TelegramBot_Set teleBot: message done succesful:
2023.03.28 14:55:54.215 5: TelegramBot_Set teleBot: called
2023.03.28 14:55:54.220 5: TelegramBot_Set teleBot: called


  • Test 3      nochmal nicht escaped, klappt nicht
          #zu debug zwecken wg msg
          Log3 $name, 2, "$name Test TelegramBot";
          my $text = "TEST";
          fhem("set teleBot message @#UserName Filter abgeprueft nun Hash auswerten",1);

 
 Log
2023.03.28 14:59:39.793 2: Fritzbox INFO: fritzLogInfo: fon
2023.03.28 14:59:39.795 2: Fritzbox Test TelegramBot
2023.03.28 14:59:39.798 5: TelegramBot_Set teleBot: called
2023.03.28 14:59:39.799 4: TelegramBot_Set teleBot: Processing TelegramBot_Set( message )
2023.03.28 14:59:39.800 5: TelegramBot_Set teleBot: start send for cmd :message: and sendType :0:
2023.03.28 14:59:39.801 5: TelegramBot_SendIt teleBot: called
2023.03.28 14:59:39.803 5: TelegramBot_SendIt teleBot: try to send message to :#UserName: -:Filter abgeprueft nun Hash auswerten: - add :<undef>: - replyid :<undef>::    options ::
2023.03.28 14:59:39.804 4: TelegramBot_GetFullnameForContact # Contacts is -123456789::#UserName:
2023.03.28 14:59:39.805 4: TelegramBot_GetFullnameForContact # name is #UserName
2023.03.28 14:59:39.807 5: TelegramBot_readToken: Read Telegram API token from file
2023.03.28 14:59:39.812 4: TelegramBot_SendIt parseMode 0
2023.03.28 14:59:39.814 4: TelegramBot_SendIt teleBot: Message for sending :--TelegramBot_boundary-x0123
Content-Disposition: form-data; name="chat_id"

-123456789
--TelegramBot_boundary-x0123
Content-Disposition: form-data; name="text"

Filter abgeprueft nun Hash auswerten
--TelegramBot_boundary-x0123--:
2023.03.28 14:59:39.815 4: TelegramBot_SendIt teleBot: timeout for sent :30:
2023.03.28 14:59:39.822 5: TelegramBot_Set teleBot: message done succesful:
2023.03.28 14:59:39.829 5: TelegramBot_Set teleBot: called
2023.03.28 14:59:39.833 5: TelegramBot_Set teleBot: called


Verhext  ::)


Edit / Nachtrag,  nur um es mal zu machen:
In der Kommandozeile als PerlAusdruck ohne Excape geht:
{fhem("set teleBot message @#FHEM-Sicherheit Filter abgeprueft nun Hash auswerten",1)}

Log
2023.03.28 15:23:51.810 5: TelegramBot_Set teleBot: called
2023.03.28 15:23:51.810 4: TelegramBot_Set teleBot: Processing TelegramBot_Set( message )
2023.03.28 15:23:51.811 5: TelegramBot_Set teleBot: start send for cmd :message: and sendType :0:
2023.03.28 15:23:51.812 5: TelegramBot_SendIt teleBot: called
2023.03.28 15:23:51.812 5: TelegramBot_SendIt teleBot: try to send message to :#UserName: -:Filter abgeprueft nun Hash auswerten: - add :<undef>: - replyid :<undef>::    options ::
2023.03.28 15:23:51.813 4: TelegramBot_GetFullnameForContact # Contacts is -123456789::#UserName:
2023.03.28 15:23:51.814 4: TelegramBot_GetFullnameForContact # name is #UserName
2023.03.28 15:23:51.814 5: TelegramBot_readToken: Read Telegram API token from file
2023.03.28 15:23:51.817 4: TelegramBot_SendIt parseMode 0
2023.03.28 15:23:51.818 4: TelegramBot_SendIt teleBot: Message for sending :--TelegramBot_boundary-x0123
Content-Disposition: form-data; name="chat_id"

-123456789
--TelegramBot_boundary-x0123
Content-Disposition: form-data; name="text"

Filter abgeprueft nun Hash auswerten
--TelegramBot_boundary-x0123--:
2023.03.28 15:23:51.818 4: TelegramBot_SendIt teleBot: timeout for sent :30:
2023.03.28 15:23:51.822 5: TelegramBot_Set teleBot: message done succesful:
2023.03.28 15:23:51.826 5: TelegramBot_Set teleBot: called
2023.03.28 15:23:51.829 5: TelegramBot_Set teleBot: called
2023.03.28 15:23:52.989 5: TelegramBot_Callback teleBot: called from SendIt
2023.03.28 15:23:52.990 5: TelegramBot_Callback teleBot: data returned :{"ok":true,"result":{"message_id":7155,"from":{"id":533133614,"is_bot":true,"first_name":"Ralf_FHEM","username":"Ralf_FHEM_bot"},"chat":{"id":-123456789,"title":"UserName","type":"group","all_members_are_administrators":true},"date":1680009832,"text":"Filter abgeprueft nun Hash auswerten"}}:
2023.03.28 15:23:52.991 5: TelegramBot_Deepencode teleBot: encoded a String from :1: to :1:
2023.03.28 15:23:52.992 5: TelegramBot_Deepencode teleBot: encoded a String from :533133614: to :533133614:
2023.03.28 15:23:52.992 5: TelegramBot_Deepencode teleBot: encoded a String from :Ralf_FHEM_bot: to :Ralf_FHEM_bot:
2023.03.28 15:23:52.993 5: TelegramBot_Deepencode teleBot: encoded a String from :Ralf_FHEM: to :Ralf_FHEM:
2023.03.28 15:23:52.993 5: TelegramBot_Deepencode teleBot: encoded a String from :1: to :1:
2023.03.28 15:23:52.994 5: TelegramBot_Deepencode teleBot: found a HASH
2023.03.28 15:23:52.994 5: TelegramBot_Deepencode teleBot: encoded a String from :7155: to :7155:
2023.03.28 15:23:52.994 5: TelegramBot_Deepencode teleBot: encoded a String from :-123456789: to :-123456789:
2023.03.28 15:23:52.995 5: TelegramBot_Deepencode teleBot: encoded a String from :UserName: to :UserName:
2023.03.28 15:23:52.995 5: TelegramBot_Deepencode teleBot: encoded a String from :group: to :group:
2023.03.28 15:23:52.996 5: TelegramBot_Deepencode teleBot: encoded a String from :1: to :1:
2023.03.28 15:23:52.996 5: TelegramBot_Deepencode teleBot: found a HASH
2023.03.28 15:23:52.997 5: TelegramBot_Deepencode teleBot: encoded a String from :Filter abgeprueft nun Hash auswerten: to :Filter abgeprueft nun Hash auswerten:
2023.03.28 15:23:52.997 5: TelegramBot_Deepencode teleBot: encoded a String from :1680009832: to :1680009832:
2023.03.28 15:23:52.997 5: TelegramBot_Deepencode teleBot: found a HASH
2023.03.28 15:23:52.998 5: TelegramBot_Deepencode teleBot: found a HASH
2023.03.28 15:23:52.998 5: TelegramBot_Callback teleBot: after encoding
2023.03.28 15:23:52.999 5: TelegramBot_Callback teleBot: resulted in SUCCESS from SendIt
2023.03.28 15:23:53.003 5: TelegramBot_Set teleBot: called
2023.03.28 15:23:53.008 5: TelegramBot_Set teleBot: called
2023.03.28 15:23:53.011 5: TelegramBot_Callback teleBot: - Ende > Control back to FHEM

FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

binford6000

Stimmt. Hat sich anscheinend was geändert.
Probier mal anstatt message msg:
fhem("msg push $txt"); #msg mit Std. peer
fhem("set fhembot msg @#Tigers Text: $txt"); # fhembot unescaped
fhem("set fhembot msg \@#Tigers Text: $txt") # fhembot escaped

Alle 3 Nachrichten kommen bei mir (1.) und in der Gruppe Tigers(2.+3.) an. Alle cmds sind aus einer sub aufgerufen worden.
VG Sebastian

RalfRog

Grundsätzlich funktioniert der Aufruf aus Subs in 99_myUtil ja (bisher ohne Aufälligkeiten) und auch immer noch.

Nur im Zusammenhang mit dem Modul FRITBOX klappt es nicht.
Der Aufruf des TelgramBot erfolgt so:
-> das Modul 72_FRITZBOX.pm arbeitet intern ein "get Fritzbox fritzLog hash sys" ab
-> ruft aus dem laufenden Modul heraus in 99_myUtils die (fest codierte) Sub "myUtilsFritzLogExPost($$$)" auf
-> dort durch den User programmiert z.B. "fhem("set fhembot msg @#Tigers Text: $txt");" (und damit wieder ein Modul)

Mein Gedanke war, dass die Ursache vielleicht darin liegt, dass FHEM irgendwie "verhindert" in der laufenden Abarbeitung eines Moduls eine weiteres Modul abzuarbeiten oder bestimmte Dinge darin abzuarbeiten.
Im Log sieht man ja, dass der TelegramBot anfängt etwas zu zu tun - nur halt nicht bis zum Ende.

Wenn ich in "fhem("msg push $txt")" push durch mail ersetze wird die DebianMail (auch ne Sub kein Modul) anstandslos verschickt.




FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

viegener

Kannst Du in mehr Detail erklären mit Codeausschnitten was Du mit
Zitat von: RalfRog am 28 März 2023, 20:43:06Der Aufruf des TelgramBot erfolgt so:
-> das Modul 72_FRITZBOX.pm arbeitet intern ein "get Fritzbox fritzLog hash sys" ab
-> ruft aus dem laufenden Modul heraus in 99_myUtils die (fest codierte) Sub "myUtilsFritzLogExPost($$$)" auf
-> dort durch den User programmiert z.B. "fhem("set fhembot msg @#Tigers Text: $txt");" (und damit wieder ein Modul)

meinst?
Oder mit mehr Detail: Was heisst arbeitet intern ein ... ab
Wie ruft es aus dem laufenden Modul etwas anderes auf?


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

RalfRog

#2719
Hallo

Ich hatte das Thema in #2713 (https://forum.fhem.de/index.php?msg=1269995) angerissen und auch zwei Logauszüge (verbose5) beigefügt aus denen in Nummer2 ersichtlich ist, dass der TelegramBot einfach irgenwo aufhört weiter (fertig) zu machen.

Vielleicht ist das Log als Einstieg ausreichend.

hier noch der Aufruf in 99_myUtils der nicht klappt (die beiden auskommentierten Zeilen, beide Varianten probiert)
############
## Fritzbox-Log auswerten  nonblocking     ######
### fester Name der Sub "myUtilsFritzLogExPost" fuer Modul FritzBox
### mit der Funtion get <name> fritzLog <hash | table> <all | sys | wlan | usb | net | fon>
###
sub myUtilsFritzLogExPost($$$) {
  my ($hash, $filter, $result) = @_;

  my $name = $hash->{NAME};

  if(defined $result->{Error}) {
    Log3 $name, 2, "$name ERROR: fritzLogInfo: " . $result->{Error};
    return $result->{Error};
...
...
...
             if ($logidx1->{id} eq 501||$logidx1->{id} eq 503||$logidx1->{id} eq 505||$logidx1->{id} eq 510) {           # 505 User und falsches Kennwort oder 501, 503, 510
                 Log3 $name, 2, "$name IntruderCheck: $logidx1->{date} $logidx1->{time} $logidx1->{msg}";
                 fhem("msg mail  $name $logidx1->{id} IntruderCheck:  $logidx1->{date} $logidx1->{time} $logidx1->{msg}",1);       # Alternative, da msg push hängt       
*** hier gehts nicht ***
#                 fhem("msg push -1 IntruderCheck: IntruderCheck: $logidx1->{msg}",1);           # hier geht es aus irgendeinem Grund nicht
#                 fhem("set teleBot message @#User-Name IntruderCheck $logidx1->{id}  $logidx1->{msg}",1);   # Alternative TeleBot direkt statt über msg
                 return "Anmeldung gescheitert (5xx)";
             }   
...
...
...

Eine Sub in der seit zwei Jahren die Message ohne Probleme verschickt wird:
############
# AT SaveDB_daily führt täglich DBRep_BackupWoche aus
# Alle Daten seit letzter Woche werden in eine Datei exportiert
# und abschließend diese Funktion aufgerufen
#
sub db_File_Cleanup {
#   Parameter $name, $reading, $value werden vermutlich durch das Attribut attr userExitFn UserFunction bereit gestellt
    my ($name,$reading,$value) = @_;
my $dbg_state = "" ;
my $ret = "debug=> " ;
my $meld = "" ;
my $text = "" ;
my $tren = "fhem_" ;
my $file = ResolveDateWildcards($attr{DBRep_BackupWoche}{expimpfile}, localtime());
my ($filepath, $filename) = split $tren,$file ;
$filename .= "fhem_" ;
...
...
...
# tägliches DB Backup (seit prev. Week) nach /opt/fhem/backup/db_back/week/;
# bei Erweiterung hier mit elsif einleiten
if ($value eq "done") {
$ret = qx(gzip -v '$file' 2>&1 ) ;
Log3 $name, 3, "UserExitFn $name - Status: done und $file GZIP done: $ret" ;
$text = "tgl. Backup der letzten 2 Wochen & GZIP done:".$ret;
*** hier gehts ***
                fhem "msg push |Taegliches DB-Backup| $text" ;
return 0 ;
}
...
...
...
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

viegener

Ich versuche das nachwievor zu verstehen, lass mich versuchen nochmal nachzufragen:

Du hast das Modul Fritzbox verändert und hast dort einen Aufruf Deiner eigenen Routine
myUtilsFritzLogExPost
aufzurufen?
Stimmt das?

Zur Erklärung: Die Logauszüge zeigen ja, dass es aus einer Sub, als Command etc funktioniert und das kann ich auch bestätigen. Nur beim Aufruf aus dem fritzbox-Modul (?) geht es nicht und damit muss sich irgendetwas anders verhalten. Die beiden logs zeigen mir aber keine offensichtlichen Unterschied. Also liegt der Unterschied beim Aufruf davor.


Wann und wo genau rufst Du das auf?

Kann es sein, dass der Aufruf aus einem "BLockingCall" erfolgt? Dann erfolgt der Aufruf aus in einem Subprozess und damit gehen diese beim Beenden des Subprozesses verloren.

Mit Einschränkungen ist das auch hier beschrieben: https://wiki.fhem.de/wiki/Blocking_Call#Einschr.C3.A4nkungen



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

JoWiemann

Zitat von: viegener am 02 April 2023, 22:51:41Ich versuche das nachwievor zu verstehen, lass mich versuchen nochmal nachzufragen:

Du hast das Modul Fritzbox verändert und hast dort einen Aufruf Deiner eigenen Routine
myUtilsFritzLogExPost
aufzurufen?
Stimmt das?


Hallo viegener,

Ralf hat das Modul nicht verändert, sondern ich, seinen Wünschen entsprechend. Im Modul gibt es ein neues get, dass das Log der FritzBox ausließt. Da das Auslesen etwa 2-5 Sekunden dauert, erfolgt dies non Blocking. Zur weiteren Verarbeitung wird das Ergebnis entweder als Tabelle im FhemWeb angezeigt, oder es wird eine Sub aufgerufen, die der Nutzer selber in der 99_myUtils.pm zur weiteren Verarbeitung hinterlegen muss. Ist die Sub nicht definiert passiert nichts, ist sie definiert wird sie mit dem Fhem Device Hash und dem Ergebnis auch non Blocking aufgerufen.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

MadMax-FHEM

ZitatIst die Sub nicht definiert passiert nichts, ist sie definiert wird sie mit dem Fhem Device Hash und dem Ergebnis auch non Blocking aufgerufen.

Was bedeutet nonblocking aufgerufen?
Also mit fhem nonblocking?

Dann befindest du dich in dem Moment "in" einem "Clone" deines fhem.
Evtl. klappt es deshalb nicht...

DebianMail kann gehen, weil es der bash egal ist ob der Aufruf durch fhem oder einen "Clone" erfolgt...

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)

RalfRog

#2723
Danke Jo und MadMax für die Ergänzungen. Es ist am Ende kein Drama. Ne Message wäre halt auffälliger als ne Mail die ggfs. untergeht.

Ich versuche mal die beiden Logauszüge als Tabelle mit Zeilennummern nebeneinander zu stellen (@viegener). Vielleicht bringt das etwas übersichtlichkeit.

Gruß Ralf



Funktioniert nicht aus der Sub
2023.03.25 20:08:20.882 5: TelegramBot_Set teleBot: called
2023.03.25 20:08:20.883 4: TelegramBot_Set teleBot: Processing TelegramBot_Set( message )
2023.03.25 20:08:20.884 5: TelegramBot_Set teleBot: start send for cmd :message: and sendType :0:
2023.03.25 20:08:20.884 5: TelegramBot_SendIt teleBot: called
2023.03.25 20:08:20.885 5: TelegramBot_SendIt teleBot: try to send message to :#UserName: -:Filter abgeprueft nun Hash auswerten: - add :<undef>: - replyid :<undef>::    options ::
2023.03.25 20:08:20.886 4: TelegramBot_GetFullnameForContact # Contacts is -987654321::#UserName:
2023.03.25 20:08:20.886 4: TelegramBot_GetFullnameForContact # name is #UserName
2023.03.25 20:08:20.887 5: TelegramBot_readToken: Read Telegram API token from file
2023.03.25 20:08:20.890 4: TelegramBot_SendIt parseMode 0
2023.03.25 20:08:20.891 4: TelegramBot_SendIt teleBot: Message for sending :--TelegramBot_boundary-x0123
Content-Disposition: form-data; name="chat_id"

-987654321
--TelegramBot_boundary-x0123
Content-Disposition: form-data; name="text"

Filter abgeprueft nun Hash auswerten
--TelegramBot_boundary-x0123--:
2023.03.25 20:08:20.892 4: TelegramBot_SendIt teleBot: timeout for sent :30:
2023.03.25 20:08:20.896 5: TelegramBot_Set teleBot: message done succesful:
2023.03.25 20:08:20.901 5: TelegramBot_Set teleBot: called
2023.03.25 20:08:20.905 5: TelegramBot_Set teleBot: called

der wurde verschickt (Kommandozeite FHEMWEB)
2023.03.25 19:47:50.490 5: TelegramBot_Set teleBot: called
2023.03.25 19:47:50.491 4: TelegramBot_Set teleBot: Processing TelegramBot_Set( message )
2023.03.25 19:47:50.491 5: TelegramBot_Set teleBot: start send for cmd :message: and sendType :0:
2023.03.25 19:47:50.492 5: TelegramBot_SendIt teleBot: called
2023.03.25 19:47:50.492 5: TelegramBot_SendIt teleBot: try to send message to :#UserName: -:LogCheck...
2023.03.25 19:47:50.493 4: TelegramBot_GetFullnameForContact # Contacts is -123456789::#UserName:
2023.03.25 19:47:50.494 4: TelegramBot_GetFullnameForContact # name is #UserName
2023.03.25 19:47:50.494 5: TelegramBot_readToken: Read Telegram API token from file
2023.03.25 19:47:50.497 4: TelegramBot_SendIt parseMode 0
2023.03.25 19:47:50.498 4: TelegramBot_SendIt teleBot: Message for sending :--TelegramBot_boundary-x0123
Content-Disposition: form-data; name="chat_id"

-123456789
--TelegramBot_boundary-x0123
Content-Disposition: form-data; name="text"

LogCheck:
--TelegramBot_boundary-x0123--:
2023.03.25 19:47:50.498 4: TelegramBot_SendIt teleBot: timeout for sent :30:
2023.03.25 19:47:50.502 5: TelegramBot_Set teleBot: message done succesful:
2023.03.25 19:47:50.505 5: TelegramBot_Set teleBot: called
2023.03.25 19:47:50.508 5: TelegramBot_Set teleBot: called
2023.03.25 19:47:50.687 5: TelegramBot_Callback teleBot: called from SendIt
2023.03.25 19:47:50.688 5: TelegramBot_Callback teleBot: data returned :{"ok":true,"result":{"mess...{"id":987654321,"is_bot":true,"first_name":"Yxxx_Zxxx","username":"Yxxx_Zxxx_bot"},"chat":{"id":-123456789,"title":"UserName","type":"group","all_members_are_administrators":true},"date":1234560011,...
2023.03.25 19:47:50.689 5: TelegramBot_Deepencode teleBot: encoded a String from :1: to :1:
2023.03.25 19:47:50.690 5: TelegramBot_Deepencode teleBot: encoded a String from :Yxxx_Zxxx: to :Yxxx_Zxxx:
2023.03.25 19:47:50.690 5: TelegramBot_Deepencode teleBot: encoded a String from :1: to :1:
2023.03.25 19:47:50.691 5: TelegramBot_Deepencode teleBot: encoded a String from :987654321: to :987654321:
2023.03.25 19:47:50.691 5: TelegramBot_Deepencode teleBot: encoded a String from :Yxxx_Zxxx_bot: to :...
2023.03.25 19:47:50.692 5: TelegramBot_Deepencode teleBot: found a HASH
2023.03.25 19:47:50.692 5: TelegramBot_Deepencode teleBot: encoded a String from :1234560011: to :1234560011:
2023.03.25 19:47:50.693 5: TelegramBot_Deepencode teleBot: encoded a String from :-123456789: to :-123456789:
2023.03.25 19:47:50.693 5: TelegramBot_Deepencode teleBot: encoded a String from :group: to :group:
2023.03.25 19:47:50.693 5: TelegramBot_Deepencode teleBot: encoded a String from :UserName: to :UserName:
2023.03.25 19:47:50.694 5: TelegramBot_Deepencode teleBot: encoded a String from :1: to :1:
2023.03.25 19:47:50.694 5: TelegramBot_Deepencode teleBot: found a HASH
2023.03.25 19:47:50.695 5: TelegramBot_Deepencode teleBot: encoded a String from :7128: to :7128:
2023.03.25 19:47:50.695 5: TelegramBot_Deepencode teleBot: encoded a String from :LogCheck:: to :LogCheck::
2023.03.25 19:47:50.695 5: TelegramBot_Deepencode teleBot: found a HASH
2023.03.25 19:47:50.696 5: TelegramBot_Deepencode teleBot: found a HASH
2023.03.25 19:47:50.696 5: TelegramBot_Callback teleBot: after encoding
2023.03.25 19:47:50.697 5: TelegramBot_Callback teleBot: resulted in SUCCESS from SendIt
2023.03.25 19:47:50.701 5: TelegramBot_Set teleBot: called
2023.03.25 19:47:50.704 5: TelegramBot_Set teleBot: called
2023.03.25 19:47:50.707 5: TelegramBot_Callback teleBot: - Ende > Control back to FHEM
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

JoWiemann

#2724
Hallo Ralf,

es sieht so aus, als wenn non Blocking in non Blocking nicht funktioniert. Bei mir bleibt Telnet ebenfalls hängen. WhatsApp und DebianMail funktionieren.

Hast Du mal folgendes ausprobiert (aus dem Wiki):
Wenn viele Definitionen aktiv sind, welche BlockingCalls parallel starten kann es zu einem relativ hohen Memory-Footprint kommen aufgrund mehrfach laufenden Fork-Prozessen. Dies kann auf schwachbrüstiger Hardware zu Speicherengpässen führen. Ab FHEM Revision 11917 lassen sich die maximal parallel laufenden BlockingCalls durch das globale Attribut blockingCallMax begrenzen (Standardwert: unbegrenzt). Sofern die maximale parallele Anzahl an BlockingCalls erreicht ist, werden weitere Calls in eine Warteschlange eingereiht und ausgeführt, sobald laufende Calls beendet werden.

Mit dem Fhem Befehl: blockinginfo kannst Du Dir alle laufenden Blocking Calls anzeigen lassen.

@viegener, @Joachim die sub myUtilsFritzLogExPost (...) wird mit Fhem Blockincall (...) aufgerufen.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

JoWiemann

Hallo Ralf,

ich könnte den Aufruf von myUtilsFritzLogExPost in den normalen Programmablauf des Moduls, also direkt nach der Rückkehr aus dem non Blocking, verschieben. Für Deinen Anwendungsfall sollte das funktionieren.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

RalfRog

Vielleicht hat @viegener ja eine Idee zur Ursache und leichte Abhilfe.

Super Angebot  :) spontan könnte man zur deiner Idee sagen prima....
 - aber wäre das nicht zu speziell auf dem TelegramBot bezogen.
Die Möglichkeiten sollten doch schon universell sein. Der Eine mag Mail (z.B. KölnSolar) der Andere Telgram, Signal oder WhatsApp.

Gruß Ralf

FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

JoWiemann

Zitat von: RalfRog am 03 April 2023, 15:06:03Vielleicht hat @viegener ja eine Idee zur Ursache und leichte Abhilfe.

Super Angebot  :) spontan könnte man zur deiner Idee sagen prima....
 - aber wäre das nicht zu speziell auf dem TelegramBot bezogen.
Die Möglichkeiten sollten doch schon universell sein. Der Eine mag Mail (z.B. KölnSolar) der Andere Telgram, Signal oder WhatsApp.

Gruß Ralf

Nun ja, mit on|off könnte man zwischen non Blocking [on] und Blocking [off] wählen.

Aufgerufen würde dann myUtilsFritzLogExPost [on] und myUtilsFritzLogExPostnb [off].

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

RalfRog

Ok... mit dem Thema (non)Blocking hab ihr mich sowieso ein wenig abgehängt.

D.h. durch den Aufruf "get fritzLog" als Blocking statt nonBlocking wird das Thema Zugriff auf Variablen in "anderen" Programmteilen unkritischer - sprich der TelegramBot hat so wie es momentan läuft nötige Variablen-Inhalte nicht zur Verfügung.
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

RalfRog

#2729
Zitat von: JoWiemann am 03 April 2023, 13:33:43...
Mit dem Fhem Befehl: blockinginfo kannst Du Dir alle laufenden Blocking Calls anzeigen lassen.

@viegener, @Joachim die sub myUtilsFritzLogExPost (...) wird mit Fhem Blockincall (...) aufgerufen.

Wie/wann - ist ja immer nur ein Blitzlicht auf die Prozesse?
In der "Kommandozeile" während ich "get fritzLog" aufrufe?


Zitat von: JoWiemann am 03 April 2023, 13:33:43...Ab FHEM Revision 11917 lassen sich die maximal parallel laufenden BlockingCalls durch das globale Attribut blockingCallMax begrenzen (Standardwert: unbegrenzt). Sofern die maximale parallele Anzahl an BlockingCalls erreicht ist, werden weitere Calls in eine Warteschlange eingereiht und ausgeführt, sobald laufende Calls beendet werden.


Einfach mal zum Test hart auf 2 oder 1 runtersetzen und dann "get fritzLog" ausführen?


Edit:
Habe jetzt einfach mal nach "get fritzLog" in der Kommandozeile "blockinginfo" aufgerfufen. Wenn, hab ich maximal den Eintrag:
Pid:15932 Fn:FRITZBOX_Run_fritzloginfo Arg:fritzzbox|fritzloginfo|hash|sys Timeout:20 ConnectedVia:telnetPort_127.0.0.1_37434
Da würde der Parameter blockingCallMax vermutlich ja auch nix ändern.
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder