Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] Einfacher Countdown in VIS von festem Datum gesucht

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.6k

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

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
72 Beiträge 6 Kommentatoren 9.2k Aufrufe 9 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • liv-in-skyL liv-in-sky

    bitte nutze dieses file

    // Termin Skript zählt bis Termin runter erstellt: 26.01.2016 von Pix
    // weiterverarbeitet 26-2-2019 von liv-in-sky
    var instanz = 'javascript.0'; var logging = false;
    // ab hier nix mehr ändern
    createState('Countdown.Termin.Datum', '9/4/2019', { name: 'Termin Datum', desc: 'Datum des Termins (als Objekt)', type: 'string' });
    createState('Countdown.Termin.Datum.String', '3.12.2019', { name: 'Termin Datum (als String)', desc: 'Datum des Termins als Zeichenkette', type: 'string' });
    createState('Countdown.Termin.Name', 'Name des Termins', { name: 'Termin Name', desc: 'Bezeichnung des Termins', type: 'string' });
    createState('Countdown.Termin.Rest.TotalText', 'Termingesamt', { name: 'TotalText', desc: 'TotalText', type: 'string' });
    createState('Countdown.Termin.Rest.Total', { name: 'Millisekunden bis zum Termin', desc: 'Restliche Millisekunden bis zum Datum des Termins', type: 'number', unit: 'ms' });
    createState('Countdown.Termin.Rest.Tage', { name: 'Tage bis zum Termin', desc: 'Restliche Tage bis zum Datum des Termins', type: 'number', unit: 'Tage' });
    createState('Countdown.Termin.Rest.Minuten', { name: 'Minuten bis zum Termin', desc: 'Restliche Tage bis zum Datum des Termins', type: 'number', unit: 'Minuten' });
    createState('Countdown.Termin.Rest.Stunden', { name: 'Stunden bis zum Termin', desc: 'Restliche Tage bis zum Datum des Termins', type: 'number', unit: 'Stunden' });
    createState('Countdown.Termin.Rest.Wochen', { name: 'Wochen bis zum Termin', desc: 'Restliche Wochen bis zum Datum des Termins', type: 'number', unit: 'Wochen' });
    createState('Countdown.Termin.Rest.Alarm', { name: 'Alarm', desc: 'Alarm bis zum Datum des Termins', type: 'boolean' });
    createState('Countdown.Termin.Rest.Fertig', { name: 'Fertig', desc: 'Fertig', type: 'boolean' });
    var idFertig = instanz + '.Countdown.Termin.Rest.Fertig', idAlarm = instanz + '.Countdown.Termin.Rest.Alarm', idStunden = instanz + '.Countdown.Termin.Rest.Stunden', idMinuten = instanz + '.Countdown.Termin.Rest.Minuten', idTotalText = instanz + '.Countdown.Termin.Rest.TotalText', 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';
    var deadline;

    function getTimeRemaining(endtime) {

    var virttime = new Date();

    var virt2time=formatDate(virttime);
    var t = Date.parse(endtime) - Date.parse(virttime);

    if (virttime.getTimezoneOffset() == -60 && virttime.getTimezoneOffset() == -120 ){t=t+3600000};
    if (virttime.getTimezoneOffset() == -120 && virttime.getTimezoneOffset() == -60 ){t=t-3600000};
    var seconds = Math.floor( (t/1000) % 60 );
    var minutes = Math.floor( (t/1000/60) % 60 );
    var hours = Math.floor( (t/(10006060)) % 24 );
    var days = Math.floor( t/(1000606024) );
    var weeks = Math.floor( t/(1000
    606024*7) );
    return { 'total': t, 'days': days, 'hours': hours, 'minutes': minutes, 'seconds': seconds, 'weeks' : weeks };

    }
    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(idMinuten, getTimeRemaining(deadline).minutes);
    setState(idStunden, getTimeRemaining(deadline).hours);
    //log(deadline.getTimezoneOffset());

    setState(idTotalText, getTimeRemaining(deadline).days.toString() + " Tag(e) " +getTimeRemaining(deadline).hours.toString() + " Stunde(n) " + getTimeRemaining(deadline).minutes.toString() + " Minute(n) ");
    setTimeout(function () { //The timer

    if ( getState(idTage).val == 0 && getState(idStunden).val <= 4 ){setState(idAlarm, true) ;} else {setState(idAlarm, false); } //
    }, 2000);
    setTimeout(function () { //The timer
    if ( getState(idTage).val == 0 && getState(idStunden).val == 0 && getState(idMinuten).val <= 0 ){setState(idFertig, true) ;setState(idTerminName, "FERTIG");setState(idTerminDatum, "FERTIG");} else {setState(idFertig, false); } //
    }, 3000);
    if (logging) log(getTimeRemaining(deadline).days + ' Resttage (' + getTimeRemaining(deadline).weeks + ' Wochen) bis zum ' + formatDate(deadline) + ' (' + getState(idTerminName).val + ')'); }
    // Mitternacht

    schedule('*/1 * * * *', function() { restzeit(); });
    //bei Restart
    var datecounter = getState("javascript.0.Countdown.Termin.Datum").val;
    if (getState("javascript.0.Countdown.Termin.Datum").val != "") {
    setStateDelayed("javascript.0.Countdown.Termin.Datum", datecounter, 2000, false);}
    // Bei Terminänderung
    on({id: 'javascript.0.Countdown.Termin.Datum', change: 'any'}, function (obj) { deadline = new Date(obj.state.val); restzeit();/log("jetzt gestartet");/ });
    //on(idTerminDatum, function (obj ) { deadline = new Date(obj.state.val); restzeit(); });

    // Scriptstart

    das forum verändert die sterne im script !!!

    @mehrwiedu - könntest du bitte dieses file unter spoiler in den ersten post kopieren - habe alle sterne entfernt

    @Jey-Cee hallo jeycee - ist dieser fehler bekannt - wenn man als kommentar in einem javascript ein -stern-schrägstrich- verwendet, gibt es probleme beim kopieren

    C Offline
    C Offline
    Camuri
    schrieb am zuletzt editiert von
    #43

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

    bitte nutze dieses file

    // Termin Skript zählt bis Termin runter erstellt: 26.01.2016 von Pix
    // weiterverarbeitet 26-2-2019 von liv-in-sky
    var instanz = 'javascript.0'; var logging = false;
    // ab hier nix mehr ändern
    createState('Countdown.Termin.Datum', '9/4/2019', { name: 'Termin Datum', desc: 'Datum des Termins (als Objekt)', type: 'string' });
    createState('Countdown.Termin.Datum.String', '3.12.2019', { name: 'Termin Datum (als String)', desc: 'Datum des Termins als Zeichenkette', type: 'string' });
    createState('Countdown.Termin.Name', 'Name des Termins', { name: 'Termin Name', desc: 'Bezeichnung des Termins', type: 'string' });
    createState('Countdown.Termin.Rest.TotalText', 'Termingesamt', { name: 'TotalText', desc: 'TotalText', type: 'string' });
    createState('Countdown.Termin.Rest.Total', { name: 'Millisekunden bis zum Termin', desc: 'Restliche Millisekunden bis zum Datum des Termins', type: 'number', unit: 'ms' });
    createState('Countdown.Termin.Rest.Tage', { name: 'Tage bis zum Termin', desc: 'Restliche Tage bis zum Datum des Termins', type: 'number', unit: 'Tage' });
    createState('Countdown.Termin.Rest.Minuten', { name: 'Minuten bis zum Termin', desc: 'Restliche Tage bis zum Datum des Termins', type: 'number', unit: 'Minuten' });
    createState('Countdown.Termin.Rest.Stunden', { name: 'Stunden bis zum Termin', desc: 'Restliche Tage bis zum Datum des Termins', type: 'number', unit: 'Stunden' });
    createState('Countdown.Termin.Rest.Wochen', { name: 'Wochen bis zum Termin', desc: 'Restliche Wochen bis zum Datum des Termins', type: 'number', unit: 'Wochen' });
    createState('Countdown.Termin.Rest.Alarm', { name: 'Alarm', desc: 'Alarm bis zum Datum des Termins', type: 'boolean' });
    createState('Countdown.Termin.Rest.Fertig', { name: 'Fertig', desc: 'Fertig', type: 'boolean' });
    var idFertig = instanz + '.Countdown.Termin.Rest.Fertig', idAlarm = instanz + '.Countdown.Termin.Rest.Alarm', idStunden = instanz + '.Countdown.Termin.Rest.Stunden', idMinuten = instanz + '.Countdown.Termin.Rest.Minuten', idTotalText = instanz + '.Countdown.Termin.Rest.TotalText', 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';
    var deadline;

    function getTimeRemaining(endtime) {

    var virttime = new Date();

    var virt2time=formatDate(virttime);
    var t = Date.parse(endtime) - Date.parse(virttime);

    if (virttime.getTimezoneOffset() == -60 && virttime.getTimezoneOffset() == -120 ){t=t+3600000};
    if (virttime.getTimezoneOffset() == -120 && virttime.getTimezoneOffset() == -60 ){t=t-3600000};
    var seconds = Math.floor( (t/1000) % 60 );
    var minutes = Math.floor( (t/1000/60) % 60 );
    var hours = Math.floor( (t/(10006060)) % 24 );
    var days = Math.floor( t/(1000606024) );
    var weeks = Math.floor( t/(1000
    606024*7) );
    return { 'total': t, 'days': days, 'hours': hours, 'minutes': minutes, 'seconds': seconds, 'weeks' : weeks };

    }
    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(idMinuten, getTimeRemaining(deadline).minutes);
    setState(idStunden, getTimeRemaining(deadline).hours);
    //log(deadline.getTimezoneOffset());

    setState(idTotalText, getTimeRemaining(deadline).days.toString() + " Tag(e) " +getTimeRemaining(deadline).hours.toString() + " Stunde(n) " + getTimeRemaining(deadline).minutes.toString() + " Minute(n) ");
    setTimeout(function () { //The timer

    if ( getState(idTage).val == 0 && getState(idStunden).val <= 4 ){setState(idAlarm, true) ;} else {setState(idAlarm, false); } //
    }, 2000);
    setTimeout(function () { //The timer
    if ( getState(idTage).val == 0 && getState(idStunden).val == 0 && getState(idMinuten).val <= 0 ){setState(idFertig, true) ;setState(idTerminName, "FERTIG");setState(idTerminDatum, "FERTIG");} else {setState(idFertig, false); } //
    }, 3000);
    if (logging) log(getTimeRemaining(deadline).days + ' Resttage (' + getTimeRemaining(deadline).weeks + ' Wochen) bis zum ' + formatDate(deadline) + ' (' + getState(idTerminName).val + ')'); }
    // Mitternacht

    schedule('*/1 * * * *', function() { restzeit(); });
    //bei Restart
    var datecounter = getState("javascript.0.Countdown.Termin.Datum").val;
    if (getState("javascript.0.Countdown.Termin.Datum").val != "") {
    setStateDelayed("javascript.0.Countdown.Termin.Datum", datecounter, 2000, false);}
    // Bei Terminänderung
    on({id: 'javascript.0.Countdown.Termin.Datum', change: 'any'}, function (obj) { deadline = new Date(obj.state.val); restzeit();/log("jetzt gestartet");/ });
    //on(idTerminDatum, function (obj ) { deadline = new Date(obj.state.val); restzeit(); });

    // Scriptstart

    das forum verändert die sterne im script !!!

    @mehrwiedu - könntest du bitte dieses file unter spoiler in den ersten post kopieren - habe alle sterne entfernt

    @Jey-Cee hallo jeycee - ist dieser fehler bekannt - wenn man als kommentar in einem javascript ein -stern-schrägstrich- verwendet, gibt es probleme beim kopieren

    Funktioniert muss ich jetzt mein Datum unter den Datenpunkten eintragen?

    1 Antwort Letzte Antwort
    0
    • liv-in-skyL Offline
      liv-in-skyL Offline
      liv-in-sky
      schrieb am zuletzt editiert von liv-in-sky
      #44

      @Camuri

      bei mir sieht es in der vis so aus

      Image 9.png

      das datum muss genau so geschrieben werden

      TAG - 3 Buchstaben Monat (engl. abkürzung!!) - jahr - uhrzeit (nicht pflicht!!!)
      (beispiel Dec,Nov, Mar, Oct)

      das ist der datenpunkt:

      Image 11.png

      auch der name ist nicht pflicht !!!

      zum ausprobieren in der vis kannst du dieses widget in deine vis importieren:

      [{"tpl":"tplFrame","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":true,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","title":"","title_color":"black","title_top":"-10","title_left":"15","header_height":"0","header_color":"black","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0},"style":{"left":"110px","top":"490px","background-color":"#180c0c","width":"459px","height":"46px","border-radius":"15px","z-index":"0"},"widgetSet":"basic"},{"tpl":"tplValueString","data":{"oid":"javascript.0.Countdown.Termin.Rest.Tage","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0},"style":{"left":"294px","top":"493px","width":"59px","height":"35px","font-weight":"bold","font-size":"xx-large","color":"#72f769","z-index":"15","text-align":"right"},"widgetSet":"basic"},{"tpl":"tplValueString","data":{"oid":"javascript.0.Countdown.Termin.Rest.Stunden","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0},"style":{"left":"364px","top":"493px","width":"46px","height":"38px","font-weight":"bold","font-size":"xx-large","color":"#2cc33a","text-align":"right"},"widgetSet":"basic"},{"tpl":"tplValueString","data":{"oid":"javascript.0.Countdown.Termin.Rest.Minuten","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0},"style":{"left":"419px","top":"493px","width":"49px","height":"39px","font-weight":"bold","font-size":"xx-large","color":"#13771c","text-align":"right"},"widgetSet":"basic"},{"tpl":"tplJquiInput","data":{"oid":"javascript.0.Countdown.Termin.Datum","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","label":"","digits":"0","size":"22","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"asString":true},"style":{"left":"125px","top":"500px","color":"#998f8f","width":"150px","height":"33px","background-color":"#180c0c","z-index":"15","text-align":"center","font-weight":"bold","font-size":"smaller"},"widgetSet":"jqui"},{"tpl":"tplJquiInput","data":{"oid":"javascript.0.Countdown.Termin.Name","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","label":"","digits":"0","size":"22","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"asString":true},"style":{"left":"477px","top":"500px","color":"#998f8f","width":"75px","height":"33px","background-color":"#180c0c","z-index":"15","font-weight":"bold","font-size":"smaller","text-align":"center"},"widgetSet":"jqui"},{"tpl":"tplValueList","data":{"oid":"nothing_selected","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_prepend":"<b>Day</b>"},"style":{"left":"330px","top":"523px","font-size":"small","width":"29px","height":"23px","font-style":"normal","font-family":""Lucida Sans Unicode", "Lucida Grande", sans-serif","z-index":1,"color":"#c2cbc3","line-height":"1.2"},"widgetSet":"basic"},{"tpl":"tplValueList","data":{"oid":"nothing_selected","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_prepend":"<b>Hour</b>"},"style":{"left":"383px","top":"522px","font-size":"small","width":"44px","height":"24px","font-style":"normal","font-family":""Lucida Sans Unicode", "Lucida Grande", sans-serif","z-index":1,"color":"#c2cbc3","line-height":"1.2"},"widgetSet":"basic"},{"tpl":"tplValueList","data":{"oid":"nothing_selected","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_prepend":"<b>Min</b>"},"style":{"left":"440px","top":"522px","font-size":"small","width":"29px","height":"23px","font-style":"normal","font-family":""Lucida Sans Unicode", "Lucida Grande", sans-serif","z-index":1,"color":"#c2cbc3","line-height":"1.2"},"widgetSet":"basic"}]

      nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

      1 Antwort Letzte Antwort
      1
      • liv-in-skyL liv-in-sky

        bitte nutze dieses file

        // Termin Skript zählt bis Termin runter erstellt: 26.01.2016 von Pix
        // weiterverarbeitet 26-2-2019 von liv-in-sky
        var instanz = 'javascript.0'; var logging = false;
        // ab hier nix mehr ändern
        createState('Countdown.Termin.Datum', '9/4/2019', { name: 'Termin Datum', desc: 'Datum des Termins (als Objekt)', type: 'string' });
        createState('Countdown.Termin.Datum.String', '3.12.2019', { name: 'Termin Datum (als String)', desc: 'Datum des Termins als Zeichenkette', type: 'string' });
        createState('Countdown.Termin.Name', 'Name des Termins', { name: 'Termin Name', desc: 'Bezeichnung des Termins', type: 'string' });
        createState('Countdown.Termin.Rest.TotalText', 'Termingesamt', { name: 'TotalText', desc: 'TotalText', type: 'string' });
        createState('Countdown.Termin.Rest.Total', { name: 'Millisekunden bis zum Termin', desc: 'Restliche Millisekunden bis zum Datum des Termins', type: 'number', unit: 'ms' });
        createState('Countdown.Termin.Rest.Tage', { name: 'Tage bis zum Termin', desc: 'Restliche Tage bis zum Datum des Termins', type: 'number', unit: 'Tage' });
        createState('Countdown.Termin.Rest.Minuten', { name: 'Minuten bis zum Termin', desc: 'Restliche Tage bis zum Datum des Termins', type: 'number', unit: 'Minuten' });
        createState('Countdown.Termin.Rest.Stunden', { name: 'Stunden bis zum Termin', desc: 'Restliche Tage bis zum Datum des Termins', type: 'number', unit: 'Stunden' });
        createState('Countdown.Termin.Rest.Wochen', { name: 'Wochen bis zum Termin', desc: 'Restliche Wochen bis zum Datum des Termins', type: 'number', unit: 'Wochen' });
        createState('Countdown.Termin.Rest.Alarm', { name: 'Alarm', desc: 'Alarm bis zum Datum des Termins', type: 'boolean' });
        createState('Countdown.Termin.Rest.Fertig', { name: 'Fertig', desc: 'Fertig', type: 'boolean' });
        var idFertig = instanz + '.Countdown.Termin.Rest.Fertig', idAlarm = instanz + '.Countdown.Termin.Rest.Alarm', idStunden = instanz + '.Countdown.Termin.Rest.Stunden', idMinuten = instanz + '.Countdown.Termin.Rest.Minuten', idTotalText = instanz + '.Countdown.Termin.Rest.TotalText', 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';
        var deadline;

        function getTimeRemaining(endtime) {

        var virttime = new Date();

        var virt2time=formatDate(virttime);
        var t = Date.parse(endtime) - Date.parse(virttime);

        if (virttime.getTimezoneOffset() == -60 && virttime.getTimezoneOffset() == -120 ){t=t+3600000};
        if (virttime.getTimezoneOffset() == -120 && virttime.getTimezoneOffset() == -60 ){t=t-3600000};
        var seconds = Math.floor( (t/1000) % 60 );
        var minutes = Math.floor( (t/1000/60) % 60 );
        var hours = Math.floor( (t/(10006060)) % 24 );
        var days = Math.floor( t/(1000606024) );
        var weeks = Math.floor( t/(1000
        606024*7) );
        return { 'total': t, 'days': days, 'hours': hours, 'minutes': minutes, 'seconds': seconds, 'weeks' : weeks };

        }
        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(idMinuten, getTimeRemaining(deadline).minutes);
        setState(idStunden, getTimeRemaining(deadline).hours);
        //log(deadline.getTimezoneOffset());

        setState(idTotalText, getTimeRemaining(deadline).days.toString() + " Tag(e) " +getTimeRemaining(deadline).hours.toString() + " Stunde(n) " + getTimeRemaining(deadline).minutes.toString() + " Minute(n) ");
        setTimeout(function () { //The timer

        if ( getState(idTage).val == 0 && getState(idStunden).val <= 4 ){setState(idAlarm, true) ;} else {setState(idAlarm, false); } //
        }, 2000);
        setTimeout(function () { //The timer
        if ( getState(idTage).val == 0 && getState(idStunden).val == 0 && getState(idMinuten).val <= 0 ){setState(idFertig, true) ;setState(idTerminName, "FERTIG");setState(idTerminDatum, "FERTIG");} else {setState(idFertig, false); } //
        }, 3000);
        if (logging) log(getTimeRemaining(deadline).days + ' Resttage (' + getTimeRemaining(deadline).weeks + ' Wochen) bis zum ' + formatDate(deadline) + ' (' + getState(idTerminName).val + ')'); }
        // Mitternacht

        schedule('*/1 * * * *', function() { restzeit(); });
        //bei Restart
        var datecounter = getState("javascript.0.Countdown.Termin.Datum").val;
        if (getState("javascript.0.Countdown.Termin.Datum").val != "") {
        setStateDelayed("javascript.0.Countdown.Termin.Datum", datecounter, 2000, false);}
        // Bei Terminänderung
        on({id: 'javascript.0.Countdown.Termin.Datum', change: 'any'}, function (obj) { deadline = new Date(obj.state.val); restzeit();/log("jetzt gestartet");/ });
        //on(idTerminDatum, function (obj ) { deadline = new Date(obj.state.val); restzeit(); });

        // Scriptstart

        das forum verändert die sterne im script !!!

        @mehrwiedu - könntest du bitte dieses file unter spoiler in den ersten post kopieren - habe alle sterne entfernt

        @Jey-Cee hallo jeycee - ist dieser fehler bekannt - wenn man als kommentar in einem javascript ein -stern-schrägstrich- verwendet, gibt es probleme beim kopieren

        M Offline
        M Offline
        mehrwiedu
        schrieb am zuletzt editiert von
        #45

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

        @mehrwiedu - könntest du bitte dieses file unter spoiler in den ersten post kopieren - habe alle sterne entfernt

        Habe ich oben eingefügt und auch den Code-Tag erstmal entfernt.

        liv-in-skyL 1 Antwort Letzte Antwort
        0
        • M mehrwiedu

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

          @mehrwiedu - könntest du bitte dieses file unter spoiler in den ersten post kopieren - habe alle sterne entfernt

          Habe ich oben eingefügt und auch den Code-Tag erstmal entfernt.

          liv-in-skyL Offline
          liv-in-skyL Offline
          liv-in-sky
          schrieb am zuletzt editiert von
          #46

          @mehrwiedu vielen dank

          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

          1 Antwort Letzte Antwort
          0
          • C Offline
            C Offline
            Camuri
            schrieb am zuletzt editiert von
            #47

            Irgendwas läuft da noch falsch :D in 12 Tagen ist schon der 10.8.2019

            46314642b30bd6a09679b1c1bcf5c79c.png

            liv-in-skyL 2 Antworten Letzte Antwort
            0
            • C Camuri

              Irgendwas läuft da noch falsch :D in 12 Tagen ist schon der 10.8.2019

              46314642b30bd6a09679b1c1bcf5c79c.png

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              schrieb am zuletzt editiert von
              #48

              @Camuri

              du machst es einem aber auch nicht einfach ! :-)

              bei mir sieht es so aus

              Image 12.png

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              C 1 Antwort Letzte Antwort
              0
              • liv-in-skyL liv-in-sky

                @Camuri

                du machst es einem aber auch nicht einfach ! :-)

                bei mir sieht es so aus

                Image 12.png

                C Offline
                C Offline
                Camuri
                schrieb am zuletzt editiert von
                #49

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

                @Camuri

                du machst es einem aber auch nicht einfach ! :-)

                bei mir sieht es so aus

                Image 12.png

                Woher bekommt er denn Uhrzeit und Datum was wir aktuell haben? Wenn ich das Datum von morgen eintrage zeigt er mir 1 Stunde und 10 Minuten an

                1 Antwort Letzte Antwort
                0
                • C Camuri

                  Irgendwas läuft da noch falsch :D in 12 Tagen ist schon der 10.8.2019

                  46314642b30bd6a09679b1c1bcf5c79c.png

                  liv-in-skyL Offline
                  liv-in-skyL Offline
                  liv-in-sky
                  schrieb am zuletzt editiert von
                  #50

                  @Camuri

                  die uhrzeit / datum deines iobrokers sollte wohl stimmen ?

                  terminal öffnen und date eingeben
                  Image 13.png

                  nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                  C 1 Antwort Letzte Antwort
                  0
                  • liv-in-skyL liv-in-sky

                    @Camuri

                    die uhrzeit / datum deines iobrokers sollte wohl stimmen ?

                    terminal öffnen und date eingeben
                    Image 13.png

                    C Offline
                    C Offline
                    Camuri
                    schrieb am zuletzt editiert von
                    #51

                    ja da passt alles :/

                    1 Antwort Letzte Antwort
                    0
                    • C Offline
                      C Offline
                      Camuri
                      schrieb am zuletzt editiert von
                      #52

                      habs jetzt auf einem anderen iobroker System probiert das Skript da zeigt es auch 12 Tage an

                      liv-in-skyL 1 Antwort Letzte Antwort
                      0
                      • C Camuri

                        habs jetzt auf einem anderen iobroker System probiert das Skript da zeigt es auch 12 Tage an

                        liv-in-skyL Offline
                        liv-in-skyL Offline
                        liv-in-sky
                        schrieb am zuletzt editiert von
                        #53

                        @Camuri

                        ich habe im moment keine idee ?

                        • hast du in den einstellungen vom admin das datum DD.MM.YYYY?
                        • lebst du auf dem mars oder einen anderen planeten ?
                        • bei dir müßte ja der 29 juli oder so sein ?
                        • was kommt den am: 8 Oct 2019 raus ?

                        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                        C 1 Antwort Letzte Antwort
                        0
                        • liv-in-skyL liv-in-sky

                          @Camuri

                          ich habe im moment keine idee ?

                          • hast du in den einstellungen vom admin das datum DD.MM.YYYY?
                          • lebst du auf dem mars oder einen anderen planeten ?
                          • bei dir müßte ja der 29 juli oder so sein ?
                          • was kommt den am: 8 Oct 2019 raus ?
                          C Offline
                          C Offline
                          Camuri
                          schrieb am zuletzt editiert von
                          #54

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

                          @Camuri

                          ich habe im moment keine idee ?

                          • hast du in den einstellungen vom admin das datum DD.MM.YYYY?
                          • lebst du auf dem mars oder einen anderen planeten ?
                          • bei dir müßte ja der 29 juli oder so sein ?
                          • was kommt den am: 8 Oct 2019 raus ?
                          1. Admin hat bei beiden Iorbokern DD.MM.YYYY
                          2. ich lebe auf der Erde :D
                          3. das ist gut möglich
                          4. 17 Tag(e) 4 Stunde(n) 33 Minute(n)

                          wenn ich den 15.03.2020 eingebe kommt bei beiden Iobroker 31 Tag(e) 9 Stunde(n) 32 Minute(n)

                          hast du vll beim Sterne rausmachen irgendwas verändert?

                          1 Antwort Letzte Antwort
                          0
                          • liv-in-skyL Offline
                            liv-in-skyL Offline
                            liv-in-sky
                            schrieb am zuletzt editiert von
                            #55

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

                            nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                            1 Antwort Letzte Antwort
                            0
                            • liv-in-skyL Offline
                              liv-in-skyL Offline
                              liv-in-sky
                              schrieb am zuletzt editiert von
                              #56

                              @Camuri gehts damit

                              script-im-txt.txt

                              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                              C 1 Antwort Letzte Antwort
                              0
                              • liv-in-skyL liv-in-sky

                                @Camuri gehts damit

                                script-im-txt.txt

                                C Offline
                                C Offline
                                Camuri
                                schrieb am zuletzt editiert von
                                #57

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

                                @Camuri gehts damit

                                script-im-txt.txt

                                Funktioniert danke :D

                                42e236de282e9249738bb68fd9f9c9db.png

                                1 Antwort Letzte Antwort
                                0
                                • liv-in-skyL Offline
                                  liv-in-skyL Offline
                                  liv-in-sky
                                  schrieb am zuletzt editiert von
                                  #58

                                  1445small--robots-winzig.png

                                  yeah

                                  sorry - was ein blöder fehler

                                  nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                                  1 Antwort Letzte Antwort
                                  1
                                  • liv-in-skyL Offline
                                    liv-in-skyL Offline
                                    liv-in-sky
                                    schrieb am zuletzt editiert von
                                    #59

                                    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

                                    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                                    1 Antwort Letzte Antwort
                                    0
                                    • P Offline
                                      P Offline
                                      pix
                                      schrieb am zuletzt editiert von pix
                                      #60

                                      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

                                      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                                      liv-in-skyL ChaotC 2 Antworten Letzte Antwort
                                      0
                                      • P 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-skyL Offline
                                        liv-in-skyL Offline
                                        liv-in-sky
                                        schrieb am zuletzt editiert von liv-in-sky
                                        #61

                                        @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

                                        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                                        1 Antwort Letzte Antwort
                                        0
                                        • P Offline
                                          P Offline
                                          pix
                                          schrieb am zuletzt editiert von
                                          #62

                                          Oh, hab ich gar nicht gesehn :-D Alles gut, schönes Wochenende

                                          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          706

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe