Hallo HC2 Experten,
ich bekomme den Eintrag einer Variablen im Label eines virtual device nicht hin.
Ich habe ein VD mit 3 Knöpfen (Urlaub, abwesend, heizen). Nach drücken des jeweiligen Buttons wird der jeweilige String (eben Urlaub, abwesend oder heizen) in die Variable ‘heizmodus’ geschrieben.
Zusätzlich habe ich in den VD auch noch ein Label. In dieses möchte ich jetzt den Wert der Variablen schreiben.
Das sollte dann z.B. so aussehen: Modus: abwesend
Ich habe das hier gefunden:
fibaro:call(X, “setProperty”, “ui.LabelY.value”, tostring(fibaro:getGlobalValue(Z)));
where X = id of virtual device
LabelY - label name
Z - global name
Problem Nr. 1 ist die id des VD’s. Diese wird ja nicht angezeigt. (Weshalb eigentlich nicht?)
Die ID habe ich so ermittelt: http://192.168.xxx.xx/api/devices
–> {“id”:204,“name”:“Heizmodus”,“roomID”:101,“type”:“virtual_device”,“visible”:true,
Die ID ist also 204, richtig?
Das Label heißt Modus, die Label id heißt Label1.
Somit dachte ich zumindest muß ich in der Primären Schleife folgendes eintragen:
die ID des Virtuelles Devices findest du oben in der Adresszeile deines Browsers. Dass diese nicht direkt angezeigt wird ist wirklich nicht sonderlich gut gelöst. Diese kann man aber auch über getSelfID herausfinden.
Deine Zeile funktioniert nicht, weil du anstatt der ID das Label angegeben hast. Deine Zeile müsste korrekt fibaro:call(204, „setProperty“, „ui.Label1.value“, tostring(fibaro:getGlobalValue(Heizmodus)));
heißen
Die Variable heißt ‘heizmodi’. Wird zwischen groß und klein Schreibung unterschieden? Wie auch immer, beide Versionen funktionieren nicht. Ich bekomme immer die gleiche Anzeige des Variablennamens, nicht des Variableninhaltes.
Ich habe in der primären Schleife mal auf Debug gedrückt. Dann kommt die angehängte Meldung. Sagt Dir das etwas?
Ich habe die Variable noch einmal umbenannt weil ich verhindern wollte das der selbe Name für das VD und der Variablen ein Problem ist. Hat aber auch nichts geholfen.
wenn deine Globale Variable “Heizmodi” heißt musst du das natürlich in der Zeile hinten bearbeiten. Groß-Kleinschreibung wird beachtet also am besten den Namen kopieren.
Wenn es nicht klappt mach bitte noch einen Screenshot von deiner Variablensteuerung.
Also tonumber kann überhaupt nicht funktionieren, da du einen string mit dem Wert “Urlaub” nicht in eine Zahl konvertieren kannst.
Ich persönlich arbeite immer ohne tostring/tonumber wenn ich sowieso nur etwas anzeigen will.
Zudem hat er die Gänsefüßchen unten gemacht, was auch nicht funktioniert.
Also bitte mal folgenden Code in eine Zeile kopieren fibaro:call(204, ‘setProberty’, ‘ui.Label1.value’, (fibaro:getGlobalValue(‘heizmodus1’));
danke für den neuen Vorschlag, es klappt aber immer noch nicht.
Ich habe hinten noch mal die fehlende Klammer ergänzt:
fibaro:call(204, ‘setProberty’, ‘ui.Label1.value’, (fibaro:getGlobalValue(‘heizmodus1’)));
Aber im Label steht immer nur : Modus: heizmodus
Aber woher kommt denn “heizmodus” ?
Die Variable heißt heizmodus1, die Inhalte der Variablen heißen auch anders.
ich habe im VD das Label noch einmal gelöscht und dann neu erstellt. Jezt wird gar nicht mehr angezeigt. Nur noch ‘Modus’.
Ein Neustart der HC2 brachte auch nichts.
Ich werd verrückt.
Versuch mal die Befehle nicht zu verschachteln und stattdessen mit Zwischenvariablen zu arbeiten. Die kannst Du Dir dann auch mal per Debug ausgeben und so leichter erkennen woran es liegt.