Wile_E
17. Juli 2012 um 20:54
1
Hallo Leuts,
ich hab mich als Skript Dummi mal wieder an eines gewagt:rolleyes:
Ich hab schon gemerkt warum es nicht geht, hab aber leider keine Löung.
Also, es werden Skripte mit Hilfe des Astroskriptes gestartet. Dieses setzt jede nacht für jedes Skript neue Timer…siehe hier…
Nur habe ich das Problem das ich in meinem Skript auch einen Timer habe mit der Abfrage " wurde durch Timer gestartet? ". Ja, natürlich immer, vom Astrotimer.
<?
// macht den Wochentag 0=Sonntag..6=Samstag nach $Tag
$Tag = Date("w");
//echo $Tag;
if ($Tag == 2)
{
if($IPS_SENDER == "TimerEvent") //wenn vom Timer gestartet dann...
{
//Aus Befehl
// Rolladen Lena stop
ModBus_WriteCoil(34627 /*[WagoPorts schreiben\Port43 Roll-Lena AUF]*/,true);
ModBus_WriteCoil(10526 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,true);
IPS_Sleep (400);
ModBus_WriteCoil(34627 /*[WagoPorts schreiben\Port43 Roll-Lena AUF]*/,false);
ModBus_WriteCoil(10526 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,false);
//Timer ausschalten
IPS_SetScriptTimer($IPS_SELF, 0);
}
else { //...sonst das...
//An Befehl
// Rolladen Lena runter
ModBus_WriteCoil(10526 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,true);
IPS_Sleep (400);
ModBus_WriteCoil(10526 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,false);
//Timer anschalten...
IPS_SetScriptTimer($IPS_SELF, 17); //...mit Laufzeit in sek.
}
}
?>
In diesem Fall hier, soll der Rolladen nach 17sek. stoppen. Per Hand gestartet alles OK. Per Astrotimer nicht:(
Wie mache ich denn nun die Unterscheidung, dass bei der TimerEvent Abfrage der 17sek. Timer gemeint ist?
Danke und Gruß
Jan
RWN
17. Juli 2012 um 20:57
2
mit einem Event.
if($_IPS['EVENT'] == ID deines Timer) { //mach was }
Wile_E
17. Juli 2012 um 21:15
3
Danke, habs nun so eingebaut und… …geht nicht:o
Hab ich´s falsch reingestrickt?
<?
// macht den Wochentag 0=Sonntag..6=Samstag nach $Tag
$Tag = Date("w");
//echo $Tag;
if ($Tag == 2)
{
if($_IPS['EVENT'] == 44312) //wenn vom Timer 44312 gestartet dann...
{
//Aus Befehl
// Rolladen Lena stop
ModBus_WriteCoil(28354 /*[WagoPorts schreiben\Port43 Roll-Lena AUF]*/,true);
ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,true);
IPS_Sleep (400);
ModBus_WriteCoil(28354 /*[WagoPorts schreiben\Port43 Roll-Lena AUF]*/,false);
ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,false);
//Timer ausschalten
IPS_SetScriptTimer($IPS_SELF, 0);
}
else { //...sonst das...
//An Befehl
// Rolladen Lena runter
ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,true);
IPS_Sleep (400);
ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,false);
//Timer anschalten...
IPS_SetScriptTimer($IPS_SELF, 9); //...mit Laufzeit in sek.
}
}
?>
Gruß
Jan
RWN
17. Juli 2012 um 21:16
4
if($IPS_SENDER == "TimerEvent") //wenn vom Timer gestartet dann...
den hast vergessen.
Wile_E
17. Juli 2012 um 21:28
5
Ohhh neeee… ich raffs nich. Du hilfst mir nun so schnell und geduldig, aber mir gleiten nu langsam die letzten Hirnzellen wech.
Das Skript wird wieder ohne Fehlermarkierung durchgeführt, aber halt nich wie soll. Würdest Du noch mal bitte…
<?
// macht den Wochentag 0=Sonntag..6=Samstag nach $Tag
$Tag = Date("w");
//echo $Tag;
if ($Tag == 2)
{
if($IPS_SENDER == "TimerEvent") //wenn vom Timer gestartet dann...
{
if($_IPS['EVENT'] == 44312) //wenn vom Timer 44312 gestartet dann...
{
//Aus Befehl
// Rolladen Lena stop
ModBus_WriteCoil(28354 /*[WagoPorts schreiben\Port43 Roll-Lena AUF]*/,true);
ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,true);
IPS_Sleep (400);
ModBus_WriteCoil(28354 /*[WagoPorts schreiben\Port43 Roll-Lena AUF]*/,false);
ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,false);
//Timer ausschalten
IPS_SetScriptTimer($IPS_SELF, 0);
}
}
else { //...sonst das...
//An Befehl
// Rolladen Lena runter
ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,true);
IPS_Sleep (400);
ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,false);
//Timer anschalten...
IPS_SetScriptTimer($IPS_SELF, 9); //...mit Laufzeit in sek.
}
}
?>
Danke!
RWN
18. Juli 2012 um 16:40
6
Hallo Jan,
wenn ich dich nicht ganz falsch verstanden habe…
Der Astrotimer startet und setzt den Scripttimer auf 17sec.
<?
switch($_IPS['SENDER'])
{
case "TimerEvent":
if(date("w") == 3) // macht den Wochentag 0=Sonntag..6=Samstag
{
if($_IPS['EVENT'] == 44312) // ID des Scripttimer
{
// Rolladen Lena stop
ModBus_WriteCoil(28354 /*[WagoPorts schreiben\Port43 Roll-Lena AUF]*/,true);
ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,true);
IPS_Sleep (400);
ModBus_WriteCoil(28354 /*[WagoPorts schreiben\Port43 Roll-Lena AUF]*/,false);
ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,false);
//Timer ausschalten
IPS_SetScriptTimer($_IPS['SELF'], 0);
}
if($_IPS['EVENT'] == 47121) // ID des Astrotimer
{
// Rolladen Lena runter
ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,true);
IPS_Sleep (400);
ModBus_WriteCoil(11320 /*[WagoPorts schreiben\Port44 Roll-Lena AB]*/,false);
//Timer anschalten...
IPS_SetScriptTimer($_IPS['SELF'], 17); //...mit Laufzeit in sek.
}
}
break;
}
?>
Wile_E
20. Juli 2012 um 09:19
7
Möönsch, es läuft…
Danke für die Hilfe!
Auf dies „switch - case“ wär ich nicht gekommen.
Gruß
Jan