NEWS
VIS-2 Viewaufruf mit Parameterübergabe?
-
Moin. Ich habe knapp 20 Thermostate, die ich mit IoBroker ansteuern möchte. Im Moment nutze ich Button mit dem ich als Dialog die View meines Thermostates aufrufe. Jetzt müsste ich 20 gleiche Views bauen, bei denen lediglich die Datenpunkte unterschiedlich sind, die aber immer gleich aufgebaut sind.
Meine Frage ist ob ich beim Aufruf eines Dialog einen Parameter übergeben könnte um in der Zielview anhand des Parameters die entsprechende Datenpunkte zu nutzen.
Also beim Aufruf der View "Thermostat(xyz)" würde ich die Datenpunkte:
hm-rpc.2.xyz.1.SET_POINT_TEMPERATURE
hm-rpc.2.xyz.1.ACTUAL_TEMPERATUREDamit müsste ich nur eine View pflegen und nicht zwanzig.
Theoretisch könnte ich mir xyz in ein DP schreiben und den als Bindings für die Steuerung verwenden. Wie kann ich aber mit einem Button ein DP Setzen und ein Dialog öffnen?
Ideen? Tipps?
-
@a200 ich habe ein ähnliches Problem. Ich möchte über eine Knopf auf dem Temperatur und Feuchtigkeit eines Sensors dargestellt wird, dessen zeitlichen Verlauf (History Diagram mit Flog) anzeigen und dafür nicht 15 verschiede Views erstellen und pflegen, sondern genau einen dem ich mitgebe, was er genau darstellen soll, oder ev. über den Knopf einen Dialog mit einen iframe öffen.
Bist du mit deinem probkem weitergekommen?
-
@fonebone Sorry. Leider bisher nichts gefunden. Aber aktuell ist das Thema bei mir immer noch.
-
Leider nein.
Alle Datenpunkte einer View müssen zum Start bekannt sein.
Dynamische Datenpunkte gehen in Vis leider nicht.um es in der Bearbeitung leichter zu machen, kannst du eine View exportieren und mit einem TextEdit versuchen und ersetzen relativ einfach die verschiedenen Versionen erzeugen, die du dann wieder importierst
-
Hallo ich habe das bei mir in VIS-1 mittels local_* Datenpunkten gelöst.
D.h. beim Öffnen eines Dialogs mit dem Dialogbutten (dort kann man euch einen Datenpunkt beim öffnen setzen lassen) wird der entsprechende local_* Datenpunkt (z.B. local_Thermostat) auf einen Wert entsprechend des Thermostats gesetzt das du Steuern möchtest (z.B. Küche).
Danach kannst du mittels Binding die entsprechenden Datenpunkte setzen.
Der Vorteil der local_* Datenpunke ist, dass der Wert des local_Thermostat Datenpunkts nur auf dem Gerät geändert wird auf dem der Dialog geöffnet wird, nicht auf allen Geräten.P.S. ich weiß jetz aber nicht ob das bei VIS-2 so auch alles möglich ist, da ich VIS-2 noch nicht verwende.
-
Und wie erzeugst du das binding auf Basis eines Parameters?
Gibt bitte mal ein Beispiel. Evtl hab ich ja was verpasst -
Ich habe einen Button "Heizung Bad" (Container-Button-view in jqui Dialog) mit dem ich den Dialog für die Thermostate öffne und zeitgleich den Datenpunkt local_thermostat auf den Wert "Bad" setze.
Im sich öffnenden Dialog setze ich dann bei einem beliebigen Button oder anderem Steuerelement die Objekt ID des zu steuernden Datenpunktes mit einem Binding.
z.B. für Küche und Bad: {wert:local_thermostat; wert=="Bad"? "hm-rpc.2.Bad.1.SET_POINT_TEMPERATURE": wert=="Kueche"? "hm-rpc.2.Kueche.1.SET_POINT_TEMPERATURE": " "} usw
Ich hoffe ich konnte es einigermasen verständlich erklären.
Bei mir hats so funktioniert, ich weiß aber nicht wie gut es bei vielen Datenpunkten läuft und ob es bei allen Widgets funktioniert. -
@fritzke316 said in VIS-2 Viewaufruf mit Parameterübergabe?:
{wert:local_thermostat; wert=="Bad"? "hm-rpc.2.Bad.1.SET_POINT_TEMPERATURE": wert=="Kueche"? "hm-rpc.2.Kueche.1.SET_POINT_TEMPERATURE": " "}
Habe ich getestet. Ja funktioniert so, aber nur, wenn der Datenpunkt irgendwo anders schon mal referenziert wurde. Also entweder bereits in einem widget als obejtct id oder in einem binding an der ersten Position notiert wurde. Sonst funktioniert das nicht.
Hintergrund ist, vis geht durch das ganze Projekt am Anfang beim laden durch und sucht nach den ObjectIDs genau an diesen erwähnten Stellen. Im Binding weiter hinten, als Parameter notiert wird nicht erkannt. Dann abonniert vis diese Datenpunkte beim Server. Wenn da der Datenpunkt nicht dabei ist, dann kennt vis diesen Datenpunkt und natürlich auch den Inhalt nicht.
Es wurde hier schon immer wieder mal nachgefragt, die objectID aus ein oder mehreren Strings zusammenzubauen und dann dynamisch verwenden. das funktioniert nicht, ausser man packt irgendwo auf eine versteckte view alle möglichen Datenpunkte.
-
Aaaahh ok danke für die Erklärung, so genau weiß ich über die Abläufe in Vis nicht bescheid.
Bei mir funktionierts dann wahrscheinlich deshalb, da ich auf dem Button mit dem ich den Dialog öffne schon alle Stati der Datenpunkte die ich im Popup ändern kann anzeigen lasse.Auf anderer Stelle hatte ich auch Probleme damit, da habe ichs dann so gemacht dass ich im Dialog View alle Buttons für die verschiedenen Räume angelegt habe und diese dann je nach gewünschten Raum ein- und ausblende. Klar muss ich dann immer noch alle Buttons anlegen und pflegen, aber ich habe wenigstens nur eine View, was die Vis etwas übersichtlicher macht.
-
Ja übereinanderlegen und mit regeln für die Sichtbarkeit geht auch.
Ist halt auch nicht so einfach zu bearbeiten. -
@fritzke316 Als Alternative kannst du entsprechende eigene Datenpunkte erstellen, (Raum, Temp.,Ausfuehren) die du dann mittels der View setzten und per Script an das richtige Thermostat weiterreichen kannst. Dann hättest du nur eine View.