Hallo zusammen
Ich bin leider voll nicht der PHP Held aber das meiste kriegt man ja mit üben und überlegen hin. Jetzt scheitere ich jedoch an einem Script für die Gebäudelüftung. Diese soll anhand von den Netatmo CO2 Daten die Stufe wechseln falls notwendig.
Soweit so gut. Dies klappt auch soweit einwandfrei. Ich habe am Script ein Event angehängt, dass dieses bei Überschreitung von z.B. 900 ppm auslöst (folge Events auch).
Im Script möchte ich per IF abfragen ob die Stufe schon an ist, dann muss nicht mehr das ganze durch. Leider sass meine bessere Hälfte heute auf dem Hometrainer und dann gings los inkl Sonos… alle 5min… ups da war jemand nicht glücklich. Das Script kriegt die IF Abfrage ob der Schaltaktor schon ein ist irgendwie nicht gebacken denn es läuft tip top immer wieder die erste IF Schleife durch. Auch wenn ich z.B. die Lueftungssteuerung ändere das Selbe.
Das ursprüngliche Script habe ich aus dem Howto vom Forum.
Anbei mal mein Script, kann mal jemand von Euch PHP Gurus einen Blick drauf werfen und mich auf den richtigen Weg schubsen? THX
Script:
<?
// Ereignis-Trigger hinzufügen > Variablenänderung der Variablen von Bewegungsmelder1 und Bewegungsmelder2
$LueftSt = GetValue(13284 /*[Homematic\HM Systemvariablen\HomeMatic Systemvariablen\Lüftungssteuerung]*/); // Bool Variable, welche Rollladensteuerung mit TRUE anzeigt
$Anwesend = GetValue(34137 /*[Homematic\HM Systemvariablen\HomeMatic Systemvariablen\Anwesenheit]*/);
$Stufe2Akt = GetValue(54843 /*[Homematic\HM Geräte\Gebäudelüftung\Gebäudelüftung Stufe 2\STATE]*/);
$Stufe3Akt = GetValue(26012 /*[Homematic\HM Geräte\Gebäudelüftung\Gebäudelüftung Stufe 3\STATE]*/);
$CO2WZ = GetValue(34174 /*[Netatmo\Netatmo\70:ee:50:01:5d:6c\MyNetatmo\Innen\CO2]*/);
$CO2BR = GetValue(34009 /*[Netatmo\Netatmo\70:ee:50:01:5d:6c\Outdoor\Buero\CO2]*/);
$CO2KZ = GetValue(35421 /*[Netatmo\Netatmo\70:ee:50:01:5d:6c\Outdoor\Tipsi Zimmer\CO2]*/);
$CO2SZ = GetValue(14099 /*[Netatmo\Netatmo\70:ee:50:01:5d:6c\Outdoor\Schlafzimmer\CO2]*/);
if (($LueftSt === true) AND ((($Stufe3Akt === false) AND ($Stufe2Akt === false)) AND (($CO2WZ>=900) AND ($CO2WZ<1200)) OR (($CO2BR>=900) AND ($CO2BR<1200)) OR (($CO2KZ>=900) AND ($CO2KZ<1200)) OR (($CO2SZ>=900) AND ($CO2SZ<1200)))) { // Wenn bei einem Bewegungsmelder Bewegung erkannt wurde
if ($Anwesend === true) { // Wenn es Nacht oder Dunkel ist
// Nachtsteuerung mit Sound
WFC_PushNotification(34504 /*[WebFront Test]*/, 'Info', 'Gebäudelüftung, CO2 Stufe 2 aktiviert.', '', 0);
// SNS_PlayFilesGrouping(59031 /*[Multimedia\Sonos\Speaker\Büro]*/ , array( 54449 => array( "volume" => 20),
// 30611 => array( "volume" => 20) ), array("http://192.168.100.55:3777/user/sounds/fixed/LueftCO2St2.mp3"), 0 ); // Büro Master, KZ und WZ in Gruppe dazu
// IPS_Sleep(2000); // 2 Sek Pause für Funkübertragung
HM_WriteValueBoolean(25297 /*[Homematic\HM Geräte\Gebäudelüftung\Gebäudelüftung Stufe 1]*/, "STATE", true);
IPS_Sleep(1500);
HM_WriteValueFloat(49121 /*[Homematic\HM Geräte\Gebäudelüftung\Gebäudelüftung Stufe 2]*/, "ON_TIME", 60*60);
IPS_Sleep(1500);
HM_WriteValueBoolean(49121 /*[Homematic\HM Geräte\Gebäudelüftung\Gebäudelüftung Stufe 2]*/, "STATE", true);
}
else {
// Nachtsteuerung ohne Sound
WFC_PushNotification(34504 /*[WebFront Test]*/, 'Info', 'Gebäudelüftung, CO2 Stufe 2 aktiviert.', '', 0);
IPS_Sleep(2000); // 2 Sek Pause für Funkübertragung
HM_WriteValueBoolean(25297 /*[Homematic\HM Geräte\Gebäudelüftung\Gebäudelüftung Stufe 1]*/, "STATE", true);
IPS_Sleep(1500);
HM_WriteValueFloat(49121 /*[Homematic\HM Geräte\Gebäudelüftung\Gebäudelüftung Stufe 2]*/, "ON_TIME", 60*60);
IPS_Sleep(1500);
HM_WriteValueBoolean(49121 /*[Homematic\HM Geräte\Gebäudelüftung\Gebäudelüftung Stufe 2]*/, "STATE", true);
}
}
else {
// LAMPE(N) AUSSCHALTEN
}
?>