Scriptkonzept gesucht

Hallo zusammen

Ich grüble nun schon einige Zeit wie ich folgende Problemstellung sauber (!!) und wartbar scripte.
Irgendwie fällt mir nix ein. Mir gehts nicht um konkreten Code, sonder nur ums Konzept.

zzt. werden alle Aktoren(FS20/1Wire) über dedizierte von den jeweils zuständigen Sensoren/Tastern getriggerte Scripten versorgt. Praktisch alle Parameter sind hardgecodet und nach Herzenslust mit diversen anderen Variablen verheiratet. Scripte sind je nach Bedarf gegenseitig verriegelt und triggern sich auch gegenseitig.
Naja, ihr kennt das ja. Ganz klassisches, seit Jahren gewachsenes Chaos.

Nun gibts den dringlichen hausfraulichen Auftrag mit den Piri eine Art Mini-Alarmanlage aufzubauen. Hierbei soll für den Anfang im Alarmfall das ganze Haus wild Blinken.

Klar könnt ich das in die bestehenden Scripte irgendwie reinfummeln, möchte aber lieber die Gelegenheit nutzen um alles alte zu entsorgen und in eine Art All-In-One Script zu überführen. Irgendwie so SPS ähnlich.

Ich stelle mir vor das alle verfügbaren Sensoren dieses eine Script triggern, und dann im Script entschieden wird was mit welchem Aktor zu tun ist.

  • Permanent An/Aus
  • Timed An (Treppenlicht)
  • Dämmerungsfunktion
  • Makros, Scenen
  • Schrittketten

Die Konfiguration von Parametern (Timern) soll möglichst webfronttauglich sein.

Rein nur auf die Sensoren/Taster richtig zu reagieren ist simpel, aber da müssen auch noch jede Menge Timer mit rein.

Tja, wie schon gesagt, mir die Idee zum Konzept. Zwingend ist leichte Lesbarkeit und Wartbarkeit.

hat da jemand eine gute Idee ?
bb

Hmm, kann man eigentlich einem Timer Event einen Namen geben ?
In der Doku hab ichs nicht gefunden.

Das wäre doch ganz praktisch wenn ein durch einen Timer aufgerufenes Script „Weiß“ was für ein Timer das denn nun war.
Funktionell läßt sichs in etwa über die Objekt ID machen, ist aber nicht gut lesbar.

Gibts da einen netten Workaround ?
??

Edit: Ja klar kann ein Event einen Namen bekommen. Hab das ja auch schon öfter verwendet.
Stand da komplett auf der Leitung. :rolleyes:

shame on me
bb

Generell ist der Ansatz von der Wartbarkeit her richtig, z.B. alle Leuchten im selben Skript zu schalten. Da ich auch unterschiedliche Systeme gleichzeitig einsetze (LCN, FS20, Homematic) habe ich mir für „Leuchte“ ein Variablenprofil gebaut, das den Zustand eines Dimmers hübsch repräsentiert. Es gibt dann ein Skript „Leuchte setzen“ und ein „Leuchte Status rückmelden“. Das „Leuchte setzen“ reagiert z.B. auf Webfront-Bedienungen und spricht mit den Aktoren. Das „Leuchte Status rückmelden“ ändert die hübsche Variable entsprechend der tatsächlichen Stellung des Aktors.

Damit die beiden Skripte wissen, welche der hübschen Variablen zu welchem Aktor gehört, gibt es eine Include-Datei in der das „Patching“ zwischen Variablen und Geräten als Array eingetragen ist.

Übergeordnet habe ich ein System für die gespeicherten Lichtstimmungen gebastelt, welches die hübschen Variablen der Leuchten in einem Raum zum Anhaltspunkt nimmt, und es erlaubt, im Webfront Lichtstimmungen zu bearbeiten und zu speichern. Die Speicherung erfolgt in String-Variablen als JSON. Es existieren zwei Skripte, einmal „Lichtstimmung speichern“ und „Lichtstimmung anfahren“. In beiden Skripten benutze ich wieder das Patch-Include.

Das generelle Konzept dahinter ist also:
-generische Skripte für vergleichbare Aufgaben (FS20-Dimmer ansteuerbar wie ein LCN-Dimmer oder HM-Dimmer)
-Patch-Include für die Zuordnung von „hübschen“ Visualisierungs-Variablen zu Instanzen
-Raumzuordnung anhand der Position der hübschen Variablen in der Baumstruktur
-Modularisierung, wo es sinnvoll ist (Lichtstimmungen in einem anderen Skript als die Dimmeransteuerung etc.)
-Möglichkeit, Lichtstimmungen im Webfront zu editieren

Wenn man es noch besser gemacht hätte, wäre sogar das Patching im Webfront konfigurierbar, aber das war mir dann doch etwas zu overdressed.

Hi sokkederheld

Nette Idee deine Variante um Interaktiv Scenen zu generieren. So etwas in der Art möchte ich auch einbauen.
Wobei vorerst muß ich noch eine Ebene tiefer ansetzen und erstma ein übergeordentes Script hinbringen welches auf alle Sensoren und Timer richtig reagiert.

Nachdem ich nun mal darüber geschlafen habe sehe ich das das was ich möchte eigentlich eh ganz einfach zu bauen ist. Ich stand gestern scheinbar nur komplett am Schlauch.

gruß
bb