NEWS
Values >0 & <1 werden von Widgets als False interpretiert
-
Es liesse sich jetzt vortrefflich streiten, was die falschere Auslegung von true/false ist, oder ob gar gerundet werden sollte. `
Theoretisch ja, aber in der Praxis sollte die Variante genutzt werden, die am häufigsten vorkommt. Und die heute implementierte Variante ist meiner Meinung nach eben nicht praxisrelevant. Zumindest fehlt mir die Fantasie, wie und wo die derzeitige Variante wirklich einen Nutzen darstellen kann. Ich denke auch, das HQ für DashUI bewusst und nicht per Zufall die von mir angesprochene Variante implementiert hatte.Wie hast du das geregelt
@mule:Ich nutze heute ein HTML-BOOL-CTRL-Widget um Schaltaktoren und Dimmer (Letzter Helligkeitszustand) einzuschalten und gleichzeitig zu symoblisieren, ob der Aktor/Dimmer aktiv/inaktiv.
Dass der Dimmer auf letzten Level geht?
Ich muss zugeben, das meine Ausführung im Bezug auf Dimmer nicht ganz vollständig waren. Bei Dimmern nutze ich lediglich ein Basic-Bool-HTML-Value Widget zur Anzeige des An/Aus-Status. Darüber liegt dann ein komplett transparentes Bool-CTRL Widget um eine Variable zu toggeln, welche denn entweder Level auf 0 oder OldLevel auf 1 setzt. Bei reinen Schaltaktoren reicht dann natürlich ein Bool-HTML-CTRL Widget. -
Ich habe mal für dich Licht angemachtEs sind eigentlich alles Schaltaktoren, lediglich die Deckenbeleuchtung in wohn und Esszimmer sind gedimmt.
Dies bulb on/off gehen tatsächlich erst an, wenn auf 100% gedimmt ist.
Aber wo willst du den einschaltlevel setzen, wenn die "Kontrollleuchte" bereits beim leisesten Glimmen leuchten soll?
Gruß
Rainer
-
Um wie viele gedimmte Lampen geht es denn?
Man könnte auch für jede Lampe einen Datenpunkt per Skript erzeugen, der auf true steht, sobald der Dimmer nicht ganz aus ist.
Umgekehrt könnte man auch über diesen Datenpunkt den Dimmer per Skript ganz ausschalten oder auf einen definierten Wert (letzter Wert vor aus // 50% // …).
-
Ich habe mal für dich Licht angemacht
`
So richtig erleuchtet bin ich jedoch noch nicht, denn ich verstehe nicht wozu man einen Indikator für "Lampe = An" benötigt, der aber nur bei einer Helligkeit von 100% anspringt? Was ist der Sinn und Zweck dahinter? Liegt es an meinem dicken Brett vor dem Kopf oder hat es keinen richtigen Zweck?
Aber wo willst du den einschaltlevel setzen, wenn die "Kontrollleuchte" bereits beim leisesten Glimmen leuchten soll? `
Aus ist Aus, alles andere, ob wenig oder viel Glimmen ist An. Wusste bisher nicht, das es diesbezüglich zwei Meinungen geben kann?! Wenn ein Gerät Strom verbraucht, dann sagt man doch auch nicht, das es keinen Strom verbraucht nur weil es wenig oder sehr wenig (was ja zudem auch noch relativ ist) Strom verbraucht. Nur bei 0,0 Volt verbraucht es eben keinen Strom.Danke für den Hinweis. Ja, so könnte es gehen. Aber ich gebe die Hoffnung noch nicht auf, das es auch direkt mit irgendeinem Widget geht. Auch wenn ich selbst ein derartiges Widget bisher noch nicht gefunden habe. Aber vielleicht habe ich ja etwas übersehen oder das TRUE/FALSE-Verhalten wird doch noch zu DashUI kompatibel angepasst
Ich habe auch bereits einen (halben) Workaround per Notification gefunden, da man dort richtige Bedingungen definieren kann. Leider lässt sich da aber der Text nicht zentrieren, sondern wird absolut positioniert. Das ist bei Toggle-Buttons mit unterschiedlicher Größe lästig, da man dann immer die absoluten Werte je nach Größe anpassen muss.
-
denn ich verstehe nicht wozu man einen Indikator für "Lampe = An" benötigt, der aber nur bei einer Helligkeit von 100% anspringt? `
Hatte ich ja in einem vorigen Post geschrieben, dass mir das erst durch diese Diskussion bewusst wurde, dass das Widget gar nicht im gedimmen Zustand on anzeigt.Insofern wäre deine Version schon sinnvoll.
Im anderen Teil reden wir anscheinend aneinander vorbei.
> Aus ist Aus, alles andere, ob wenig oder viel Glimmen ist An. Wusste bisher nicht, das es diesbezüglich zwei Meinungen geben kann?! Wenn ein Gerät Strom verbraucht, dann sagt man doch auch nicht, das es keinen Strom verbraucht nur weil es wenig oder sehr wenig (was ja zudem auch noch relativ ist) Strom verbraucht. Nur bei 0,0 Volt verbraucht es eben keinen Strom.
das ist absolut unstrittig.Das Widget dient auch der Bedienung für "boolsche" Schaltaktoren. On/off!
Wenn das Widget bei <0,1% dimmung von true auf false schaltet, würde es im Umkehrschluss die Lampe beim Versuch sie anzuschalten nur auf 0,1% Dimmen. In dem Funktionsumfang, den das Widget jetzt hat, geht der Dimmer auf 100%, also volles Licht.
Gruß
Rainer
-
Was hast du als min und was als max eingestellt?
Hier ist die Funktion die entscheided ob aus oder an ist:
isFalse: function (val, min, max) { if (min !== undefined && min !== null && min !== '') { if (max !== undefined && max !== null && max !== '') { return val != max; } else { return val == min; } } if (val === undefined || val === null || val === false || val === 'false' || val === 'FALSE' || val === 'False' || val === 'OFF' || val === 'Off' || val === 'off' || val === '') return true; if (val === '0' || val === 0) return true; var f = parseFloat(val); if (f.toString() !== 'NaN') return !f; return false; },
Wenn du tätsächlich 0 bis 1 hast (was ich überhaupt nicht glaube (hast du im admin gecheckt?)) dann sollte es gehen, wenn du min auf 0 setzts und max lehr läst.
-
Was hast du als min und was als max eingestellt?
Wenn du tätsächlich 0 bis 1 hast (was ich überhaupt nicht glaube (hast du im admin gecheckt?)) dann sollte es gehen, wenn du min auf 0 setzts und max lehr läst. `
Danke für den Hinweis, aber bei dem Widget Basic-Bool-HTML-Value tauchen im VIS-Editor die Felder für min und max gar nicht auf (allerdings sind sind sie in der XML-Struktur des Widgets vorhanden). Nur beim entsprechenden Control-Widget tauchen min und max im Editor auf. Oder verstehe ich Dich falsch bzw. welchen Admin wovon meinst Du?Edit: Wenn ich die Control-Variante des Bool-HTML Widgets nehme, dann kann ich min = 0 und max = NULL im VIS-Editor setzen und es funktioniert dann auch wir von Dir geschrieben. Nur leider hilft mit die Control-Variante hier nicht weiter, ich benötige nur das reine Bool-HTML-Version ohne "Klick"-Möglichkeit und hier sind min und max leider im VIS-Editor nicht vorhanden. Sicherlich könnte ich jetzt einfach die XML-Definition per Hand ändern, aber das ist sicherlich kein sauberer Weg und bei einer Änderung würde ja wahrscheinlich alles wieder überschrieben werden.
denn ich verstehe nicht wozu man einen Indikator für "Lampe = An" benötigt, der aber nur bei einer Helligkeit von 100% anspringt? `
Hatte ich ja in einem vorigen Post geschrieben, dass mir das erst durch diese Diskussion bewusst wurde, dass das Widget gar nicht im gedimmen Zustand on anzeigt.Insofern wäre deine Version schon sinnvoll. `
Oh, dann hatte ich Dich falsch verstanden.denn ich verstehe nicht wozu man einen Indikator für "Lampe = An" benötigt, der aber nur bei einer Helligkeit von 100% anspringt?
Wenn das Widget bei <0,1% dimmung von true auf false schaltet, würde es im Umkehrschluss die Lampe beim Versuch sie anzuschalten nur auf 0,1% Dimmen. In dem Funktionsumfang, den das Widget jetzt hat, geht der Dimmer auf 100%, also volles Licht.
Ich befürchte auch, das wir aneinander vorberreden: Ich nutze ja bei den Dimmern das Basic-HTML-Bool Widget zweimal je Dimmer:1.) Zur Anzeige des Status auf Basis des Datenpunkt Level. Hierbei eben mit dem Wunsch das der Input der gewählten ObjektID/des Datenpunkts "Level" in der Weise 0 = False und alle anderen Werte = True interpretiert wird. Sozusagen die input-Richtung des des Widgets.
2.) Zur Steuerung soll natürlich beim Klick wie gehabt ein "richtiges" True = 1 an die gewählte ObjektID/den Datenpunkt (in meinem Fall eine Variable über die dann Level = 0 bzw. OLDLevel = 1 getoggelt gesetzt wird)
Verschiedene Dimmstufen gehen damit natürlich nicht, aber dafür sind die Bool-Widgets ja auch nicht ausgelegt. Dies, wie auch die Farbeinstellung bei LED-Stripes, löse ich mit einer "Subview". Da man aber meist doch nur eine Defaulteinstellung für Farbe und Helligkweitswert nutzt (zumindest ist es bei uns so) reicht An/Aus auf der Mainview vollkommen aus.
-
aber bei dem Widget Basic-Bool-HTML-Value tauchen im VIS-Editor die Felder für min und max gar nicht auf `
Auch wenn min und max nicht gesetzt sind (oder nicht gesetzt werden können) dann ist dieses Kode aktiv:isFalse: function (val) { if (val === undefined || val === null || val === false || val === 'false' || val === 'FALSE' || val === 'False' || val === 'OFF' || val === 'Off' || val === 'off' || val === '') return true; if (val === '0' || val === 0) return true; var f = parseFloat(val); if (f.toString() !== 'NaN') return !f; return false; },
Und als Ergebnis fur 0.1 kommt definitiv true.
welchen Admin wovon meinst Du? `
48_2016-08-25_22_48_51-camera_uploads.png -
Auch wenn min und max nicht gesetzt sind (oder nicht gesetzt werden können) dann ist dieses Kode aktiv: `
Ich glaube ich habe die Ursache für das Problem gefunden: Ich habe ja alle meine Views aus DashUI per Import/Export übernommen. Hierbei wurden für das BOOl-HTML Widget auch min (=0) und max (=1) übernommen (oder bei der Migration erzeugt?):"w00084": { "tpl": "tplValueBool", "data": { "hm_id": "3728", "digits": "", "factor": 1, "min": 0, "max": 1, "step": 0.01, "html_false": "LED-Decke", "html_true": "LED-Decke", "filterkey": "Licht", "visibility-cond": "==", "visibility-val": 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, "oid": "hm-rpc.0.MEQ1782284.1.LEVEL" }, "style": { "left": 9, "top": "235px", "text-shadow": "rgba(0, 0, 0, 0.9) 3px 3px 4px", "font-family": "serif", "text-align": "center", "color": "rgb(0, 0, 0)", "font-size": "16px", "line-height": "55px", "background-color": "rgb(50, 50, 50)", "border-width": "1.6px", "border-style": "solid", "border-color": "rgb(200, 200, 200)", "border-radius": "10px", "height": 55.8, "width": 117.80000000000001, "z-index": "0" }, "widgetSet": "basic"
Wenn ich nun aber ein neues Bool-HTML Widget über den VIS-Edit anlege, dann fehlen hier die min und max Einträge und die Definition sieht wie folgt aus und damit funktioniert es dann auch:
"w00048": { "tpl": "tplValueBool", "data": { "oid": "nothing_selected", "visibility-cond": "==", "visibility-val": 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 }, "style": { "left": "214px", "top": "629px" }, "widgetSet": "basic" }
Es ist somit wohl ein Problem der Migration von DashUI zu VIS. Kann ich min und max bei den betreffenden Widgets einfach manuell entfernen oder sind dadurch Probleme zu erwarten?
-
Ich habe nun die XML-Definition der entsprechenden Widgets manuell bearbeitet und max = "" gesetzt. Damit funktioniert es wie beschrieben. Es funktioniert im Übrigen nicht, wenn man min und max aus der XML-Definition entfernt. Es werden dann anscheinend irgendwelche Defaultwerte genommen (0 und 1?).
Das manuelle Ändern der XML-Datei ist ja aber keine saubere Lösung. Wäre es möglich auch bei reinen Value-Widgets min und max im VIS-Editor einzublenden?