Telegram Messenger Modul

Heute Morgen bekomme ich die Meldung, dass noch sehr wenig Platz für Symcon vorhanden ist, weniger wie 1 GB Speicher. Meine 32 GB Installation war fast dicht… df -h ergab 30 GB benutzt…

Auf de Suche fand ich, dass die Logs seit Tagen über 2 GB groß sind. Telegram-Modul verursachte Fehler… leider habe ich das im Logger erst heute mitbekommen…

Im Messenger war der Haken „Eingehende Nachrichten Abrufen“ gesetzt, nicht gesetzt war der Haken der Verarbeitung…
Ich hatte bei der Erstinstallion darauf nicht geachtet…Sicher macht das Abrufen ohne Verarbeitung keinen Sinn…

Da ich die Funktion nicht benötige, habe ich den Haken entfernt und die Meldungen verschwinden…

Ich weiß nicht ob meine Installation ein Problem hat oder ob es ein Fehler im Modul ist, deshalb der Hinweis.

Die Probleme hatte ich bisher noch nicht…Ich lasse mir aber auch eher Nachrichten schicken.
IPS-Anschreiben klappt bei mir aber auch…

Aktuell möchte ich eine Warnmeldung auch als solche Aussehen lassen.
Aber Fettschrifft will nicht so recht klappen

Getestet habe ich:
** WARNUNG ** sowie < b >WARNUNG< / b> (natürlich ohne Leerzeichen)

Hallo ich habe hier mal ein Video erstellt, dass mein Problem zeigt: @paresy Hast Du eine Idee?

Was man auf dem Video sieht, ist dass die Fehlermeldung beim zweitenmal weggeht. Leider wird mein Telegramclient nicht mitgefilmt, der würde rechts unten zeigen, dass das Modul wieder arbeitet.

Ich bekomme es nach x Versuchen nicht hin das Telegram die Antwort auswertet
Im Log komme ich immer zum Fehler
TelegramMessenger_Test (GetUpdates):

Notice: Undefined index: message in C:\IP-Symcon\modules\jmc-symcon-modules\TelegramMessenger\Telegram.php on line 641



Notice: Undefined index: message in C:\IP-Symcon\modules\jmc-symcon-modules\TelegramMessenger\Telegram.php on line 649



Notice: Undefined index: message in C:\IP-Symcon\modules\jmc-symcon-modules\TelegramMessenger\Telegram.php on line 654

Hat jemand einen Tipp wo das Problem liegen könnte

Gruss Matthias

Du hast eine TelegramMessenger Instanz angelegt, die Bot ID und den Empfänger korrekt angegeben und dort auch das Script zur Auswertung angegeben?

Ich nutze den Rückweg zwar selten, aber gerade getestet und läuft.

Gerade gesehen, du antwortest auf Jannis, der hat ja diverses verändert, was ich nicht nutze.

Ich habe das ganze auf einem Testsystem installiert.
In der produktiven Version läuft alles außer der Keyboardsache nur wollte ich den Keyboardfunktion nutzen und das klappt einfach nicht.
Alle anderen Sachen funktionieren in der Testversion, Text und Bilder senden …

Hallo zusammen,
ich möchte mir ein Foto schicken lassen…

Das besagte Foto lasse ich mir dem imagegrabber in meiner symcon-umgebung ablegen

Um mir das Foto senden zu können benötige ich den Pfad wo das Bild liegt… Die ID scheint nicht zu reichen.

Kann mir den Pfad jemand nennen? (In so fern es immer der gleiche ist)

Danke
Lg
Sven

Die Datei kannst du über IPS_GetMedia ermitteln.
Aber Vorsicht, die Datei ist nur aktuell wenn der Mediacache deaktiviert ist.
Michael

<?

/*

    Telegram_SendText($InstanzID, $text, $UserID, $ParseMode='Markdown')
    Telegram_SendTextToAll($InstanzID, $text, $ParseMode='Markdown')
    Telegram_SendImage($InstanzID, $text, $Path_To_ImageFile, $UserID)
    Telegram_SendImageToAll($InstanzID, $text, $Path_To_ImageFile)
    Telegram_SendDocumentToAll($InstanzID, $text, $Path_to_Document, $MimeType);
    Telegram_SendDocument($InstanzID, $text, $Path_to_Document, $MimeType, $UserID);

*/


$text = 'Der Postbote war hier';
$ImageFile = '/var/lib/symcon/cams/12429.jpg'
$UserID = '848843949';
Telegram_SendImage(21534, $text, $Path_To_ImageFile, $UserID)

?>

Das klappt so nicht… Ich bekomme nicht einmal den Text als Nachricht…
Eine Textnachricht via SendText ist kein Problem…

Hier mal ein Auszug aus den Meldungen

Ich habe es auch mal mit einer Datei versucht die im Ordner → /var/lib/symcon/media/ liegt…
Das Ergebnis war identisch

das kann ein Problem der Cacherei von Symcon sein, eigentlich positiv wegen der SD Karten, aber im Kern heute absolut unnötig und macht immer wieder Ärger.

Bist du dir sicher, dass der Pfad korrekt ist und die Datei wirklich dort liegt?

Da dürfte ein /media/ fehlen, je nach Betriebssystem ist der Pfad unterschiedlich, aber das hängt natürlich auch davon ab, wo du die Dateien hinlegst.

$ImageFile = IPS_GetKernelDir().'media'.DIRECTORY_SEPARATOR.'Kameras'.DIRECTORY_SEPARATOR.'CamEingang.jpg';

Damit erzeuge ich den Pfad auf einem Raspberry.

Hi
Schön das du dich meldest…
Ich habe den Haken in den Einstellungen zum machen im grabber auch Mal deaktiviert…

Gleiches Ergebnis…

In der tat kann ich dir wirklich nicht sagen ob der Pfad wirklich stimmt …

Wie du oben gesehen hast kommt bei IPS_Get… Auch nur /cams/Dateiname raus

Der Pfad wird vom grabber erzeugt…
Ich habe da nichts manuell geändert bzw. Auch keine Option gesehen dies zu tun

Die grabber Einstellungen kann ich gleich Posten, wenn gewünscht

Wo bzw wie erzeugst du den Pfad?

Du könntest dir die Datei im Pfad ansehen :wink: , dann wirst du feststellen, ob es sie gibt oder nicht.

Ich nutze den Image-Grabber nicht und beschreibe die Datei und das MediaObjekt selber im Script.

$MediaID = 12988; // existierendes MediaObjekt/Bilddatei CamEingang.jpg
$RemoteContent = 'http://xxx:yyy@172.16.100.111/ISAPI/Streaming/channels/101/picture';

$Content = file_get_contents($RemoteContent);
IPS_SetMediaCached($MediaID, false);
$ImageFile = IPS_GetKernelDir().'media'.DIRECTORY_SEPARATOR.'Kameras'.DIRECTORY_SEPARATOR.'CamEingang.jpg';  // Image-Datei
IPS_SetMediaFile($MediaID, $ImageFile, False);    // Image im MedienPool mit Image-Datei verbinden
IPS_SetMediaContent($MediaID, base64_encode($Content));  //Bild Base64 codieren und ablegen
IPS_SendMediaEvent($MediaID); //aktualisieren  

Telegram_SendImageToAll(21633, "Es klingelt an der Haustür.", $ImageFile); // ID vom Bot

1 „Gefällt mir“

Dann muss ich die datei und den Pfad jetzt erstmal finden :see_no_evil:

edit:
gefunden
Screenshot 2024-12-30 201416

Nachdem ich im Grabber das Cachen abgestellt habe.
Scheint so als gäbe es keinen Zugriff zum Cache

Das wars… Es kann so einfach sein…

<?

/*

    Telegram_SendText($InstanzID, $text, $UserID, $ParseMode='Markdown')
    Telegram_SendTextToAll($InstanzID, $text, $ParseMode='Markdown')
    Telegram_SendImage($InstanzID, $text, $Path_To_ImageFile, $UserID)
    Telegram_SendImageToAll($InstanzID, $text, $Path_To_ImageFile)
    Telegram_SendDocumentToAll($InstanzID, $text, $Path_to_Document, $MimeType);
    Telegram_SendDocument($InstanzID, $text, $Path_to_Document, $MimeType, $UserID);

*/


$text = 'Der Postbote war hier';
$Path_To_ImageFile = '/var/lib/symcon/cams/12429.jpg';
$UserID = '848843949';
Telegram_SendImage(21534, $text, $Path_To_ImageFile, $UserID)

?>

Ich verschicke über einen Ablaufplan eine Text und drei Sekunden späte ein Bild mit Telegram.

Seit einigen Tagen habe ich das Problem das das senden des Bildes immer wieder fehlschlägt. Nach 10 Sekunden kommt der Time Out. Wurde da etwas geändert? Wenn ich die Api key kurz änder und Speicher und dann wieder mit den richtigen Key Speicher dann geht es kurz wieder. Später aber das selbe Problem….

Gruß

Thorsten

Guten Morgen @ralf @paresy ,

Hat einer von euch vielleicht tips für das oben stehende Problem? Selbst wenn ich über den Ablaufplan als Aufgabe nur das Bild über Telegram verschicke kommt immer wieder der Fehler mit dem Time Out. Das Bild wird gesendet, jedoch mit starker Verzögerung von teilweise 30 Sekunden. Das Bild ist zum Zeitpunkt des Versandes vorhanden.Da kein anderer das Problem hat, wird das Problem wohl bei mir sein…… nur wo?

Gruß und danke Thorsten

Ich nutze keine Ablaufpläne, da ich alles mit Scripten mache.

Telegram_SendImageToAll(21633, "Es klingelt an der Haustür.", $ImageFile);

Das Bild muss existieren, auf der Festplatte, nicht nur im Symcon Cache im Speicher.

Die Vorbereitung für das Bild mache ich wie folgt

$MediaID = 12988; // MediaObjekt/BIlddatei
$RemoteContent = 'http://xxx:yyy@172.16.100.z/ISAPI/Streaming/channels/101/picture';

$Content = file_get_contents($RemoteContent);
IPS_SetMediaCached($MediaID, false);
// Das Cachen für das Mediaobjekt wird deaktiviert.
$ImageFile = IPS_GetKernelDir().'media'.DIRECTORY_SEPARATOR.'Kameras'.DIRECTORY_SEPARATOR.'CamEingang.jpg';  // Image-Datei
IPS_SetMediaFile($MediaID, $ImageFile, False);    // Image im MedienPool mit Image-Datei verbinden
IPS_SetMediaContent($MediaID, base64_encode($Content));  //Bild Base64 codieren und ablegen
IPS_SendMediaEvent($MediaID); //aktualisieren  

Das habe ich gerade getestet und die Nachricht kommt in wenigen Sekunden mit Bild.

Hier kommt leider dieser Fehler:

Fatal error: Uncaught Error: Call to undefined function Telegram_SendImageToAll() in /var/lib/symcon/scripts/19545.ips.php:2
Stack trace:
#0 {main}
  thrown in /var/lib/symcon/scripts/19545.ips.php on line 2

Dieser Threat dreht sich eigentlich um das (alte) Modul


welches ich nutze.

Wenn du die Funktion nicht hast, dann hast du eventuell über den Modul Store das (neue) Modul „Telegram Bot“ installiert, dazu müsste das Symcon Team etwas sagen.