Taster mit Lichtaktor schalten

hallo!

ich habe versucht einen Taster mit einem Aktor zu schalten …

 <?
$VarSwitchID = 40766 /*[Licht\5 Steckdose\STATE]*/ ; // ID der Boolvariable
$VarSwitchVal = GetValue ($VarSwitchID);

if ($VarSwitchVal == true)
{
HM_WriteValueBoolean(29493 /*[Licht\5 Steckdose]*/  , "STATE", true); //

}

if($VarSwitchVal == false)
{
HM_WriteValueBoolean(29493 /*[Licht\5 Steckdose]*/  , "STATE", false); //

}
?>

was mach ich hier falsch da das licht nicht geschaltet wird?

danke !

Da sind Leerzeichen vor dem <?

Desweitern erschliesst sich mir der Sinn nicht, da Du nur einen Aktor Ein und Aus schaltest. Wird der Rest über Trigger gelöst? Wenn Du einen Taster simulieren willst, sollte da noch eine Zeile mit ON_TIME und 1 Sek. rein.

HM_WriteValueFloat($VarSwitchVal, "ON_TIME",  x);    // x Sekunden AN

Gruß
Bruno

Moin!

Also du willst einen TOGGLE über einen Taster machen!?

Dann erstmal das Leerzeichen ganz am Anfang entfernen, vor dem " <?" und dann:
>> Wenn Zwischenstecker TRUE ist, dann nochmal TRUE senden?!?! Eher wenn TRUE dann mach FALSE und andersrum :wink:

if ($VarSwitchVal == true)
{
HM_WriteValueBoolean(29493 /*[Licht\5 Steckdose]*/  , "STATE", false); //
}

if($VarSwitchVal == false)
{
HM_WriteValueBoolean(29493 /*[Licht\5 Steckdose]*/  , "STATE", true); //
}

Edit: Und wie Bruno sagte, du musst das Skript dann natürlich vom Taster aus irgendwie ansteuern, aber da gehe ich mal davon aus, dass du das über ausgelöste Ereignisse (Variablenaktualisierung) deiner Taster machst!?

MfG,
Chris

ich möchte das script dann über einen wandschalter aktivieren wann immer die lampe zum ein und ausschalten ist

bin da leider eine echte leuchte daher versuche ich es so … gibt’s eine bessere variante einen wandtaster mit einem aktor zu verbinden?

super !!! jetzt geht’s!

vielen dank!

Wenn es ein Homematic Wandtaster ist, dann per Direktverknüpfung

Bruno, das war auch mein erster Gedanke.

Gesendet von iPhone mit Tapatalk

Ich habe jetzt das Script mit meinem HM-PB-2-WM55-2 getestet.

Jetzt kann ich das Licht aber nicht mehr ausschalten.
Schalten will ich einen Kanal von einem HM-LC-Sw4-DR.
Wie kann ich das lösen wenn ich nur einen Kanal vom Taster nutzen will (für ein und aus)?
Oder sollte ich dann trotzdem auf den zweiten Kanal die Aus-Taste legen.

Also wenn du das direkt im Ereignis machst, und nicht mit einem eigenen Script im logischen Baum, dann wird das so zumindest nix :smiley:
Du fragst ja den alten Werte der Lampe nie ab.
Somit landest du immer im false-Zweig und dort wird immer Eingeschaltet.

Der einfachste Weg ist (weil beliebig oft kopierbar ohne das man IDs austauschen muss):

Verschiebe das Ereignis mal unter die Variable welche den Status deiner Lampe darstellt, somit wird sie zum ‚Ziel‘ des Ereignisses.
Dann diesen Code in das Ereignis kopieren:

$Instanz = IPS_GetParent($_IPS['TARGET']);
$Lampenstatus = GetValueBoolean($_IPS['TARGET']);
HM_WriteValueBoolean($Instanz,'STATE',!$Lampenstatus);

Oder in Kurzform:

HM_WriteValueBoolean(IPS_GetParent($_IPS['TARGET']),'STATE',!GetValueBoolean($_IPS['TARGET']));

Fertig :smiley:

Kurze Erklärung:
$_IPS[‚TARGET‘] enthält die ID der IPS-Variable, wenn das Ereignis eintritt.
Mit GetValueBoolean wird der Status aus der Variable ausgelesen und mit dem ! invertiert.
Und mit IPS_GetParent wird die Instanz der Lampe ermittelt.

Michael

Danke Michael … das ist mal eine Erklärung quasi auch für Dummies wie mich, in Sachen PHP :slight_smile:
Ich versuche immer die Sache auch für mich logisch nachzuvollziehen, sodass ich mir das auch für andere Sachen ableiten kann. Man(n) lernt ja nie aus.

Gruß
Matthias