NEWS
[gelöst] Problem mit Ical-Adapter und Telegram
-
Hallo zusammen,
ich habe bei Google-Kalender einen Geburtstagkalender gemacht und ich möchte gerne von Telegram am Tag eines Geburtstages eine Benachrichtigung bekommen.
Die Realisierung schien mir eine leichte Aufgabe, aber ich kriege es nicht hin. Schon 4 Tage habe ich alles Mögliche versucht, aber irgendwo mache ich einen Denkfehler.
Was ich bis jetzt gemacht habe:
- Bei Google einen Geburtstagskalender eingerichtet.
- Bei IoBroker einen neuen Ical-Adapter eingerichtet.
- Beim Google Geburtstagskalender die geheime Ical-Adresse gefunden und im Adapter eingetragen. Wenn ich mir den html-Objekt anschaue, scheint es, als ob der Adapter die Kalenderdaten bekommt.
4. Mit Blockly habe ich als Test einen kleinen Skript gebaut, aber ich die Geburtstage werden nicht an Telegram geschickt.Wenn ich 'Wert' wähle und als Parsemode default, wird der ganze HTML-String an Telegram geschikt.
Wenn ich als Parsemode HTML wähle, bekomme ich eine Fehlermeldung. Im Log steht dann 'Cannot send message [chatId - xxxxxxxxx: Error: ETELEGRAM: 400 Bad Request: can't parse entities: Unsupported start tag "span" at byte offset 0'
Ich habe schon stundenlang im Forum recherchiert, aber nichts gefunden. Wahrscheinlich ist es was Kleines, das ich in meiner Unwissenheit übersehe. Deshalb würde ich mich freuen, wenn jemand mir weiter helfen könnte.
Grüße
Johan
-
@Johan2009 das Problem wird doch in der Fehlermldung schon beantwortet. Die Fehlermeldung sagt, dass er mit einem
<span>
als Start-Tag nicht klarkommt bzw. nicht unterstützt wird. -
@J-A-R-V-I-S Vielen Dank für die Rückmeldung. Dass der Adapter nicht mit <span> klarkommt, habe ich natürlich auch gesehen, aber ich dachte, dass ich im Blockly-Skript vielleicht die falschen Bausteine benutzt hatte. Hast du vielleicht eine Ahnung, wie ich mein Vorhaben realisieren kann?
-
@Johan2009 ich weiß nicht genau, was der Telegram Adapter benötigt. Vielleicht hilft es, wenn du ein
<div>
oder ähnliches drum rum baust. Vielleicht braucht er auch ein komplettes HTML, das müsstest du mal testen. -
@J-A-R-V-I-S Ich bin sehr froh, dass ich IoBroker am Laufen habe und ich möchte gern lernen. Von einem <div> habe ich noch nie gehört
. Könntest du mir weiterhelfen? Soll ich das in Blockly machen?
-
@Johan2009 Das html ist für die Visualisierung gedacht, der Adapter stellt aber die Daten auch in dem Datenpunkt table bereit(Man erkennt das nicht weil dort Objekte gespeichert werden, tatsächlich sind da aber die Daten drin). So kannst Du das in Blockly ganz leicht realisieren
-
@fastfoot Danke für das Blockly-Skript! Ich werde es morgen sofort testen und melde mich dann wieder.
-
@Johan2009 Jetzt mal ganz blöd gesagt aber der kalender auf deinem Handy kann dich auch benarichtigen ist ja blos ein Termin der erstell wurde
-
@Hardwearhansi Wenn schon, denn schon! Es ist mir lieber, dass alle Benachrichtigungen von Smarthome-Sachen (Müllabholungen, Anwesenheitserkennung und jetzt auch Geburtstage) mit Telegram gemacht werden.
@fastfoot Dein Skript hat wunderbar geklappt! Nochmals vielen Dank! Ich habe das jetzt so gemacht, dass jeden Tag gecheckt wird, ob jemand an dem Tag Geburtstag hat (siehe auch mein Blockly). Eine letzte Frage hätte ich noch; wäre es auch möglich ein Skript zu machen, bei dem ich am Abend eine Benachrichtigung über einen Geburtstag vom nächsten Tag bekomme?
-
@Johan2009 Naja jeder des seihnen
-
@Johan2009 sagte in Problem mit Ical-Adapter und Telegram:
@fastfoot Dein Skript hat wunderbar geklappt! Nochmals vielen Dank! Ich habe das jetzt so gemacht, dass jeden Tag gecheckt wird, ob jemand an dem Tag Geburtstag hat (siehe auch mein Blockly). Eine letzte Frage hätte ich noch; wäre es auch möglich ein Skript zu machen, bei dem ich am Abend eine Benachrichtigung über einen Geburtstag vom nächsten Tag bekomme?
So solltest Du das nicht so machen! Du setzt so jeden Tag um 7:00 einen neuen Trigger auf eine Änderung im table-DP.
In der iCal Instanz kannst du ja bereits festlegen, wann die Google Abfrage erfolgen soll, wenn du das manuell steuern willst, dann würde ich das dort löschen. Du bekommst auch immer alle Termine angezeigt, den Zeitraum stellst du in Tagen in den iCal Einstellungen ein, somit bekommst du jedesmal auch den Termin für den nächsten Tag oder mehr. Erstelle einfach ein paar Fake Kontakte mit Geburtstagen für die nächsten Tage, dann siehst Du was ich meine.
So sollte dein Blockly in etwa aussehen
-
@fastfoot Aha, jetzt verstehe ich was du meinst! Habe mir noch mal die Ical Instanz angesehen und das Blockly-Skript geändert. Es funktioniert jetzt reibungslos. Vielen Dank, dass du die Zeit genommen hast, mir das zu erklären!
-
@fastfoot Hi,
auch wenn das Thema vielleicht etwas älter ist, möchte ich es aufgreifen. Ich habe meine iCal - Telegram Benachrichtigung anhand deines Scripts gemacht. Komischerweise erhalte ich immer wieder mal auch tagsüber die Telegrambenachrichtigung, auch wenn mein Script um 20 Uhr nur die Nachricht verschicken soll.
Kann es damit zusammenhängen das der iCal Adapter mehrmals am Tag die Daten aktualisiert? Aus dem Log bin ich zu dem Zeitpunkt nicht schlau geworden.MfG
srkonus -
@srkonus ja, der Trigger reagiert auf Änderungen im table Datenpunkt. Wie geschrieben kannst du das ja in den Cron Einstellungen der iCal Instanz anpassen bzw löschen, dann wird nur um 7:00 und 19:00Uhr wie im Blockly abgefragt
-
@fastfoot Wie meinst du das mit "im iCal Adapter einstellen"? Das er die Infos nur erneuert wenn es neue Infos gibt?
-
@srkonus sagte in [gelöst] Problem mit Ical-Adapter und Telegram:
@fastfoot Wie meinst du das mit "im iCal Adapter einstellen"? Das er die Infos nur erneuert wenn es neue Infos gibt?
In den Instanzen gibt es für jeden Adapter einen CRON Job, wenn du Infos nur zum Abend oder wie im Blockly willst, dann muss du den Cronjob eben löschen oder entsprechend abändern
-
@fastfoot Ah, ok. Habe den iCal Adapter jetzt auf 19:45 Uhr gesetzt und das Script auf 19:50 Uhr. Damit sollte ja nur eine Benachrichtigung (vielleicht zwei) rausgehen. Danke für den Hinweis.
-
@srkonus Damit gehen zwei Benachrichtigungen raus. Deaktiviere doch einfach mal den Zeitplan, dann hast du nur noch den Trigger welcher dann um 19:45 auf die Änderung des Cron triggert