Ich baue gerade an meiner Lüftungssteuerung. Da ist normalerweise ein 3-Stufenschalter dran. Den habe ich mit einem HM-LC-Sw4-PCB nachgebildet.
Dazu habe ich eine Integervariable [0…3] angelegt und mit einem Profil 4 Button erzeugt. Geschaltet wird dann mittels Skript laut http://www.ip-symcon.de/forum/f50/stufenschalter-hm-lc-sw4-dr-13870/
Das Schalten klappt super und die Anlage funktioniert. Allerdings werden die Zustände im Webfront bei den Button nicht aktualisiert. Woran kann das liegen?
Ich habe zwar schon einige Threads gefunden wo Leute Probleme mit Images hatten, aber hier geht es um eine einfache Integer-Variable der ein Profil zugewiesen wurde.
Ich habe mal zusätzlich die 3 Einzelschalter des HM-LC-Sw4-PCB eingeblendet und die werden sauber aktualisiert. Nur halt eben nicht die Button der Integervariablen.
Ok ich hab mal SetVariableInteger eingebaut.
Es ist allerdings schon verwirrend, das ich einerseits eine Variable auswerte, die einen bestimmten Wert hat und dann die selbe Variable noch mal auf diesen Wert setzen muss, damit ich etwas sehe. Aber man lernt nie aus.
Versteh nicht ganz was Du meinst. Die Integervariable im Webfront hat ja mit deinen Statevariablen nichts zutun. Woher soll also Webfront wissen wie der State ist. Folglich muss eine Verknüpfung zu den beiden Variablen gemacht werden.
Das Script hängt an der Integer Variablen die durch die 3 Button im Webfront dargestellt wird. Sobald ich im Webfront auf einen der Button klicke, dann ändert sich eben diese Integer-Variable. Dann wird dadurch das Script gestartet. Das Script wertet diese Änderung aus und ändert die State Variablen der einzelnen Schaltaktoren. Damit aber das Webfront die Anzeige aktualisiert muss ich im Script den Wert der Integervariablen auf sich selbt mit SetVariableinteger zurüch schreiben. Das ergibt für mich an dieser Stelle keinen Sinn da die Variable ja schon vor Ausführung des Scriptes den passenden Wert hatte. Weil das eben völlig unlogisch ist bin ich ja gar nicht auf die Idee gekommen das mit SetVaraiableInteger zu machen.
<?
switch($IPS_VALUE) //hier steht der Wert aus 41181 /*[Klima\Lüftungsanlage\Intensität]*/ drin
{
case 0:
HM_WriteValueBoolean(55844 /*[Klima\Lüftungsanlage\K2]*/, "STATE", false);
HM_WriteValueBoolean(31048 /*[Klima\Lüftungsanlage\K3]*/, "STATE", false);
HM_WriteValueBoolean(51655 /*[Klima\Lüftungsanlage\K1]*/, "STATE", true);
break;
case 1:
HM_WriteValueBoolean(51655 /*[Klima\Lüftungsanlage\K1]*/, "STATE", false);
HM_WriteValueBoolean(55844 /*[Klima\Lüftungsanlage\K2]*/, "STATE", false);
HM_WriteValueBoolean(31048 /*[Klima\Lüftungsanlage\K3]*/, "STATE", false);
break;
case 2:
HM_WriteValueBoolean(51655 /*[Klima\Lüftungsanlage\K1]*/, "STATE", false);
HM_WriteValueBoolean(31048 /*[Klima\Lüftungsanlage\K3]*/, "STATE", false);
HM_WriteValueBoolean(55844 /*[Klima\Lüftungsanlage\K2]*/, "STATE", true);
break;
case 3:
HM_WriteValueBoolean(51655 /*[Klima\Lüftungsanlage\K1]*/, "STATE", false);
HM_WriteValueBoolean(55844 /*[Klima\Lüftungsanlage\K2]*/, "STATE", false);
HM_WriteValueBoolean(31048 /*[Klima\Lüftungsanlage\K3]*/, "STATE", true);
break;
}
//und hier die Intensität auf sich selbt zurück schreiben damit sich was tut ???
SetValueInteger(41181 /*[Klima\Lüftungsanlage\Intensität]*/, $IPS_VALUE);
?>
Ok, ich sehe ich hab noch etwas Verständnisprobleme. Liegt sicher auch daran, dass ich mit PASCAL groß geworden bin und so mit den doch recht kryptischen Gegebenheiten in C, PHP und artverwandten Sprachen so meine Probleme habe.
Aber danke für die Hilfe.