NEWS
Test Adapter mytime
-
Es tut mir leid, aber daraus werde ich gerade nicht schlau und die Readme ergibt sich mir nicht.
Ro75.
Du legst im Mytime Adapter ein Countdown Timer mit beliebigen Werten an.
Der legt dir eine datenpunkt Struktur an.
Du machst im JavaScript Adapter ein trigger auf deinen String datenpunkt der bspw 11:05:46 enthält.
Immer wenn sich dein datenpunkt tatsächlich ändert schreibst du in den cmd datenpunkt in den Mytime datenpunkten den folgenden Wert rein:
=!11:05:46Das Format von value ist hier beschrieben
https://github.com/oweitman/ioBroker.mytime/blob/main/README.md#format-of-the-value-for-setting-the-countdown-timerJede Stelle, also sec,min,etc. zählt für sich und wird mit der jeweiligen Wertigkeit addiert, daher geht auch 1:120, was dann 3 Minuten ergibt. Aber das ist für dich eher nicht relevant.
Der unterschied mit und ohne ! Ist das die Änderung im timer sofort wirksam werden und nicht erst beim nächsten Start
-
Probiere ich aus. Sage dir dann bescheid.
Ro75.
EDIT: Keine Ahnung. Ich bekomms nicht hin. Entweder zu komplex, ich verstehe es nicht oder bin zu blöd.
ok
- countdowntimer anlegen

ich habe gerade festgestellt, das beim speichern bei mir die datenpunkte nicht angelegt werden. wenn das bei dir auch so ist, dann bitte noch setdp drücken.
2a)
für die simulation habe ich mir ein skript schreiben lassen, das sekündlich bei mir einen datenpunkt aktualisiert. das ist das was bei dir mit alexa oder so passiert.
das brauchst du eigentlich nicht, aber ich lege es bei, das du es selbst ausprobieren kannst, wie es bei mir funktioniert.2b)
Hier das skript das auf deinen alexadatenpunkt horcht. Hier
0_userdata.0.alexatimer
und dann den mytimer datenpunkt beschreibt. hier
mytime.0.Countdowns.alexa.cmd
beides am anfang zum konfigurieren.
da ist jetzt viel kommentar und logging drin. das kann man noch entschlacken.
- in vis habe ich das widget mytime countdown flipclock genommen
und dort den datenpunkt des mytime alexa countdown eingestellt.
welchen unterdatenpunkt du nimmst ist egal. das widget sucht sich seine datenpunkte dann selbst zusammen.

