NEU! UPGRADE IP 10 verfügbar!
Optimierte Darstellung von VISU Editor und VISU Client - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/8HzePCm3

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117

NEU! Ausführliches Video Tutorial zur IP 10
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

Bewässerungssteuerung als Custom-Logik

Informationen und Diskussionen über Logik-Engine und Logik-Editor
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln

Robert_Mini
Reactions:
Beiträge: 3744
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1168 Mal
Danksagung erhalten: 2076 Mal

#11

Beitrag von Robert_Mini »

@danik
Kannst du den Letztstand nochmal Posten?

Lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Ersteller
danik
Reactions:
Beiträge: 392
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 263 Mal
Danksagung erhalten: 266 Mal

#12

Beitrag von danik »

Robert_Mini hat geschrieben: So Jul 07, 2019 5:45 pm @danik
Kannst du den Letztstand nochmal Posten?

Lg
Robert
Hi

Hier die finale Version, die bei mir soweit läuft.

Dauer: Bewässerungsdauer, bei mir als Minuten (Wert muss Float sein, bei mir dpt 9.010)
Faktor: rechnet die Werte von DauerX um in Sekunden für den Timer-Baustein (erwartet Sekunden als Input)
Pause: Wert in Sekunden, bis der nächste Kreislauf gestartet wird.

Hier die Version für 2 Kreisläufe

Bild

Code: Alles auswählen

