NEWS
Zugriff auf javascript.0.Variablen aus Vis View Script heraus
-
Hi,
ich setze mit einem Javascript Script eine Variable abhängig von einem Bewegungsmelder-Zustand.
Nun möchte ich in meiner View (also am Anzeigeclient) die Helligeit regeln mit
document.getElementById("visview_start").style.filter = "brightness(100%)"; ````, aber eben in Abhängigkeit von der Variable des Servers. Doch wie greife ich darauf aus einem Script in einer Vis View zu? getState ist dort nicht definiert… on() auch nicht... das muss doch gehen? kann man einen eventlistener bauen o.ä.? Irgendwie blicke ich es nicht! Beste Grüße
-
Hallo ,
das geht mit Vis 'bindings'. Suche mal danach, auch in der Vis Doku auf Github.
{javascript.0.datenpunkt}
Pix
-
Hi Pix,
Danke für den Tipp, das kannte ich in der Tat noch nicht. Kann ich diese Bindings nur in Attribut-Werte der Widgets eintragen (klappt hervorragend) oder kann ich diese auch im Script verwenden? Im Script ist es mir zumindest noch nicht gelungen.
Dazu kommt ja noch, dass ich gerne innerhalb Vis (also auf dem Client) in einem Script auf Änderungen an einem solchen Wert reagieren möchte?! D.h. Sobald der Wert z.B. auf True springt möchte ich etwas JavaScript ausführen lassen.
Ein Scheduler der das permanent prüft kommt mir dazu nicht richtig vor. Außerdem soll es möglichst Verzögerungsfrei laufen.
Die Widgets reagieren ja auch alle "live" auf Veränderungen der Werte. Solch eine Reaktion muss doch also auch in einem Script möglich sein?!
Kannst Du mir nochmal weiterhelfen?
-
Oder natürlich auch jemand anderes der mir hierzu Rat geben kann!
-
Hallo,
ich weiß jetzt nicht, welches Problem du lösen willst, welche Anwendung du vorhast.
Eigentlich wird die Logik nicht auf der Client Seite ausgeführt. Solche Lösungen (Wenn Dann) machen die Adapter (zB Javascript, Scenes, etc…).
In Vis gibt es aber die Möglichkeit, jedes Einstellungsfenster für Widgets mit Bindings zu füllen. Somit sind kleinere Logiken möglich.
Zum Beispiel kann man die Farbe abhängig vom Wert ändern.````
{wert:adaptername.instanznummer.objekt;(wert>0) ? "red" : "green"}Zuviele dieser Bindings belasten aber den Client. Deshalb sollte das lieber im Server oder mit einem passenden Widget gelöst werden. Es gibt dann noch Skripte für VIS, die zB Views umschalten, wenn eine bestimmte Zeit keine Eingabe erfolgte: [http://forum.iobroker.net/viewtopic.php … 493#p22052](http://forum.iobroker.net/viewtopic.php?f=29&t=2493#p22052) Gruß Pix
-
Hallo Pix,
ich möchte einfach die Helligkeit des Screens nachts (zw. 23 und 8 Uhr) reduzieren. Wenn ich im "dunklen" Modus den View berühre (Click Event), wird auch sofort hell. Soweit funktioniert das schon mit der lokalen Logik im VIS View Script Reiter.
Nun habe ich aber noch einen Bewegungsmelder im Flur. Sobald dieser Bewegung meldet, soll der Screen unmittelbar normal hell werden, d.h. ich muss den Bewegungs-Zustand im VIS-Script verwenden.
Am Ende läut es wohl auf einen Timer hinaus, der z.B. jede Sekunde auf Bewegung prüft. Nur wie greife ich auf die Variable überhaupt zu? Mir fällt nur ein Umweg ein: Das Bewegungsmelder-Objekt würde ich zB in einem Widget als Sichtbarkeits-Kriterium einstellen und z.B. auf die …getElementsById.visibility o.ä. genau dieses Widgets prüfen.
Aber gibts da nicht noch was saubereres, direktes? Die Widgets können es doch alle auch!:)
VG
Manfred
-
Aber gibts da nicht noch was saubereres, direktes? Die Widgets können es doch alle auch!:) `
An dem Punkt beiße ich mir gerade aus die Zähne aus. Ich würde meine Visualisierung (maßgeblich SVGs in VIS) gerne per Javascript animieren und kolorieren, muss dabei aber in Javascript auswerten können, wie eine Temperatur ist, bzw. ob eine Pumpe läuft usw. Ich verstehe einfach nicht, wie ich das in VIS in Javascript machen kann. Ein Widget kann ja auch die Daten auslesen / verarbeiten …
Danke!