IPSLibrary Entwicklungsideen

Ich starte hier mal einen Thread für neue Entwicklungsideen – wer eine Idee hat, was man entwickeln könnte (auch mal in einer Gruppe), dann einfach mal hier posten. Je konkreter die Vorstellungen sind, desto besser.

Es ist auch nicht nötig, dass man selber das komplette Know-how besitzt, die Idee auch in die Praxis umzusetzen.

Und auch wenn mal eine etwas verrückte Idee ist, einfach mal posten, diese Idee bringt dann wieder andere auf weitere Ideen usw…

Hi,

was mir so einfällt, ist eine Anwesenheitssimulation, Alarmanlagenfunktion und Modul/Variablen überwachung.

Bei Einbruch, Feuer etc. Mail Sms und Schutz bzw. Fluchtmaßnahmen einleiten. Bei Feuer z. B. Fluchtweg beleuchten, Rolläden hoch, Haustür auf.

Anwesenheitssimulation steuert Beleuchtung und Rolläden. Habe da auch schon was für Beleuchtung und läuft auch, aber nicht Libfähig und noch keine Konfigoberfläche.

Variablenübwachung auf aktualisierung. Meldung wenn nicht mehr aktualisiert wird. Meldung wenn Modul Instanz/Schnittstelle ausfällt. Habe da auch schon was gemacht komme aber nicht zur Fertigstellung. IPSHealth.

GA

Gesendet von meinem GT-I9100 mit Tapatalk 2

Anwesenheitsimualtion wird bald Teil meiner Lichtsteuerung sein.

Ein Überwachungsmodule würde mich auch interessieren, hätte da auch den ein oder anderen Anwendungsfall.

Hallo,

hatte Anfang des Jahres schon des öfteren um die Umsetzung folgender Erweiterungen des Bewässerungsscriptes gebeten:

  • manuelle und automtische Bewässerungen unabhängig voneinander, also ein manuelles Bewässern beeinflusst die Automatik NICHT

  • wegen Ausfallsicherheit und Vermeidung von Hochwasser, die eingestellte Bewässerungszeit beim Start mit an den Aktor senden (glaube bei Homematic mittels ONTIME möglich)

  • es kann nur 1x pro Tag bewässert werden, möchte aber gerne mehrmals pro Tag bewässern mit unterschiedlicher Bewässerungsdauer

  • für Aussenbereiche wäre es wichtig nur zu bewässern, wenn ein vorhandener Windsensor einen Wert kleiner eines programmierbaren Werts hat oder/und ein angeschlossener Feuchtesensor einen programmierbaren Wert nicht übersteigt (OK zur Not wäre dies auch mittels Callback möglich, aber wesentlich schöner und komfortabler übers WebFront)

  • Die vollautomatische und intelligente Bewässerung mittels „Evapotranspiration“

Bin mir sicher, ich bin hier nicht der einzige, der sich diese Erweiterungen wünscht.

Gruß Proxima

Hab das Heizungsthema mal als einen Thread abgetrennt.

@Proxima
Für die Homematic ON_TIME hab ich bereits mal ein Beispiel für eine Ansteuerung per Callback Methode gepostet (selber in Betrieb). Native Integration und auch einige andere Themen kommen im Frühling, hast Du bereits genauere Vortellungen was die Evapotranspiration betrifft?

Hallo,

zum Thema Evotranspiration könnte ich mir vorstellen, dass man anhand von Wetterdaten (z.B. meiner WMS200) ausrechnet, wann der Boden wieder gegossen werden müsste. Dazu kann dann noch eingestellt werden, zu welchen Zeiten dann gegossen (z.B. immer um 18:00 Uhr) und wie lange gegossen wird. Eine andere Möglichkeit wäre, ein Automatikprogramm einzustellen und mit der Sache mit dem Evotr… als eine Art Callback-Methode, dass Beregnen zu unterdrücken (evtl. einstellbar für wie lange verschoben). Gut wäre auch, wenn für verscheidene Kreise jeweils separat andere Grenzwerte eingestellt werden können (z.B. Rasen, Gemüsebeet, Gewächshaus, Bäume, … ) da manche mehr, manche weiger Wasser brauchen.

Eine andere Idee wäre, eine Art Wartungscenter für die Library selber. Z.B. um Updates zu installieren, bzw. die verfügbaren Module nachzuinstallieren.

Gruß Proxima

das ist doch schon drin oder seh ich das falsch? zumindest kann ich per web-ui updates einspielen und neue module…

