ich hab Probleme damit, eine KNX Variable mit dem Befehl RequestAction zurückzusetzen.
Die Variable in IPS, mit der ich die KNX Variable schalten möchte, kommt aus dem iCal Modul und hat grundsätzlich den richtigen Wert. Meine KNX Variable bleibt aber auf „true“.
Folgendes Script nutze ich dafür:
<?php
if (35367 == true) { // Papiertonne wird laut iCal Modul heute geleert
RequestAction(13888, true); // KNX Gruppenadresse für 'Papiertonne heute' setzen
}
else {
RequestAction(13888, false); // KNX Gruppenadresse für 'Papiertonne heute' zurücksetzen
}
?>
Kann mir jemand einen Tip geben, woran das scheitert?
Schritt eins: Reicht nicht ein Ereignis → Schalte Variable auf auslönden Wert?
Schritt zwei: Das If prüft ob eine Zahl true ist, das ist aber NIE der Fall. Du möchtest vielleicht ein if(GetValueBoolean(35367)) machen? Das ==true ist implizit dabei.
Bitte noch mal die PHP Doku lesen
PHP vergleicht bei == keinen Typ und somit wird hier ein INT zu einem BOOL gecastet.
Somit ist alles außer 0 immer true.
Siehe hier:
Nur bei dem typenstarken Vergleich mit === kommt immer false raus.
Quelle: https://www.php.net/manual/de/types.comparisons.php
Michael
Ok, dann ist das die Eigenart von PHP. Ich hab jetzt nur meine Erfahrung herangezogen bzw. was ich weiß. Gut, was gelernt. Danke
Wobei mir persönlich niemals in den Sinn kommen würde, eine Int mit einer Bool Variable zu vergleichen. Für mich ist 0 (der Integer Wert) was völlig anderes als FALSE.
@tobiasr Ich hab es jetzt mit je einem eigenen Ereignis für ON und für OFF gelöst. Finde ich zwar jetzt nicht so elegant, aber zumindest scheint es zu funktionieren…
@Nall-chan Aber auf eine Zahl frag ich doch gar nicht ab, sondern nur auf einen boolschen Zustand? Da sollte das doch funktionieren?