Location Control richtig benutzen

Hallo zusammen,
in den Kern Istanzen gibt es das neue Location Control.
Wie kann ich mit der Variablen sunset ein Ereignis verändern?

We muss ich eine Formatumwandlung machen?

Gruß
duk64

Da die Variablen sich kurz nach der angegeben Zeit ändern, kannst du einfach auf die Änderung dieser ein Ereignis erstellen :slight_smile:

paresy

Danke paresy für die Antwort, ich habe mein Problem nicht richtig beschrieben, sorry.

Ich würde gerne meine Rolladen gestaffelt herunter fahren, wenn die SUNSET Zeit erreicht ist.

Beispiel:
sunset = 15.03.2015 18:00:00

  1. Rollade soll um 18:00:00 herunter fahren
  2. Rollade um 18:02:00
  3. Rollade um 18:04:00
    usw.

Bis jezt hatte ich das Script atronomische Ereignisse hier aus dem Forum benutzt.
Ich würde aber gerne auf die neue Instanz, die du geschrieben hast (Location Control) umsteigen.

Da ich (leider) die ganzen Rolladen mit FS20 Komponenten ansteuere habe ich die besten Erfahrungen gemacht, wenn ich die Ansteuerung 2 mal mache.

also 1. Rollade 18:00 und 18:01
und 2. Rollade 18:02 und 18:03 usw.

Um die Rolladen herunter zu fahren habe ich ein Script, wo ich entweder das shutter benutze oder normal schalte.
Nun weiß ich nicht wie ich das mit der time machen muss.
Ich dachte pr Rollade an 2 Variablen, die ich dann einem Ereigniss zuordnen kann.
Außerdem habe ich das Problem, dass die Uhrzeit von meinem raspi eine Stunde später ist als die Schaltpunkte, das schein aber ein anderes Problem.

Hast du vielleicht ein klitze kleines Beispiel, an dem ich mich hangeln kann?

Gruß
duk64

Also bei mir funktioniert die Location Control schon recht gut. Die Zeiten die errechnet werden stimmen auch. Gibt es denn eine Möglichkeit einen Offset einrechnen zu lassen?
Gruß
Mirank

@duk64 meinst du so etwas ?

<?
$timestamp = getvalueinteger(15851 /*[Location\Sunset]*/);
$uhrzeit = date("H:i",$timestamp);
// JETZT = aktuelle Uhrzeit
$hour=date("H"); // Ermittöung der JETZT-Stunden
$minute=date("i"); // Ermittlung der JETZT-Minuten
$time = $hour.":".$minute; // Umrechnung der JETZT- UNIX-Zeit in String-Format

echo "Sunset: ".$uhrzeit."; aktuelle Uhrzeit : ".$time;
?>

Du müsstest in dem Falle leider in dem einem Skript heraus einen Timer setzen und dann selber dich um diese Verzögerung kümmern.
Man kann leider weiteren Variablen mit Offsets erstellen.

paresy

@andyfis:

super genau sowas habe ich gemeint.
Nun muss ich zur $uhrzeit eine Minute zu zählen.

Wie mache das denn?

vielleicht so:

$ts = 60; //60s

$ts += $sunset;

Wenn das gehen würde könnte ich diese Variable verwenden um ein Ereignis anzusteuern.

Kannst du mir da noch mal helfen?

Lg
duk64

Ok. Dann werd ich mir da mal versuche was zu basteln.
Ist denn sowas in der Art für eine spätere Version geplant?

Gruß
Mirank

Bisher nicht. Die Zeit in dein Skript ist also gut angelegt. Wenn es fertig ist, wäre es cool, wenn du es in unserer Tipps&Trick Ecke vorstellst :wink:

paresy

Das wäre klasse wenn du da was zaubern könntest.
Ich bin da nicht sehr versiert.
Aber warum geht das den hier?

http://www.ip-symcon.de/forum/threads/8059-Automatischer-Skriptstart-nach-astronomischen-Ereignissen-(Sonnenaufgang-Dämmerung)?p=66802#post66802

Ist das ein anderes Format?

Ich kapiere das nicht sorry.

Gruß
duk64

Moin paresy,
sag mal, warum macht ihr daraus nicht einen neuen Ereignis-Typ?
Das könnte man doch super darstellen.
Quasi ein Astro-Ereignis. Da kann ausgewählt werden wonach ausgelöst werden soll ( Sunrise, Sunset etc ) und dazu könnte ein Offset eingegeben werden ( +/- Sekunden ) und eben das Skript welches ausgeführt werden soll.

Dann wären alle Funktionen ( die hier auch gerade gewünscht werden ) abgedeckt.
Das Modul so könnte ja bleiben… als Info und Anzeige und es würde m. M. nach super zu den anderen Ereignissen passen, also von der Grundidee und dem Schema!

Ich hab da mal was mit Photoshop gebastelt!!!
Was meinst?

Gruß,
Peter

+ 1000 !!!

Dann könnte ich meine Aquarien/Terrarien-Skripte direkt mit einem solchen Ereignis versorgen und müsste nicht mehr über das Astro-Skript arbeiten (auch wenn dieses bisher ohne Probleme funktioniert).

Aber ich bräuchte das unter Windows :slight_smile:

Edit: Und mir wäre es wichtig, dass man den Offset per Skript ändern könnte!

Grüße,
Chris

@Peter: Genauso werden wir das machen. :wink:

paresy

Ernsthaft?

Ja. Aber leider wird es noch ein wenig dauern, da wir das Location Control noch nicht in der Windows Version haben. Aber so haben wir uns das vorgestellt :slight_smile:

paresy

Cool… das ist ja Klasse!!! Danke…

Schön wäre, wenn man dann noch einen Vor- oder Nachlauf eingeben könnte.

Das war von mir mit Offset gemeint. Z.B. 10 Min nach Sunset = Sunset+600
Oder 10 Min vor Sunset = Sunset-600

Alles andere machst dann im Skript!

Ok geht meine Frage halt unter.

aber die Idee wäre schon klasse paresy, wenn ihr das so macht.

Was muss ich denn machen, damit das astro Script auf dem raspi läuft oder ist das generell nicht möglich?

Ich komme jedenfalls nicht weiter.

Hallo duk64

Hier mal was zu probieren für Dich:

<?

	// Aufruf durch das Timerereignis
	if($_IPS['SENDER'] == "TimerEvent")
	{

		// Den (60s Verzögerungs-)Timer stoppen (diabled)
		IPS_SetScriptTimer($_IPS['SELF'], 0);
		

		// Hier schaltest Du z.B. deine Jalousie

	}
	else
	{

		//Den (60s Verzögerungs-)Timer starten
		IPS_SetScriptTimer($_IPS['SELF'], 60);

	}

?>

Dieses Script rufst Du per „Ausgelöstes Ereignis“ (-> Variable z.B. Sunset, „Auf Aktualisierung“) auf.

Da die Variablen sich kurz nach der angegeben Zeit ändern, kannst du einfach auf die Änderung dieser ein Ereignis erstellen

Es startet den Script-Timer (hier 60s) und nach Ablauf des Script-Timers wird das Script wieder aufgerufen.
Hier ist die IF Bedingung Wahr, dass das scriptstartende Ereignis durch den Timer initiert wurde.
Dann wird der Script-Timer gestoppt und du kannst deine 2. Jalousie fahren.

Für die 3.Jalousie musst du dieses Script ein weiteres Mal anlegen und den (Verzögerungs-) Timer mit 120s Timer starten. Die 120s im Script verändern. Auch hier mit einem Variablenaktualisierungsereignis (s.o.) aufrufen.
Die Scripte (und dessen Timer) laufen parallel ab.
Das eine wird dann bei 60s gestoppt (und fährt z.B. Jalousie1) und das andere bei 120s (und fährt z.B. Jalousie2) . Kannst du in der Konsole auch sehen wenn der Scripttimer wieder grau hinterlegt wird.

Ich hoffe, ich habe es nicht zu „haarklein“ bzw. für den Beginner beschrieben.
Aber hilft vllt. dem Einen oder Anderen.

Gruß
lueralba