- Home
- Deutsch
- Visualisierung
- Binding: Wenn heute = Wochentag (x), dann Farbe...
Binding: Wenn heute = Wochentag (x), dann Farbe...
-
Hi zusammen,
ich habe für meine Jungs einen einfachen Stundenplan erstellt. Jeder Tag hat einen grauen Rahmen. Nun würde ich gerne den jeweils heutigen Tag visuell eindeutig darstellen.Also wenn heute z.B. Dienstag ist, dann den Rahmen von Dienstag z.B. gelb, alle anderen bleiben grau. Ist das möglich?
Da müsste man ja irgendwie auf den wert des heutigen Tages kommen, doch wie? -
würde dann zb. so aussehen .
hier das Widget , damit du sehen kannst wie es funktioniert
im Feld CSS Ränder ist ein Binding .
[{"tpl":"tplValueFloat","data":{"oid":"sourceanalytix.0.b-control-em__0__Teridian_Total_Kanal__Wirkenergie_Bezug.consumption.current_year.this_week.06_Saturday","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"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","is_comma":false,"factor":"1","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_append_singular":"","html_append_plural":" kWh","html_prepend":"Samstag : ","is_tdp":false,"digits":""},"style":{"left":"312px","top":"636px","width":"280px","height":"18px","background-color":"#4a5049","text-align":"center","z-index":"2","background":"#4a5049","border-width":"3px","border-style":"solid","border-color":"{b:javascript.0.Kalender.Datuminfo.de.Tag.Woche.Nummer;b==\"6\" ? \"#57931b\" : \"transparent\"}","font-family":"Jura-DemiBold"},"widgetSet":"basic"}]
hier ein kleines Script dazu :
/* System Datuminfo Skript erzeugt Variablen für Datum, Tag, Monat, Jahr, KW, Quartal KW1 = 1. Donnerstag im Jahr 1. Wochentag ist Montag Feiertage aus Adapter iobroker.feiertage 25.02.2016 erstellt von pix 28.04.2016 Prüft ob KW gerade oder ungerade Wochentag als Zahl (deutsches System: Mo = 1, So = 7) 28.05.2016 parseFloat bei toFixed-Werten zugefügt (nach Variablen Typ Warnung) Variablen Typ einiger Objekte geändert 30.09.2018 Optimierung im Code todo Adapter: Grundunterscheidung im Objektbaum: Deutsch (de)/Englisch (en) Jahreszeiten Beispieldatum Donnerstag, 28. Apil 2016 */ const path = "javascript." + instance + ".Kalender.Datuminfo.de"; // Pfad zu Objekten im javascript-Adapter const fC = false; // Objekte neu erstellen? const logging = false; const dezimals = 1; // Dezimalstellen Anteilausgabe const monthNameLong = ["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]; const monthNameShort = ["Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]; const dayWeekNameLong = ["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"]; // So 1 und 7 const dayWeekNameShort = ["So","Mo","Di","Mi","Don","Fr","Sa","So"]; // ++++++++++ Objekte // Adapter feiertage installiert? const feiertag = true; // Schalter Feiertag-Adapter nutzen oder nicht const idHolidayToday = "feiertage.0.heute.boolean"/*Feiertag heute?*/; const idHolidayTodayName = "feiertage.0.heute.Name"/*Feiertag heute - Name*/; // AB HIER NIX MEHR EINSTELLEN // Jahr /* Jahr datuminfo.0.de.jahr.nummer (2016) datuminfo.0.de.jahr.schaltjahr (true) */ const idYear = path + ".Jahr.Zahl"; const idYearLeap = path + ".Jahr.Schaltjahr"; createState(idYear, 0, fC, { name: "Kalender - Jahreszahl", type: "number", role: "value" }); createState(idYearLeap, false, fC, { name: "Kalender - Schaltjahr", type: "boolean", role: "indicator" }); // Quartal const idQuart = path + ".Quartal.Nummer"; const idQuartEven = path + ".Quartal.gerade"; const idQuartPastCount = path + ".Quartal.Vergangenheit.Anzahl"; const idQuartPastShare = path + ".Quartal.Vergangenheit.Anteil"; const idQuartFutureCount = path + ".Quartal.Zukunft.Anzahl"; const idQuartFutureShare = path + ".Quartal.Zukunft.Anteil"; createState(idQuart, 1, fC, { name: "Kalender - Quartal - Nummer", type: "number", min: 1, max: 4, role: "level" }); createState(idQuartEven, { name: "Kalender - Quartal - gerade", type: "boolean", role: "indicator" }); createState(idQuartPastCount, 0, fC, { name: "Kalender - Quartal - Anzahl vergangene Quartale im Jahr", type: "number", min: 0, max: 3, role: "level" }); createState(idQuartPastShare, 0, fC, { name: "Kalender - Quartal - Anteil vergangene Quartale im Jahr", type: "number", unit: "%", role: "level", min: 0, max: 100 }); createState(idQuartFutureCount, 0, fC, { name: "Kalender - Quartal - Anzahl kommender Quartale im Jahr", type: "number", min: 0, max: 3, role: "level" }); createState(idQuartFutureShare, 0, fC, { name: "Kalender - Quartal - Anteil kommender Quartale im Jahr", type: "number", unit: "%", role: "level", min: 0, max: 100 }); /* Monat datuminfo.0.de.monat.name.lang (April) datuminfo.0.de.monat.name.kurz (April) datuminfo.0.de.monat.nummer.deutsch.nummer (4) datuminfo.0.de.monat.nummer.deutsch.gerade (true) datuminfo.0.de.monat.nummer.deutsch.ungerade (false) datuminfo.0.de.monat.nummer.system.nummer (5) datuminfo.0.de.monat.nummer.system.gerade (false) datuminfo.0.de.monat.nummer.system.ungerade (true) datuminfo.0.de.monat.jahr.nummer (4) // deutsch datuminfo.0.de.monat.jahr.anzahl (12) datuminfo.0.de.monat.jahr.vergangenheit.anzahl (4) datuminfo.0.de.monat.jahr.vergangenheit.Anteil (4 von 12) (4*100)/12 datuminfo.0.de.monat.jahr.zukunft.anzahl (8) datuminfo.0.de.monat.jahr.zukunft.Anteil (8 von 12) (8*100)/12 */ const idMonthNameShort = path + ".Monat.Name.kurz"; const idMonthNameLong = path + ".Monat.Name.lang"; const idMonthNumberCount = path + ".Monat.Nummer.Nummer"; const idMonthNumberEven = path + ".Monat.Nummer.gerade"; const idMonthYearCount = path + ".Monat.Jahr.Anzahl"; // steht fest const idMonthYearPastCount = path + ".Monat.Jahr.Vergangenheit.Anzahl"; const idMonthYearPastShare = path + ".Monat.Jahr.Vergangenheit.Anteil"; const idMonthYearFutureCount = path + ".Monat.Jahr.Zukunft.Anzahl"; const idMonthYearFutureShare = path + ".Monat.Jahr.Zukunft.Anteil"; createState(idMonthNameShort, "", fC, { name: "Kalender - Monat - kurze Name", type: "string", role: "text" }); createState(idMonthNameLong, "", fC, { name: "Kalender - Monat - langer Name", type: "string", role: "text" }); createState(idMonthNumberCount, 1, fC, { name: "Kalender - Monat - Nummer", desc: "Januar = 1, ..., Monat Dezember = 12", type: "number", min: 1, max: 12, role: "level" }); createState(idMonthNumberEven, false, fC, { name: "Kalender - Monat - Nummer - gerade", type: "boolean", role: "indicator" }); createState(idMonthYearCount, 12, fC, { name: "Kalender - Monate - Anzahl im Jahr", type: "number", role: "val", min: 12, max: 12 }); createState(idMonthYearPastCount, 0, fC, { name: "Kalender - Monate - Anzahl vergangene Monate im Jahr", type: "number", role: "level", min: 0, max: 11 }); createState(idMonthYearPastShare, Math.round(1/12), fC, { name: "Kalender - Monate - Anteil vergangene Monate im Jahr", type: "number", unit: "%", role: "level", min: 0, max: 100 }); createState(idMonthYearFutureCount, 0, fC, { name: "Kalender - Monate - Anzahl kommender Monate im Jahr", type: "number", role: "level", min: 0, max: 11 }); createState(idMonthYearFutureShare, Math.round(11/12), fC, { name: "Kalender - Monate - Anteil kommender Monate im Jahr", type: "number", unit: "%", role: "level", min: 0, max: 100 }); /* Woche datuminfo.0.de.woche.gesamt (52) datuminfo.0.de.woche.vergangenheit.anzahl (17) datuminfo.0.de.woche.vergangenheit.Anteil (17 von 52) 17*100/52 datuminfo.0.de.woche.zukunft.anzahl (35) datuminfo.0.de.woche.zukunft.Anteil (35 von 52) 35*100/52 datuminfo.0.de.woche.nummer (17) datuminfo.0.de.woche.gerade (true) datuminfo.0.de.woche.ungerade (false) */ const idWeekYearCount = path + ".Woche.Jahr.Anzahl"; // steht fest const idWeekYearNumberCount = path + ".Woche.Jahr.Kalenderwoche.Nummer"; const idWeekYearNumberEven = path + ".Woche.Jahr.Kalenderwoche.gerade"; const idWeekYearPastCount = path + ".Woche.Jahr.Vergangenheit.Anzahl"; const idWeekYearPastShare = path + ".Woche.Jahr.Vergangenheit.Anteil"; const idWeekYearFutureCount = path + ".Woche.Jahr.Zukunft.Anzahl"; const idWeekYearFutureShare = path + ".Woche.Jahr.Zukunft.Anteil"; createState(idWeekYearCount, 52, fC, { name: "Kalender - Wochen im Jahr - Anzahl", type: "number", role: "level" }); createState(idWeekYearPastCount, 0, fC, { name: "Kalender - Wochen - Anzahl vergangene Wochen im Jahr", type: "number", min: 0, max: 52, role: "level" }); createState(idWeekYearPastShare, 0, fC, { name: "Kalender - Wochen - Anteil vergangene Wochen im Jahr", type: "number", unit: "%", min: 0, max: 100, role: "level" }); createState(idWeekYearFutureCount, 0, fC, { name: "Kalender - Wochen - Anzahl kommender Wochen im Jahr", type: "number", min: 0, max: 52, role: "level" }); createState(idWeekYearFutureShare, 0, fC, { name: "Kalender - Wochen - Anteil kommender Wochen im Jahr", type: "number", unit: "%", min: 0, max: 100, role: "level" }); createState(idWeekYearNumberCount, 0, fC, { name: "Kalender - Wochen - Kalenderwoche", type: "number", min: 0, max: 53, unit: "KW", role: "level" }); createState(idWeekYearNumberEven, false, fC, { name: "Kalender - Wochen - Kalenderwoche gerade", type: "boolean", role: "indicator" }); /* Tag datuminfo.0.de.tag.woche.name.lang (Donnerstag) datuminfo.0.de.tag.woche.name.kurz (Do) datuminfo.0.de.tag.woche.nummer.deutsch (4) datuminfo.0.de.tag.woche.nummer.system (4) datuminfo.0.de.tag.woche.vergangenheit.anzahl (4) // deutsches system ab Montag datuminfo.0.de.tag.woche.vergangenheit.Anteil (4 von 7) 4*100/7 datuminfo.0.de.tag.woche.zukunft.anzahl (3) datuminfo.0.de.tag.woche.zukunft.Anteil (3 von 7) 3*100/7 datuminfo.0.de.tag.monat.gesamt (30) // tage im monat datuminfo.0.de.tag.monat.vergangenheit.anzahl (28) // seit monats beginn datuminfo.0.de.tag.monat.vergangenheit.Anteil (28 von 30) 28*100/30 datuminfo.0.de.tag.monat.zukunft.anzahl (2) // bis monatsende datuminfo.0.de.tag.monat.zukunft.Anteil (2 von 30) 2*100/30 datuminfo.0.de.tag.monat.nummer (28) datuminfo.0.de.tag.monat.gerade (true) datuminfo.0.de.tag.monat.ungerade (false) datuminfo.0.de.tag.jahr.nummer (119) datuminfo.0.de.tag.jahr.gerade (true) datuminfo.0.de.tag.jahr.ungerade (false) datuminfo.0.de.tag.jahr.gesamt (366) datuminfo.0.de.tag.jahr.vergangenheit.anzahl (119) // seit jahresbeginn datuminfo.0.de.tag.jahr.vergangenheit.Anteil (119 von 366) 119*100/366 datuminfo.0.de.tag.jahr.zukunft.anzahl (247) // bis jahresende datuminfo.0.de.tag.jahr.zukunft.Anteil (247 von 366) 247*100/366 */ const idDayName = path + ".Tag.Name"; const idDayHoliday = path + ".Tag.Feiertag"; createState(idDayName, "", fC, { name: "Kalender - Name des Tages", type: "string", role: "text" }); createState(idDayHoliday, false, fC, { name: "Kalender - heute Feiertag?", type: "boolean", role: "indicator" }); const idDayWeekNameLong = path + ".Tag.Woche.Name.lang"; const idDayWeekNameShort = path + ".Tag.Woche.Name.kurz"; const idDayWeekNumber = path + ".Tag.Woche.Nummer"; const idDayWeekPastCount = path + ".Tag.Woche.Vergangenheit.Anzahl"; const idDayWeekPastShare = path + ".Tag.Woche.Vergangenheit.Anteil"; const idDayWeekFutureCount = path + ".Tag.Woche.Zukunft.Anzahl"; const idDayWeekFutureShare = path + ".Tag.Woche.Zukunft.Anteil"; createState(idDayWeekNameLong, "", fC, { name: "Kalender - Tag der Woche - langer Name", type: "string", role: "dayofweek" }); createState(idDayWeekNameShort, "", fC, { name: "Kalender - Tag der Woche - kurzer Name", type: "string", role: "dayofweek" }); createState(idDayWeekNumber, 1, fC, { name: "Kalender - Tag der Woche - Nummer", desc: "Mo = 1, ..., Sa = 6, So = 7", type: "number", role: "level", min: 1, max: 7 }); createState(idDayWeekPastCount, 0, fC, { name: "Kalender - Tag der Woche - Anzahl vergangene Tage in der Woche", type: "number", min: 0, max: 6, role: "value" }); createState(idDayWeekPastShare, 0, fC, { name: "Kalender - Tag der Woche - Anteil vergangene Tage in der Woche", type: "number", unit: "%", min: 0, max: 100, role: "level" }); createState(idDayWeekFutureCount, 0, fC, { name: "Kalender - Tag der Woche - Anzahl kommender Tage in der Woche", type: "number", min: 0, max: 6, role: "value" }); createState(idDayWeekFutureShare, 0, fC, { name: "Kalender - Tag der Woche - Anteil kommender Tage in der Woche", type: "number", unit: "%", min: 0, max: 100, role: "level" }); const idDayMonthCount = path + ".Tag.Monat.Anzahl"; const idDayMonthPastCount = path + ".Tag.Monat.Vergangenheit.Anzahl"; const idDayMonthPastShare = path + ".Tag.Monat.Vergangenheit.Anteil"; const idDayMonthFutureCount = path + ".Tag.Monat.Zukunft.Anzahl"; const idDayMonthFutureShare = path + ".Tag.Monat.Zukunft.Anteil"; const idDayMonthNumber = path + ".Tag.Monat.Nummer"; const idDayMonthEven = path + ".Tag.Monat.gerade"; createState(idDayMonthCount, 0, fC, { name: "Kalender - Tage im Monat - Anzahl Tage im Monat", type: "number", min: 28, max: 31, role: "level" }); createState(idDayMonthPastCount, 0, fC, { name: "Kalender - Tage im Monat - Anzahl vergangene Tage im Monat", type: "number", role: "level", min: 0, max: 31 }); createState(idDayMonthPastShare, 0, fC, { name: "Kalender - Tage im Monat - Anteil vergangene Tage im Monat", type: "number", unit: "%", role: "level", min: 0, max: 100 }); createState(idDayMonthFutureCount, 0, fC, { name: "Kalender - Tage im Monat - Anzahl kommender Tage im Monat", type: "number", role: "level", min: 0, max: 31 }); createState(idDayMonthFutureShare, 0, fC, { name: "Kalender - Tage im Monat - Anteil kommender Tage im Monat", type: "number", unit: "%", role: "level", min: 0, max: 100 }); createState(idDayMonthNumber, 0, fC, { name: "Kalender - Tage im Monat - Nummer", type: "number", role: "level", min: 0, max: 31 }); createState(idDayMonthEven, false, fC, { name: "Kalender - Tage im Monat - Nummer gerade", type: "boolean", role: "indicator" }); const idDayYearPastCount = path + ".Tag.Jahr.Vergangenheit.Anzahl"; const idDayYearPastShare = path + ".Tag.Jahr.Vergangenheit.Anteil"; const idDayYearFutureCount = path + ".Tag.Jahr.Zukunft.Anzahl"; const idDayYearFutureShare = path + ".Tag.Jahr.Zukunft.Anteil"; const idDayYearNumber = path + ".Tag.Jahr.Nummer"; const idDayYearEven = path + ".Tag.Jahr.gerade"; const idDayYearCount = path + ".Tag.Jahr.Anzahl"; createState(idDayYearPastCount, 0, fC, { name: "Kalender - Tage im Jahr - Anzahl vergangene Tage im Jahr", type: "number", role: "level", min: 0, max: 366 }); createState(idDayYearPastShare, 0, fC, { name: "Kalender - Tage im Jahr - Anteil vergangene Tage im Jahr", type: "number", unit: "%", role: "level", min: 0, max: 100 }); createState(idDayYearFutureCount, 0, fC, { name: "Kalender - Tage im Jahr - Anzahl kommender Tage im Jahr", type: "number", role: "level", min: 0, max: 366 }); createState(idDayYearFutureShare, 0, fC, { name: "Kalender - Tage im Jahr - Anteil kommender Tage im Jahr", type: "number", unit: "%", role: "level", min: 0, max: 100 }); createState(idDayYearNumber, 1, fC, { name: "Kalender - Tage im Jahr - Nummer", type: "number", role: "level", min: 1, max: 366 }); createState(idDayYearEven, false, fC, { name: "Kalender - Tage im Jahr - Nummer gerade", type: "boolean", role: "indicator" }); createState(idDayYearCount, 365, fC, { name: "Kalender - Tage im Jahr - Anzahl", desc: "Anzahl der Tage im Jahr ist abhängig vom Schaltjahr", type: "number", role: "level", min: 365, max: 366 }); /* Datum datuminfo.0.de.datum.sehrkurz (28.4.16) datuminfo.0.de.datum.kurz (28.04.2016) datuminfo.0.de.datum.monattext (28. April 2016) datuminfo.0.de.datum.tagmonattext (Donnerstag, 28. April 2016) datuminfo.0.de.datum.tagdermonattext (Donnerstag, der 28. April 2016) */ const idDateVeryShort = path + ".Datum.sehrkurz"; const idDateShort = path + ".Datum.kurz"; const idDateMonthText = path + ".Datum.monattext"; const idDateDayMonthText = path + ".Datum.tagmonattext"; const idDateDayMonthArtikelText = path + ".Datum.tagdermonattext"; createState(idDateVeryShort, "", fC, { name: "Kalender - Datum als sehr kurzer Text", desc: "DD.M.JJ", type: "string", role: "text" }); createState(idDateShort, "", fC, { name: "Kalender - Datum als kurzer Text", desc: "DD.MM.JJJJ", type: "string", role: "text" }); createState(idDateMonthText, "", fC, { name: "Kalender - Datum als Text mit Monatsname", desc: "DD. Monat JJJJ", type: "string", role: "text" }); createState(idDateDayMonthText, "", fC, { name: "Kalender - Datum als Text mit Wochentag und Monatsname", desc: "Wochentag, DD. Monat JJJJ", type: "string", role: "text" }); createState(idDateDayMonthArtikelText, "", fC, { name: "Kalender - Datum als Text mit Wochentag, Artikel und Monatsname", desc: "Wochentag, der DD. Monat JJJJ", type: "string", role: "text" }); // LOGIK ++++++++++++++++++ function zeit(time) { // log(formatDate(time,"JJJJ.MM.TT SS:mm:ss")); let jetzt = new Date(time); let jahr = jetzt.getFullYear(); let monat = (jetzt.getMonth()+1 < 10) ? "0" + (jetzt.getMonth()+1) : jetzt.getMonth()+1; let tag = jetzt.getDate(); let tag_lang = (jetzt.getDate() < 10) ? "0" + jetzt.getDate() : jetzt.getDate(); let wochentag = jetzt.getDay(); // startet am Sonntag mit 0 let stunde = (jetzt.getHours() < 10) ? "0" + jetzt.getHours() : jetzt.getHours(); let minute = (jetzt.getMinutes() < 10) ? "0" + jetzt.getMinutes() : jetzt.getMinutes(); let sekunde = (jetzt.getSeconds() < 10) ? "0" + jetzt.getSeconds() : jetzt.getSeconds(); return { "Jahr" : jahr, "Monat" : monat, "Monat_gerade" : (monat%2 === 0) ? true : false, "Tag" : tag, "Tag_lang" : tag_lang, "Wochentag" : wochentag, "Stunde" : stunde, "Minute" : minute, "Sekunde" : sekunde }; } function ermittleQuartal(time) { //let z = new Date (time); let y = time.getMonth(); // Monat 0 - 11 let q = 0; switch (y) { case 0: // Jan case 1: case 2: q = 1; break; case 3: // Apr case 4: case 5: q = 2; break; case 6: // Jul case 7: case 8: q = 3; break; case 9: // Okt case 10: case 11: q = 4; break; default: q = 0; break; } return({ "count": q, "even" : (q%2 === 0) ? true : false }); } function ermittleTagDesJahres (time) { var heutestart = new Date(time.setHours(0,0,0,0)); var Jahr = heutestart.getFullYear(); var neujahr = new Date(Jahr,0,1); var difftage = (heutestart - neujahr) / (24*60*60*1000) + 1; var tag = Math.ceil(difftage); return(tag); } function ermittleKW(time) { // http://www.web-toolbox.net/webtoolbox/datum/code-kalenderwocheaktuell.htm // Woche, die den ersten Donnerstag enthält https://de.wikipedia.org/wiki/Woche var KWDatum = new Date(time); var DonnerstagDat = new Date(KWDatum.getTime() + (3-((KWDatum.getDay()+6) % 7)) * 86400000); var KWJahr = DonnerstagDat.getFullYear(); var DonnerstagKW = new Date(new Date(KWJahr,0,4).getTime() + (3-((new Date(KWJahr,0,4).getDay()+6) % 7)) * 86400000); var KW = Math.floor(1.5 + (DonnerstagDat.getTime() - DonnerstagKW.getTime()) / 86400000/7); var kalenderwoche = (parseInt(KW,10) < 10) ? "0" + KW : KW; return({ "kalenderwocheStr" : kalenderwoche, // ggf. führende 0 "kalenderwocheInt" : parseInt(KW,10), // Zahl "even" : (parseInt(KW,10)%2 === 0) ? true: false }); } function leseDatum () { let jetzt = new Date(); // ### Jahr let jjjj = zeit(jetzt).Jahr; let sj = (jjjj % 4 === 0) ? true : false; if (logging) { log("Jahr: " + jjjj); log("Schaltjahr: " + sj); } setState(idYearLeap, sj, true); setState(idYear, jjjj, true); // ### Quartal let quartal = ermittleQuartal(jetzt).count; setState(idQuart, quartal, true); setState(idQuartEven, ermittleQuartal(jetzt).even, true); setState(idQuartPastCount, quartal, true); setState(idQuartPastShare, parseFloat((quartal * 100 / 4).toFixed(dezimals)), true); setState(idQuartFutureCount, 4 - quartal, true); setState(idQuartFutureShare, parseFloat(((4-quartal) * 100 / 4).toFixed(dezimals)), true); // ### Monat //setState("Kalender.Datuminfo.de.Monat.Jahr.Anzahl", {val: 12, ack: true}); // steht fest und wird oben angelegt let mon_vergangen = parseInt(zeit(jetzt).Monat, 10); let monat_gerade = zeit(jetzt).Monat_gerade; setState(idMonthNameShort, monthNameShort[mon_vergangen-1], true); setState(idMonthNameLong, monthNameLong[mon_vergangen-1], true); setState(idMonthNumberCount, mon_vergangen, true); setState(idMonthNumberEven, monat_gerade, true); // Monat im Jahr setState(idMonthYearPastCount, mon_vergangen, true); setState(idMonthYearPastShare, parseFloat((mon_vergangen * 100 / 12).toFixed(dezimals)), true); setState(idMonthYearFutureCount, 12 - mon_vergangen, true); setState(idMonthYearFutureShare, parseFloat(((12-mon_vergangen) * 100 / 12).toFixed(dezimals)), true); // ### Woche // setState("Kalender.Datuminfo.de.Woche.Jahr.Anzahl", {val: 52, ack: true}); let kw = ermittleKW(jetzt).kalenderwocheInt; let silvester = new Date(zeit(jetzt).Jahr, 11, 31, 23, 59, 59, 0); // 31.12.JAHR 23:59:59:0000 Uhr aktuelles Jahr Silvester let lastkw = ermittleKW(silvester).kalenderwocheInt; if (logging) log("KW an Silvester: " + lastkw); setState(idWeekYearNumberCount, kw, true); setState(idWeekYearNumberEven, ermittleKW(jetzt).even, true); // Woche im Jahr setState(idWeekYearPastCount, kw, true); setState(idWeekYearPastShare, parseFloat(((kw * 100) / 52).toFixed(dezimals)), true); let x_kw = (lastkw != 1 ? lastkw : 52); // 52 oder 53 ----- einfach Wert zum weiteren Rechnen let futurekw = x_kw - kw; // wenn letzte KW des Jahres 1 ist, dann von 52 abziehen (können auch mal 53KW sein) setState(idWeekYearFutureCount, futurekw, true); setState(idWeekYearFutureShare, parseFloat(((x_kw - kw) * 100 / x_kw).toFixed(dezimals)), true); // ### Tag // Tag in Woche let wochentag = (zeit(jetzt).Wochentag > 0) ? zeit(jetzt).Wochentag : 7 ; // Wenn Tag nicht 0, dann Tag sonst 7; Mo = 1, ..., So = 7 setState(idDayWeekNameLong, dayWeekNameLong[wochentag], true); setState(idDayWeekNameShort, dayWeekNameShort[wochentag], true); if (logging) log("Wochentag:" + wochentag); setState(idDayWeekNumber, wochentag, true); setState(idDayWeekPastCount, wochentag, true); setState(idDayWeekPastShare, parseFloat((wochentag * 100 / 7).toFixed(dezimals)), true); setState(idDayWeekFutureCount, 7 - wochentag, true); setState(idDayWeekFutureShare, parseFloat(((7 - wochentag) * 100 / 7).toFixed(dezimals)), true); // Tag im Monat let schaltfeb = (sj) ? 29 : 28; let monatslaenge = [31,schaltfeb,31,30,31,30,31,31,30,31,30,31]; let tage_im_monat = parseInt(monatslaenge[mon_vergangen-1],10); setState(idDayMonthCount, tage_im_monat, true); let tage_im_monat_vergangen = zeit(jetzt).Tag; setState(idDayMonthPastCount, tage_im_monat_vergangen, true); setState(idDayMonthPastShare, parseFloat(((tage_im_monat_vergangen * 100) / tage_im_monat).toFixed(dezimals)), true); setState(idDayMonthFutureCount, tage_im_monat- tage_im_monat_vergangen, true); setState(idDayMonthFutureShare, parseFloat(((tage_im_monat - tage_im_monat_vergangen) * 100 / tage_im_monat).toFixed(dezimals)), true); setState(idDayMonthNumber, tage_im_monat_vergangen, true); let tage_im_monat_vergangen_gerade = (tage_im_monat_vergangen % 2 === 0) ? true : false; setState(idDayMonthEven, tage_im_monat_vergangen_gerade, true); // Tag im Jahr let tage_im_jahr_vergangen = ermittleTagDesJahres(jetzt); setState(idDayYearNumber, tage_im_jahr_vergangen, true); let tage_im_jahr_vergangen_gerade = (tage_im_jahr_vergangen % 2 === 0) ? true : false; setState(idDayYearEven, tage_im_jahr_vergangen_gerade, true); let tage_im_jahr = (sj) ? 366 : 365; setState(idDayYearCount, tage_im_jahr, true); setState(idDayYearPastCount, tage_im_jahr_vergangen, true); setState(idDayYearPastShare, parseFloat((tage_im_jahr_vergangen * 100 / tage_im_jahr).toFixed(dezimals)), true); setState(idDayYearFutureCount, tage_im_jahr - tage_im_jahr_vergangen, true); setState(idDayYearFutureShare, parseFloat(((tage_im_jahr - tage_im_jahr_vergangen) * 100 / tage_im_jahr).toFixed(dezimals)), true); // heute Feiertag let name_des_tages = ""; let istFeiertag = false; if (feiertag) { name_des_tages = getState(idHolidayTodayName).val; istFeiertag = getState(idHolidayToday).val; } setState(idDayName, name_des_tages, true); setState(idDayHoliday, istFeiertag, true); // ### Ausgabe + Allgemein // D.M.YY let jj = jjjj - 2000; setState(idDateVeryShort, tage_im_monat_vergangen + "." + mon_vergangen + "." + jj, true); // DD.MM.YYYY let dd = (tage_im_monat_vergangen < 10) ? "0" + tage_im_monat_vergangen : tage_im_monat_vergangen; let mm = (mon_vergangen < 10) ? "0" + mon_vergangen : mon_vergangen; setState(idDateShort, dd + "." + mm + "." + jjjj, true); // D. Monat JJJJ setState(idDateMonthText, tage_im_monat_vergangen + ". " + monthNameLong[mon_vergangen-1] + " " + jjjj, true); // Wochentag, DD. Monat JJJJ setState(idDateDayMonthText, dayWeekNameLong[wochentag] + ", " + tage_im_monat_vergangen + ". " + monthNameLong[mon_vergangen-1] + " " + jjjj, true); // Wochentag, der DD. Monat JJJJ setState(idDateDayMonthArtikelText, dayWeekNameLong[wochentag] + ", der " + tage_im_monat_vergangen + ". " + monthNameLong[mon_vergangen-1] + " " + jjjj, true); log("Kalenderinformation zum heutigen Datum angelegt", "debug"); } setTimeout(leseDatum, 2500); schedule("0 0,12,18 * * *", leseDatum); // Mitternacht und zwei Backups // schedule("0 0,12,18 * * *", leseDatum); // Mitternacht und zwei Backups
-
@Glasfaser
Vielen Dank! das ist ja wirklich vollumfänglich! Werde ich sicher irgendwann noch einmal nutzen, aber ich habe nun erstmal für mich die Lösung gefunden, indem ich in einem eigenen Datenpunkt per Blockly mit einem Datumsbefehl (schreibe Wochentag als Zahl) zu einer bestimmten Uhrzeit den Wochentag ausgebe und von dort dann abrufe. -
@termina hier gibt es ein paar Infos zu Bindings: https://www.machs-smart.de/iobroker-bindings-farben-berechnungen-abfragen/