[canceled] "verzögert um" im Script / Entlastung der CCU

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

BadenPower
Beiträge: 2588
Registriert: 03.12.2015, 12:34

[canceled] "verzögert um" im Script / Entlastung der CCU

Beitrag von BadenPower » 26.02.2016, 12:37

Immer wieder mußte ich feststellen, dass viele Scripte permanent alle 1-5 Minuten aufgerufen werden um einen Zustand zu prüfen, obwohl sie nur 2-5 mal am Tag eine Variable "ändern" müssen.

Wichtig:
Diese Scripte in den Beispielen müssen nur einmal am Tag aufgerufen werden, um hunderte Schaltbefehle am Tag zu realisieren.


Ich habe hier einmal 2 kleine Beispiele gemacht, in denen das Script selbst nur 1 mal aufgerufen wird und dann die entsprechenden Variabeln "verzögert" setzt, also zu den entsprechenden Zeitpunkten ändert.

Beispiel 1
Astro-Funktion - vor / nach Sonnenaufgang

Benötigt wird eine Systemvariable vom Typ Werteliste mit dem Namen "TriggerSunrise".

In diese Werteliste kann man nun die Minuten anlegen, um die die Variable vor und/oder nach Sonnenaufgang geändert werden soll.

Sieht die Werteliste zum Beipiel so aus:

Code: Alles auswählen

-30;-20;0;15;45
Dann wird der Zustand der Systemvariable zu folgenden Zeiten geändert:
30 Minuten vor Sonnenaufgang
20 Minuten vor Sonnenaufgang
bei Sonnenaufgang
15 Minuten nach Sonnenaufgang
45 Minuten nach Sonnenaufgang

Die Reihenfolge der Zeiten ist egal. Die Liste könnte auch so aussehen

Code: Alles auswählen

45;-20;0;15;-30
und würde zu den gleichen Zeiten den Zustand der Variable verändern.

Dies ist vor allem praktisch, wenn man zusätzliche Zeiten hinzufügen möchte ohne in bereits bestehenden Programmen die Einstellungen ändern zu müssen.
In einem Programm kann man jetzt bequem auf die Änderung des Zustandes reagieren.



Beispiel 2
Zeitverzögertes Ändern einer Systemvariable vom Typ Zeichenkette

Hierzu wird eine Systemvariable vom Typ Zeichenkette benötigt.
Im Beispiel heisst diese "TriggerTest".

Dieses Script ändernd nun nachdem es gestartet wurde, die Systemvariable vom Typ Zeichenkette jeweils zeitversetzt um 30, 60, 90, 120 und 150 Sekunden und zusätzlich noch um 22:00:00 Uhr entweder heute oder morgen, je nachdem wie spät es nun schon ist.

Es wird also nach dem Aufrufen des Scripts die Systemvariable 6 mal geändert, ohne dass das Script immer wieder gestartet werden müßte.
Auch in diesem Beispiel werden bereits vorhandene Verzögerungen auf die Sysvar gelöscht. Es ist aber auch möglich, vorhandene Verzögerungen beizubehalten.
Zuletzt geändert von BadenPower am 21.06.2017, 11:21, insgesamt 2-mal geändert.
User gesperrt

Cash
Beiträge: 1143
Registriert: 09.01.2016, 18:42
Wohnort: Sauerland

Re: "verzögert um" im Script / Entlastung der CCU - Astro &

Beitrag von Cash » 26.02.2016, 15:36

Bin etwas schwer vom Begriff heute :mrgreen:

Das hört sich sehr gut und vorallen flexibel an.

Ich nehme mal Beispiel 1.

1. Ich lege die Systemvariable an und schreibe dort werte rein. Als Beispiel 0; 60
2. Ich lege ein Programm an einmal täglich kurz nach Mitternacht und führe dort das Script aus

3. ???

Ich vermute die angelegte Variable ändert nun zu den Zeiten den Zustand auf 0 bei Sonnenaufgang bzw auf 60 eine Stunde nach Sonnenaufgang?

Wenn ich nun will das mein Licht zum Sonnenaufgang an geht und eine Stunde später aus dann erstelle ich ein Programm

Wenn Variable 0 bei Änderung
dann Licht an

Sonst Wenn Variable 60 bei Änderung
dann Licht aus

Oder habe ich da irgendwo einen Denkfehler?

BadenPower
Beiträge: 2588
Registriert: 03.12.2015, 12:34

Re: "verzögert um" im Script / Entlastung der CCU - Astro &

Beitrag von BadenPower » 26.02.2016, 16:15

Cash hat geschrieben:1. Ich lege die Systemvariable an und schreibe dort werte rein. Als Beispiel 0; 60
2. Ich lege ein Programm an einmal täglich kurz nach Mitternacht und führe dort das Script aus

3. ???
3. Fertig

Jetzt kannst Du in einem Programm auf Änderung der Variable reagieren.
Cash hat geschrieben:Ich vermute die angelegte Variable ändert nun zu den Zeiten den Zustand auf 0 bei Sonnenaufgang bzw auf 60 eine Stunde nach Sonnenaufgang?
Richtig.

Und wenn Du einen negativen Wert einfügst also -20, dann bekommt die Variable 20 Minuten VOR Sonnenaufgang den Wert "-20".
Cash hat geschrieben: Oder habe ich da irgendwo einen Denkfehler?
Nee, passt Alles.


.
User gesperrt

BadenPower
Beiträge: 2588
Registriert: 03.12.2015, 12:34

Re: "verzögert um" im Script / Entlastung der CCU - Astro &

Beitrag von BadenPower » 26.02.2016, 16:29

Achtung:

Im Beispiel 1 hatte sich ein Fehler eingeschlichen, welcher behoben wurde.

Die Zeile

Code: Alles auswählen

    lTmpDateTime1 = (system.Date("%F %X")).ToTime() + 240;
war dort noch aus Testgründen vorhanden und gehört dort eigentlich nicht hin.


.
User gesperrt

BadenPower
Beiträge: 2588
Registriert: 03.12.2015, 12:34

Re: "verzögert um" im Script / Entlastung der CCU - Astro &

Beitrag von BadenPower » 26.02.2016, 22:28

Beispiel 3
Wecker/Zeitsteuerung über Systemvariable konfigurierbar

Benötigt wird eine Systemvariable vom Typ Werteliste mit dem Namen "TriggerWecker".

In diese Werteliste kann man nun beliebig viele Zeiten anlegen, um die Triggervariable zu setzen.

So sieht die Werteliste zum Beipiel aus:

Code: Alles auswählen

07:00:00;09:30:00;14:15:30;21:00:00
Jede beliebige Uhrzeit ist einstellbar.
In Programmen kann nun auf Änderung der Systemvariable für jede Uhrzeit einzeln reagiert werden.

Im Beispiel so:

Code: Alles auswählen

WENN
  TriggerWecker bei "07:00:00" bei Änderung auslösen
DANN
  Tue irgend etwas!
SONST WENN
  TriggerWecker bei "09:30:00" bei Änderung auslösen
DANN
   Tue irgend etwas anderes!

.
Zuletzt geändert von BadenPower am 21.06.2017, 11:22, insgesamt 1-mal geändert.
User gesperrt

Cash
Beiträge: 1143
Registriert: 09.01.2016, 18:42
Wohnort: Sauerland

Re: "verzögert um" im Script / Entlastung der CCU - Astro &

Beitrag von Cash » 01.03.2016, 14:58

Ein Nachteil der Variante ist leider das wenn ich z. B. die Lampe nicht mehr 30 Minuten vor Sonnenaufgang an gehen soll sondern erst 15 Minunten vorher ich zwei Sachen tun muss

1. Variabe TriggerSunrise ändern

und

2. das Programm welches die Lampe schaltet.

Das ist dann leider nicht mal eben gemacht.

Ich bleibe also erstmal bei meiner Variante das ich für jede Lampe die ich in Abhängigkeit vom Sonnenaufgang steuern will einen Cuxd Timer in Kombination mit einer Variable nutze. Vorteil die Variable mit der Zeitabweichung zum Sonnenaufgang kann ich bequem am Handy ändern und am nächsten Tag geht das Licht früher oder später an.

BadenPower
Beiträge: 2588
Registriert: 03.12.2015, 12:34

Re: "verzögert um" im Script / Entlastung der CCU - Astro &

Beitrag von BadenPower » 01.03.2016, 16:31

Cash hat geschrieben:Ein Nachteil der Variante ist leider das wenn ich z. B. die Lampe nicht mehr 30 Minuten vor Sonnenaufgang an gehen soll sondern erst 15 Minunten vorher ich zwei Sachen tun muss

1. Variabe TriggerSunrise ändern

und

2. das Programm welches die Lampe schaltet.

Das ist dann leider nicht mal eben gemacht.
Ne, Du brauchst doch nur die TriggerSunrise von auf setzen.

Am Programm mußt Du hierfür nichts ändern. Für Dein Programm ist es egal, was für ein "Wert" in der Liste an der gleichen Position steht. In diesem Fall ist hier der Index immer 0, egal ob dort als Wert "-15" oder "-30" steht.

Ändere einmal den Wert in der Werteliste, dann wirst Du sehen, dass im Programm automatisch der Wert auch geändert wurde, denn das Programm greift auf den Indes zu und nicht auf der Wert.


.
User gesperrt

fischmir
Beiträge: 811
Registriert: 03.02.2014, 19:04
Wohnort: Münsterland

Re: "verzögert um" im Script / Entlastung der CCU - Astro &

Beitrag von fischmir » 06.03.2016, 21:41

Das hört sich wirklich vielversprechend an. Ich habe eine boolean-Variable. Kannst du ein Beispiel posten, wie diese zeitversetzt auf false/true gesetzt wird? Das würde mir sehr weiterhelfen...!

BadenPower
Beiträge: 2588
Registriert: 03.12.2015, 12:34

Re: "verzögert um" im Script / Entlastung der CCU - Astro &

Beitrag von BadenPower » 07.03.2016, 15:12

fischmir hat geschrieben:Kannst du ein Beispiel posten, wie diese zeitversetzt auf false/true gesetzt wird?
Hier ein kleines Beispiel:
Zuletzt geändert von BadenPower am 21.06.2017, 11:23, insgesamt 1-mal geändert.
User gesperrt

fischmir
Beiträge: 811
Registriert: 03.02.2014, 19:04
Wohnort: Münsterland

Re: "verzögert um" im Script / Entlastung der CCU - Astro &

Beitrag von fischmir » 07.03.2016, 20:49

Ja klasse, hat funktioniert, danke dir!

Gesperrt

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“