Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Einfacher Countdown in VIS von festem Datum gesucht

    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

    [gelöst] Einfacher Countdown in VIS von festem Datum gesucht

    This topic has been deleted. Only users with topic management privileges can see it.
    • liv-in-sky
      liv-in-sky last edited by

      @Camuri ja du hast recht - kopiere ich den spoiler in ein script bei mir - kommt das auch raus 12 tage

      1 Reply Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky last edited by

        @Camuri gehts damit

        script-im-txt.txt

        C 1 Reply Last reply Reply Quote 0
        • C
          Camuri @liv-in-sky last edited by

          @liv-in-sky sagte in [gelöst] Einfacher Countdown in VIS von festem Datum gesucht:

          @Camuri gehts damit

          script-im-txt.txt

          Funktioniert danke 😄

          42e236de282e9249738bb68fd9f9c9db.png

          1 Reply Last reply Reply Quote 0
          • liv-in-sky
            liv-in-sky last edited by

            1445small--robots-winzig.png

            yeah

            sorry - was ein blöder fehler

            1 Reply Last reply Reply Quote 1
            • liv-in-sky
              liv-in-sky last edited by

              es gibt eine neue version

              neues format bei datumseingabe: folgendes ist möglich:

              • 9.4.2019 10:00
              • 9.4.2019
              • 9 May 2019 10:00 - (Monat 3 Buchstaben engl. Abkürzung)
              • 9 May 2019 - (Monat 3 Buchstaben engl. Abkürzung)

              zwischen datum und uhrzeit nur ein "leerzeichen"

              DatumCountdownScript.txt

              1 Reply Last reply Reply Quote 0
              • P
                pix last edited by pix

                Hallo,

                ist zwar schon zwei Monate alt, aber ich bin gerade auf einem Umweg auf diesen Thread gestossen. Habe eine ähnliche Lösung. Vielleicht will jemand das lieber so haben:

                Bildschirmfoto 2019-05-17 um 19.45.52.jpg

                /* Termin
                Skript zählt bis Termin runter
                http://www.sitepoint.com/build-javascript-countdown-timer-no-dependencies/
                
                Monate zu berechnen macht keinen Sinn, da Monate unterschiedliche Längen haben.
                Es müssten dann konkret die Monate, die vergehen werden addiert werden (Schaltjahre)
                
                26.01.2016 erstellt von Pix
                01.11.2018 Code optimiert anch erneutem Einbau in VIS
                */
                
                const instanz = "javascript.0";
                const logging = true;
                const fC = false;
                
                // ab hier nix mehr ändern
                
                const idTerminDatum =       instanz + ".Countdown.Termin.Datum",
                      idTerminDatumString = instanz + ".Countdown.Termin.Datum.String",
                      idTerminName =        instanz + ".Countdown.Termin.Name",
                      idTotal =             instanz + ".Countdown.Termin.Rest.Total",
                      idTage =              instanz + ".Countdown.Termin.Rest.Tage",
                      idWochen =            instanz + ".Countdown.Termin.Rest.Wochen",
                      idWochenRestTage =    instanz + ".Countdown.Termin.Rest.WochenResttage";
                
                createState(idTerminDatum, "9/4/2016", fC, {
                    name: "Termin Datum",
                    desc: "Datum des Termins (als Objekt)",
                    type: "string",
                    role: "date"
                });
                createState(idTerminDatumString, "3.12.2016", fC, {
                    name: "Termin Datum (als String)",
                    desc: "Datum des Termins als Zeichenkette",
                    type: "string",
                    role: "text"
                });
                createState(idTerminName, "Name des Termins", fC, {
                    name: "Termin Name",
                    desc: "Bezeichnung des Termins",
                    type: "string",
                    role : "text"
                });
                createState(idTotal, 0, fC, {
                    name: "Millisekunden bis zum Termin",
                    desc: "Restliche Millisekunden bis zum Datum des Termins",
                    type: "number",
                    unit: "ms",
                    role: "level"
                });
                createState(idTage, 0, fC, {
                    name: "Tage bis zum Termin",
                    desc: "Restliche Tage bis zum Datum des Termins",
                    type: "number",
                    unit: "Tage",
                    role: "level"
                });
                createState(idWochen, 0, fC, {
                    name: "Wochen bis zum Termin",
                    desc: "Restliche ganze Wochen bis zum Datum des Termins",
                    type: "number",
                    unit: "Wochen",
                    role: "level"
                });
                createState(idWochenRestTage, 0, fC, {
                    name: "Tage nach glatten Wochen bis zum Termin",
                    desc: "Restliche Tage bei mehreren Wochen bis zum Datum des Termins",
                    type: "number",
                    unit: "Tage",
                    role: "level"
                });
                
                
                let deadline;
                
                function getTimeRemaining(endtime){
                  let t = Date.parse(endtime) - Date.parse(new Date());
                  let seconds = Math.floor( (t/1000) % 60 );
                  let minutes = Math.floor( (t/1000/60) % 60 );
                  let hours = Math.floor( (t/(1000*60*60)) % 24 );
                  let days = Math.floor( t/(1000*60*60*24) );
                  let weeks = Math.floor( t/(1000*60*60*24*7) );
                  return {
                    "total": t,
                    "days": days,
                    "hours": hours,
                    "minutes": minutes,
                    "seconds": seconds,
                    "weeks" : weeks,
                    "weeks_days": days - (weeks*7)
                  };
                }
                
                function restzeit() {
                    if (!deadline) deadline = new Date(getState(idTerminDatum).val);
                    setState(idTerminDatumString, formatDate(deadline));
                    setState(idTage, getTimeRemaining(deadline).days);
                    setState(idWochen, getTimeRemaining(deadline).weeks);
                    setState(idTotal, getTimeRemaining(deadline).total);
                    setState(idWochenRestTage, getTimeRemaining(deadline).weeks_days);
                    if (logging) log(getTimeRemaining(deadline).days + " Resttage (" + getTimeRemaining(deadline).weeks + " Wochen) bis zum " + formatDate(deadline) + " (" + getState(idTerminName).val + ")"); 
                }
                
                // Mitternacht
                schedule("56 14 * * *", function() {
                    restzeit();
                });
                
                // Bei Terminänderung
                on(idTerminDatum, function (obj) {
                    deadline = new Date(obj.state.val);
                    restzeit();
                });
                
                // Scriptstart
                //restzeit();
                

                Datenpunkte:

                Bildschirmfoto 2019-05-17 um 19.48.59.jpg

                Gruß
                Pix

                liv-in-sky Chaot 2 Replies Last reply Reply Quote 0
                • liv-in-sky
                  liv-in-sky @pix last edited by liv-in-sky

                  @pix

                  hallo @pix - das ursprüngliche script ist von dir - ich habe es nur abgeändert

                  ist schon wieder eine zeit her aber ich glaube, ich habe den sommer winterzeit unterschied eingefügt

                  wie auch immer - in meinem script /erster post) steht noch dein name drin - hoffe das stört dich nicht

                  1 Reply Last reply Reply Quote 0
                  • P
                    pix last edited by

                    Oh, hab ich gar nicht gesehn 😄 Alles gut, schönes Wochenende

                    1 Reply Last reply Reply Quote 0
                    • Chaot
                      Chaot @pix last edited by

                      @pix Danke dir.
                      Hast du eventuell noch das Widget als Export?
                      Mir ist noch nicht ganz klar wo ich den Termin schreiben soll.
                      Wenn ich den string ändere wird nichts gezählt und was anderes kann ich scheinbar nicht verändern.

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

                        Lass mich mal bischen weiterspinnen:

                        Ich nehme aus dem Kalender die Geburtstage der Familienmitglieder (eigenen Kalender anlegen) und zähle dann bis zum nächsten Geburtstag.
                        Ist der Termin vorbei wird der nächste anstehende Termin genommen und gezählt.
                        Ist sowas umsetzbar?

                        P.S. Ich habe meinen Fehler gefunden.

                        liv-in-sky 1 Reply Last reply Reply Quote 0
                        • liv-in-sky
                          liv-in-sky @Chaot last edited by

                          @Chaot

                          ich weiß nicht , welches script du jetzt meinst - das von diesem thread oder ein anderes ?

                          aber egal - mit dem script hier wäre das sicher möglich, die schwierigkeit liegt beim auslesen eines z.b goolgle-kalender termins. dieses script hier braucht ein bestimmtes format im datumsfeld, dann fängt es an zu zählen

                          mit dem ical adapter gibt es vielleicht diese möglichkeit - es gibt das berühmte müll-script - da wird ja auch der termin für die nächste müllentleerung ausgelesen - allerdings weiß ich nicht, ob der ical-adapter ein jahr im voraus einlesen kann (z.b geburtstag)

                          vielleicht schau ich mir das morgen mal an, aber versprechen kann ich nichts

                          Chaot 1 Reply Last reply Reply Quote 0
                          • Chaot
                            Chaot @liv-in-sky last edited by

                            @liv-in-sky Der muss ja kein Jahr im Voraus lesen.
                            Im Grunde reicht ja nur der nächste kommende Termin.
                            Mit dem Müllkalender hast du mich da auf eine Idee gebracht. Das werde ich mir mal anschauen ob man daraus was verwenden kann.

                            liv-in-sky 3 Replies Last reply Reply Quote 0
                            • liv-in-sky
                              liv-in-sky @Chaot last edited by

                              @Chaot

                              schreib doch bitte zurück, wenn du da weiter bist - würd mich interessieren. ich wollte das schon die ganze zeit machen, weil ich einen wichtigen 6 wöchigen termin habe - bislang habe ich es immer mit hand eingetragen

                              1 Reply Last reply Reply Quote 0
                              • liv-in-sky
                                liv-in-sky last edited by liv-in-sky

                                @Chaot

                                habe es hinbekommen

                                ich habe eine neue ical instanz angelegt - in dieser den wert definiert, den ich suche z.b. "papier tonne" - wichtig: gleichzeitig habe ich einen filter gesetzt, der nur diesen wert (whitelist) findet. ich habe mal 30 tage als abruf eingestellt - das reicht mir - ical durchsucht die nächsten 30 tage nach einem bestimmten wort und setzt es auf true am tag 30.

                                noch habe ich etwas getrickst, da ich es nicht schaffe die whitelist zu filtern auf einen bestimmten wert - ich kann nur nach einer bestimmten "location" eine whitelist erzeugen - im googlekalender muss also auch die location angegeben werden, welche die selbe ist wie der kalender-eintrags-name ->muss ich noch herausfinden!)
                                gelöst - siehe nächster post

                                danach folgendes sript

                                Image 6.png

                                <xml xmlns="http://www.w3.org/1999/xhtml">
                                <variables>
                                <variable type="" id="AL5#nOqf?4Wh:eZKJq}A">i</variable>
                                </variables>
                                <block type="on" id="=KB95PW.H0QfBPFi4sV" x="-312" y="-137"> <field name="OID">ical.0.events.4.PAPIERTONNE</field> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="control" id="sx%sHW/kP.aF;tjby/~;"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Countdown.Termin.Datum</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="procedures_callcustomreturn" id="N;K:A$!9$8_uIv=#kGsc"> <mutation name="etwas tun"> <arg name="i"></arg> </mutation> <value name="ARG0"> <block type="convert_tostring" id="}NBT];(s+uXuO#z=FiD."> <value name="VALUE"> <block type="get_value" id="?}[v,-QV{dczpnW|a=qd"> <field name="ATTR">val</field> <field name="OID">ical.2.data.html</field> </block> </value> </block> </value> </block> </value> </block> </statement> <next> <block type="debug" id="*PNNpC{,BksSkZNIbFBW" disabled="true"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="Y[_%*fy%#h+;sK10#9,h"> <field name="TEXT">test</field> </shadow> <block type="procedures_callcustomreturn" id="ln}CUn[3gugT:ll=({bK"> <mutation name="etwas tun"> <arg name="i"></arg> </mutation> <value name="ARG0"> <block type="get_value" id="iqvW;DWJ96@lF}Dl@h`">
                                <field name="ATTR">val</field>
                                <field name="OID">ical.2.data.html</field>
                                </block>
                                </value>
                                </block>
                                </value>
                                </block>
                                </next>
                                </block>
                                <block type="procedures_defcustomreturn" id=".4jhH[;Isgq*k0Elo0tw" x="-88" y="-112">
                                <mutation statements="false">
                                <arg name="i" varid="AL5#nOqf?4Wh:eZKJq}A"></arg>
                                </mutation>
                                <field name="NAME">etwas tun</field>
                                <field name="SCRIPT">DQovL2NvbnNvbGUubG9nKGkpOw0KdmFyIHN0ciA9IGkucmVwbGFjZSgnPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogd2hpdGUiPjxzcGFuIGNsYXNzPSJpY2FsTm9ybWFsIGlDYWwtY2FsZW5kYXIxIj4nLCAnJyk7DQpzdHIgPSBzdHIuc3Vic3RyKDAsIDE2KTsNCg0KY29uc29sZS5sb2coc3RyKTsNCg0KDQpyZXR1cm4gc3RyOw==</field>
                                <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                </block>
                                </xml>

                                dieses script nutzt dann das script von diesem thread hier um es zu brerechnen und anzuzeigen

                                Image 7.png

                                weißt du wie man einen filter im ical adapter richtig macht ?
                                https://forum.iobroker.net/topic/22555/ical-adapter-whitelist-filter-ezeugen

                                1 Reply Last reply Reply Quote 0
                                • liv-in-sky
                                  liv-in-sky @Chaot last edited by

                                  @Chaot

                                  falls interesse
                                  whitelist filter in ical adapter geht so

                                  /^(SUMMARY:(?!Papiertonne).*)$/
                                  
                                  liv-in-sky 1 Reply Last reply Reply Quote 0
                                  • liv-in-sky
                                    liv-in-sky @liv-in-sky last edited by

                                    @liv-in-sky sagte in [gelöst] Einfacher Countdown in VIS von festem Datum gesucht:

                                    @Chaot

                                    falls interesse
                                    whitelist filter in ical adapter geht so

                                    /^(SUMMARY:(?!Papiertonne).*)$/
                                    

                                    SORRY WAR ZU VORSCHNELL - geht nicht !!

                                    1 Reply Last reply Reply Quote 0
                                    • liv-in-sky
                                      liv-in-sky @Chaot last edited by

                                      @Chaot

                                      siehe hier:https://forum.iobroker.net/topic/22574/vorlage-zeit-herunterzählen-bis-googletermin-eintritt

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

                                        Falls wer interesse hat, ich habe hierfür einen Adapter programmiert. Ist erst noch in der Testphase, aber ich wäre sehr gespannt über euer Feedback. Link zum Post

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        925
                                        Online

                                        31.8k
                                        Users

                                        80.0k
                                        Topics

                                        1.3m
                                        Posts

                                        javascript
                                        6
                                        72
                                        6112
                                        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