Wahrscheinlich kein Zugang zum Betabereich

Betabereich? Wusste garnicht, dass es sowas gibt :slight_smile:

Du kennst den Alphabereich wohl auch nicht :stuck_out_tongue_winking_eye:

Wo find ich das Ganze? :slight_smile:

Um jetzt mal nicht zu offtopic zu werden evtl per PM …

Ich möchte schon lange die Konsole mit den vielen Drehknöpfchen und Rändelrädern auf meinem Heizkessel im Keller durch etwas digitales ersetzen, dessen Funktion auch durchschaubar ist,

Damit die Idee nicht mit Heizkörpersteuerungen vom Typ HomeMatic verwechselt wird, nenne ich das Projekt mal ganz bombastisch

Energiemanagementsystem

Sensoren messen
Außentemperatur, Innentemperatur(en)
Vorlauftemperatur(en) der Heizkreise (Heizkörper, Fußbodenheizung), Kessel-, Boiler-Temperatur
optional Windgeschwindigkeit, Sonnenscheindauer

Ein Script (oder eine Sammlung von Scripten)
wertet die Eingangsdaten der Sensoren aus und steuert (bzw. regelt) in Abhängigkeit eines Heizplans (siehe Universelle Heizungssteuerung, Ernies Heizungsscript) diverse Aktoren:

Aktoren (Ein/Aus) steuern
Öl/Gas-Brenner
Heizkreis-, Ladepumpen
Mischermotor(en)
optional (Fußboden)heizkreise

Das Script muß so „intelligent“ sein, daß es folgende Leistungsmerkmale hat:

[ul]
[li]Regelfunktion für den Mischermotor als Stellgröße (in Abhängigkeit von Außentemperatur und Heizplan als Eingangsgrößen). Man nennt das außentemperaturgeführte Regelung, diese verwendet eine Heizungskurve, die normalerweise händisch eingestellt wird; das Script sollte durch „Experimentieren“ die optimale Heizungskurve selbst erstellen.
[/li][li]Angaben zum Energieverbrauch (ermittelt durch Brenndauer), zum Energieinhalt (wieviel Badewannen noch mit dem aufgeheizten Brauchwasser gefüllt werden können, bei einer Solarheizung wie lange noch abends geheizt werden kann)
[/li][li]usw.
[/li][/ul]

Grusz Harald

Alphabereich war ein Scherz.

Hallo alle zusammen,

ja, ich lebe noch. :wink:
Ich bin momentan (seit Juni) zu mit Arbeit und komme einfach nicht zu IPS. :frowning:

Ich habe nun schon ein paar mal „Modus“ und „Anwesenheitssimulation“ gelesen.
Ich war mal angefangen mein „EMAs“-Konzept nieder zu schreiben.

Hier nun meine Ergüsse. :smiley:

EMAs – Konzept

EMAs steht für: Erweiterte Modus und Abwesenheitssimulation
Mann könnte auch sagen: „Eine Rezepturverwaltung für das Haus“

Teil 1 -> EMAs statisch oder „Erweiterter Modus“

Wie soll das aussehen?
Ich möchte einen Modus für das Haus nicht in einem Script hinterlegen, sondern aus dem Haus auslesen und in einer Datei abspeichern. Diese, sagen wir mal „EMAs“-Datei kann ich nach Belieben wieder aus einer Vielzahl von Dateien aussuchen und in das Haus „zurückspielen“ .

Ein kleines Beispiel:

Ich möchte mir einen „Ich lese ein Buch“ – Modus generieren. Was muss ich machen?

Wenn ich ein Buch lese, dann ist:
• Das Licht an der Couch zu 100% an.
• Das Licht über dem Esstisch ist zu 40% an.
• Das Rollo im Wohnzimmer auf der rechten Seite ist 0% geöffnet.
• Das Rollo im Wohnzimmer auf der linken Seite ist 0% geöffnet.
• Da ich immer nur lese, wenn ich alleine bin, sind im restlichen Haus alle Lampen aus.

• Mein Sonos-Player im Wohnzimmer
-> o spielt
-> o mit einer Lautstärke von 20%
-> o den Radiosender „1FM ChillOut-Radio“

• Alle anderen Player im Haus sind aus.

Wenn ich das nächste Mal ein Buch lese, hat mein Haus genau diese Einstellung (Setup). Per Tastendruck lese ich diese Einstellung aus dem Haus aus und speichere sie in die Datei „Martin_liest_ein_Buch.ems“. Wenn ich danach ein Buch lese, wähle ich diese Datei und schreibe (lade) die Einstellungen zurück ins Haus.

Wie soll das Konkret im Webfront aussehen?

Lesen:
• Um eine aktuelle Einstellung zu laden, brauche ich natürlich einen „Lesen“-Knopf.
• Um die geladene Einstellung in eine Datei zu schreiben, muss ich den Dateinamen eingeben können.
• Ich brauche natürlich einen „Speichern“-Knopf um die Einstellungen in die Datei zu speichern.

Schreiben:
• Um eine Datei mit den Einstellungen auswählen zu können, braucht man eine Liste mit allen Einstellungsdateien, in der ich scrollen kann und in der ich eine Datei auswählen kann.
• Die von mir ausgewählte Datei wird in einem separaten Feld angezeigt.
• Der Inhalt der Datei wird in einer separaten Ansicht angezeigt. Dort kann man sich die Einstellungen ansehen und gegebenenfalls editieren.
• Um eine Einstellungsdatei in das Haus zu schreiben, brauche ich einen „Schreiben“-Knopf.

Allgemein:
• Wenn irgendwelche Fehler passieren, ist eine Ausgabe von Meldungen wünschenswert. Z.B. Diesen Dateinamen „Martin_liest_ein_Buch.ems“ gibt es bereits. Soll die Datei überschrieben werden?

Diesen Teil von EMAs ist statisch. Es werden feste Einstellungen aus dem Haus geladen und in das Haus geschrieben. Die Einstellungen verändern sich nicht. Sie bleiben statisch, bis ich eingreife (Lich An/Aus oder ich lade eine neue Datei).

Warum muss das so sein? Kann ein Status nicht auch dynamisch sein?

Ich meine „Ja“.

Teil 2 -> EMAs dynamisch oder „Erweiterter Abwesenheitssimulation“

Wie soll das aussehen?
Warum muss ich mir eine Abwesenheitssimulation aus den Fingern saugen?
Wäre es nicht viel schöner einfach alle Ereignisse (Event‘s) im Haus mitzuschreiben?
Ich würde Montag morgen im Webfront die „Record“-Taste drücken und alle Veränderungen werden mitgeschrieben. Irgendwann drücke ich auf die „Stop“-Taste und speichere alles in eine Datei. Wenn mir danach ist lade ich diese Datei und Drücke die „Play“-Taste.

Ich hoffe da hat jemand spass daran.

Den statischen Teil bin ich bereits angefangen.
Wenn jemand diese Scripte haben möchte…

„bay the way“

jemand hatte Interesse gezeigt mein Ebay Projekt in die Library zu bringen. :wink:

Einen Namen sag ich jetzt nicht. Oder „1007“. :smiley:

Problemstellung:

Für verschiedenste Ereignisse die im System vorkommen können sollte es ein Modul geben das diese einheitlich sammelt, anzeigt, benachrichtigt bzw. daran erinnert und ggf. eskaliert. Die Benachrichtigung sollte (sofern ein Tracker vorhanden ist) auch gezielt an die Anwesende Person gerichtet sein, wenn es sie betrifft. Besser kann ichs leider nicht erklären, deshalb beschreib ich einfach mal was ich bisher dazu realisiert habe…evtl wird es dadurch nachvollziehbarer.

Ähnlich wie beim IPSLogger kann aus jedem Script heraus ein Ereignis generiert werden. Die meisten Parameter die dabei übergeben werden sind optional. Daher gleich mal 2 Beispiele:

  • Das Backupscript hat erfolgreich meine Webseite gesichert:
    php IPS_RunScriptEx(16940 /*[eigene Module\Informationsmodul\Beta\create]*/,array("initiator"=>$_IPS['SELF'],"text"=>"Website erfolgreich gesichert"));
  • Die Temperatur im Gefrierschrank hat einen Schwellwert überschritten:
    php IPS_RunScriptEx(16940 /*[eigene Module\Informationsmodul\Beta\create]*/,array("escal_sw"=>1,"escal_ts"=>date()+60*60, "interval"=>30*60,"recallmax"=>20, "prio"=>"3","who"=>0,"initiator"=>$_IPS['SELF'],"initiator_ro"=>false,"ack_req"=>true,"text"=>"Problem mit dem Gefrierschrank" ));

Welche Parameter gibt es:

drop = [TS]Verfallszeitpunkt (Wann kann das Erreignis aufgeräumt bw. gelöscht werden)
escal_sw = [int]Eskalation (Soll/Ist → 0= nicht gewünscht, 1= gewünscht aber inaktiv, 2= Eskalation sofort aktiv)
escal_ts = [TS]Eskalationszeitpunkt (Wann soll, wenn gewünscht, eskaliert werden?)
interval = [int]Erinnerungsintervall (In welchen Abständen (s) soll erinnert werden? -1=nur einmal Initial )
recallmax = [int]Maximale Anzahl Erinnerungen
prio = [int]Priorität
who = [int]Für wen ist es gedacht (0=alle, 1=Person1, 2=Person2)
initiator = [int]ID der Verursachervariable (Diese Variable wird überwacht, ein Wechsel von „true“ auf „false“ führt zu einer Quittierung des Ereignisses)
initiator_ro= [bool]Initiatorvariable nur lesend (D.h. es gibt keine Möglichkeit der manuellen Quittierung, z.B. Batterie leer Variable)
ack_req = [bool]Bestätigung erforderlich?
text = [int]Referenz auf Text für Sprachausgabe, Webfront, Log und Mail (immer in Verbindung mit der „ack“-Variable)

Es gibt noch weitere Parameter die bei der Generierung des Events hinzugefügt werden. Für alle nicht übergebenen Parameter werden Standardwerte gesetzt. Pflicht ist nur „Initator“ und „Text“.
Jedes Ereignis ist ein separates Objekt das alle Daten enthält. Timer werden zusätzlich dem Objekt untergeordnet und enthalten den erforderlichen Code um ihre Aktion auszulösen. So sieht das dann aus:
ereignisobjekt.png

Im Webfront kann man sich dann die relevanten Daten anzeigen lassen (diese Beispielansicht ist noch eher funktional, die meisten Details braucht man später nicht zu visualisieren):


Bei Ereignissen deren Zustand über eine Variable wiedergegeben wird, ist es praktisch diese als Initiator zu übergeben. Dann wird das entsprechende Ereignis automatisch quittiert wenn sich der Zustand ändert. Wenn z.B. der HM-ZwischenStecker (erster Eintrag im Bild) wieder erreichbar wird.

Wie die Erinnerung/Benachrichtigung abläuft wird über die Prio geregelt:
z.B. bei mir so:


/*
prio = [int]Priorität
1--> 	für sehr dringende Ereignisse
Webfront-Popup, Sprache (auch Nachts und beim Filmschauen), Telefonanruf (bei Abwesenheit), Email (bei Abwesenheit), Protokoll
2-->	für dringende Ereignisse
Webfront-Popup, Sprache (auch Nachts und beim Filmschauen), Email (bei Abwesenheit), Protokoll
3-->	für normale Ereignisse
Webfront-Popup, Sprache (_nicht_ wenn Schlafenszeit, Abwesenheit oder Filmschauen), Protokoll
4-->	für wenig wichtige Ereignisse
Webfront-Popup, Protokolleintrag
*/

In den Parameter für Text kommt nur eine ID, die dann über ein Sprachscript erst zur Meldung umgeschrieben wird. Damit kann man unterscheiden wie die Meldung im Webfront-Popup, Email, Telefon, Sprache auszugeben ist. Auch kann sich der Inhalt ändern wenn ein Ereignis als „Erledigt“ markiert wurde.

Ziel ist einfach ein Standardverfahren für alle Ereignisse im IPS-System zu schaffen die mehr Beachtung benötigen als einen Logeintrag. Das bisher beschriebene funktioniert so bereits, aber bis zu einem fertigen Modul das sich für jeden individuell parametrisieren lässt…naja ist es noch ein weiter Weg.:rolleyes:

Ich finde Brausepauls Idee Klasse, würde noch Prowl hinzufügen.

Ich finde Brausepauls Idee Klasse

Sowas ähnliches hatte ich als IPS-Modul laufen hier… Zusätzlich hat es noch Logfiles einer USV und eines Linux-Servers gescannt. Den Code hab ich noch und eine Growl-Lösung gibts auch. Hab ich mal für nen User hier gebaut/erweitert. Sollte dann veröffendlicht werden, ist aber nie dazu gekommen.

Wir könnten die Idee ja mal weiter spinnen und ich reaktiviere das Projekt wieder.

Toni

Alleine das ist schon eine sehr interessante und anspruchsvolle Einzelaufgabe.
Ein Regelalgorithmus in IPS. Da werde ich gerade richtig geil. :smiley: