Fensterstatus abfragen und in String schachteln

Die siehst du im Profil.
Theoretisch kannst du auch auf die Assoziation (Klartext) prüfen, aber der ist je nach Lokalisierung anders und somit ist das nicht zu empfehlen.
Komisch das da bei dir Opened steht, weil für ein deutsches Symcon wäre das geöffnet.
Michael

1 „Gefällt mir“

Hintergrund des ganzen ist eigentlich, ich möchte prüfen ob die Fenster geöffnet und mir das entsprechende anzeigen lassen. ( wenn ich außer Haus gehe, dass ich weiß das noch Fenster geöffnet sind) zusätzlich möchte ich bei einsetzen von Regen am besten eine Ansage von Alexa, die mir mitteilt, dass die Dachfenster noch offen sind.:grin:
Schonmal vielen Dank für den super Support.:ok_hand:

Dann weisst du ja jetzt wie du dir den Status anzeigen lassen kannst.
Ausgabe über Alexa mit VoiceMonkey möglich…

hey, danke für die vielen Antworten, leider bin ich jetzt erst dazu gekommen das ganze nochmal auszuprobieren. Eins vorneweg, ich habe das ganze nun im Ablaufplan realisiert und das funktioniert so auch super (mittlerweile auch die ausgabe über VoiceMonkey auf die Alexa) :ok_hand:

Nun wollte ich das ganze einfach so auch mit dem Script testen, weil es mich irgendwie fuchst, dass ich das so nicht aus rennen bekomme. Ich habe geprüft welcher Wert bei opened bzw. closed geliefert wird und frage nun im Script anstatt nach „openend“ einfach nach einer 1 ab. Aber irgendwie funktioniert das trotzdem nicht :man_shrugging: so schwer kann das doch nicht sein…

hier die Variable:
grafik

hier das script:

$Fenster1 = GetValueInteger(49760);
$Fenster2 = GetValueInteger(29339);
$Fenster3 = GetValueInteger(55041);

if ($Fenster1 == 1 || $Fenster2 == 1 || $Fenster3 == 1 )
{
    SetValueBoolean(18540, true);
} else {
    SetValueBoolean(18540, false);
}``

Schaut eigentlich gut aus…
Sind die Fenstervariablen tatsächlich von Typ Integer?
Ist die Variable 18540 tatsächlich eine von Typ Boolean?
Erhältst du eine Fehlermeldung?
Keine Ahnung für was die Striche am Schluss sind, lass die einfach mal weg…

<?php

$Fenster1 = GetValueInteger(49760);
$Fenster2 = GetValueInteger(29339);
$Fenster3 = GetValueInteger(55041);

if ($Fenster1 == 1 || $Fenster2 == 1 || $Fenster3 == 1 )
{
    SetValueBoolean(18540, true);
} else {
    SetValueBoolean(18540, false);
}

Was passiert denn, wenn du das Script ausführst? Kommt ein Syntaxfehler?

Hallo Michael,

wenn ich das mache, schmeisst es mir
„Parse error: syntax error, unexpected token „=“ in /var/lib/symcon/scripts/59942.ips.php on line 39“
um die Ohren.
Als bekennender Nichtswisser habe ich da mal rumprobiert und in Zeile 39 das @count durch $count ersetzt und siehe da, keine Fehler und funktioniert.
Meine Frage, weil ich ja keine Ahnung hab, ist das irgendwie schlecht/falsch? Könnte mich da bitte jemand erleuchten?

Grüße
Franky

Zeig mal die Zeilen davor und danach.
Michael

 $parentID = IPS_GetParent($_IPS['SELF']);
 $int = IPS_GetVariableIDByName('FENSTER OFFEN',$parentID);
 $string = IPS_GetVariableIDByName('FENSTER LISTE',$parentID);
 $status = IPS_GetVariableIDByName('FENSTERSTATUS',$parentID);
 $names = [];
 $events = IPS_GetChildrenIDs( $_IPS['SELF']);
 $i = 0;
 
 foreach($events as $ID)
 {
     $FKevent = IPS_GetEvent($ID);
     $FKstatus = GetValue($FKevent['TriggerVariableID']);
     $name = IPS_GetName($ID);
     if($FKstatus == true)
        {
            $i++;
            $names[] = $name;
        }
 }
 
 $count = count($names);
 if ($count >= 1){
     SetValue($status,true);
     $result = implode(", ", $names);}
 else{
     SetValue($status,false);
     $result = "Alle Fenster geschlossen.";}

 SetValue($int, $i);
 SetValue($string, $result);

Weiß ja nicht wieviele Zeilen du brauchst, ist der komplette Code mit der Änderung.

Grüße
Franky

So wird das nix. Bitte den Code nicht als Zitat einfügen, sondern als vorformatierter Text
Sonst zerschießt es hier den Code und klar das es damit dann Fehler gibt.
Michael

Sorry, mein Fehler, habs überarbeitet!
Hat übrigens nicht hundert Pro funktioniert, bei manchen Fenstern ging der Zähler nicht auf 0 zurück wenn alles zu war komischerweise.
Aber, mit meiner Änderung ( @count in $count) und deine Änderung ( $names = []; ) scheint es jetzt zu funktionieren. Ob richtig/falsch keine Ahnung.
Verstehen tu ich
s trotzdem nicht, falls jemand Zeit und Lust hat den Erklärbär zu spielen, freue ich mich darüber!

Grüße
Franky