HM-Aktor HM-LC-Sw1-FM per Script schalten?

Hallo,
versuche den Aktor per Script zu schalten. Soll heißen, der Status des Aktors soll sich bei jedem ausführen des Scriptes ändern.

  1. Script ausführen - Aktor an
  2. 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


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

:wink:

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 ?

Hast Du in der Instanz einen Haken bei „Staus emulieren“ gesetzt?

Wegen Blödsinn gelöscht

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.

Sorry, ich hatte meinen Eintrag schon gelöscht.
Ich hatte dann doch festgestellt, dass es vielleicht geht, dass man so negiert. :wink:

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

Das ist der „Nachteil“ eines Bi-directionalen Sytems :slight_smile: