Skript startet nicht

Hallo zusammen,

bin absoluter Newbie was IPSymcon und PHP betrifft. Versuche mich aber trotzdem mutig im Skripten. Habe jetzt allerdings zwei Stunden die Suche gequält und keine Lösung gefunden.

Was ich erreichen möchte:
Wenn mein Bewegungsmelder im Flur eine Bewegung feststellt, soll der Dimmer auf 80% angehen. Wenn keine Bewegung mehr registriert wird, geht der Bewegungsmelder wieder aus.

Mein Skript sieht wie folgt aus:

<?
$BewegungFlureingang = GetValue(20690 /*[Erdgeschoss\Flur\Fibaro Motion Sensor 01 (NodeID 034)\Status]*/);

if ($BewegungFlureingang == true){ 
ZW_DimSet (28663 /*[Erdgeschoss\Flur\Qubino Dimmer 01 (NodeID 026)]*/,80);
}
 else {
 ZW_DimSet (28663 /*[Erdgeschoss\Flur\Qubino Dimmer 01 (NodeID 026)]*/,0);
 }

?>

Was mache ich falsch?

Wenn ich durch den Flur gehe, sehe ich das der Bewegungsmelder auf ‚an‘ geht. Leider schaltet sich aber der Dimmer nicht ein.

Hi,

hast Du denn auch ein Event angelegt?

Viele Grüße
Peter

Hallo BennyS.

Sei gegrüßt in unserem Forum.

Dein Script musst du mit einem „Ereignis“ triggern, d.h. Du must noch ein Ereignis anlegen welches dein Script aufruft.

Siehe hier:
https://www.symcon.de/service/dokumentation/konzepte/ereignisse/

Viele Spass beim Ausprobieren.

Edit: Ich war zu langsam :wink:

Gruß
lueralba

Habe jetzt ein Event angelegt, welches die Variable auf ‚true‘ prüft und dann das Script startet.

Jetzt funktioniert es.

Kann man denn die Events mit im Skript abbilden?

Danke übrigens für die schnelle Reaktion hier im Forum…klasse!

Hast Du verstanden, was dieses Ereignis ist? Wie soll man das im Skript machen bzw. was startet dieses Skript dann?

Gruß
Bruno

Mit IPS_GetEvent kannst Du das Event im Skript abfragen.

Hallo BennyS.

Kann man denn die Events mit im Skript abbilden?

Was genau stellst Du dir denn da vor ?
Beschreib dass doch etwas…

Gruß
lueralba

Hallo zusammen,

wenn ich ehrlich bin, habe ich erst jetzt das ganze mit den Events und Skripten verstanden.
Bekomme gerade eine „Aha-Erlebnis“ nach dem anderen, dank diesem supergenialen Forum.

Habe es sogar schon geschafft, mein Außenlicht zu bestimmten Uhrzeit und Luminance ein- und auszuschalten. Natürlich nur mit Hilfe von Besipielskripten welche ich über die Suchfunktion gefunden habe…einfach nur klasse!

Dieses Skript lasse ich per Event alle 60 Sekunden durchlaufen.

Dabei habe ich eine Performance-Frage:
Angenommen ich habe nachher gut und gerne 100 Aktoren und/oder Sensoren inkludiert und diese per Skript steuern. Bekommt ein Raspberry Pi dann irgendwann mal Performanceprobleme, wenn ich verschiedene Skripts alle 60 Sek. durchlaufen lasse?

Mir ist klar, dass nicht jedes Skript in einer 60 Sekunden Schleife laufen muss (bspw. meine Rollosteuerung hat feste Uhrzeiten), aber rein theoretisch?

Mir ist nicht klar, warum irgendetwas in einer 60 Sekunden Schleife laufen soll / muss? Wenn Dein Außenlicht zu einer bestimmten Uhrzeit oder bei einem bestimmten Helligkeitswert einschalten soll, braucht es dazu definitiv kein Script, welches alle 60 Sekunden läuft.

Sicher, dass Du das Prinzip verstanden hast?

Ok?

Alles was ich jetzt sage wäre falsch:)

Ich hinterlege mal das erstellte Skript, wenn ich heute Abend in meinem Büro bin.
Vielleicht können wir dann da mal zusammen drauf schauen.

Anbei das Skript zum steuern des Außenlichts:

// Skript zum Steuern des Außenlichts zu bestimmten Uhrzeit und Luminance
// Uhrzeit 22:37 Uhr 
// Datum 05.04.2017
<?

$varAktuelleZeit = date("H:i"); 
$varAktuellerTag = date("w"); 
$varLuminanceFlureingang = GetValue (51944 /*[Erdgeschoss\Flur\Fibaro Motion Sensor 01 (NodeID 034)\Wert\Luminance]*/);
echo $varAktuelleZeit."
";     																			   				// debug 
echo $varAktuellerTag."
";   																			   				// debug 

if ($varAktuellerTag >= 1 and $varAktuellerTag <= 5)  // Werktags 
{ 
  echo "Werktag
";         																				   				// debug 
  if ((($varAktuelleZeit >= "04:59") and ($varAktuelleZeit <= "05:59") and ($varLuminanceFlureingang < 10)) or 
      (($varAktuelleZeit >= "16:00") and ($varAktuelleZeit <= "22:59") and ($varLuminanceFlureingang < 10))) 
	  	ZW_SwitchMode(24817 /*[Obergeschoss\Schlafzimmer\Fibaro Relay Switch 02 (NodeID 038)]*/, true);        				// Außenlicht wird eingeschaltet 
  else 
   		ZW_SwitchMode(24817 /*[Obergeschoss\Schlafzimmer\Fibaro Relay Switch 02 (NodeID 038)]*/, false);       				// Außenlicht bleibt ausgeschaltet
} 
else                          																				   				// Wochenende 
{ 
  echo "Wochenende
";      																				   				// debug 
  if ((($varAktuelleZeit >= "04:59") and ($varAktuelleZeit <= "05:59") and ($varLuminanceFlureingang < 10)) or 
      (($varAktuelleZeit >= "16:00") and ($varAktuelleZeit <= "00:59") and ($varLuminanceFlureingang < 10))) 
	  	ZW_SwitchMode(24817 /*[Obergeschoss\Schlafzimmer\Fibaro Relay Switch 02 (NodeID 038)]*/, true);        				// Außenlicht wird eingeschaltet 
  else 
   		ZW_SwitchMode(24817 /*[Obergeschoss\Schlafzimmer\Fibaro Relay Switch 02 (NodeID 038)]*/, false);       				// Außenlicht bleibt ausgeschaltet 
}  
?>

Das Skript lasse ich aktuell per Event alle 60 Sek. durchlaufen.

Ich würde das mit mehreren Skripten und Ereignissen lösen. Ein Skript, welches die Helligkeit prüft und dann ein und ausschaltet. Auf dieses Skript zwei Ereignisse für die Helligkeit mit Grenzüberschreitung und Unterschreitung.
Dann noch ein Skript mit Wochenplan, welches dann zu den gewünschten Zeiten die beiden Ereignisse aktiviert und deaktiviert.

Deine Lösung ist nicht falsch. Viele Wege führen nach Rom.

Bei Deiner Lösung sind die Zeiten hart ins Skript kodiert. Was ist, wenn Du weg bist und die Dame des Hauses etwas ändern möchte? Geht mit dem Wochenplan im WebFront super. Bei Deiner Lösung stelle ich mir das schwierig vor.

Grüße,
Christoph

Danke für die Hinweise und die „Richtung“.

So wie von Dir beschrieben, möchte ich es dann auch zu einem späteren Zeitpunkt umsetzen.
Aktuell bin ich froh, dass überhaupt was so passiert, wie ich meine es im Skript hinterlegt zu haben:D

Probier einfach weiter. Versuch macht kluch. Aber obiges Skript wird am Wochenende nicht funktionieren.
(($varAktuelleZeit >= „16:00“) and ($varAktuelleZeit <= „00:59“)… wird nie auftreten. Mach ein ‚oder‘ daraus.