Wie WORKING korrekt auslesen?

Hallo liebe Gemeinde,

ich steht hier gerade so auf dem Schlauch (Wald vor lauter Bäumen und so :wink: ) dass ich Euch leider um Hilfe bitten muss…

Ich versuche auszulesen ob sich gerade der Rolladen bewegt.
Deswegen möchte ich wissen ob WORKING true oder false ist.
ID von BLIND ist die 12345 (Beispiel).


$stateID = IPS_GetObjectIDByName("WORKING", 12345);
$rolladenState = GetValueBoolean($stateID);
echo "test: ".$rolladenState;
if ($rolladenState === true)
{
	echo "Rolladen bewegt sich nicht";
}
else
{
	echo "Rolladen bewegt sich";
}

Komischerweise bekomme ich nichts (d.h. leer) für $rolladenState…
Output (Rolladen bewegt sich zu dem Zeitpunkt nicht und wird auch korrekt in IPS mit „false“ angezeigt):

test: Rolladen bewegt sich

Was übersehe ich denn hier?

Ist bestimmt ein total banaler Fehler aber ich komm grad nicht drauf :wink:

Danke Euch für Eure Hilfe!

Viele Grüße

Chris

Mach doch einfach mal ein Echo auf die $stateID.
Dann siehst du doch, ob das die richtige ID vom Working ist.

Und mach mal aus"===" ein „==“

Grüße Doc

Also ich habs mal testweise versucht und bei mir funktioniert es trotz „===“ :confused:

Aber ich verstehe trotzdem nicht den Weg über „$stateID = IPS_GetObjectIDByName(„WORKING“, 12345);“
Soll das nur ne Übung für ein späteres Projekt sein?

Er ermittelt verm. nur die falsche ID.
Weiss nicht, welche er mit 12345 meint.

BLIND ist der Kanaltyp des Aktors laut DatenpunkteDoku.

Ich setze keine HM dort ein.

Sag ich ja.
Echo auf $stateID und er sieht, ob das die ID vom WORKING ist.
Das glaube ich kaum.

Kann ja nicht so schwer sein bei den paar Zeilen?
Aber jetzt ist Chris selber erstmal dran …

Grüße Doc

Hallo ihr Beiden,

herzlichen Dank für Eure schnellen Antworten :slight_smile:

Also die ID, die rauskommt stimmt:

Habe das Script jetzt mal angepasst:


$stateID = IPS_GetObjectIDByName("WORKING", 31477);
echo $stateID;
$rolladenState = GetValueBoolean($stateID);
echo "test: ".$rolladenState;
if ($rolladenState === true)
{
	echo "Rolladen bewegt sich nicht";
}
else
{
	echo "Rolladen bewegt sich";
}

Ergebnis:

26106test: Rolladen bewegt sich

Ich hatte das auch schon mal mit der 26106 direkt in dem GetValueBoolean, das klappt aber auch nicht :frowning:

Habt ihr noch eine Idee?

Danke Euch!

Viele Grüße

Chris

OK Blind ist die Instance

Du hast doch auch die Bedingung vertauscht.
Das Script scheint ja zu funktionieren.
Wenn false dann Rolladen bewegt sich.
Ist das so gewollt?

Oh mann… :rolleyes::rolleyes::rolleyes:

Ich sag doch: das wird ein ganz doofer Fehler sein…

Und auf den hast Du mich grad gestoßen, ich habe einfach die falsche Meldung gebracht :D:D

Wenn ich das tausche, klappt es perfekt, jetzt sagt er auch wenn der Rolladen fährt, dass er fährt :wink:

DANKE Euch nochmals!

So oft drübergeschaut und immer übersehen… grummel :wink:

Viele Grüße

Chris

… noch ein kleiner Tipp:

echo "Status: ".(int)$rolladenState.PHP_EOL;

so wird auch der Status bei False als eine ‚0‘ ausgegeben.
Hinweis: PHP_EOL sorgt für einen Zeilenumbruch

MST

Daaanke :slight_smile:

Viele Grüße

Chris