2 Ereignisse sollen 1 Script starten

:confused:
Liebe Gemeinde,
ich bekomme es einfach nicht hin das 2 Ereignisse einen Script starten.
Der Script startet auch wenn nur ein Ereignis eintritt. Was mache ich falsch?
siehe Anhang

Gruß
thjö

hi,

trigger nur auf Bewegungsmelder.
dann schreibst du in dein Script;
$daemmerung = 12345; // id des daemmerungsschalter

if ($daemmerung == True){
// hier kannst du deine lichter einschalten und per Timer ausschalten
}

Gruß
Boris

Danke Boris, klappt.
:cool:

Kann ich das auch mit einer Uhrzeit mahen? z.B soll der Script Abschalt Haus nur von 22 uhr bis 05:30 Uhr laufen. Oder reicht dieses Ereignis.

Gruß
Jörg

Abschalt Haus.jpg

hallo,

klar, du kannst das script triggern und zeitlich einstellen wie du willst. IPS ist felxibel ohne ende!

Gruß
Boris

Klappt doch nicht, ich trigger auf den Bewegunsmelder aber das Licht geht auch jetzt an wo der Helligkeitsensor false ist. Und wo kann ich auf die Uhrzeit triggern im Ergebnis oder in Skript?

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Licht_Hof.ips.php
Trigger  : 
Interval : 
*/
$daemmerung = 43117 /*[Eingänge\1_Helligkeitsensor]*/; // id des daemmerungsschalter
if ($daemmerung == True){
$wago_id = 11726 /*[WAGO SPS Server]*/ ; //hier musst du die ID deiner Wago Steuerung eintragen.
// All systems go...
MBT_WriteCoil($wago_id,513, true); //8DO 3.2   Hof
MBT_WriteCoil($wago_id,516, true); //8DO 3.5   Carport
MBT_WriteCoil($wago_id,515, true); //8DO 3.4   Haustür
MBT_WriteCoil($wago_id,512, true); //8DO 3.1   Haus
// ... bis auf Wiederruf
IPS_SetScriptTimer('Abschalt Hof',      300); // 300 Sehunden -> 5 Minuten
IPS_SetScriptTimer('Abschalt Carport',  150);
IPS_SetScriptTimer('Abschalt Aufgang',  300);
IPS_SetScriptTimer('Abschalt Haus',     360);
}
?>

Gruß jörg

Nee, so wird das auch nix…

An dieser Stelle:


if ($daemmerung == True)

prüfst du ob die Zahl 43117 dem boolschen Ausdruck true entspricht. Laut Definition ist aber nicht 1 true und 0 false sondern alles was nicht 0 ist, ist automatisch true. Kein Wunder also dass der Status deines Dämmerungssensors nicht berücksichtigt wird, wenn du ihn garnicht abfragst…

Dein Fehler liegt also hier:

$daemmerung = 43117

Dämmerung ist nicht 43117 und nicht 4711 oder 08/15 sondern ein boolscher Wert (also true oder false) den du aus deiner Statusvariable mit dem eindeutigen Namen (also ID) 12345 auslesen musst.

Hier muss irgendetwas hinein wie.

$daemmerung = GetValueBoolean(12345);

Wobei 12345 hier für die ID der Variable steht, an der du abgelesen hast, dass dein Dämmerungsschalter auf „false“ steht.

Gruß,

Toni

hallo,

und sorry. hab mich ein wenig kurz und undeutlich ausgedrückt. Tonic1024 hat das ja jetzt sehr verständlich beschrieben mit dem

GetValueBoolean

.

Gruß

Ok dann sollte es so aus sehen, oder?

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Licht_Hof.ips.php
Trigger  : 
Interval : 
*/
$daemmerung = GetValueBoolean(56494) /*[Eingänge\1_Dämmerungsensor\Value]*/; // id des daemmerungsschalter
if ($daemmerung == True){
$wago_id = 11726 /*[WAGO SPS Server]*/ ; //hier musst du die ID deiner Wago Steuerung eintragen.
// All systems go...
MBT_WriteCoil($wago_id,513, true); //8DO 3.2   Hof
MBT_WriteCoil($wago_id,516, true); //8DO 3.5   Carport
MBT_WriteCoil($wago_id,515, true); //8DO 3.4   Haustür
MBT_WriteCoil($wago_id,512, true); //8DO 3.1   Haus
// ... bis auf Wiederruf
IPS_SetScriptTimer('Abschalt Hof',      300); // 300 Sehunden -> 5 Minuten
IPS_SetScriptTimer('Abschalt Carport',  150);
IPS_SetScriptTimer('Abschalt Aufgang',  300);
IPS_SetScriptTimer('Abschalt Haus',     360);
}
?>

Gruß Jörg

Genau,
aber in der V2 reicht ein

GetValue

.
Also man muss nicht mehr Boolean, String, oder ähnliches schreiben.

Hallo Jörg,

warum probierst Du es nicht einfach aus? Das geht doch viel schneller, als hier erst auf Antwort zu warten.

Dann kannst Du gleich noch berichten, was Du beobachtet hast.

Wenn es dann immer noch nicht gehen sollte, dann können wir Deine Beobachtungen gleich in unsere Überlegungen mit einbeziehen.

Gruß
HJH

macht der Gewohnheit :slight_smile:

   <? 
/* 
******************************* 
 IP-SYMCON Event Scripting 
******************************* 
File     : Licht_Hof.ips.php 
Trigger  :  
Interval :  
*/ 
if(GetValueBoolean(56494)) {/*[Eingänge\1_Dämmerungsensor\Value]*/; // id des daemmerungsschalter  
$wago_id = 11726 /*[WAGO SPS Server]*/ ; //hier musst du die ID deiner Wago Steuerung eintragen. 
// All systems go... 
MBT_WriteCoil($wago_id,513, true); //8DO 3.2   Hof 
MBT_WriteCoil($wago_id,516, true); //8DO 3.5   Carport 
MBT_WriteCoil($wago_id,515, true); //8DO 3.4   Haustür 
MBT_WriteCoil($wago_id,512, true); //8DO 3.1   Haus 
// ... bis auf Wiederruf 
IPS_SetScriptTimer('Abschalt Hof',      300); // 300 Sehunden -> 5 Minuten 
IPS_SetScriptTimer('Abschalt Carport',  150); 
IPS_SetScriptTimer('Abschalt Aufgang',  300); 
IPS_SetScriptTimer('Abschalt Haus',     360); 
} 
?>    

Hallo Rainer, dein Script läuft nicht, bzw. geht das Licht auch an wenn es hell ist. bei

daemmerung = GetValueBoolean(56494) /*[Eingänge\1_Dämmerungsensor\Value]*/;if ($daemmerung == True)

geht es, werde es aber gleich mal live testen.

Gruß
Jörg

Also es fuktioniert mit

daemmerung = GetValueBoolean(56494) /*[Eingänge\1_Dämmerungsensor\Value]*/;if ($daemmerung == True)  

… aber eine Frage habe ich noch kann man einem Script auch sagen das es z.B. nur von 22 Uhr bis 05:30 aktiv ist ? :confused:

Siehe Anhang.

hallo thjö,

zb so

 $m1 = "08:00";  // Time für Morgens zwischen 08:-Oo und 11:00 Uhr
 $m2 = "11:00";
 


 $date=date("H:i");
 echo $date;
 if ( ($date > $m1) and ($date < $m2))



 {

man könnte es auch so >= machen.

geht nicht :frowning:

einfach gesagt soll

IPS_SetScriptTimer('Abschalt Haus',     360); 

nur zwischen 22 Uhr und 05:30 Uhr greifen, das Licht geht mit dem Dämmerungsensor an und um 23 Uhr wird das Licht ausgeschaltet, um 05:30 Uhr wird wieder eingeschaltet um mit dem Dämmerungsensor wieder aus zu gehen. Sind Energiesparlampen die eine Weile brauchen um hell zu werden und ich möche beleuchtet zum Auto gelangen aber sie sollen nicht die ganze Nacht durch brennen.

Hallo ,

die Funktion date() erzeugt einen String(Text) , den kann man nicht Vergleichen. Deswegen muß erst in einen Zahlenwert(Integer) umgewandelt werden.

 $m1 = 0800;  // Time für Morgens zwischen 08:-Oo und 11:00 Uhr
 $m2 = 1100;
 


 $date=(int)date("Hi");
 echo $date;
 if ( ($date >= $m1) and ($date <= $m2))



 {

Gruß

Hallo ,

die Funktion date() erzeugt einen String(Text) , den kann man nicht Vergleichen. Deswegen muß erst in einen Zahlenwert(Integer) umgewandelt werden.

Hy
bei mir läuft es wunderbar, ohne Umwandlung. Aber es kann ja nicht schaden;)

ok, werde ich versuchen , für 23 - 5:30 Uhr nehme ich dann 2300 und 0530 oder muss ich da was beachten?

Gruß
Jörg

Bitte beachte das die Uhrzeit größer 23:00 Uhr ODER kleiner 5:30 Uhr sein muß.
Gruß
Attain

 $m1 = 2300;  // 
 $m2 = 0530;

 $date=(int)date("Hi");
 if ( ($date >= $m1) or ($date <= $m2))

 {