{
    "Level":[
        ["$trigger","bool",false],
        ["$trigger_o","bool",false],
        ["$state_a","bool",false],
        ["$state_ab","bool",false],
        ["$period_a","float",0],
        ["$period_a_i","float",0],
        ["$state_b","bool",false],
        ["$period_b","float",0],
        ["$period_b_i","float",0],
        ["$A0","float",0],
        ["$faktor_x","float",60],
        ["$pause_x","float",5],
        ["$VAR<Inhibit?>","bool",false]
    ],
    "Module":[
        ["Break",["$VAR<Inhibit?>"]],
        ["Polynomial", "$faktor_x", "$period_a",["$A0", "$period_a_i"]],
        ["Monoflop","$trigger","-$trigger","$state_a","$period_a",2],
        ["Monoflop","$state_a","-$trigger","$state_ab","$pause_x",4],
        ["Polynomial", "$faktor_x", "$period_b",["$A0", "$period_b_i"]],
        ["Monoflop","$state_ab","-$trigger","$state_b","$period_b",4],
        ["Or",["$state_a","$state_ab","$state_b"],"$trigger"],
        ["Or",["$state_a","$state_ab","$state_b"],"$trigger_o"]
    ],
    "Input":[
        ["Start/Stop","Startet/Beendet den Zyklus","$trigger","c"],
        ["Dauer1","1.Bewässerungsdauer","$period_a_i","c"],
        ["Dauer2","2.Bewässerungsdauer","$period_b_i","c"],
        ["Faktor","Faktor Dauer","$faktor_x","c"],
        ["Pause","Pause in s","$pause_x","c"],
        ["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
    ],
    "Output":[
        ["Ventil1","Schaltausgang 1.Ventil","$state_a","c"],
        ["Ventil2","Schaltausgang 2.Ventil","$state_b","c"],
        ["SchaltKO","Schalt-KO","$trigger_o","c"]  
    ]
}

Und hier eine Version mit 4 Kreisläufen

Bild

Code: Alles auswählen

{
    "Level":[
        ["$trigger","bool",false],
        ["$trigger_o","bool",false],
        ["$state_a","bool",false],
        ["$state_ab","bool",false],
        ["$period_a","float",0],
        ["$period_a_i","float",0],
        ["$state_b","bool",false],
        ["$state_bb","bool",false],
        ["$period_b","float",0],
        ["$period_b_i","float",0],
        ["$state_c","bool",false],
        ["$state_cb","bool",false],
        ["$period_c","float",0],
        ["$period_c_i","float",0],
        ["$state_d","bool",false],
        ["$period_d","float",0],
        ["$period_d_i","float",0],
        ["$A0","float",0],
        ["$faktor_x","float",60],
        ["$pause_x","float",5],
        ["$VAR<Inhibit?>","bool",false]
    ],
    "Module":[
        ["Break",["$VAR<Inhibit?>"]],
        ["Polynomial", "$faktor_x", "$period_a",["$A0", "$period_a_i"]],
        ["Monoflop","$trigger","-$trigger","$state_a","$period_a",2],
        ["Monoflop","$state_a","-$trigger","$state_ab","$pause_x",4],
        ["Polynomial", "$faktor_x", "$period_b",["$A0", "$period_b_i"]],
        ["Monoflop","$state_ab","-$trigger","$state_b","$period_b",4],
        ["Monoflop","$state_b","-$trigger","$state_bb","$pause_x",4],
        ["Polynomial", "$faktor_x", "$period_c",["$A0", "$period_c_i"]],
        ["Monoflop","$state_bb","-$trigger","$state_c","$period_c",4],
        ["Monoflop","$state_c","-$trigger","$state_cb","$pause_x",4],
        ["Polynomial", "$faktor_x", "$period_d",["$A0", "$period_d_i"]],
        ["Monoflop","$state_cb", "-$trigger","$state_d","$period_d",4],
        ["Or",["$state_a","$state_ab","$state_bb","$state_cb","$state_b","$state_c","$state_d"],"$trigger"],
        ["Or",["$state_a","$state_ab","$state_bb","$state_cb","$state_b","$state_c","$state_d"],"$trigger_o"]
    ],
    "Input":[
        ["Start/Stop","Startet/Beendet den Zyklus","$trigger","c"],
        ["Dauer1","1.Bewässerungsdauer","$period_a_i","c"],
        ["Dauer2","2.Bewässerungsdauer","$period_b_i","c"],
        ["Dauer3","3.Bewässerungsdauer","$period_c_i","c"],
        ["Dauer4","4.Bewässerungsdauer","$period_d_i","c"],
        ["Faktor","Faktor Dauer","$faktor_x","c"],
        ["Pause","Pause in s","$pause_x","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"],
        ["SchaltKO","Schalt-KO","$trigger_o","c"]  
    ]
}
Fehlt nur noch die von Dir erwähnte Möglichkeit der "Restzeit".

Gruss
Dani
TW 3500L (#882) + TW 950Q (#321, im Moment inaktiv), VPN offen, Reboot nach Rücksprache

Robert_Mini
Reactions:
Beiträge: 3744
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1168 Mal
Danksagung erhalten: 2076 Mal

#13

Beitrag von Robert_Mini »

Super Sache!
Was mir noch fehlt (oder ich nicht gesehen habe), ist ein Ausgang der solange 1 ist, wie irgendein Kreis aktiv ist (Sequenz aktiv).
Oder ist das das $SchaltKO?

Und wenn ich schon genau bin:
- ein Sperreingang und
- Freigabe-Eingang
- Globaler Faktor als Eingang der auf jede Dauer multipliziert wird

Damit hätten wir den ersten massentauglichen Bewässerungsbaustein für den TWS :clap: :clap: :clap: !

lg
Robert
Zuletzt geändert von Robert_Mini am So Jul 07, 2019 9:47 pm, insgesamt 1-mal geändert.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Ersteller
danik
Reactions:
Beiträge: 392
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 263 Mal
Danksagung erhalten: 266 Mal

#14

Beitrag von danik »

Robert_Mini hat geschrieben: So Jul 07, 2019 9:45 pm
Was mir noch fehlt (oder ich nicht gesehen habe), ist ein Ausgang der solange 1 ist, wie irgendein Kreis aktiv ist (Sequenz aktiv).
Oder ist das das $SchaltKO?
Ja genau. Ev. braucht es einen besseren Namen.
Robert_Mini hat geschrieben: So Jul 07, 2019 9:45 pm
Und wenn ich schon genau bin:
- ein Sperreingang und
- Freigabe-Eingang
- Globaler Faktor als Eingang der auf jede Dauer multipliziert wird
Sperreingang über (+) Inhabit, jedoch nicht getestet (wobei ich meinte dass es da noch ein Sortierungsproblem gibt in der aktuellen Beta). Das und verstehe ich nicht ganz was gemeint ist. Ev. mit einem zweiten Inhabt, invertiert?

Faktor macht doch genau das was Du meinst mit "Globaler Faktor als Eingang der auf jede Dauer multipliziert wird", oder verstehe ich dies falsch?

lg
Dani
TW 3500L (#882) + TW 950Q (#321, im Moment inaktiv), VPN offen, Reboot nach Rücksprache

Robert_Mini
Reactions:
Beiträge: 3744
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1168 Mal
Danksagung erhalten: 2076 Mal

#15

Beitrag von Robert_Mini »

Hallo Dani!

SchaltKO würde ich durch "Sequenz aktiv" ersetzen als Bezeichnung für den Ausgang ersetzen.

Das Sortierungsproblem bezieht sich auf das hinzufügen zusätzlicher Eingänge mit dem "+"-Zeichen.
Du kannst einen Inhibit Eingang auch gleich manuell in der Custom Logik erstellen => KB (Inhibit ist nur ein zufälliger Name, das Modul dazu heißt break...).

Ich bin aber kein Freund davon. Warum? Ein Break bei aktiver Bewässerung würde das Schließen des Ventils unterbinden :naughty: !!!

Ich verwende daher einen UND-Baustein in meinen Logiken mehreren Eingängen (1x Ein/Aus, 1x als Freigabe, 1x Sperre als invertierten Eingang).
So wird die Logik nach Umschalten von Freigabe = 1 auf =0 auch korrekt abgebrochen und der Zustand gesendet, der zur ausgeschalteten Logik gehört.

Wie man das im Zusammenspiel mit dem Monoflop macht, weiß ich aber grad auch nicht.

Zum Abschluss:
die 60min würde ich fix als rein interne Variable belassen und zusätzlich eine Variable Faktor als Eingang vorsehen, dann reden wir immer von Minuten und der zusätzlichen Möglichkeit, die Standardzeiten (zB an besonders heißen Tagen) mit einem Faktor skalieren zu können.

lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

DeLaDope
Reactions:
Beiträge: 245
Registriert: Mo Sep 03, 2018 2:26 pm
Hat sich bedankt: 122 Mal
Danksagung erhalten: 97 Mal

#16

Beitrag von DeLaDope »

Zwischenstand gefällt mir schon einmal sehr gut! Die Idee mit dem fixen Faktor ist natürlich auch sehr hilfreiche...weiter so. Danke! VG
TWS 2500 ID:134 + 2 x PBM ID:833/789, VPN offen, Reboot nach Rücksprache

Ersteller
danik
Reactions:
Beiträge: 392
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 263 Mal
Danksagung erhalten: 266 Mal

#17

Beitrag von danik »

Hallo Robert

Danke für die guten Inputs. Ich habe die Logik jetzt mal so umgebaut, im Moment mit 2 Kreisen. Wenn dies mal jemand anders noch getestet hat kann ich falls gewünscht noch die Logik mit den 4 Kreisen umbauen.
Robert_Mini hat geschrieben: Mo Jul 08, 2019 8:17 pm SchaltKO würde ich durch "Sequenz aktiv" ersetzen als Bezeichnung für den Ausgang ersetzen.
gemacht.
Robert_Mini hat geschrieben: Mo Jul 08, 2019 8:17 pm Das Sortierungsproblem bezieht sich auf das hinzufügen zusätzlicher Eingänge mit dem "+"-Zeichen.
Du kannst einen Inhibit Eingang auch gleich manuell in der Custom Logik erstellen => KB (Inhibit ist nur ein zufälliger Name, das Modul dazu heißt break...).

Ich bin aber kein Freund davon. Warum? Ein Break bei aktiver Bewässerung würde das Schließen des Ventils unterbinden :naughty: !!!

Ich verwende daher einen UND-Baustein in meinen Logiken mehreren Eingängen (1x Ein/Aus, 1x als Freigabe, 1x Sperre als invertierten Eingang).
So wird die Logik nach Umschalten von Freigabe = 1 auf =0 auch korrekt abgebrochen und der Zustand gesendet, der zur ausgeschalteten Logik gehört.

Wie man das im Zusammenspiel mit dem Monoflop macht, weiß ich aber grad auch nicht.
habe ich gemacht mit dem Eingang "Freigabe", der auf 1 sein muss. Beim Ändern auf 0 werden auch die Ausgänge auf 0 gesetzt (wie auch wenn bei Start/Stop auf 0 gewechselt wird). Break habe ich entfernt.
Robert_Mini hat geschrieben: Mo Jul 08, 2019 8:17 pm Zum Abschluss:
die 60min würde ich fix als rein interne Variable belassen und zusätzlich eine Variable Faktor als Eingang vorsehen, dann reden wir immer von Minuten und der zusätzlichen Möglichkeit, die Standardzeiten (zB an besonders heißen Tagen) mit einem Faktor skalieren zu können.
Auch das ist nun drin mit Faktor.

Bild

Code: Alles auswählen

{
    "Level":[
        ["$trigger","bool",false],
        ["$trigger_o","bool",false],
        ["$state_a","bool",false],
        ["$state_ab","bool",false],
        ["$period_a","float",0],
        ["$period_a_i","float",0],
        ["$state_b","bool",false],
        ["$period_b","float",0],
        ["$period_b_i","float",0],
        ["$A0","float",0],
        ["$faktor_m2s","float",60],
        ["$faktor_i","float",1],
        ["$faktor_c","float",1],
        ["$pause_x","float",5],
        ["$freigabe","bool",true],
        ["$reset","bool",false]
    ],
    "Module":[
        ["And",["$freigabe","$trigger"],"$reset"],
        ["Polynomial", "$faktor_m2s", "$faktor_c",["$A0", "$faktor_i"]],
        ["Polynomial", "$faktor_c", "$period_a",["$A0", "$period_a_i"]],
        ["Monoflop","$trigger","-$reset","$state_a","$period_a",2],
        ["Monoflop","$state_a","-$reset","$state_ab","$pause_x",4],
        ["Polynomial", "$faktor_c", "$period_b",["$A0", "$period_b_i"]],
        ["Monoflop","$state_ab","-$reset","$state_b","$period_b",4],
        ["Or",["$state_a","$state_ab","$state_b"],"$trigger"],
        ["Or",["$state_a","$state_ab","$state_b"],"$trigger_o"]
    ],
    "Input":[
        ["Start/Stop","Startet/Beendet den Zyklus","$trigger","c"],
        ["Dauer1","1.Bewässerungsdauer min.","$period_a_i","c"],
        ["Dauer2","2.Bewässerungsdauer min.","$period_b_i","c"],
        ["Faktor","Faktor Dauer","$faktor_i","c"],
        ["Pause","Pause in s","$pause_x","c"],
        ["Freigabe","Freigabe der Bew.Logik","$freigabe","c"]
    ],
    "Output":[
        ["Ventil1","Schaltausgang 1.Ventil","$state_a","c"],
        ["Ventil2","Schaltausgang 2.Ventil","$state_b","c"],
        ["Sequenz aktiv","Sequenz aktiv","$trigger_o","c"]
    ]
}
Viel spass beim Testen
Robert_Mini hat geschrieben: So Jul 07, 2019 9:53 pm PS: Irgendwie müssen wir die Diskussion zum Bug und Bewässerung noch auftrennen, denn unter diesem Titel sucht keiner nach Bewässerungslogik...
Ja das wäre gut, wenn dies ein mod hinbekommt.

ld
Dani
TW 3500L (#882) + TW 950Q (#321, im Moment inaktiv), VPN offen, Reboot nach Rücksprache

Robert_Mini
Reactions:
Beiträge: 3744
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1168 Mal
Danksagung erhalten: 2076 Mal

#18

Beitrag von Robert_Mini »

Super! :clap: :clap:
Sehr schöne Sache - werde das baldigst in die KB übernehmen.
danik hat geschrieben: Mo Jul 08, 2019 10:12 pm
Robert_Mini hat geschrieben: So Jul 07, 2019 9:53 pm PS: Irgendwie müssen wir die Diskussion zum Bug und Bewässerung noch auftrennen, denn unter diesem Titel sucht keiner nach Bewässerungslogik...
Ja das wäre gut, wenn dies ein mod hinbekommt.
Mache ich gleich noch nach bestem Wissen und Gewissen.

4 Kreise? Ich bräuchte 7 :confusion-scratchheadyellow: .

In jedem Fall eine tolle Arbeit!

lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Ersteller
danik
Reactions:
Beiträge: 392
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 263 Mal
Danksagung erhalten: 266 Mal

#19

Beitrag von danik »

So, die LE mit 4 Kreisen haben ich jetzt noch kurz gemacht, ging schneller als gedacht.

Erweiterung auf mehr ist ja dann eine Fleisarbeit.

Bild

Code: Alles auswählen

{
    "Level":[
        ["$trigger","bool",false],
        ["$trigger_o","bool",false],
        ["$state_a","bool",false],
        ["$state_ab","bool",false],
        ["$period_a","float",0],
        ["$period_a_i","float",0],
        ["$state_b","bool",false],
        ["$state_bb","bool",false],
        ["$period_b","float",0],
        ["$period_b_i","float",0],
        ["$state_c","bool",false],
        ["$state_cb","bool",false],
        ["$period_c","float",0],
        ["$period_c_i","float",0],
        ["$state_d","bool",false],
        ["$period_d","float",0],
        ["$period_d_i","float",0],
        ["$A0","float",0],
        ["$faktor_m2s","float",60],
        ["$faktor_i","float",1],
        ["$faktor_c","float",1],
        ["$pause_x","float",5],
        ["$freigabe","bool",true],
        ["$reset","bool",false]
    ],
    "Module":[
        ["And",["$freigabe","$trigger"],"$reset"],
        ["Polynomial", "$faktor_m2s", "$faktor_c",["$A0", "$faktor_i"]],
        ["Polynomial", "$faktor_c", "$period_a",["$A0", "$period_a_i"]],
        ["Monoflop","$trigger","-$reset","$state_a","$period_a",2],
        ["Monoflop","$state_a","-$reset","$state_ab","$pause_x",4],
        ["Polynomial", "$faktor_c", "$period_b",["$A0", "$period_b_i"]],
        ["Monoflop","$state_ab","-$reset","$state_b","$period_b",4],
        ["Monoflop","$state_b","-$reset","$state_bb","$pause_x",4],
        ["Polynomial", "$faktor_c", "$period_c",["$A0", "$period_c_i"]],
        ["Monoflop","$state_bb","-$reset","$state_c","$period_c",4],
        ["Monoflop","$state_c","-$reset","$state_cb","$pause_x",4],
        ["Polynomial", "$faktor_c", "$period_d",["$A0", "$period_d_i"]],
        ["Monoflop","$state_cb", "-$reset","$state_d","$period_d",4],
        ["Or",["$state_a","$state_ab","$state_bb","$state_cb","$state_b","$state_c","$state_d"],"$trigger"],
        ["Or",["$state_a","$state_ab","$state_bb","$state_cb","$state_b","$state_c","$state_d"],"$trigger_o"]
    ],
    "Input":[
        ["Start/Stop","Startet/Beendet den Zyklus","$trigger","c"],
        ["Dauer1","1.Bewässerungsdauer min.","$period_a_i","c"],
        ["Dauer2","2.Bewässerungsdauer min.","$period_b_i","c"],
        ["Dauer3","3.Bewässerungsdauer min.","$period_c_i","c"],
        ["Dauer4","4.Bewässerungsdauer min.","$period_d_i","c"],
        ["Faktor","Faktor Dauer","$faktor_i","c"],
        ["Pause","Pause in s","$pause_x","c"],
        ["Freigabe","Freigabe der Bew.Logik","$freigabe","c"]
    ],
    "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"],
        ["Sequenz aktiv","Sequenz aktiv","$trigger_o","c"]
    ]
}
TW 3500L (#882) + TW 950Q (#321, im Moment inaktiv), VPN offen, Reboot nach Rücksprache

StefanW
Elaborated Networks
Reactions:
Beiträge: 9752
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4869 Mal
Danksagung erhalten: 7767 Mal
Kontaktdaten:

#20

Beitrag von StefanW »

Sehr gute Arbeit Danik!

Und ein schönes Beispiel, was man mit der Timberwolf Logik Engine und de Logik Editor vor allem in Verbindung mit den Custom Logiken anstellen kann!

Wunderbar

Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.
Antworten

Zurück zu „Logikengine & Logik-Editor“