Timer gesteuert schalten

Wahrscheinlich gibt es das schon irgendwo, ich hab es nur nicht gefunden. Wenn ich was übersehen habe würde ich mich über einen Link freuen.

Ich würde gerne Timer gesteuert Geräte schalten indem ich die Zeit übergebe

Also wörtlich so was wie

[ul]
[li]Schalte um 18.15 Uhr aus
[/li][li]schalte in 35 Minuten aus
[/li][li]Schalte um 20 Uhr für 2 Stunden an
[/li][li]Schalte am nächsten Montag um 19 Uhr aus
[/li][/ul]

ich übergebe also jeweils eine Uhrzeit oder Datum und eventuell noch eine Dauer und möchte dann einen Timer setzten der das ausführt.

Hat so was vielleicht schon jemand realisiert und kann mir da ein Skriptbeispiel geben oder ein Hinweis wie man das am besten realisiert?

An dem bin ich auch interessiert!

Gesendet von meinem SM-A510F mit Tapatalk

als Basis könntest du doch das Treppenhauslicht nehmen und es mit ensprechenden Events steuern.
Meine Pumpensteuerung (Heizung) läuft auch damit. Nur zu bestimmten Zeiten und in definierter Länge

Danke, ich schaue mir das mal näher an und schaue ob ich mir da was zurechtbastel mit Events. Ich gebe Bescheid wenn ich da was funktionierendes habe.

Also ich habe mir mal Treppenhaus Licht angeschaut, das ist aber nicht ganz das, was ich suche und bin mir auch nicht sicher ob man das als Grundlage verwenden kann. Der entscheidende Unterschied zu dem was ich selber suche ist, das es sich immer um statische Instanzen handelt. Ein Treppenhauslicht erstelle ich die Instanz einmal und stelle dort die Uhrzeit ein und das bleibt dann auch so.

Was ich suche, ist eine Möglichkeit mal auf die Schnelle etwas zeitgesteuert zu starten und danach kann das dann auch schon wieder in die Tonne gekloppt werden, das ganze ist also nur temporär um z.B. am heutigen Tag mal schnell um 19 Uhr irgendwas auszuschalten.

Ich könnte da sicher ein PHP Modul basteln. Wenn ich durch Aufruf einer Funktion an das Modul dann weitere Instanzen anlege und die dann auch wieder nach einem bestimmten Zeitraum lösche, habe ich glaube ich ein Problem mit Best Practice zur PHP-Modul Erstellung.
Dort steht nämlich drinnen „Ein Modul darf niemals automatisch andere Instanzen erstellen.“. Ausnahme beim Löschen würden natürlich solche Events darstellen die zyklisch sind und noch in die Zukunft aktiv sind.

Hat einer eine Idee wie man das trotzdem konform lösen kann?

Ich möchte wie gesagt

[ul]
[li]Schalte um 18 Uhr X für 2 Stunden an
[/li][/ul]
übergeben dabei soll das Event dann erstellt werden aber in dem Beispiel kann das Event dann auch wieder um 20.01 Uhr gelöscht werden, da dies nur einmal aktiv war und dann nicht mehr benötigt wird, sonst mülle ich mir IP-Symcon mit Events zu.

Ist es denn Zulässig nach Best Practice aus einem Modul ein Ereignis zu erstellen und alle Ereignisse, die durch dieses Modul angelegt wurden, nach einem vom Nutzer definierten Zeitraum wieder automatisch durch das Modul löschen zu lassen?

Warum überhaupt ein Ereignis.
Berechnet den Zeitraum jetzt bis Zielzeitpunkt und dann den internen Timer des Moduls stellen.
Bei Ablauf des Timers die Aktion ausführen und Timer auf 0.
So funktioniert das NoTrigger Modul.
Das könnte man als Basis nutzen.
Link erstellen, im Linknamen bzw ObjektInfo die Zeit +2:00 der 19:00 übergeben und den Rest macht das Modul.
Es muss nur wissen was es machen soll wenn der Timer feuert.
Michael

Moin Fonzo,

so ähnliche Überlegungen hatte ich auch schon mal angestellt. Meine Idee basiert auf Eingabefelder in IPSView und dann ein Aufruf via IPS_RunScriptEx. Damit entfällt auf jeden Fall das Problem mit den Modul Einschränkungen :slight_smile:

Mittels IPS_RunScriptEx habe ich auch schon meine zentralen Steuerungen für die RGBW Controller, sonstige Lampen und die Heizungsgruppen realisiert :wink:

Gruß
Hans

Oder einfach Ereignisse in IPS erstellen und verlinken.
Diese kannst du im WF ja bearbeiten und anpassen.
Nur ob IPSVIEW das kann, kann ich nicht beantworten.
Michael

Danke Euch für die Anregungen.

Vielleicht denke ich da auch verkehrt, aber bräuchte ich dann nicht für jedes separate Ereignis, das ich temporär erstelle, auch eine eigene Instanz oder geht das mit einer einzigen Kerninstanz die sämtliche Ereignisse handhabt?

Auch hier habe ich das Denkproblem, das ist etwas anlegen muss, in dem Fall einen Link statt eines Ereignisses, da dies nur temporär ist, müsste ich das ja dann auch wieder löschen lassen wenn ich nicht alle paar Tage mein IP-Symcon von Hand entmülllen will. Ziel soll es sein, entweder von einen Visualisierungsumgebung, wie von PC Oldie geschildert, oder auch per Spracheingabe an IP-Symcon, z.B. über Alexa, ein „Fire-and-Forget“ zu triggern. Das heißt entweder stelle ich etwas in einer Remote Oberfläche ein und drücke Ok oder ich sage Alexa sage zu Hause schalte die Bewässerung um 20 Uhr für 2 Stunden an. IP-Symcon soll das dann einfach machen ohne das ich dann jedesmal dort irgendwas im Objektbaum von Hand anlegen oder auch dann wieder von Hand löschen muss.

Dann bleibt nur das normale Ereignis von IPS unterhalb eines Scriptes.
Hier z.B. Script Bewässerung.
Das muss dann deine Eingabe von Alexa auswerten (schalte ein, schalte in 2 Stunden aus, schalte um 20:30 ein… etc) und das Ereignis ändern bzw das Gerät schalten.
Das Ereignis startet wieder das Script und das führt die ‚gemerkte‘ (IPS-Variable) Schaltaktion aus.
Über einen Link vom Ergebnis auf die Ebene der Visu kannst du diese jederzeit auch nachjustuieren.
Aber mit dynamisch jetzt noch ‚Bewässerung‘ erkennen, das Gerät zu ermitteln, alles dynamisch anlegen und nach der Aktion wieder löschen usw… wird das wohl sehr schwer, bei den ganzen Variablen welche da auftreten können.
Irgendwo musst du ja statisch etwas vorgeben, wäre ja blöd wenn man ein so ‚intelligentes‘ Script/Modul baut und aus versehen um 0:30 die Haustür auf geht :wink:
Michael

Ja das stimmt eine Zuordnung zum Beispiel in einer Liste muss es geben sonst ist ja nicht bekannt was geschaltet werden soll, das wäre ja bei z.B. Alexa der Slot Type, der dann einem Gerät zugeordnet ist. Danke für den Input, ich denke da mal in Ruhe drüber nach wie sich das am besten realisieren lässt.

Moin,

vorab, meine Überlegungen basieren alle auf IPSView und HM Geräten :wink:

Diese Zuordnung der zu schaltenden Geräte kann in IPSView sehr einfach mit Assoziationen gelöst werden. Dies ist nicht nur sehr WAF freundlich sondern man spart zugleich auch Plausibilitätskontrollen bzgl. möglicher Fehleingaben.

Bei HM Geräten kann man die Schaltvorgänge noch dahingehend optimieren, dass man den Ausschaltzeitpunkt berechnet, damit die Laufzeit ermittelt und diese dann dem Parameter ON_TIME zuordnet. Damit muss man sich um das Ausschalten nicht mehr kümmern und könnte das Einschaltereignis nach dem Einschalten sofort löschen.

