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
-
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
-
@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.
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