Hallo,
versuche den Aktor per Script zu schalten. Soll heißen, der Status des Aktors soll sich bei jedem ausführen des Scriptes ändern.
Script ausführen - Aktor an
Script ausführen - Aktor aus
Der Wechsel des Status funktioniert aber nicht.
Habe folgendes Script verwendet:
<?
$status = (HM_GetEmulateStatus(44320 /*[WZ Steckdose Test]*/));
if ($status == "false")
{
HM_WriteValueBoolean(44320 /*[WZ Steckdose Test]*/, "STATE", true);
}
else
{
HM_WriteValueBoolean(44320 /*[WZ Steckdose Test]*/, "STATE", false);
}
Der Aktor wird auf TRUE gesetzt, beim nochmaligen ausführen jedoch nicht auf FALSE (bleibt auf TRUE stehen)
Was mache ich da falsch?
Grüsse
HM-Aktor-Toggle-Skript:
HM_WriteValueBoolean(12345, "STATE", !GetValue(67890));
Was mache ich da falsch? > if ($status == FALSE ) > Boolean !!!
MST
hallo…
was soll denn die Funktion HM_GetEmulateStatus liefern?
bei mir kommt da genau nix… hm
$stat = HM_GetEmulateStatus(12727 /*[Testumgebung\Zwischenstecker]*/);
echo $stat;
Hallo Steiner,
hat super funktioniert.
Aber was meinst du damit:
Danke
paresy
9. August 2010 um 19:49
5
if ($status == "false")
wenn du einen false vergleich machen willst, musst du false ohne " schreiben. Ansonsten wäre false ein String und kein Boolscher Ausdruck. So ist es richtig:
if ($status == false)
paresy
Danke paresy,
glaube ich hab´s jetzt kapiert.
Die Lösung mal komplett
<?
$id = 44320 /*[Homematic Gerät]*/;//Homematic Objekt das geschaltet werden soll!!
$State_id = @IPS_GetObjectIDByName("STATE", $id);;
$status = getvalue ($State_id);
if ($status == false)
{
HM_WriteValueBoolean($id, "STATE", true);
}
else
{
HM_WriteValueBoolean($id, "STATE", false);
}
?>
Fals nochmal jemand drauf stößt
ich habe das von steiner beschriebene Toggle-Script übernommen, aber beim Ausführen bekomme ich die Meldung :
Warning: Failure in C:\Programme\IP-Symcon\scripts\Licht Schlafzimmer schalten.php on line 6
hier das Scirpt:
<?
$timestamp = time();
$uhrzeit = date(„H:i:s“,$timestamp);
SetValueString(13882 /[Beleuchtung\Licht Schalter Schlafzimmer\Taster Bett links\Letzte Benutzung] /,$uhrzeit);
HM_WriteValueBoolean(25490,„STATE“, !GetValue(43818));
?>
25490 ist der Schalter (einer von einem Sw2)
43818 die Variable STATE
wo steckt da der Fehler ?
kronos
8. Juni 2011 um 11:54
9
Hast Du in der Instanz einen Haken bei „Staus emulieren“ gesetzt?
kronos
8. Juni 2011 um 13:14
11
Das „!“ invertiert das Ergebnis von GetValueBolean. Er moniert auch keinen Syntaxfehler sondern eine „Failure“ was mich zum Aktor gebracht hat und nicht zu einem fehlerhaften PHP-Script.
Boui
8. Juni 2011 um 13:18
12
Sorry, ich hatte meinen Eintrag schon gelöscht.
Ich hatte dann doch festgestellt, dass es vielleicht geht, dass man so negiert.
kronos
8. Juni 2011 um 13:23
13
Sorry, ich hatte meinen Eintrag schon gelöscht.
Zu spät gesehen. Das „!“ ist aber auch bestechend einfach…
@Kronos :
klasse, du hattest recht - der Fehler kam, weil der Aktor nicht angeschlossen war und sich daher nicht zurückgemeldet hat - vielen Dank; da wäre ich nie drauf gekommen
kronos
8. Juni 2011 um 22:30
15
Das ist der „Nachteil“ eines Bi-directionalen Sytems