Anfängerfrage: GetValue liefert immer 1??

Hallo zusammen,

ich mache gerade meine ersten Gehversuche mit IPS.

Um die Funktionsweise der Scripte kennenzulernen dachte ich mir, ich probiere mal das Script auf Seite 104 der neuen Doku aus (Toggeln eines Aktors).

Leider funktioniert bei mir aber die Abfrage GetValue() nicht richtig. Egal, ob der Aktor ein- oder ausgeschaltet ist, die Methode liefert immer true (1).

Beispiel bei eingeschaltetem Aktor:

$id_aktor =58887 /[Garten.Licht.Schalter_WG]/;
$id_state = 55384 /[Garten.Licht.Schalter_WG\STATE]/;
echo GetValue($id_state) . "
";
HM_WriteValueBoolean ($id_aktor, „STATE“, false);
echo GetValue($id_state);

Als Ausgabe erhalte ich:
1
1

In der Objektübersicht sehe ich, dass die Variable STATE ebenfalls unverändert mit „An“ angezeigt wird, obwohl der AKtor durch den Schaltbefehl korrekt ausgeschaltet wurde.

Könnt Ihr mir einen Tip geben, was bei mir falsch sein könnte?

Viele Grüße

Burkhard

Also scheint dein Script beim lesen von „STATE“ zu funktionieren.
Kannst Du mal ein Screenshot von deinem Projektbaum an dieser Stelle machen?
Hast Du die „STATE“ Variable händisch angelegt?

Bis dann

Martin

Hallo Martin,

anbei mein Objektbaum. Er ist noch recht klein :wink:

Die Variablen habe ich über den „Homematic Configurator“ anlegen lassen. Auffällig ist, dass der Aktualisierungszeitstempel ebenfalls nicht gesetzt wird. Das müsste er doch im Normalfall, oder?

Viele Grüße

Burkhard

Hallo Burkhard,

kopier das mal in ein leeres Script und klick mal auf ausführen. Der Aktor sollte für 20sec eingeschaltet werden und dann wieder aus.

<?
HM_WriteValueBoolean(58887, "STATE", true);
IPS_SetScriptTimer($IPS_SELF, 20 );

if($IPS_SENDER == "TimerEvent")
{
   HM_WriteValueBoolean(58887, "STATE", false);
   IPS_SetScriptTimer($IPS_SELF, 0);
}

?>

Hallo Rainer,

ja, das funktioniert (an, und nach 20 sec wieder aus).

Das Schalten ist nicht das Problem …

Viele Grüße

Burkhard

Ist es bei HM nicht so, dass State immer auf True steht und nur der Zeitstempel ausgewertet werden kann?

ich hatte eigentlich gedacht, dass Du mir auch sagst, das der Status sich geändert hat von der Statevariable von An nach Aus.

Ist es bei HM nicht so, dass State immer auf True steht und nur der Zeitstempel ausgewertet werden kann?
Nö, beim Schaltaktor nicht. Der wechselt schon von An auf Aus.

nein, der STATE wird bei HM korrekt gesetzt. Meines Erachtens müsste er auch im Objektbaum aktuell angezeigt werden.

Viele Grüße

Burkhard

richtig, er muss auch im Objektbaum gesetzt werden. Dann stimmt bei dir etwas nicht. Starte mal den Dienst neu!

Ich vermute, dass IPS die Stati nicht mitgeteilt bekommt bzw. nicht empfängt.

Wenn ich übrigens den Befehl

HM_RequestStatus ($id_aktor, "STATE")

ausführe, dann wird die Variable im Objektbaum aktualisiert, aber GetValue liefert weiterhin „1“. :confused:

Viele Grüße

Burkhard

Problem gelöst! :slight_smile:

Sobald ich die Firewall vom IPS Server ausschalte funktioniert’s! Der Port 5544 war geblockt.

Danke an Euch alle für die Unterstützung.

Viele Grüße

Burkhard

Manno, das wollte ich auch gerade sagen! Jetzt hast Du mir die Lösung geklaut :frowning:

Aber Paresy hat noch die Ports 2000,2001 und 2002 zusätzlich angesprochen …