NEU! ekey New Generation mit TWS als HTTP-Server konfigurieren
Komplette Anleitung hier im Forum


NEU! HTTP-/REST-API jetzt auch in der Rolle des TWS als HTTP-Server
Viele Details dazu hier im Forum

Upgrade: Digest Access Authentication im Subsystem HTTP-/REST-API Client
Upgrade: 361 neue Icons & kompletter Refresh aller Icons für VISU und Admin-UI
Upgrade: Dekodierung für sieben weitere DPT im Busmonitor
Upgrade: Verbesserung im Logik Manager bei Modul "SendExplicit"
Upgrade: Verbesserte und erweiterte Benutzerverwaltung bei "Passwort vergessen" der Elab ID

Jetzt in der Insider Version 8 zur 4.5 - für alle Mitglieder des Insider Clubs installierbar
Alle Infos zum Update im Timberwolf Wiki

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: 3909
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1279 Mal
Danksagung erhalten: 2221 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: 415
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 297 Mal
Danksagung erhalten: 278 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: 3909
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1279 Mal
Danksagung erhalten: 2221 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: 415
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 297 Mal
Danksagung erhalten: 278 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: 3909
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1279 Mal
Danksagung erhalten: 2221 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: 264
Registriert: Mo Sep 03, 2018 2:26 pm
Hat sich bedankt: 129 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: 415
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 297 Mal
Danksagung erhalten: 278 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: 3909
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1279 Mal
Danksagung erhalten: 2221 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: 415
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 297 Mal
Danksagung erhalten: 278 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
Elaborated Networks
Reactions:
Beiträge: 10826
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 5349 Mal
Danksagung erhalten: 8961 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“