Vorschlag für Logikobjekte

Hallo,

Ich möchte hier mal einen Vorschlag zur Implementierung für Logikobjekte für die nächsten IP-Symcon Versionen machen:

Ich habe es oft, dass ich mehrere Bool Variablen miteinander Verknüpfen muss. Das führt immer zu einem Script das alle Variablen einliest und einer großen Menge Ereignisse die auf Änderung der Quellobjekte das Script triggern. = Aufwändig, Umständlich, Fehleranfällig

Ich fände es daher hilfreich, wenn es neben Variablen, Scripten und Ereignissen, auch BOOL Objekte gäbe für AND, OR, NOT und XOR. Innerhalb des Logikobjekts definiert man die gewünschten Quellvariablen und das Logikobjekt sieht nach außen selbst wie eine BOOL Variable aus und lässt sich dann auch in weiteren Logikobjekten verwenden.
Automatisch wird der Output neu berechnet, sobald sich eine Quellvariable ändert.

Ein NOT Objekt nimmt natürlich nur 1 Quellvariable auf und invertiert diese.
Die AND, OR und XOR sollten da dynamisch 2 oder mehr Variablen berechnen können.

Alternativ, der Darstellung wegen, könnte das Logikobjekt als Unterobjekte die Quellen aufnehmen (Direkt oder als Link). Dann sieht man direkt im Objektexplorer die Quellvariablen.

Apropos Links: Könnte man nicht implementieren, dass Links beim Mouse-Over oder so den Value vom Parent anzeigen?

Gruß

Andreas

Kannst Du mal ein Beispiel geben wo Du z.B. wie mehrere Bool Vars verknüpfst und wie das aussieht? So was wie Du Dir vorstellst kann man als PHP Modul bauen dann überprüfst Du auf Variablenänderung und setzt dann die passenden Werte dann brauchst Du nicht mehrere Ereignisse.

Z.b. hier:

Selection_061.png

Der einzige Unterscheid bei einem PHP Modul wäre halt nur das Du dann in einem Formular die Variablen zusammenklickst. Aber tritt das denn so häufig auf das sich das nicht auch mit Ereignissen lösen lässt oder was wäre der eigentliche Vorteil von so einem Logikmodul?

Naja, so muss man eine Bool-Variable erstellen, ein Script das die Bool Variable setzt schreiben und Ereignisse für jede Quellvariable setzen, die das Script ausführt.
Jede Änderung zieht ein Anpassen des Scripts und der Ereignisse nach.

Es würde vor allem der Übersichtlichkeit dienen und man braucht für einfache Logiken nicht eine Zeile skripten.

Um z.b. einen globalen Präsenzstatus zu implementieren, würde ich gern die BOOL Objekte jedes Bewegungsmelders (13 Stück), plus den Status der aktiven Schlüsseltransponder (3) in einem ODER Objekt verknüpfen.
Diese Bool Variable kann dann direkt bestimmte Aktionen steuern, für die eventuell auch wieder UND oder OR verknüfpt werden kann.

Solche Logikfunktionen findet man in ganz vielen KNX Komponenten und z.b. auch im Gira Homeserver, der eigentlich nur mit solchen Funktionsblöcken arbeitet. Deswegen vermisse ich die etwas. Für jede Kleinigkeit braucht es in IPS eben ein Script, obwohl häufig ein Ereignis mit einer vordefinierten Aktion reichen würde. (EIB_Switch) z.B.

Alarm.JPG

Ich versuche daher häufig die Logikfunktionen innerhalb KNX zu verwenden, damit gleich das passende raus fällt, aber das ist schwierig, wenn nicht KNX Quellen dazu kommen. Ich habe auch kein KNX Logikmodul mit dem man das mit den Präsenzmeldern lösen könnte, nur die Transponder gehen dann wieder nicht. Außerdem sind die Module auch wieder teuer.

Gruß

Andreas

Hallo!
Kuckmal bei IPSView.
Schönen Gruß:)
Egon

Sowas in der Art würde ich auch ganz nett finden

Das ist ja wirklich ganz cool! Insbesondere, dass man direkt nach PHP Quellcode generieren kann…

paresy

Das müsste man dann in eine HTMLBox packen oder?

Wenn du da etwas bauen magst, würde ich dies entweder als Standalone App im /user/ Ordner bauen, ob über einen WebHook, der über ein PHP Modul gekapselt ist. (Siehe mein Geofency Modul) Das WebFront ist ja sogesehen Visu und nicht Konfiguration :slight_smile:

paresy

Ich oute mich mal ich gehöre zu der gelben Fraktion oben. Ich brauche das nicht unbedingt aber wenn da grundsätzlich Bedarf besteht vielleicht findet sich ja da jemand der da was baut oder wenn IP-Symcon das als Mehrwert sieht könnt ihr das ja auch ganz offiziell in IP-Symcon mit aufnehmen. Wäre sicher was für alle Klickibunti Liebhaber und erleichtert vielleicht dem ein oder anderen den Einstieg bzw. Bezug zu IP-Symcon dem die Haare schon zu Berge stehen wenn er das Wort Skripte hört. Und wenn man sieht wieviele Leute die grauenhafte Oberfläche der CCU nutzen wo man sich auch was zusammenklicken kann wäre das vielleicht wirklich eine Überlegung wert um IP-Symcon einer größeren Zielgruppe zugänglich zu machen.

Moin,

sowas würde IPS mit Sicherheit für den normal nicht Programmierer User interessanter machen.

IPS ist für den normal User nicht gerade Einsteiger freundlich.

Ich bin SPS-Programmierer und kenne daher natürlich diese „Logikelemente“ und die grafischen Verknüpfungen aus dem täglichen Alltag.
Da immer mehr gegenseitige Abhängigkeiten und Beziehungen im Bereich GLT und auch Homeautomation entstehen, findet die SPS immer mehr Einzug in diese Bereiche.
Ab einer gewissen Anzahl von Abhängigkeiten wird die klassische Eventsteuerung (IPS) einfach unübersichtlich und schlecht wartbar. Die logischen Verknüpfungen sind dabei der eine Punkt, der andere Punkt ist das Auslösen der Events / Trigger.
Eine SPS hat daher eine zyklische Programmabarbeitung und ein sogenanntes Prozessabbild um den Variablenhaushalt während der Abarbeitung konsistent zu halten.

Gruß
Dieter

Wie sieht die Aussicht darauf aus? :slight_smile:

Ich grabe das Thema nochmal aus und möchte auch ein praktisches Beispiel liefern:

Ich habe Räume mit mehreren Fenstern.
An den Fenstern befinden sich jeweils ein SecuSignal Griff oder ein EnOcean Solar Fenster Sensor.
Der SecuSignal Griff sendet bei öffnen/kippen des Fensters einen Wert, der EnOcean Sensor bei Auf/Zu.

Jetzt möchte ich, dass die Heizung in den Frostschutz fährt, wenn ein Fenster geöffnet wird.

Die Adressen muss ich alle per ODER verknüpfen auf eine Adresse(Instanz) mit z.B. „Fenster offen“.
Diese schaltet dann in den Frostschutz.
Damit der Forstschutz aufgehoben wird, sind wiederum alle mit UND verknüpft. Nur dann wird eine 0 ausgegeben und der Frostschutz deaktiviert.

Jetzt könnte man sagen: Ja verknüpf in der ETS doch alle Griffe einzeln mit dem Eingang „Frostschutzes“ des Aktors…
Geht aber nicht, weil angenommen, ich mache zwei Fenster auf, schicken beide ein „sperren“. Mache ich dann aber nur eines wieder zu, schickt das eine ja auch schon ein „entsperren“ (Die EnOcean SecuSignal Griffe schicken nur ein einmaliges Signal), und somit würde der Heizungsaktor wieder anlaufen, obwohl noch ein Fenster offen ist.

So, wie habe ich es im Moment gelöst:
Zwar haben meine KNX Bausteine alle eine zusätzlich nutzbare Logikfunktion mit eingebaut, aber die Anzahl der Variablen ist sehr beschränkt, d.h. ich kann nur 2 Eingänge/Ausgänge meistens verknüpfen.
Im Moment habe ich noch den EIB-PC, ein sündhaft teures Gerät, das ich ursprünglich für die Visualisierung gedacht hatte, das aber auch alle möglichen dieser Module mit intus hat. Unter anderem eben Logikmodule mit einer frei konfigurierbaren Anzahl an Eingängen.
Nun bin ich aber dabei, alles auf IP-Symcon zu migrieren, da der EIB-PC für mich als Anwender und Programmier-Laie eine Katastrophe ist. Und nur als Zeitschaltuhr und Logikmodul das Ding noch zu behalten, wäre krasser Luxus :slight_smile:

Hier wäre eben ein „Modul“ echt von vorteil, so wie beim EIB-PC auch, d.h. ich wähle aus: Modulart (UND/ODER usw.), Anzahl der Eingänge und der jeweiligen Adressen oder IDs und einen Ausgang mit der jeweiligen ID. Fertig.

So muss ich jetzt auch für 15 Räume etwas basteln :stuck_out_tongue: :slight_smile:

Ich habe Testweise eine DMN-Engine eingebunden für solche Logiken, denn eine Entscheidungstabelle genügt idR für diese Abfragen. Das Clicky-Bunti ist zwar schön, wäre hier aber nur brauchbar wenn es quasi direkt auf dier IPS-Api basieren würde… das ginge dann zu weit.

Wen es interessiert, ich habe Camunda-DMN eingebunden, wie so was aussieht kann man sich im Online-Simulator ansehen: DMN Simulator | Camunda BPM

ClickyBunti braucht ja keiner, das ist echt Spielerei. Bissel Überlegung, auch wenn man wie ich, gerne einfach nur Anwender ist, darf man schon erwarten.

Ich zeig Euch mal, wie das beim EIB-PC aussieht in der Eingabe.

Mehr brauchts eigentlich nicht.
Statt Gruppenadressen (Ist ja KNX) dann eben die Eingabe von Instanzen oder Variablen

Hab jetzt mal das im Beitrag vom Bergdoktor getestet.
Funktioniert für mich auch soweit, kann ich persönlich auch damit leben.

Aber für jemanden, der noch weniger in script programmierung drin steckt wie ich, ist die Eingabe über eine Oberfläche wie aufgezeigt einfach schöner :slight_smile:

I think it would be helpful if IP-Symcon would ship with a collection of logic modules to handle AND/OR operations and to calculate minimum, maximum, total and average values. The module would take a set of input variables and generates one output variable. That would reduce the amount of scripting and events needed to handle logic. It’s pretty easy to build such a module.

What you are describing is realized in the RechenModul from SymconMisc. You can calculate the Average, Maximum, Minimum, … of a number of variables. Just give it a try or take a look here (German documentation): SymconMisc/Rechenmodul at master · symcon/SymconMisc · GitHub