Seite 1 von 3

Bewässerungssteuerung als Custom-Logik

Verfasst: Do Jul 04, 2019 4:40 pm
von danik
Hi

Für meine Bewässerung haben ich mir einen Timer-Logik eingerichtet. Die Bewässerungsdauer steuere ich über die Visu mit einem KNX-Objekt. Da gebe ich Minuten ein, der Timer verlangt aber Sekunden. In der Visu möchte ich ungern mit Sekunden operieren, braucht dann immer einen Rechner. Gibt es eine einfache Möglichkeit, dies umzurechnen, ohne über einen Custom-LE zu gehen? Wenn Nein, wäre dies sicher eine nützliche Sache.

Gruss
Dani

Re: Beta 24: Timer-Input in verschiedenen Einheiten

Verfasst: Do Jul 04, 2019 5:08 pm
von gbglace
Der Baustein Polynom Rechner. Minute Sekunde ist ja ein fixer Faktor 60, sollte damit gehen. Bin nur gerade am Handy...

Re: Beta 24: Timer-Input in verschiedenen Einheiten

Verfasst: Do Jul 04, 2019 9:48 pm
von Chris M.
danik hat geschrieben: Do Jul 04, 2019 4:40 pm In der Visu möchte ich ungern mit Sekunden operieren, braucht dann immer einen Rechner. Gibt es eine einfache Möglichkeit, dies umzurechnen, ohne über einen Custom-LE zu gehen?
Wenn die Visu die CometVisu ist: dort kann man per Mapping direkt in der Visu umrechnen

Re: Beta 24: Timer-Input in verschiedenen Einheiten

Verfasst: Sa Jul 06, 2019 5:27 pm
von danik
So, ich habe es jetzt mit einem Custom-Baustein gelöst, da ich noch andere Funktionen im Timer haben wollte. Habe schon etwas Zeit benötigt, aber habe es hinbekommen und bin begeistert von den Möglichkeiten.

Hier den Custom-LE falls es jemand auch brauchen kann.

Ziel: Timer für Gartenbewässerung. Gesteuert wird das ganze über ein EIN/AUS KO-Objekt. Der Baustein steuert dann ein Ventil. Nach Ablauf der Timer-Dauer wird das EIN/AUS KO auf AUS gesetzt. Der Baustein kann auch manuell gestoppt werden über das EIN/AUS KO Objekt. Die Dauer für die Bewässerung wird als Minuten übergeben.

Bild

Code: Alles auswählen

{
    "Level":[
        ["$trigger","bool",false],
        ["$reset","bool",false],
	["$state","bool",false],
	["$dT_IN","float",0],
        ["$dT_ON","float",0],
        ["$A0","float",0],
        ["$Variable_X","float",60],
        ["$VAR<Inhibit?>","bool",false]
    ],
    "Module":[
        ["Break",["$VAR<Inhibit?>"]],
        ["Polynomial", "$Variable_X", "$dT_ON",["$A0", "$dT_IN"]],
	["Monoflop","$trigger","-$trigger","$state","$dT_ON",2]
    ],
    "Input":[
        ["SchaltKO","Schalt-KO","$trigger","c"],
	["Dauer","Bewässerungsdauer","$dT_IN","c"],
	["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
    ],
    "Output":[
        ["Ventil","Ventil-KO","$state","c"],
        ["SchaltKO","Schalt-KO","$state","c"]        
    ]
}
Falls der Code noch optimiert werden kann danke ich für Inputs.

Das nächste wird dann sein, den Baustein zu erweitern für 2 Bewässerungskreise, die hintereinander laufen.


Chris M. hat geschrieben: Do Jul 04, 2019 9:48 pm
danik hat geschrieben: Do Jul 04, 2019 4:40 pm In der Visu möchte ich ungern mit Sekunden operieren, braucht dann immer einen Rechner. Gibt es eine einfache Möglichkeit, dies umzurechnen, ohne über einen Custom-LE zu gehen?
Wenn die Visu die CometVisu ist: dort kann man per Mapping direkt in der Visu umrechnen
Danke ja, ist CV, muss ich mal testen.

Gruss
Dani

Re: Beta 24: Timer-Input in verschiedenen Einheiten

Verfasst: Sa Jul 06, 2019 6:19 pm
von Robert_Mini
Super, werd ich auch testen!

Zum Thema mehrere Kreise:
Ich würde diesen Baustein als Kern nehmen (=Logik für einen Kreis) und eine weitere Customlogik erstellen, die die Sequenz macht.
D.h. das KO EIN schickt und die Dauer und Bewässerungskreis als Wert übergibt. Nach Ablauf der Dauer oder noch besser wenn das KO auf AUS zurückgesetzt wird, wird der nächste aufgerufen.

Mir fehlt zwar jetzt spontan die Idee, wie man das am besten umsetzt, würde aber meinen, dass die Multiplexer dafür die Basis liefern könnten.
Am Ausgang deiner Custom Logik bräuchte man dann auch einen Multiplexer, der das Objekt des zugehörigen Kreises auswählt.

@S. Kolbinger kann hier sicher einen kleinen Rat geben :-)

Edit: Notfalls kann man diesen Baustein auch je Kreis konfigurieren und macht nur die Sequenz mit einer weiteren Custom-Logik (so nach dem Prinzip keep it simple).

lg
Robert

Re: Beta 24: Timer-Input in verschiedenen Einheiten

Verfasst: So Jul 07, 2019 12:17 am
von StefanW
Super Danik,

wenn man den Dreh einmal raushat, dann kann man mit den Custom-Logiken richtig zaubern.


Was wir uns aber überlegen müssen, ist, wie wir diese Custom-Logiken für viele zugänglich machen.

Ideen:

1. Wir machem im neuen Wiki einen Unterbereich und legen für jede veröffentlichte Custom-Logik eine Seite an und erbitten die nötige Doku dazu. (Das wäre recht einfach).

2. Wir bauen ein Repository (so wie einen App-Store) indem die Kunden per Klick Ihre Custom-Logik einfach veröffentlichen können. Hier müsste aber ein Mindestmaß an Doku hinterlegt werden, damit andere Kunden auch was finden. Ich habe dann nur Sorgen, dass wir irgendwann 35 Bewässerungslogiken haben, es wäre also gut, wenn sich einer einem Thema als "Pate" annimmt und zusieht, dass er neue Ideen mit bestehenden Logiken so merged, dass es sinnvolle Logikbausteine gibt. Nicht unübersichtlich viele, sondern wenige, aber dafür mächtige und gut dokumentierte.

lg

Stefan

Re: Beta 24: Timer-Input in verschiedenen Einheiten

Verfasst: So Jul 07, 2019 10:08 am
von danik
StefanW hat geschrieben: So Jul 07, 2019 12:17 am
1. Wir machem im neuen Wiki einen Unterbereich und legen für jede veröffentlichte Custom-Logik eine Seite an und erbitten die nötige Doku dazu. (Das wäre recht einfach).

2. Wir bauen ein Repository (so wie einen App-Store) indem die Kunden per Klick Ihre Custom-Logik einfach veröffentlichen können. Hier müsste aber ein Mindestmaß an Doku hinterlegt werden, damit andere Kunden auch was finden. Ich habe dann nur Sorgen, dass wir irgendwann 35 Bewässerungslogiken haben, es wäre also gut, wenn sich einer einem Thema als "Pate" annimmt und zusieht, dass er neue Ideen mit bestehenden Logiken so merged, dass es sinnvolle Logikbausteine gibt. Nicht unübersichtlich viele, sondern wenige, aber dafür mächtige und gut dokumentierte.
Variante 2 finde ich grundsätzlich interessant, aber wie Du erwähnt hast braucht es eine gewisse Qualität und Betreuung der Custom-Logik. Aber ich denke für die Zukunft mit einer wachsenden Community ein guter Ansatz.

Zu beginn kann es ja ggf. schon mal helfen oder ist sinnvoll, pro Thema einen eigenen Thread zu starten, der dann wächst mit Inputs und Custom-LE von anderen (wobei ab einer gewissen Länge des Threads und Versionen von Custom-LE dann mit der Zeit unübersichtlich).

Gruss
Dani

Re: Beta 24: Timer-Input in verschiedenen Einheiten

Verfasst: So Jul 07, 2019 11:23 am
von Robert_Mini
StefanW hat geschrieben: So Jul 07, 2019 12:17 am 1. Wir machem im neuen Wiki einen Unterbereich und legen für jede veröffentlichte Custom-Logik eine Seite an und erbitten die nötige Doku dazu. (Das wäre recht einfach).
2. Wir bauen ein Repository (so wie einen App-Store) indem die Kunden per Klick Ihre Custom-Logik einfach veröffentlichen können. Hier müsste aber ein Mindestmaß an Doku hinterlegt werden, damit andere Kunden auch was finden. Ich habe dann nur Sorgen, dass wir irgendwann 35 Bewässerungslogiken haben, es wäre also gut, wenn sich einer einem Thema als "Pate" annimmt und zusieht, dass er neue Ideen mit bestehenden Logiken so merged, dass es sinnvolle Logikbausteine gibt. Nicht unübersichtlich viele, sondern wenige, aber dafür mächtige und gut dokumentierte.
Ich würde im ersten Schritt mit 1) fortsetzen und so wie Dani schreibt im Forum per Thread starten und dann vom CustomLogik-OWNER in die KB / künftig Wiki übertragen.
Alles andere führt IMHO zu Wildwuchs.

Komplett fertige Bausteine halte ich ohnehin für schwierig, da die Umgebungsbedingungen bei jeder Installation etwas Abweichen. Deshalb habe ich auch oben empfohlen, dass man die Bewässerungslogik in mehrere Bausteine auftrennt (und nicht einen Wunderbaustein baut), da kann man ggf. dazwischen/davor noch Umrechnungen etc. einbauen.

Für einige einfache Custom Logiken habe ich die KB schon erstellt, das Timer Bsp. gefällt mir sehr gut und kommt da auch gleich rein.

Robert

Re: Beta 24: Timer-Input in verschiedenen Einheiten

Verfasst: So Jul 07, 2019 3:06 pm
von S. Kolbinger
Hallo Robert,
Robert_Mini hat geschrieben: Sa Jul 06, 2019 6:19 pm Zum Thema mehrere Kreise:
Ich würde diesen Baustein als Kern nehmen (=Logik für einen Kreis) und eine weitere Customlogik erstellen, die die Sequenz macht.
D.h. das KO EIN schickt und die Dauer und Bewässerungskreis als Wert übergibt. Nach Ablauf der Dauer oder noch besser wenn das KO auf AUS zurückgesetzt wird, wird der nächste aufgerufen.
...
@S. Kolbinger kann hier sicher einen kleinen Rat geben :-)

Ich habe hier eine Custom-Logik, die ein TRUE an den Ausgängen sequentiell weiterschalten.
Sie ist an die beschriebene Bewässerungsproblematik angepasst.

Code: Alles auswählen

{
    "Level":[
        ["$trigger","bool",false],
        ["$state_a","bool",false],
        ["$period_a","float",10],
        ["$state_b","bool",false],
        ["$period_b","float",10],
        ["$state_c","bool",false],
        ["$period_c","float",10],
        ["$state_d","bool",false],
        ["$period_d","float",10],
        ["$VAR<Inhibit?>","bool",false]
    ],
    "Module":[
        ["Break",["$VAR<Inhibit?>"]],
        ["Monoflop","$trigger","-$trigger","$state_a","$period_a",2],
        ["Monoflop","$state_a","-$trigger","$state_b","$period_b",4],
        ["Monoflop","$state_b","-$trigger","$state_c","$period_c",4],
        ["Monoflop","$state_c","-$trigger","$state_d","$period_d",4],
        ["Or",["$state_a","$state_b","$state_c","$state_d"],"$trigger"]
    ],
    "Input":[
        ["Start/Stop","Startet/Beendet den Zyklus","$trigger","c"],
        ["Dauer1","1.Bewässerungsdauer","$period_a","c"],
        ["Dauer2","2.Bewässerungsdauer","$period_b","c"],
        ["Dauer3","3.Bewässerungsdauer","$period_c","c"],
        ["Dauer4","4.Bewässerungsdauer","$period_d","c"],
        ["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
    ],
    "Output":[
        ["Ventil1","Schaltausgang 1.Ventil","$state_a","c"],
        ["Ventil2","Schaltausgang 2.Ventil","$state_b","c"],
        ["Ventil3","Schaltausgang 3.Ventil","$state_c","c"],
        ["Ventil4","Schaltausgang 4.Ventil","$state_d","c"]
    ]
}
Bild

Das Prinzip lässt sich auf andere Aufgaben leicht übertragen/anpassen.
Z.B.: Wenn die Dauer für alle Zyklen gleich sein soll, kann man die vier Eingänge auf einen zusammenfassen.

Re: Beta 24: Timer-Input in verschiedenen Einheiten (und unerwarteter Fehler im LE)

Verfasst: So Jul 07, 2019 3:30 pm
von Robert_Mini
Sehr cool, meine Begeisterung steigt immer weiter (obwohl ich schon sehr begeistert bin)!!!

Ist Monoflop die Std-Logik Taktsignal?

Was jetzt noch zu meinem heutigen Stand fehlt, ist die Ausgabe der abgelaufenen und verbleibenden Zeit je Kreis und Gesamt für die Visu.
Das habe ich mit diesem Hintergrund für den Timer als FR beschrieben (viewtopic.php?f=9&t=1085), dort ist auch ein Screenshot der Bewässerung in der CV. Ich ergänze dort auch das Monoflop ;) .

Super!
lg
Robert

PS: Notiz für die KB schon gemacht.