Die Verwaltung der Schaltvorgänge könnte man vielleicht in einem nach dem Unix Timestamp sortierten Array/Stack organisieren, da php dafür ja einiges an Befehlen zur Verfügung stellt. Möglicherweise würde man die Ereignisse selbst erst dann anlegen - falls man diese überhaupt benötigt - wenn ein Schaltvorgang initiiert werden soll. Hinzu käme noch der Vorteil, dass man solche Schaltvorgänge dann wieder aufrufen und ggfs. auch löschen könnte. Stichwort Heizung WebFront von swifty.

Soweit erst mal einige Überlegungen von mir :loveips:

Gruß
Hans

Hallo Fonzo,

ich habe mal einen Prototypen für die Oberfläche entwickelt, so wie ich mir eine Ereignissteuerung vorstellen kann. Die Idee dahinter ist, dass die Geräte bzw. auch Scripte Räumen zugeordnet sind. Die Anordnung unserer 8 Räume ist dabei in allen derartigen Schaltprogrammen, wie z. B. bei der Heizungssteuerung, den Buderus Schaltzeiten oder den Profile für die Heizungsgruppen identisch.

Dieses Bild zeigt die hinterlegten Geräte die geschaltet werden können. Bei IPSView kann man in den Assoziationen direkt den Wert der Instanz oder des Scriptes hinterlegen. Ob es sich um ein Script oder ein Gerät handelt kann über den Objekt Typ ermittelt werden und Dimmer weisen als Merkmal Level auf, so dass diese wiederum von anderen Aktoren unterschieden werden können.

Ereignis Gerät wählen.JPG

Nach der Auswahl des Gerätes werden die Schaltzeiten gewählt. Dabei ist bei dieser Konstruktion eine Woche möglich. Nach der Auswahl wird die Einschaltdauer angezeigt. Dies muss noch um das Ein- und Ausschaltdatum erweitert werden.

Ereignis speichern.JPG

Oberhalb die Zeilen könnte man dann Slots definieren, in denen die hinterlegten Ereignisse angezeigt werden. Die Slots könnte man dann wieder auswählen und ändern oder löschen.

Hattest du dir so etwas vorgestellt?

Gruß
Hans

Das sieht schon mal sehr gut aus, primär würde ich das eher zur Sprachsteuerung nutzten aber eine Remoteoberfläche braucht es auch, ich muss jetzt erst mal den Code fertig basteln. Dann melde ich mich und dann schauen wir mal ob das dann so zusammenläuft wie gewünscht.

Hallo!

Ich habe jetzt eine Frage, wird gerade ein Modul oder Ähnliches erstellt? Denn Ich könnte so etwas auch brauchen!

Mfg
Maxx

Ja ich denke darüber nach wann ich damit fertig bin kann ich noch nicht sagen.

Moin,

ja, ich habe meinen Prototypen mittlerweile zu einem lauffähigen Script erweitert. Es ist noch nicht komplett fertig aber das Bild zeigt schon mal die grundlegenden Funktionen.

Nach dem Start wird jeweils eine komplette Woche dargestellt. Das Tagesdatum befindet sich immer links. In der unteren Zeile können die Geräte ausgewählt werden, die geschaltet werden sollen. In meinem Fall sind die Geräte den entsprechenden Räumen zugeordnet. Die gespeicherten Schaltvorgänge sieht man im oberen Teil.
Farbe der Slots:
rot = ist bereits abgearbeitet und wird beim nächsten Aufruf automatisch aus der Liste entfernt
gelb = der Schaltvorgang wurde nicht ausgeführt - pathologischer Fall, da er eigentlich nicht auftreten sollte und hier nur zu Testzwecken erzeugt wurde
weiß = Ereignis befindet sich in der Warteschlange

Ganz oben werden die Slot Tasten angezeigt, wird eine solche betätigt kann der Slot mit der roten Minus Taste gelöscht werden.

Farbe der Objekt Id:
grün = Aktor wird eingeschaltet
rot = Aktor wird ausgeschaltet
Es fehlt noch die Ausführung von Scripten.

Wie ich schon geschrieben hatte, benötigt man keine angelegten Ereignisse in IPS sondern nur ein Ereignis, welches das Script selbst aufruft. Im Moment wird das Script selbst alle 5 Minuten aufgerufen und nachgeschaut, ob etwas zu schalten ist. Es sind insgesamt 17 Schaltvorgänge möglich. Mit der Eingabe eines An- und Aus- Befehls werden 2 einzelne Schaltvorgänge erzeugt.

ToDo: Einbindung von Scripts. Umstellung auf minütliche Eingaben. Dabei teste ich gerade, ob die Zeiteingabe über ein Keypad oder das Timer Widget aus IPSView erfolgen soll.

Das Script ist nicht plug and play, da man in IPSView letztendlich feste Adressen benötigt. Trotzdem kann es für Anwender die mit IPSView arbeiten nützlich sein und den Programmieraufwand dahingehend minimieren, in dem nur individuelle Anpassungen vorgenommen und die Oberfläche angepasst werden muss :wink:

Gruß
Hans

Moin,

nach meiner Rückkehr von einem Kurztrip habe ich mich wieder der hier genannten Fragestellung angenommen und das Skript fertiggestellt. Dabei wurde die Oberfläche nochmals optimiert und sieht jetzt so aus.

Von der Idee, Ereignisse zu erzeugen habe ich mich schnell verabschiedet, da die Implementierung zu viele Fragen und Probleme hinsichtlich der Reorganisation der erzeugten Ereignisse aufwirft. Stattdessen bin ich auf die Idee verfallen, die Verwaltung in Form einer Warteschlange zu realisieren wie es die Betriebssysteme selbst auch tun. Dies bedeutet, dass die auszuführenden Befehle in einem Array gespeichert und per Serialisierung in einem String in IPS gespeichert werden. Das Skript selbst wird jede Minute aufgerufen und prüft, ob ein Befehl ausgeführt werden muss. Dabei werden folgende Funktionen unterstützt:

• Das Schalten von Geräte Instanzen die über STATE oder LEVEL Datenpunkte verfügen, um Aktoren oder Dimmer ein- bzw. auszuschalten.
• Das Setzen von Booleschen Variablen auf TRUE bzw. FALSE.
• Die Ausführung von Skripten, womit sich letztendlich jede Art von Gerät steuern lässt.
• Die Deaktivierung und Aktivierung von Ereignissen.
• Die Steuerung der genannten Funktionen auch über Links.

Der Datumsbereich und die Anzahl der Befehle für die Ausführung können letztendlich durch die entsprechende Visualisierung selbst bestimmt werden. Hierzu müssen lediglich die entsprechenden Assoziationen in den Association Images bzw. Association Button angelegt werden.

Um den Bedienungskomfort zu erhöhen und eine schnelle Eingabe der Daten zu ermöglichen, wurde die Möglichkeit der Befehlswiederholung geschaffen (Stichwort Wochenplan) und die Eingabe eines Ein- und Ausschaltzeitpunktes mit einer Datensatzspeicherung.

Das Bild zeigt die Gesamtübersicht der View auf einem iPad mit einigen Beispieldaten. Um die Oberfläche WAF-freundlich zu gestalten habe ich im unteren Bereich eine Auftrennung nach Räumen vorgenommen, so dass auch bei einer Vielzahl von Geräten die Übersicht nicht verlorengeht. Hier kann sich jedoch jeder konstruieren was immer er mag, da dies keinerlei Einfluss auf das Skript hat – es dient lediglich der Ordnung und der Sicherheit.

Sicherheit deshalb, da ein Benutzer nur das auswählen kann, was vom Ersteller vorgegeben worden ist.

Momentan bin ich dabei das Skript selbst zu dokumentieren. Um unnötige Hürden zu vermeiden ist dieses in Deutsch gehalten und mit längeren selbsterklärenden Variablennamen erstellt worden :slight_smile:

Wenn Interesse besteht so kann ich vorab eine noch unvollständige Version der Dokumentation hochladen, die die Details für IPSView aufzeigt :wink:

Gruß
Hans

Vorab version wäre super!

Mfg
Maxx

Hallo Maxx,

die Vorabversion der Dokumentation ist gerade fertig geworden. Ich musste diese aufgrund der Größenbeschränkung in 2 Teile aufteilen. Ich hoffe, dass einigermaßen verständlich ist was das Skript so erledigen kann. Die beiden Skripte folgen morgen :slight_smile:

Gruß
Hans