Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Google-Kalenderdaten usw. morgens täglich an Telegram

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Google-Kalenderdaten usw. morgens täglich an Telegram

    This topic has been deleted. Only users with topic management privileges can see it.
    • 2
      2000ede last edited by

      Hallo zusammen,

      als Anfänger möchte ich mir ein Skript basteln (Blockly).

      Dies soll wie folgt aufgebaut sein:

      • Sende mir jeden morgen um 8:00 Uhr

      • eine telegram-Nachricht

      • mit meinen google-Kalendereinträgen und des Feiertagskalenders

      • mit den aktuellen Wetterdaten des Tages (Vorschau)

      Das ganze könnte so aussehen:

      Guten Morgen!

      Termine gestern:

      –----------------------------------------

      Termine heute:


      Termine morgen:


      Wetter (Beispiel):


      Sonnenaufgang:

      Sonnenuntergang:

      Wetterstatus: leichter Regen

      Max-Temp: 9 Grad

      Min-Temp: 2 Grad

      Regenwahrs.: 90%

      Regenmenge: 3l/m2

      Als Adapter brauche ich somit:

      • javascript

      • telegram

      • feiertage

      • ical

      • wetter Adapter (daswetter?)

      Laufen bei mir auch schon jeweils für sich. 🙂

      An sich hört es sich für mich erstmal realisierbar an. Ich muss mich noch einlesen. Im Moment weiss ich noch nicht, wie ich die Daten dafür zusammenstellen kann.

      Wer Tipps hat, gerne her zu mir! Danke für Eure Unterstützung!

      So versuche ich mit dem Aufbau zu starten:
      6334_aski.jpg

      1 Reply Last reply Reply Quote 0
      • lobomau
        lobomau last edited by

        Habe kurz auf das Blockly geschaut. So passiert nichts bzw. nur wenn das Script einmal gestartet wird, wird geschaut ob die Uhrzeit erfüllt ist und diese wird nie erfüllt sein.

        Du musst mit einem Trigger-Block beginnen. Dort steht dann auch drin, dass jeden Tag um 8:00 getriggert wird.

        So sieht es ganz simpel aus:
        1146_trigger.gif

        1 Reply Last reply Reply Quote 0
        • haselchen
          haselchen Most Active last edited by

          Und wie bekomme ich die Infos ohne Blockly auf Telegram?

          Nur Termine für den aktuellen Tag.

          ICal Adapter mit Kalendern ist installiert.

          1 Reply Last reply Reply Quote 0
          • 2
            2000ede last edited by

            So stolpert ein Anfänger schon gleich in die falsche Richtung 🙂 Daher Danke für den Tipp, lobomau

            Um einfach ein Ergebnis zu bekommen hätte ich nun weitergemacht mit dem blauen "Wert von Objekt ID…" und dann auf Ical verwiesen.

            Irgendwie finde ich das aber nicht in der Auswahl. Gucke ich falsch?

            ich weiss auch nicht, ob das der richtige Weg ist, da Ical als Objekt ja alles in einem table drin ist und nicht separat aufrufbar.

            a) wo finde ich dieses Objekt "Wert von Objekt ID..." ?

            b) geht, das was ich vorhabe, mit Blockly, oder geht es nur mit Programmierung?

            (Das könnte ich dann wahrscheinlich nur mit viel Hilfe hinbekommen.)
            6334_ttt.png

            1 Reply Last reply Reply Quote 0
            • lobomau
              lobomau last edited by

              Ja, das funktioniert schon mal. Ich habe es eben auch in diese Richtung versucht, aber nix hinbekommen 😞

              Was bei mir läuft ist ein Script, das in iCal nach Terminen schaut, in dem Fall ob der Mülleiner geleert werden muss.

              Das geht schon in die richtige Richtung…

              viewtopic.php?f=21&t=3761&hilit=kalende ... nft#p34975

              1 Reply Last reply Reply Quote 0
              • T
                tempestas last edited by

                Mit diesem Skript

                ! ````
                // Skript schaut täglich um 18h, ob im Kalender das Wort "Morgen" vorkommt. Wenn ja, wird ein Telegram geschickt mit dem betreffenden Termin bzw Terminen
                // tempestas 13.2.2018
                ! // Skripteinstellungen
                ! var debug = false;
                ! // Suchfunktion für Termin-Cutoff

                function nthIndex(str, pat, n){
                var L= str.length, i= -1;
                while(n-- && i++ <l){ i="str.indexOf(pat," i);/if/(i/</0)/break;/}/i_search="i;" funktion/function/warnung()/{/var/inhalt="getState("ical.0.data.html").val.toString();" hier/deine/müll-kalender/instanz/eingeben/count="inhalt.split("Morgen").length" -1;/wie/häufig/wird/"morgen"/gefunden?/posstart="inhalt.indexOf(" 'morgen',/0);/sucht/das/erste/mal/if(debug)/log("posstart/"+posstart);/if(posstart/!="-1){" falls/gefunden/wurde/gehts/weiter/stringshort="inhalt.substring(posStart," inhalt.length);/abschneiden/von/allem,/was/links/vom/ersten/treffer/steht/log("gekürzt/:"/+stringshort);/nthindex(stringshort,/'</span="">', count); // hier wird nun geschaut, wo es rechts abgeschnitten werden muss
                stringCut = stringShort.slice(0,i_search); // hier wird alles rechts abgeschnitten und so der finale String extrahiert

                if(debug) log("Fast Final: "+stringCut);
                

                ! // aufbereiten für telegram, entfernen von HTML Tags
                ! stringCut = stringCut.replace('
                ',"\n"); // Zeilenumbruch html durch telegram umbruch ersetzen
                ! // remove all inside SCRIPT and STYLE tags
                stringCut=stringCut.replace(/<script.>[\w\W]{1,}(.?)[\w\W]{1,}</script>/gi, "");
                stringCut=stringCut.replace(/<style.>[\w\W]{1,}(.?)[\w\W]{1,}</style>/gi, "");

                    // remove BR tags. 
                    stringCut=stringCut.replace(/
                

                /gi, "");
                stringCut=stringCut.replace(/<br\s>/gi, "");
                stringCut=stringCut.replace(/<br>/gi, "");

                    // remove all else
                    stringCut=stringCut.replace(/<(?:.|\s)*?>/g, "");
                
                    // get rid of html-encoded characters:
                    stringCut=stringCut.replace(/ /gi," ");
                    stringCut=stringCut.replace(/&/gi,"&");
                    stringCut=stringCut.replace(/"/gi,'"');
                    stringCut=stringCut.replace(//gi,'>');
                

                !
                sendTo('telegram', stringCut);

                }
                }

                ! // Trigger Schedule
                ! schedule('0 18 * * ', function(){ // Täglich um 18h
                ! Warnung();
                });
                ! // Bei Start
                ! Warnung();</br></br\s></style.
                ></script.*></l){>

                erhälst du eine Telegram Nachricht mit allen Terminen (sei es Müll, Omas Geburtstag..), die morgen anstehen. Voraussetzung ist, dass dein Kalender "ersetze Datum mit Worten" aktiviert hat.
                
                Wenn du überall wo "Morgen" steht es auf "Heute" abwandelst, bekommst du alle Termine von heute
                1 Reply Last reply Reply Quote 0
                • haselchen
                  haselchen Most Active last edited by

                  Ich nutze leider die Datumsangabe und möchte auch nicht umstellen. Wie sieht dann das Skript aus und wo muss ich es dann als was speichern?

                  ( Telegram Adapter ist Voraussetzung?)

                  1 Reply Last reply Reply Quote 0
                  • 2
                    2000ede last edited by

                    Danke tempestas!

                    Das werde ich mir mal genauer anschauen, ich kann zwar nur VBA-Excel, aber vielleicht bekomme ich es ja nicht nur zum laufen, sondern auch auf meine Zwecke angepasst. Auf jeden Fall eine gute Basis zum lernen für mich!

                    TOP erstmal!

                    1 Reply Last reply Reply Quote 0
                    • T
                      tempestas last edited by

                      @ ede: gern. Es ist alles kommentiert. Wenn du Hilfe brauchst, fragen.

                      @haselchen: na ja, wenn du kein Telegram nutzt gibts noch pushover z.B., aber irgendeine Version brauchst du ja, wenn du es aktiv aufs Handy gespielt bkeommen willst. Sonst kannst du ja auch einfach so aufs Handy gucken für Termine, Wetter usw.

                      1 Reply Last reply Reply Quote 0
                      • Jeeper.at
                        Jeeper.at last edited by

                        Noch einen kleinen Tipp zum Eingangspost.

                        Die Abfrage nach = 8:00 wird in der Praxis nie wahr. Grund hierfür ist das im Hintergrund auch mit Sekunden (und evt. Noch genauer) gerechnet wird. Die Bedingung würde also nur wahr werden wenn die Zeit genau 8:00:00:00:00:00:00:00….. wäre. Also immer eine kleine Range abfragen. Also z. B. Zwischen 8:00 und 8:01. bin da am Anfang auch drüber gestolpert.

                        Lg

                        Günther

                        1 Reply Last reply Reply Quote 0
                        • 2
                          2000ede last edited by

                          tempestas, dein Skript läuft bei mir schon und klappt soweit für die Termine morgen gut.

                          Vielleicht schaffe ich es ja, mit Eurer Hilfe es für mich weiter zu modifizieren.

                          Hier nochmal mein Wunsch und Zielbild:
                          6334_aufbau.jpg
                          6334_zielbild.jpeg

                          1 Reply Last reply Reply Quote 0
                          • haselchen
                            haselchen Most Active last edited by

                            Telegram habe ich, die Frage war nur, wenn Du ein Skript basteln würdest, brauche ich dann den Telegram Adapter?!

                            1 Reply Last reply Reply Quote 0
                            • T
                              tempestas last edited by

                              Ja, den brauchst du

                              1 Reply Last reply Reply Quote 0
                              • Paulchen67
                                Paulchen67 last edited by

                                @tempestas:

                                Mit diesem Skript

                                ! ````
                                // Skript schaut täglich um 18h, ob im Kalender das Wort "Morgen" vorkommt. Wenn ja, wird ein Telegram geschickt mit dem betreffenden Termin bzw Terminen
                                // tempestas 13.2.2018
                                ! // Skripteinstellungen
                                ! var debug = false;
                                ! // Suchfunktion für Termin-Cutoff

                                function nthIndex(str, pat, n){
                                var L= str.length, i= -1;
                                while(n-- && i++ <l){ i="str.indexOf(pat," i);/if/(i/</0)/break;/}/i_search="i;" funktion/function/warnung()/{/var/inhalt="getState("ical.0.data.html").val.toString();" hier/deine/müll-kalender/instanz/eingeben/count="inhalt.split("Morgen").length" -1;/wie/häufig/wird/"morgen"/gefunden?/posstart="inhalt.indexOf(" 'morgen',/0);/sucht/das/erste/mal/if(debug)/log("posstart/"+posstart);/if(posstart/!="-1){" falls/gefunden/wurde/gehts/weiter/stringshort="inhalt.substring(posStart," inhalt.length);/abschneiden/von/allem,/was/links/vom/ersten/treffer/steht/log("gekürzt/:"/+stringshort);/nthindex(stringshort,/'</span="">', count); // hier wird nun geschaut, wo es rechts abgeschnitten werden muss
                                stringCut = stringShort.slice(0,i_search); // hier wird alles rechts abgeschnitten und so der finale String extrahiert

                                if(debug) log("Fast Final: "+stringCut);
                                

                                ! // aufbereiten für telegram, entfernen von HTML Tags
                                ! stringCut = stringCut.replace('
                                ',"\n"); // Zeilenumbruch html durch telegram umbruch ersetzen
                                ! // remove all inside SCRIPT and STYLE tags
                                stringCut=stringCut.replace(/<script.>[\w\W]{1,}(.?)[\w\W]{1,}</script>/gi, "");
                                stringCut=stringCut.replace(/<style.>[\w\W]{1,}(.?)[\w\W]{1,}</style>/gi, "");

                                    // remove BR tags. 
                                    stringCut=stringCut.replace(/
                                

                                /gi, "");
                                stringCut=stringCut.replace(/<br\s>/gi, "");
                                stringCut=stringCut.replace(/<br>/gi, "");

                                    // remove all else
                                    stringCut=stringCut.replace(/<(?:.|\s)*?>/g, "");
                                    
                                    // get rid of html-encoded characters:
                                    stringCut=stringCut.replace(/ /gi," ");
                                    stringCut=stringCut.replace(/&/gi,"&");
                                    stringCut=stringCut.replace(/"/gi,'"');
                                    stringCut=stringCut.replace(//gi,'>');
                                

                                !
                                sendTo('telegram', stringCut);

                                }
                                }

                                ! // Trigger Schedule
                                ! schedule('0 18 * * ', function(){ // Täglich um 18h
                                ! Warnung();
                                });
                                ! // Bei Start
                                ! Warnung();</br></br\s></style.
                                ></script.*></l){>

                                erhälst du eine Telegram Nachricht mit allen Terminen (sei es Müll, Omas Geburtstag..), die morgen anstehen. Voraussetzung ist, dass dein Kalender "ersetze Datum mit Worten" aktiviert hat.
                                
                                Wenn du überall wo "Morgen" steht es auf "Heute" abwandelst, bekommst du alle Termine von heute `  
                                

                                Bei mir läuft das Script nicht.

                                Ersetze Datum mit Worten ist aktiviert.

                                Hab zum testen

                                schedule('0 18 * * *', function(){ // Täglich um 18h

                                auf aktuelle Zeit plus 2 Minuten gestell, aber da tut sich nichts.

                                EDIT!!!

                                Funktioniert jetzt.

                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                500
                                Online

                                31.9k
                                Users

                                80.2k
                                Topics

                                1.3m
                                Posts

                                6
                                14
                                1472
                                Loading More Posts
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes
                                Reply
                                • Reply as topic
                                Log in to reply
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                The ioBroker Community 2014-2023
                                logo