Ergebnis sieht dann so aus:
5a267779-959f-4940-9d06-d4453debb3f1-20260721-1036-26.4326649.mp4
- countdowntimer anlegen
-
Danke für das Beispiel. Der entscheidende Punkte war setState mit false. Jetzt geht es. Danke.
Ro75.
setState mit false
ja, true bleibt bei gemanagten datenpunkten dem adapter vorbehalten, sonst würde der adapter endlos auf datenpunktänderungen reagieren.
das true/false betrifft den ack(nowledged)/bestätigt status des datenpunkts.
ein adapter reagiert auf ack=false und bestätigt dann den datenpunkt mit ack=true (auf diese änderung reagiert er dann nicht mehr) -
Neue Version 2.5.0
- Die FlipClock widgets (countdown und clock) sind nun über die css-Einstellung des widgets über Schriftgroße/Font-Size einstellbar. Daher ist das transform nicht mehr notwendig.
- Es wurden die default-Einstellungen der widgets etwas optimiert, so das man immer eine Anzeige hat, auch wenn noch kein Datenpunkt ausgewählt wurde.
-
Genau das was in den anmerlungen oben steht.
- Die FlipClock widgets (countdown und clock) sind nun über die css-Einstellung des widgets über Schriftgroße/Font-Size einstellbar. Daher ist das transform nicht mehr notwendig.
- Es wurden die default-Einstellungen der widgets etwas optimiert, so das man immer eine Anzeige hat, auch wenn noch kein Datenpunkt ausgewählt wurde.
Der default ist eine für deine widgetglsse zu groß.
Du stellst in den widgeteinstelunh bei css Schrift eine kleinere Größe ein.
Bsp 50px oder 40px
Die einzelnen Ziffern brechen umFalls das nicht hilft musst du mir beschreiben wie es vorher ausgesehen hat. Da reicht mein Vorstellungsvermögen nicht aus
-
Der Effekt tritt nur bei der Flip Clock auf. die beiden anderen Uhren machen das nicht.
Mit Transform arbeite ich nicht.
Datenpunkt ist ausgewählt. Verhalten bei Server oder Client gleich
So sieht des im Editor aus wenn ich als Schriftgröße 10px eingebe und die Widgetbreite auf dem ursprünglichen Wert lasse(siehe Rahmen). Auch wenn ich das Widget ohne Schriftgrößenänderung grüßer ziehe bleiben die Ziffern untereinander.
-
Der Effekt tritt nur bei der Flip Clock auf. die beiden anderen Uhren machen das nicht.
Mit Transform arbeite ich nicht.
Datenpunkt ist ausgewählt. Verhalten bei Server oder Client gleich
So sieht des im Editor aus wenn ich als Schriftgröße 10px eingebe und die Widgetbreite auf dem ursprünglichen Wert lasse(siehe Rahmen). Auch wenn ich das Widget ohne Schriftgrößenänderung grüßer ziehe bleiben die Ziffern untereinander.
-
@Chaot
kann ich bestätigen. Bei mir sieht genauso aus und ich schaffe es nicht in einer Linie anzeigen zu lassen. -
[ { "tpl": "tplMyTimeClockFlip", "data": { "bindings": [], "clock_time_source": "client", "g_common": true, "clock_date_order": "DMY", "clock_showyear": "true", "clock_showmonth": "true", "clock_showday": "true", "clock_showhours": "true", "clock_showminutes": "true", "clock_showseconds": "true" }, "style": { "bindings": [], "left": "291.234px", "top": "151.523px", "width": "931.992px", "height": "92.9961px" }, "widgetSet": "mytime", "_id": "i000001" } ]
-
[ { "tpl": "tplMyTimeClockFlip", "data": { "bindings": [], "clock_time_source": "client", "g_common": true, "clock_date_order": "DMY", "clock_showyear": "true", "clock_showmonth": "true", "clock_showday": "true", "clock_showhours": "true", "clock_showminutes": "true", "clock_showseconds": "true" }, "style": { "bindings": [], "left": "291.234px", "top": "151.523px", "width": "931.992px", "height": "92.9961px" }, "widgetSet": "mytime", "_id": "i000001" } ]
bei mir wird das ordentlich angezeigt.
könntet ihr mal bitte prüfen, ob ihr noch extra css klassen definiert habt,
die mitclock-flipbeginnen
oder wahrscheinlicher nochplaywenn nicht, dann wird es etwas komplizierter, da ich bei euch so nicht reinschauen kann.
öffnet bitte im runtime mode die browser konsole mit F12
geht in den console tab
dort wo die meldungen stehen m ende ist ein eingabefeld.
dort bitte das folgende einfügen
aus dem #w000005 müsst ihr die widget id des betroffenen widgets machen.var selector='#w000005 > div > span.clock-flip-unit.clock-day.flip-clock-wrapper > ul:nth-child(1)',el=document.querySelector(selector),out=[],scan=function(rules,source){Array.from(rules||[]).forEach(function(r){if(r.selectorText){try{if(el.matches(r.selectorText))out.push('/* '+source+' */\n'+r.selectorText+' {\n '+r.style.cssText.replace(/;\s*/g,';\n ').trim()+'\n}')}catch(e){console.warn('Selektor nicht prüfbar:',r.selectorText,e)}}else if(r.cssRules){scan(r.cssRules,source)}})};if(!el){console.error('Element nicht gefunden:',selector)}else{console.log('Element:',el,'Klassen:',Array.from(el.classList));Array.from(document.styleSheets).forEach(function(s){try{scan(s.cssRules,s.href||'<style>')}catch(e){console.warn('Stylesheet nicht lesbar:',s.href||'<style>',e.message)}});console.log(out.length?out.join('\n\n'):'Keine passenden CSS-Regeln gefunden.')}die ausgabe dann bitte hier posten
bei mir sieht die so aus/* http://192.168.1.81:8082/vis-2/widgets/mytime/css/flipclock.css */ .flip-clock-wrapper * { box-sizing: border-box; backface-visibility: hidden; } /* http://192.168.1.81:8082/vis-2/widgets/mytime/css/flipclock.css */ .flip-clock-wrapper ul { list-style: none; padding: 0px; } /* http://192.168.1.81:8082/vis-2/widgets/mytime/css/flipclock.css */ .flip-clock-wrapper ul { position: relative; float: left; margin: 0.0625em; width: 0.75em; height: 1.125em; font-size: inherit; font-weight: bold; line-height: 1.0875em; border-radius: 0.075em; background: rgb(0, 0, 0); } /* http://192.168.1.81:8082/vis-2/widgets/mytime/css/flipclock.css */ .flip-clock-wrapper .flip { box-shadow: rgba(0, 0, 0, 0.7) 0px 0.025em 0.0625em; } /* <style> */ .play { color: white; }das .play am ende ist ein test von mir.
wenn davon abgesehen noch andere dinge stehen, müssen wir uns auf die suche machen woher das kommthier noch ergänzend die große suche.
auch hier am Anfang die widget id anpassen. das # muss stehen bleiben
das sammelt alle css klassen aller darunterliegenden html elemente ein und gibt dann die definitionen aus.
aber als erstes das obige skript probierenvar selector='#w000005',root=document.querySelector(selector);if(!root){console.error('Element nicht gefunden:',selector)}else{var elements=[root].concat(Array.from(root.querySelectorAll('*'))),classes=Array.from(new Set(elements.reduce(function(a,e){return a.concat(Array.from(e.classList||[]))},[]))).sort(),esc=function(s){return window.CSS&&CSS.escape?CSS.escape(s):s.replace(/([^\w-])/g,'\\$1')},results=[],seen=new Set(),scan=function(rules,source,context){Array.from(rules||[]).forEach(function(r){if(r.selectorText&&r.style){var classRelated=classes.some(function(c){return new RegExp('(^|[^\\w-])\\.'+esc(c)+'(?![\\w-])').test(r.selectorText)}),matching=false;try{matching=elements.some(function(e){return e.matches(r.selectorText)})}catch(e){}if(classRelated||matching){var css=Array.from(r.style).sort().map(function(p){return p+': '+r.style.getPropertyValue(p).trim()+(r.style.getPropertyPriority(p)?' !important':'')+';'}).join('\n '),key=r.selectorText+'|'+css+'|'+source+'|'+context;if(!seen.has(key)){seen.add(key);results.push({selector:r.selectorText,css:css,source:source,context:context,matching:matching})}}}else if(r.cssRules){var label=r.conditionText?'@'+(r.type===4?'media':r.type===12?'supports':'rule')+' '+r.conditionText:r.name?'@'+r.name:'@rule';scan(r.cssRules,source,context.concat(label))}})},sheets=Array.from(document.styleSheets);sheets.forEach(function(s,i){try{scan(s.cssRules,s.href||'<inline-style-'+i+'>',[])}catch(e){console.warn('Stylesheet nicht lesbar:',s.href||'<inline-style-'+i+'>',e.message)}});results.sort(function(a,b){return a.selector.localeCompare(b.selector)||a.source.localeCompare(b.source)||a.css.localeCompare(b.css)});console.log('SELEKTOR:\n'+selector+'\n\nKLASSEN ('+classes.length+'):\n'+classes.map(function(c){return'.'+c}).join('\n')+'\n\nCSS-REGELN ('+results.length+'):\n\n'+results.map(function(r){return'/* '+(r.matching?'AKTUELL WIRKSAM':'KLASSENBEZOGEN')+' | '+r.source+(r.context.length?' | '+r.context.join(' > '):'')+' */\n'+r.selector+' {\n '+r.css+'\n}'}).join('\n\n'))} -
bei mir wird das ordentlich angezeigt.
könntet ihr mal bitte prüfen, ob ihr noch extra css klassen definiert habt,
die mitclock-flipbeginnen
oder wahrscheinlicher nochplaywenn nicht, dann wird es etwas komplizierter, da ich bei euch so nicht reinschauen kann.
öffnet bitte im runtime mode die browser konsole mit F12
geht in den console tab
dort wo die meldungen stehen m ende ist ein eingabefeld.
dort bitte das folgende einfügen
aus dem #w000005 müsst ihr die widget id des betroffenen widgets machen.var selector='#w000005 > div > span.clock-flip-unit.clock-day.flip-clock-wrapper > ul:nth-child(1)',el=document.querySelector(selector),out=[],scan=function(rules,source){Array.from(rules||[]).forEach(function(r){if(r.selectorText){try{if(el.matches(r.selectorText))out.push('/* '+source+' */\n'+r.selectorText+' {\n '+r.style.cssText.replace(/;\s*/g,';\n ').trim()+'\n}')}catch(e){console.warn('Selektor nicht prüfbar:',r.selectorText,e)}}else if(r.cssRules){scan(r.cssRules,source)}})};if(!el){console.error('Element nicht gefunden:',selector)}else{console.log('Element:',el,'Klassen:',Array.from(el.classList));Array.from(document.styleSheets).forEach(function(s){try{scan(s.cssRules,s.href||'<style>')}catch(e){console.warn('Stylesheet nicht lesbar:',s.href||'<style>',e.message)}});console.log(out.length?out.join('\n\n'):'Keine passenden CSS-Regeln gefunden.')}die ausgabe dann bitte hier posten
bei mir sieht die so aus/* http://192.168.1.81:8082/vis-2/widgets/mytime/css/flipclock.css */ .flip-clock-wrapper * { box-sizing: border-box; backface-visibility: hidden; } /* http://192.168.1.81:8082/vis-2/widgets/mytime/css/flipclock.css */ .flip-clock-wrapper ul { list-style: none; padding: 0px; } /* http://192.168.1.81:8082/vis-2/widgets/mytime/css/flipclock.css */ .flip-clock-wrapper ul { position: relative; float: left; margin: 0.0625em; width: 0.75em; height: 1.125em; font-size: inherit; font-weight: bold; line-height: 1.0875em; border-radius: 0.075em; background: rgb(0, 0, 0); } /* http://192.168.1.81:8082/vis-2/widgets/mytime/css/flipclock.css */ .flip-clock-wrapper .flip { box-shadow: rgba(0, 0, 0, 0.7) 0px 0.025em 0.0625em; } /* <style> */ .play { color: white; }das .play am ende ist ein test von mir.
wenn davon abgesehen noch andere dinge stehen, müssen wir uns auf die suche machen woher das kommthier noch ergänzend die große suche.
auch hier am Anfang die widget id anpassen. das # muss stehen bleiben
das sammelt alle css klassen aller darunterliegenden html elemente ein und gibt dann die definitionen aus.
aber als erstes das obige skript probierenvar selector='#w000005',root=document.querySelector(selector);if(!root){console.error('Element nicht gefunden:',selector)}else{var elements=[root].concat(Array.from(root.querySelectorAll('*'))),classes=Array.from(new Set(elements.reduce(function(a,e){return a.concat(Array.from(e.classList||[]))},[]))).sort(),esc=function(s){return window.CSS&&CSS.escape?CSS.escape(s):s.replace(/([^\w-])/g,'\\$1')},results=[],seen=new Set(),scan=function(rules,source,context){Array.from(rules||[]).forEach(function(r){if(r.selectorText&&r.style){var classRelated=classes.some(function(c){return new RegExp('(^|[^\\w-])\\.'+esc(c)+'(?![\\w-])').test(r.selectorText)}),matching=false;try{matching=elements.some(function(e){return e.matches(r.selectorText)})}catch(e){}if(classRelated||matching){var css=Array.from(r.style).sort().map(function(p){return p+': '+r.style.getPropertyValue(p).trim()+(r.style.getPropertyPriority(p)?' !important':'')+';'}).join('\n '),key=r.selectorText+'|'+css+'|'+source+'|'+context;if(!seen.has(key)){seen.add(key);results.push({selector:r.selectorText,css:css,source:source,context:context,matching:matching})}}}else if(r.cssRules){var label=r.conditionText?'@'+(r.type===4?'media':r.type===12?'supports':'rule')+' '+r.conditionText:r.name?'@'+r.name:'@rule';scan(r.cssRules,source,context.concat(label))}})},sheets=Array.from(document.styleSheets);sheets.forEach(function(s,i){try{scan(s.cssRules,s.href||'<inline-style-'+i+'>',[])}catch(e){console.warn('Stylesheet nicht lesbar:',s.href||'<inline-style-'+i+'>',e.message)}});results.sort(function(a,b){return a.selector.localeCompare(b.selector)||a.source.localeCompare(b.source)||a.css.localeCompare(b.css)});console.log('SELEKTOR:\n'+selector+'\n\nKLASSEN ('+classes.length+'):\n'+classes.map(function(c){return'.'+c}).join('\n')+'\n\nCSS-REGELN ('+results.length+'):\n\n'+results.map(function(r){return'/* '+(r.matching?'AKTUELL WIRKSAM':'KLASSENBEZOGEN')+' | '+r.source+(r.context.length?' | '+r.context.join(' > '):'')+' */\n'+r.selector+' {\n '+r.css+'\n}'}).join('\n\n'))} -
@OliverIO
CSS Klasse nutze ich nicht.
Bei Konsole, entweder mache ich was falsch oder es findet nichts.
-
/* http://192.168.178.5:8082/vis-2/widgets/mytime/css/flipclock.css */ .flip-clock-wrapper * { box-sizing: border-box; backface-visibility: hidden; } /* http://192.168.178.5:8082/vis-2/widgets/mytime/css/flipclock.css */ .flip-clock-wrapper ul { list-style: none; padding: 0px; } /* http://192.168.178.5:8082/vis-2/widgets/mytime/css/flipclock.css */ .flip-clock-wrapper ul { position: relative; float: left; margin: 0.0625em; width: 0.75em; height: 1.125em; font-size: inherit; font-weight: bold; line-height: 1.0875em; border-radius: 0.075em; background: rgb(0, 0, 0); } /* http://192.168.178.5:8082/vis-2/widgets/mytime/css/flipclock.css */ .flip-clock-wrapper .flip { box-shadow: rgba(0, 0, 0, 0.7) 0px 0.025em 0.0625em; } /* http://192.168.178.5:8082/vis-2/widgets/timeandweather/css/flipclock.css */ .flip-clock-wrapper * { box-sizing: border-box; backface-visibility: hidden; } /* http://192.168.178.5:8082/vis-2/widgets/timeandweather/css/flipclock.css */ .flip-clock-wrapper ul { list-style: none; } /* http://192.168.178.5:8082/vis-2/widgets/timeandweather/css/flipclock.css */ .flip-clock-wrapper ul { position: relative; float: left; margin: 5px; width: 60px; height: 90px; font-size: 80px; font-weight: bold; line-height: 87px; border-radius: 6px; background: rgb(0, 0, 0); } /* http://192.168.178.5:8082/vis-2/widgets/timeandweather/css/flipclock.css */ .flip-clock-wrapper .flip { box-shadow: rgba(0, 0, 0, 0.7) 0px 2px 5px; } -
/* http://192.168.178.5:8082/vis-2/widgets/mytime/css/flipclock.css */ .flip-clock-wrapper * { box-sizing: border-box; backface-visibility: hidden; } /* http://192.168.178.5:8082/vis-2/widgets/mytime/css/flipclock.css */ .flip-clock-wrapper ul { list-style: none; padding: 0px; } /* http://192.168.178.5:8082/vis-2/widgets/mytime/css/flipclock.css */ .flip-clock-wrapper ul { position: relative; float: left; margin: 0.0625em; width: 0.75em; height: 1.125em; font-size: inherit; font-weight: bold; line-height: 1.0875em; border-radius: 0.075em; background: rgb(0, 0, 0); } /* http://192.168.178.5:8082/vis-2/widgets/mytime/css/flipclock.css */ .flip-clock-wrapper .flip { box-shadow: rgba(0, 0, 0, 0.7) 0px 0.025em 0.0625em; } /* http://192.168.178.5:8082/vis-2/widgets/timeandweather/css/flipclock.css */ .flip-clock-wrapper * { box-sizing: border-box; backface-visibility: hidden; } /* http://192.168.178.5:8082/vis-2/widgets/timeandweather/css/flipclock.css */ .flip-clock-wrapper ul { list-style: none; } /* http://192.168.178.5:8082/vis-2/widgets/timeandweather/css/flipclock.css */ .flip-clock-wrapper ul { position: relative; float: left; margin: 5px; width: 60px; height: 90px; font-size: 80px; font-weight: bold; line-height: 87px; border-radius: 6px; background: rgb(0, 0, 0); } /* http://192.168.178.5:8082/vis-2/widgets/timeandweather/css/flipclock.css */ .flip-clock-wrapper .flip { box-shadow: rgba(0, 0, 0, 0.7) 0px 2px 5px; }
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden
