Machbarkeit -> Rezepturverwaltung für IPS

Hallo alle zusammen.

Eine Rezepturverwaltung für IPS habe ich schon lange im Kopf.

Die Idee:

Man kann verschiedene Modie für sein Haus in eine Datenbank speichern.

Es gibt zwei Möglichkeiten sich so was zu erarbeiten.

  1. Offline -> Man stellt ein Setup zusammen. Welche Lampen sind An/Aus, Wie soll der Dimmer stehen, Sollwert der Rollos, welche Musik soll laufen ……

  2. Upload des Setup aus dem Haus.

Danach kann man das Setup unter einem entsprechenden Namen speichern.
z.B. Partymodus, komm nach Hause Modus, „bin scheiße drauf“ Modus……

Diese Modie kann man aus der Datenbank in das Haus laden oder auf feste Testen legen.

Wie denkt Ihr darüber?

Hallo Schablone,

die Idee finde ich ganz cool :cool:, zumal es die Bedienung für die unbedarften Hausbewohner vereinfacht. Ich denke das Auslesen und hinterher schalten wird weniger das Problem sein. Das DB Design und die Routinen zum Schreiben und Lesen sowie die Skripte um die Scenen per Webfront dynamisch anpasspar zu machen (das wäre jetzt allerdings mein Anspruch das man diesesübers Webfront ändern kann, aber wie willst Du sonst Deine 1. erzeugen?)sind vermutlich eher die Herrausforderung!

Wenn Du etwas vorbereitet hast, kannst Du mich gerne mal anschreiben und ich versuche bei Details zu helfen. :slight_smile:

Viele Grüße, Benjamin

Ich muss gestehen, ich habs nicht verstanden… :o

Toni

Man kann irgendwie einen bestimmten Zustand speichern in einer Datenbank und den dann danach wieder aufrufen und die Geräte genau so schalten.

Wenn man als Techniker eine IPS Installation plant und programmieren kann ist das ja kaum interessant so einen Aufwand zu treiben, aber der weibliche Part (WAF) oder ein unbedarfter IPS User könnte so eigene Szenarien speichern und später aufrufen, ohne zu programmieren (!).

Ich pers. brauche so eine Funktion auch nicht dringend, finde Sie aber charmant, hat Dir meine Erklärung helfen können?
Grüße, Benjamin

Hallo Toni,

ich hab im Kopf Zustände (Modie) des Hauses/Wohnung abzuspeichern.
Aber zur Laufzeit.

Man könnte alles über „interne Variablen“ laufen lassen.

Beispiel: Partymodus

Ich stelle alles so ein wie ich das gerne für eine Party hätte.
Lich , Rollos, Musik u.s.w.

In der Visu gibt es dann eine Taste „Lade von Haus/Wohnung“.
Dieses „Setup“ könnte ich dann in eine Datenbank speichern unter „Partymodus“.

Oder der andere Weg ich suche in meiner Datenbank nach dem gespeicherten Modus und betätige dann die Taste „Lade ins Hus/Wohnung“.

Das ganze könne über interne Variablen laufen um „Offline“ Modie zu editieren und abzuspeichern. Oder komplett „Offline“ einen Modus zu erstellen und unter den Namen xcz zu speichern.

In WinCC nennt man das „Rezeptur“ bzw. „Rezeptverwaltung“.

Hallo Schablone, hallo Toni, (gebe zu ich habs verstanden, aber…)

in IPS gibt es nach meinem Wissen keine eingebauten Mechansmius um Zustände abzuspeichern und wieder umzusetzen (bei manchen Modulen ist das auch nicht so einfach möglich)! Das von Dir vorgeschlagene ist nach meiner Meinung möglich, erfordert aber Programmieraufwand und desto mehr Geräte man ohne Abstraktionsebene einbinden will desto unglaublicher wird die Arbeit.

Wenn Du (Schablone) Dich an der Programmierung davon versuchen willst, müsstest Du Dich vermutlich auf die bei Dir im Einsatz befindlichen Geräte beschränken oder eine Abstraktionsschicht schaffen um sinnvoll und schnell vorran zu kommen. Was Du vorschlägst finde ich toll, da IPS aber keine Zustände lädt und umsetzt würde das jedoch viel Arbeit bedeuten.

Viele Grüße, Benjamin

Die Schwierigkeit wird darin liegen, die eigenen Bedürfnisse abzudecken (und nicht einfach so etwas zu scripten) und es so abstrakt zu halten, dass andere die Lösung möglichst auch einsetzen können.

Durch diese Abstraktion wird das Script aber sehr sehr komplex …

So ein Scripte für das eigene IPS zu schreiben (speziell auf die eigenen Geräte angepasst) ist nicht so schwierig. Es so allgemein zu halten, dass es alle IPS-User nutzen können schon eher.

Ich versuch mal zu beschreiben was ich da herausgelesen hab.

[ul]
[li]Es wird eine Gruppe von Variablen definiert.[/li][li]Auf irgendwin Kommando hin wird der Zustand dieser Variablen gespeichert (irgendwohin exportiert)[/li][li]Auf ein anderes Kommando hin wird der Zusatand wieder hergestellt.[/li][li]Diese Gruppen sollen nur von einem IPS in das Selbe zurück geladen werden[/li][li]Das ganze soll ohne Scriptaufwand für den Anwender funktionieren.[/li][/ul]

Hab ich das so richtig erfasst?

Toni

Warum abspeichern und in einer Datenbank speichern?

Wäre es nicht einfacher ein paar Scenarien per Script aufzubauen und per Knopfdruck abzurufen? Oder hab ich es auch noch nicht richtig verstanden?

Gruß
Smudo

Das frag ich mich auch die ganze Zeit. :smiley:

hi…
ich denke im grunde ist die datenbank speicher geschichte das selbe als wenn man ein script mit den jeweiligen szenen erstellt.

ich habe es so verstanden das das eigentliche ablegen in der datenbank einfacher gehen soll als das script schreiben… so das seine WAF eben mal schnell ne neue szene anlegen kann.

den sinn dahinter verstehe ich allerdings auch nicht… zumal… was hat das bitte mit einer Rezepturverwaltung zu tun?! Mit nem Rezept koche ich doch?!

Ich hatte mal die Idee eine solche Datenbankanbindung mit einem BarCodeScanner zu verknüpfen… so könnte IPS dann den Kühlschrankinhalt oder viel wichtiger den Gefrierschrankinhalt überwachen… ;o)

Wenn ich’s richtig verstanden habe …

ist das, was hier gesucht wird eine Art „Scenario Manager“, der mehr kann als „nur ein paar Lampen einschalten“ sondern auch Scripte ablaufen lassen kann etc.?

Ich habe so ne Idee auch schon lange und bin auch an der Umsetzung. Bei mir steht das im Zusammenhang mit einer „intelligenten“ Anwesenheitssimulation. Dafür zeichne ich alles auf, was in IPS abgeht und mache es „nachahmbar“, ähnlich eines Macrorecorders.

Wenn das mal steht, könnte es die o.g. Aufgabe auch erfüllen, in dem eine Scenario-Datei erstellt wird (das wäre dann auch für einen Benutzer mittels grafischer Oberfläche machbar) und diese Datei als Scenario irgendwie abrufbar wird.

Ein grobes Konzept dafür steht, ich mache noch einige Tests. Ins besondere das Auslesen großer (möglicherweise über Tage hinweg) Scenarien macht mir noch ein bischen Gedanken (z.B. umspeichern der Scenariodatei oder jedesmal lesen bis zur letzten Stelle).

Auch die Genauigkeit (Script nahezu sekündlich rennenlassen) vs. Belastung (unschärfe-Rahmen bestimmen und alle in den Unschärfezeitrahmen fallenden Ereignisse auch zu einem um diesen Zeitraum früheren/späteren zeitpunkt ablaufen lassen) ist noch nicht so ganz geklärt.

Und schliesslich die Abhängigkeiten. Kann ja sein, dass ein Event um 13:00 ausgeführt werden soll (gemäss Datei), der um 13:59:55 gestartete Prozess aber abgeschlossen sein soll, es aber noch nicht ist.

Ich denke, dass das Ganze am Ende auf ein Modul rauslaufen wird, weil sonst jedesmal zuviel in PHP zu laden ist und ja auch zwischen den Läufen u.u. einiges an Daten zwischengespeichert werden soll/muss.

jwka

Hallo jwka,

du hast meine Idee im Prinzip noch etwas weiter gedacht. Ich hatte eine rein statische Situation im Kopf.

Halt „lade von Haus in Datenbank“ oder „lade von Datenbank in Haus“. Zur Laufzeit!!

Sogar zeitliche Abläufe zu speichern wäre naturlich pornös. :wink:

Um die Eingangsfrage der Realisierbarkeit, nachdem ich die Problemstellung verstanden hab, zu beantworten:

Ist mit TRIXI machbar und kein großer Aufwand. Zeitsteuerung der Szenarien wäre mit nem cronjob realisierbar. Die eigentliche Aufgabe bestünde wohl in ner übersichtlichen GUI. Zeitrahmen ohne Extrawürste etwa 3-4 Abende. :wink:

Gruß,

Toni

Mit GUI hätte ich eher mit 3-4 Wochen gerechnet.
Habe ich dich den richtig verstanden das es da was mehr oder weniger fertiges gibt? (Ich weis nicht was cronjob ist. :o)

Was ist ein CronJob?
Der Begriff CronJob stammt ursprünglich aus der UNIX Welt. Ein CronJob ist eine Task, welche der PC unabhängig von Einwirkungen durch einen Benutzer in periodischen Zeitabständen ausführt. Die Befehle welche auszuführen sind sowie die Zeitabstände, werden in einer Tabelle der so genannten CronTab gespeichert.

Beispiel:

Sie möchten an jedem Sonntag im Jahr einen Newsletter an Ihre Kunden verschicken: Nun stehen Sie vor einem Problem! Denn am Sonntag Abend arbeitet bei Ihnen in der Firma niemand. Hier kommt der CronJob zum Einsatz. Sie brauchen ihm nur zu sagen, wann er was zu tun hat und er erledigt diese Aufgabe automatisch für Sie.

(Quelle:Google)

Cron hab ich die meine IPS Zeitsteuer-Basis in Anlehnung an den von Smudo zitierten cron deamon genannt. Der IPS-cron ist dabei eher ein Gerüst als eine fertige Software die eine bestimmte Funktion ausführt. Hab ihn in letzter Zeit - wie so vieles - ein wenig vernachlässigt. :rolleyes: Das liegt daran, dass ich nun deutlich mehr arbeite als noch vor einem Jahr etwa.

könnte mir den sinn nochmal jemand erklären?! ich versteh es immernoch nicht was mit dem speichern der szene in der db bezweckt wird… also alles was ihr so beschrieben habt geht ja via szenenscript auch… wo also is der vorteil?!

pinki,

prinzipiell ja, nur das halt im Szenenskript alles hardcoded ist.

Schablone will halt im Webfront etwas einstellen, z.b. Licht an, Musik an, Lautstärke 50% und dann den Speicherknop drücken.

Will er die Szene ändern ändert er im Webfront die Parameter und speichert es wieder.

Somit muss er halt nicht ein Skript ändern sondern nur die angepasste Szene speichern und dann wieder laden.

Nur für die Variablen in IPS sehe ich da auch kein Problem. Man schreibt einfach ein rekursives Script, was den kompletten root Baum von IP-Symcon ausliest.

Aber so Dinge wie Konfiguratoren und IO-Instanzen wird da schon schwieriger …

Und eigentlich gibt es das schon. Schließlich schreibt IPS das in die settings.xml (ich glaube jede Nacht um 1:00 Uhr). Interessant wäre, parey oder die anderen Admin zu fragen, ob man die Routine irgendwie dazu verwenden kann, die das schon in die Settings.xml schreibt. Bzw. ob die öffentlich verfügbar ist oder man davon eine neue Routine ableiten kann? Vielleicht ist die ja Protected oder Private?

Edit:

Man könnte dann einfach noch ein Array mit den Objekt-IDs füllen, die man backupen will. Wenn man ein backup zurückspielt, würden einfach alle bestehenden Objekt-IDs überschrieben. Ein Parameter könnte angeben, ob man nicht mehr existente Objekt-IDs wiederherstellen will.

Eine andere eventuelle Möglichkeit wäre, eine Batch Datei zu schreiben, die eine alte Settings.xml ins IPS kopiert und den Dienst neu startet. Dann hat nur das das Problem, dass man alle neuen Einstellungen seit dem „Speicher“ Datum der alten xml Datei verliert …