Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Telegram Nachricht vor iCal Event versenden

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Telegram Nachricht vor iCal Event versenden

    This topic has been deleted. Only users with topic management privileges can see it.
    • 0
      0018 last edited by

      Hallo zusammen,

      ich habe schon seit längerem einen Müllkalender über den iCal-Adapter in der Vis und dieser funktioniert wunderbar.

      Jetzt würde ich gerne die Sache noch um eine Telegram Nachricht erweitern. Die Nachricht soll aber nicht am Eventtag sein (was ja über ical.0.data.count relativ einfach wäre),

      sondern soll die Nachricht schon einen Tag früher zu einem Zeitpunkt x (18 Uhr oder so) als Erinnerung gesendet werden, damit ich auch schön brav noch den Müll rausstellen kann 🙂

      Hat jemand dieses schon umgesetzt bzw. kann mir hier jemand bei der Umsetzung behilflich sein?

      Danke + gruß

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

        Schau Dir mal diesen Thread an

        http://forum.iobroker.net/viewtopic.php?f=21&t=3351

        EDIT: URL ersetzt

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

          Danke, ist mir aber etwas zu komplex um mir meinen Teil zurecht zu kopieren.

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

            So sieht das bei mir aus:

            ! /* Kalenderevent in der Zukunft suchen
            ! sucht im iCal Adapter nach events, die noch kommen
            ! http://forum.iobroker.net/viewtopic.php … 9ce#p34975
            ! 20.09.2016 erstellt von pix
            ! 13.11.2016 angepasst für Sven
            ! */
            ! // User Anpassungen
            ! var aSuchstringLiteral = ['Gelber Sack', 'Blaue Tonne', 'Restmüll']; // Suchbegriff
            ! var aSuchstring = ['GelberSack', 'BlaueTonne', 'Restmüll'];
            ! var stichtag = 1; // 0 heute; 1 morgen; 2 übermorgen; 3 In 3 Tagen
            ! var idTabelle = 'ical.0.data.table'; // Instanz eintragen
            ! var logging = false; // debug Log ein/ausschalten
            ! // Ende User Anpassungen
            ! for (var j = 0; j < aSuchstring.length; j++) {
            ! createState('Muellwarnung.' + aSuchstring[j], false, {
            ! type: 'boolean',
            ! name: aSuchstringLiteral[j] + ' wird morgen abgeholt',
            ! desc: aSuchstringLiteral[j] + ' wird morgen abgeholt (Boolean)',
            ! def: false
            ! });
            ! var idEventState = 'Muellwarnung.' + aSuchstring[j];
            ! log (idEventState);
            ! setState(idEventState, false);
            ! }
            ! var tage = ['Heute','Morgen','Übermorgen','In 3 Tagen']; // dafür relative Datumsangabe in iCal-Adapter einschalten und ggf. übersetzen
            ! function datum(x) {
            ! var jetzt = new Date();
            ! if (logging) log('Jetztzeit: ' + jetzt);
            ! //var zeit = new Date(jetzt.getTime() + x * 24 * 60 * 60 * 1000); // es werden genau x Tage, als x * 24 Stunden zugezählt –> nicht gut
            ! var zeit = new Date (jetzt.getFullYear(), jetzt.getMonth(), jetzt.getDate() + x); // in drei Tagen um Mitternacht
            ! if (logging) log('Zielzeit: ' + zeit);
            ! var jahr = zeit.getFullYear();
            ! var monat = (zeit.getMonth()+1 < 10) ? '0' + (zeit.getMonth()+1) : zeit.getMonth()+1;
            ! var tag = (zeit.getDate() < 10) ? '0' + zeit.getDate() : zeit.getDate();
            ! return (tag + '.' + monat + '.' + jahr);
            ! }
            ! function pruefeKalender() {
            ! var kalender = getState(idTabelle).val;
            ! var tag = datum(parseInt(stichtag,10));
            ! if (logging) log(tag);
            ! try{
            ! var ereignisse = JSON.stringify(kalender, null, 2); // Ausgabe als String
            ! if (logging) log(ereignisse);
            ! for (var j = 0; j < aSuchstring.length; j++) {
            ! var idEventState = 'Muellwarnung.' + aSuchstring[j];
            ! for(var i = 0; i <kalender.length; i++)/{/alle/events/durchgehen<br="">if ( (kalender__.date.indexOf(tag) != -1) || (kalender__.date.indexOf(tage[stichtag]) != -1) ) { // String Datum oder relatives Datum (nicht nicht) gefunden, also gefunden
            ! var termin = kalender__.event;
            ! if (termin.indexOf(aSuchstringLiteral[j]) != -1) {
            ! log('Treffer: ' + tage[stichtag] + ' ' + aSuchstringLiteral[j]); // hier wird später vielleicht stichtag_array verwendet
            ! setState(idEventState, true);
            ! break;
            ! } else setState(idEventState, false);
            ! } else setState(idEventState, false);
            ! }
            ! }
            ! } catch (fehler_try) {
            ! log('Fehler beim Kalenderevents einlesen ' + fehler_try, 'error');
            ! }
            ! }
            ! schedule("30 20 * * *", function(){ // bei mehreren Müllskripts den ersten Wert verändern (Minuten)
            ! for (var j = 0; j < aSuchstring.length; j++) {
            ! var idEventState = 'Muellwarnung.' + aSuchstring[j];
            ! var event = getState(idEventState).val;
            ! if (event) {
            ! var ansage = aSuchstringLiteral[j] + ' Mülltonne wird morgen abgeholt. Bitte stell die Tonne an die Straße!';
            ! // hier kann sayit oder push gesetzt werden
            ! setState("sayit.0.tts.text"/Text to speech/, ansage);
            ! }
            ! }
            ! });
            ! // bei Aktualisierung
            ! on ({id: idTabelle, change: 'any'}, function(data) {
            ! pruefeKalender();
            ! });
            ! // 1Min nach Mitternacht
            ! schedule("1 * * * *", pruefeKalender);
            ! //bei Skriptstart
            ! pruefeKalender();______</kalender.length;> ______Damit werden bei mir drei neue Objekte angelegt (Muellwarnung.BlaueTonne usw). Die werden jeweils am Vortag auf True und am Tag selber auf false gesetzt.

            Du könntest nun ein solches Script erzeugen. Das läuft jeden Tag um 19:03, prüft ob der Müllwarner auf True steht und sendet dann eine Telegram.___

            schedule("3 19 * * *", function () {
              if (getState("javascript.0.Muellwarnung.BlaueTonne").val) {
                sendTo("telegram", "send", {
                    text: 'Blaue Tonne raus stellen'
                });
              }
            });
            ````___
            1 Reply Last reply Reply Quote 0
            • 0
              0018 last edited by

              Vielen Dank @OstfrieseUnterwegs. Dein Script funktioniert wunderbar 😄

              Habe folgende Anpassungen in den Variablen druchgeführt:

              // User Anpassungen
              var aSuchstringLiteral = ['Gelber Sack', 'Restabfall Graue Tonne', 'Bioabfall Braune Tonne', 'Altpapier Grüne Tonne']; // Suchbegriff
              var aSuchstring = ['Gelb', 'Grau', 'Braun', 'Grün'];
              var stichtag = 1; // 0 heute; 1 morgen; 2 übermorgen; 3 In 3 Tagen
              var idTabelle = 'ical.0.data.table'; // Instanz eintragen
              var logging = false; // debug Log ein/ausschalten
              // Ende User Anpassungen
              
              

              Zudem habe ich mir noch ein kleines Script zur Telegrambenachrichtigung gebastelt:

              ! ````
              // Script zur Benachrichtung über Telegramm wenn "Morgen" der Müll abgeholt wird
              // Vorraussetzung: Script "Muellwarnung" muss aktiv sein
              // 10.03.2017 - http://forum.iobroker.net/viewtopic.php?f=21&t=5586#p57379
              /////////////////////////////////////////////////////////////////////////////////////////////////////////////
              // Variablendefinition
              ! var chatid = '123456789' ; // Telegram Chat ID
              ! var unit1= "javascript.0.Muellwarnung.Braun"/Bioabfall Braune Tonne wird morgen abgeholt/;
              var msg1= "Biomüll wird morgen abgeholt";
              ! var unit2= "javascript.0.Muellwarnung.Gelb"/Gelber Sack wird morgen abgeholt/;
              var msg2= "Gelber Sack wird morgen abgeholt";
              ! var unit3= "javascript.0.Muellwarnung.Grau"/Restabfall Graue Tonne wird morgen abgeholt/;
              var msg3= "Schwarze Tonne wird morgen abgeholt";
              ! var unit4= "javascript.0.Muellwarnung.Grün"/Altpapier Grüne Tonne wird morgen abgeholt/;
              var msg4= "Papiermüll wird morgen abgeholt";
              ! /////////////////////////////////////////////////////////////////////////////////////////////////////////////
              // Abfrage Status Muellwarnung, bei Status "true" wird eine Telegramnachricht versendet
              ! function braun() {
              if (getState(unit1).val) {
              sendTo('telegram.0', {
              text: msg1,
              chatId: chatid,
              });
              log ("GESENDET: "+ msg1);
              }}
              ! function gelb() {
              if (getState(unit2).val) {
              sendTo('telegram.0', {
              text: msg2,
              chatId: chatid,
              });
              log ("GESENDET: "+ msg2);
              }}
              ! function grau() {
              if (getState(unit3).val) {
              sendTo('telegram.0', {
              text: msg3,
              chatId: chatid,
              });
              log ("GESENDET: "+ msg3);
              }}
              ! function gruen() {
              if (getState(unit4).val) {
              sendTo('telegram.0', {
              text: msg4,
              chatId: chatid,
              });
              log ("GESENDET: "+ msg4);
              }}
              ! /////////////////////////////////////////////////////////////////////////////////////////////////////////////
              // Zeitliche Prüfung des Status
              schedule("00 18 * * ", function () {
              braun();
              gelb();
              grau();
              gruen();
              });
              ! /

              // bei Skriptstart
              braun();
              gelb();
              grau();
              gruen();
              */

              
              Vielen Dank!
              1 Reply Last reply Reply Quote 0
              • N
                noxx last edited by

                Hallo

                bekommt man irgendwie auch auch nette "Müllanzeige" mit dem

                Skript in vis hin?

                In FHEM hatte ich mir sowas kopiert:

                http://steinis.com/homematic/tablet_ui/ … lender.png

                1 Reply Last reply Reply Quote 0
                • A
                  andyb last edited by

                  Ich habs aktuell so. Wird nur angezeigt am Tag wo der jeweilige ist.

                  1586_muell.gif

                  1 Reply Last reply Reply Quote 0
                  • N
                    noxx last edited by

                    Hast auch ne kleine Anleitung 🙂

                    Kann man auch die Tage bis zur nächsten Abholung ins Bild einfügen?

                    Gruß

                    Gesendet von meinem GT-I9195 mit Tapatalk

                    1 Reply Last reply Reply Quote 0
                    • A
                      andyb last edited by

                      Du könntest deine "ical.0.data.html" entsprechend in einen Script nach der jeweiligen Müllsorte filtern, eine andere Lösung wüste ich nicht.

                      Anregung wie, könntest z.B. da finden, und das entsprechend anpassen:

                      http://forum.iobroker.net/viewtopic.php … hilit=ical

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

                        @andyb:

                        Ich habs aktuell so. Wird nur angezeigt am Tag wo der jeweilige ist.

                        muell.gif `
                        Die gifs gefallen mir. Hätte ich auch gerne so, dass die so blinken. Kann man die irgendwo donwloaden?

                        Script "Morgen Muell true/false" hab ich schon mal am Laufen. Guter Tipp 😉

                        1 Reply Last reply Reply Quote 0
                        • S
                          shrike last edited by

                          Hallo zusammen,

                          ich hole diesen Fred mal wieder aus dem Dunkeln heraus..könnte sich bitte mal jemand anschauen, was ich bei der Anpassung an Ostfrieses Code kaputt gemacht habe?

                          Vom Grundsatz funktioniert das Skript ja, aber leider nur, wenn ich das Skript manuell starte..aus irgendeinem Grund läuft der Schedule nicht…

                          ...
                          // 1Min nach Mitternacht
                          //schedule("1 * * * *", pruefeKalender);
                          
                          //bei Skriptstart
                          pruefeKalender();
                          

                          Vielen Dank schon mal im Voraus 🙂

                          EDIT: Okay, sorry, Fehler gefunden! Ich hatte mich von der Funktion für SayIt ablenken lassen und den entscheidenden Schedule um Mitternacht auskommentiert :oops:

                          1 Reply Last reply Reply Quote 0
                          • K
                            Kueppert last edited by

                            Hallo Kollegen,

                            das Skript finde ich erst mal klasse…läuft bei mir aber leider nicht. Habe folgende Anpassung vorgenommen:

                            ! ````
                            // User Anpassungen
                            var aSuchstringLiteral = ['Gelbe Tonne', 'Blaue Tonne', 'Graue Tonne', 'Braune Tonne']; // Suchbegriff
                            var aSuchstring = ['Gelbe Tonne', 'Blaue Tonne', 'Graue Tonne', 'Braune Tonne'];
                            var stichtag = 1; // 0 heute; 1 morgen; 2 übermorgen; 3 In 3 Tagen
                            var idTabelle = 'ical.0.data.table'; // Instanz eintragen
                            var logging = false; // debug Log ein/ausschalten
                            // Ende User Anpassungen

                            
                            Als Log-Ausgabe bei Skiptstart erhalte ich folgende positive Meldung:
                            
                            >! ````
                            0:36:06.005	[info]	javascript.0 Stop script script.js.common.Telegram.Mülltonnen
                            20:36:06.264	[info]	javascript.0 Start javascript script.js.common.Telegram.Mülltonnen
                            20:36:06.264	[info]	javascript.0 script.js.common.Telegram.Mülltonnen: Muellwarnung.Gelbe Tonne
                            20:36:06.264	[info]	javascript.0 script.js.common.Telegram.Mülltonnen: Muellwarnung.Blaue Tonne
                            20:36:06.264	[info]	javascript.0 script.js.common.Telegram.Mülltonnen: Muellwarnung.Graue Tonne
                            20:36:06.264	[info]	javascript.0 script.js.common.Telegram.Mülltonnen: Muellwarnung.Braune Tonne
                            20:36:06.265	[info]	javascript.0 script.js.common.Telegram.Mülltonnen: Treffer: Morgen Braune Tonne
                            20:36:06.265	[info]	javascript.0 script.js.common.Telegram.Mülltonnen: registered 1 subscription and 2 schedules
                            

                            ABER, die Javaskript-Objekte bleien alle 4(1) auf false stehen 😞 Dabei müsste bei Braune Tonne jetzt true stehen. Liegt das evtl. daran, dass ich einen 4. Mülleimer manuell bei Userangaben hinzugefügt habe??

                            Danke euch und Grüße, Thorsten

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            418
                            Online

                            32.0k
                            Users

                            80.5k
                            Topics

                            1.3m
                            Posts

                            7
                            12
                            3171
                            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