NEWS
VIS "Formel" mit Booleans?!
-
Hi,
ich habe zwei Klimageräte und ich möchte in VIS ein Icon anzeigen sobald eins oder beide davon eingeschaltet sind.
Die eine Möglichkeit wäre extra per Szenen oder JavaScript einen "Kombi-Datenpunkt" zu erzeugen
Ich habe aber gesehen das man in VIS auch per {…} "Logik" einbinden kann. Wäre das was dafür?
Hat jemand eine Idee wie?
Ingo
-
http://forum.iobroker.net/viewtopic.php?f=30&t=5238
sollte passen
-
Probiere ich mal.
Weiss jemand gerade spontan wie das mit "booleans" und "alle Werte sind Strings" ist? Tests ich auf === "false" oder === false ?
-
Habe es jetzt mit
{a:daikin.0.control.power;b:daikin.1.control.power;(a?1:0)+(b?1:0)}
versucht … irgendwie tut das nicht.
Zur Erklärung: Die beiden Datenpunkte sind "boolean" und die Idee war das das Ergebnis die Anzahl der eingeschalteten Geräte ist. also 0, 1 oder 2 Aber der Wert ist irgendwie leer.
Mein zweiter versucht war bei einem anderen Widget es ein/auszublenden je nach Wert und weil das Widget keinen "Visibility" Bereich hat habe ich versucht in "opacity" das reinzumachen:
{a:javascript.0.Anzeigen.Zaehler.FensterOffenEG;(a==0)?"0":"1"}
Tut auch nicht. Es wird immer ausgeblendet.
-
Hallo,
bei mir funktioniert das so:
<u>ADDIEREN</u>
{a:daikin.0.control.power;b:daikin.1.control.power;parseFloat(a==="true"?1:0)+parseFloat(b==="true"?1:0)}
In der Doku steht:
@[url=https://github.com/ioBroker/ioBroker.vis#bindings-of-objects:~~VIS Doku auf Github"]~~Take care about types. All of them defined as strings. To be sure, that value will be treated as number use parseFloat function. `
<u>EIN/AUSBLENDEN</u>
Hier geht es allerdings ohne String :?
{a:javascript.0.Status.Kinderzimmer.Fenster.alle;(a==0)?"0":"1"}
Der Datenpunkt ist ein TürFensterKontakt. 0 = zu, 1 = gekippt, 2=offen
Wenn eingetragen in opacity, wird das Widget (ein HTML-Widget) korrekt ein/ausgeblendet
[{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":true,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","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,"visibility-oid":"","html":"{a:javascript.0.Status.Kinderzimmer.Fenster.alle;a==0?\"0\":\"1\"}"},"style":{"left":"866px","top":"825px","z-index":"45","background-color":"green","opacity":"{a:javascript.0.Status.Kinderzimmer.Fenster.alle;(a==0)?\"0\":\"1\"}","width":"126px","height":"82px","color":""},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","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,"html":"{javascript.0.Status.Kinderzimmer.Fenster.alle}"},"style":{"left":"864px","top":"923px","width":"102px","height":"74px","z-index":"25"},"widgetSet":"basic"}]
Gruß
Pix
-
Wird morgen früh gleich getestet. Ich dachte das ich das bei opacity auch so versucht hatte.
Welche vis Version hast du? Die aktuelle 0.15?
-
Hab VIS 0.15.4
-
@pix:{a:daikin.0.control.power;b:daikin.1.control.power;parseFloat(a==="true"?1:0)+parseFloat(b==="true"?1:0)} ```` `
Es geht auch so
{a:daikin.0.control.power;b:daikin.1.control.power;(a=="true"?1:0)+(b=="true"?1:0)}
@pix:<u>EIN/AUSBLENDEN</u>
Hier geht es allerdings ohne String :?
{a:javascript.0.Status.Kinderzimmer.Fenster.alle;(a==0)?"0":"1"} ```` `
Man muss einfach wissen, dass
0==0 => true
und
0=="0" => true
und
0===0 => true
und
0==="0" => false
-
Habe es jetzt mit
{a:daikin.0.control.power;b:daikin.1.control.power;(a?1:0)+(b?1:0)} `
Dabei muss man wissen was für einen Typ "daikin.0.control.power;b:daikin.1.control.power" hat.Das funktioniert auf jeden Fall:
{a:daikin.0.control.power;b:daikin.1.control.power;(a=="1"||a=="true"?1:0)+(b=="1"||b=="true"?1:0)}
Falls "daikin.0.control.power;b:daikin.1.control.power" würde number, dann einfach so:
{a:daikin.0.control.power;b:daikin.1.control.power;parseInt(a)+parseInt(b)}
Falls bool
{a:daikin.0.control.power;b:daikin.1.control.power;(a==="true"?1:0)+(b==="true"?1:0)}
Aus dem Kode kann man sehen:
https://github.com/ioBroker/ioBroker.vi … s.js#L2578
Dass tatsächlich alles zu String gemacht wird.
-
Cooool, mit euren Infos Habichs jetzt kapiert. Oh Versuch mal die vis Doku zu erweitern.
Ansonsten: bei opacity tut es. Was noch nicht tut ist die Idee bei visibility zu summieren und dann basierend damit was zu tun. Das muss ich nochmal testen.