dynamisches Label im Virtual Device

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:

fibaro:call(204, “setProperty”, “ui.Modus.value”, tostring(fibaro:getGlobalValue(Heizmodus)));

Das funktioniert aber nicht. Was mache ich denn nur falsch?

Könnt ihr mir bitte helfen.

heizmodus.jpg

Hi SteMo,

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

Gruß Oli

Hi Oli,

vielen Dank für die Hilfe.
Das klappt aber leider trotzdem nicht. Statt des Wertes der Variablen zeigt das VD mir nur den Variablennamen an.

Die id im Browser stimmt auch:

http://192.168.xxx.xx/fibaro/de/devices/virtual_edit.html?id=204

Hast Du noch eine Idee?

Gruß

SteMo

dynamische-Label.jpg

Hi SteMo,

in deinem Code fehlten noch 2 Hochkomma, die ich übersehen hatte… jetzt sollte es aber hoffentlich klappen?

fibaro:call(204, „setProperty“, „ui.Label1.value“, tostring(fibaro:getGlobalValue('Heizmodus')));

Gruß Oli

Hi Oli,

vielen Dank, es klappt aber immer noch nicht.

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.

Gruß

SteMo

Unbenannt.jpg

Hi SteMo,

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.

Gruß Oli

Hallo Oli,

anbei mal der Screenshot.

Setzen tue ich die Werte so:
fibaro:setGlobal(“heizmodus1”, “urlaub”);
Das klappt.

Ich habe noch einmal einen 2. Screenshot des VD beigefügt. Mache ich da evtl. etwas falsch?

PS: Damit alles auf den Bildschirm geht habe ich den Befehl auf 2 Zeilen erweitert. Das ist aber nur für diesen Screenshot.

Gruß

Stefan

Unbenannt-1.jpg

Unbenannt1.jpg

und so sieht das VD aus

Unbenannt-2.jpg

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 :wink:
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.

Unbenannt-1.png

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.

Unbenannt-2.png

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.

Hi Ändy,

danke, das wars. Endlich klappts.

Hier die Lösung:

heizmode = fibaro:getGlobalValue('heizmodus1')
fibaro:debug(heizmode);
fibaro:call(204, "setProperty", "ui.Label1.value", (heizmode));

Hallo,
ich steige da mal mit ein.
Kann ich mir auch die Istwerte von Temperatur Sensoren anzeigen lassen?

Gruß Peter

@SteMo: Prima!

@Peter: Sicher geht das. Die Primäre Schleife wird alle paar Sekunden durchlaufen und stellt deine Werte da.

Ok, und wie lese ich den Wert aus?

Ok, habe es selber rausbekommen.