[V4.1.1] Benötige Hilfe für Custom Logik meiner Gartenbewässerung
Verfasst: Sa Mai 03, 2025 2:44 pm
Moin zusammen,
ich würde gerne meine Gartenbewässerung programmieren. Im ersten Schritt möchte zwei Sachen:
1. Pumpe manuellen starten und stoppen
2. Automatikmodus inkl. eines Timers, der die Pumpe nach Ablauf der Zeit stoppt. Zum Triggern des Bausteins wollte ich dann einen externen Tiggereingang nutzen, der einfach den Baustein um 4 Uhr antriggert. Wenn die Bedingungen Füllstand, Trockenheit und Automatikmodus beim triggern erfüllt sind, dann soll für die angegebene Zeit die Pumpe pumpen.
Leider funktioniert das ganze so noch nicht. Wenn ich es richtig verstanden habe, dann liegt das zum einen daran, weil jedes Betätigen der Eingänge ein Trigger ist (zumindest auf A und C, nicht bei U). Aber gerade beim manuellen Start/Stopp benötige ich das A bzw. C Flag. Zum anderen weil ich den Monoflop-Baustein noch nicht richtig verstanden habe. Ich habe ein tolles PDF gefunden, wo das Verhalten beschrieben ist, trotzdem habe ich noch nicht das gewünschte verhalten. Es wäre toll, wenn sich jmd mal meinen Code bzw. meinen Module-Teil anschauen könnte und mir einen Denkanstoß geben kann - vielleicht geht das auch ganz anders viel besser?!
Falls es wichtig ist: Automatikmodus und manueller Modus ist jeweils ein Taster, welcher per Umschaltung in der ETS programmiert ist.
Besten Danke!
Frank
ich würde gerne meine Gartenbewässerung programmieren. Im ersten Schritt möchte zwei Sachen:
1. Pumpe manuellen starten und stoppen
2. Automatikmodus inkl. eines Timers, der die Pumpe nach Ablauf der Zeit stoppt. Zum Triggern des Bausteins wollte ich dann einen externen Tiggereingang nutzen, der einfach den Baustein um 4 Uhr antriggert. Wenn die Bedingungen Füllstand, Trockenheit und Automatikmodus beim triggern erfüllt sind, dann soll für die angegebene Zeit die Pumpe pumpen.
Leider funktioniert das ganze so noch nicht. Wenn ich es richtig verstanden habe, dann liegt das zum einen daran, weil jedes Betätigen der Eingänge ein Trigger ist (zumindest auf A und C, nicht bei U). Aber gerade beim manuellen Start/Stopp benötige ich das A bzw. C Flag. Zum anderen weil ich den Monoflop-Baustein noch nicht richtig verstanden habe. Ich habe ein tolles PDF gefunden, wo das Verhalten beschrieben ist, trotzdem habe ich noch nicht das gewünschte verhalten. Es wäre toll, wenn sich jmd mal meinen Code bzw. meinen Module-Teil anschauen könnte und mir einen Denkanstoß geben kann - vielleicht geht das auch ganz anders viel besser?!
Falls es wichtig ist: Automatikmodus und manueller Modus ist jeweils ein Taster, welcher per Umschaltung in der ETS programmiert ist.
Besten Danke!
Frank
Code: Alles auswählen
/**
* New custom logic
*
*
*/
{
"_Meta": { // Optional
"Description": "",
"Version": "1.00"
},
"Input": [
["Manuell_Start_Stop", "Manuelle Pumpensteuerung", "$I_Manuell", "c"],
["Automatik_Ein", "Automatikbetrieb aktivieren", "$I_Automatik", "u"],
["Bewae_Dauer_min", "Bewässerungsdauer (Min)", "$I_BewaeDauer_min", "u"],
["Wasserstand_Ist", "Aktueller Wasserstand (0-10V)", "$I_Wasserstand", "u"],
["Wasserstand_Schwelle", "Schwellwert Wasserstand", "$I_Wasser_Schwelle", "u"],
["Bodentrockenheit_Ist", "Aktuelle Bodentrockenheit (0-3V)", "$I_Bodentrockenheit", "u"],
["Bodentrockenheit_Schwelle", "Schwellwert Bodentrockenheit", "$I_Trockenheit_Schwelle", "u"]
],
"Output": [
["Pumpe_Ein", "Pumpensteuerung", "$O_PumpeEin", "a"],
["Automatik_aktiv", "Status Automatikmodus", "$O_AutomatikAktiv", "a"],
["Status Automatik/Manuell", "Leuchten Auto, Blinken Manuell", "$O_Status", "a"],
["Err","Fehler","$Error?","ce"]
],
"Level": [
["$I_Manuell", "bool", false],
["$I_Automatik", "bool", false],
["$I_BewaeDauer_min", "float", 0.0],
["$I_Wasserstand", "float", 0.0],
["$I_Wasser_Schwelle", "float", 2.5],
["$I_Bodentrockenheit", "float", 0.0],
["$I_Trockenheit_Schwelle", "float", 1.0],
["$O_PumpeEin", "bool", false],
["$O_AutomatikAktiv", "bool", false],
["$O_Status", "bool", false],
["$Wasser_OK", "bool", false],
["$Feuchte_niO", "bool", false],
["$AutoStart", "bool", false],
["$BewDauer_s", "float", 0.0],
["$Umrechnungsfaktor_s_min", "float", 60.0],
[ "$Error?", "bool", false ],
["$Formula","string","X1*X2"],
["$Reset_Timer", "bool", false]
],
"Module": [
["Comparator", "$I_Wasserstand", "$Wasser_OK", "$I_Wasser_Schwelle"],
["Comparator", "$I_Bodentrockenheit", "$Feuchte_niO", "$I_Trockenheit_Schwelle"], // Je trockener der Boden, desto höher die Spannung, daher Ausgang Invertiert, damit Comperator genutz werden kann.
["And", ["$Wasser_OK", "$Feuchte_niO", "$I_Automatik"], "$AutoStart"], // Bedingungen für Automatikmodus
["CalcFormula",["$I_BewaeDauer_min","$Umrechnungsfaktor_s_min"], "$BewDauer_s", "$Formula"], // Umrechnen in Sekunden - Multiplikation der Eingänge
["And", ["$I_Manuell", "-$I_Automatik"], "$Reset_Timer"],
["Monoflop", "$AutoStart", "$Reset_Timer", "$O_AutomatikAktiv", "$BewDauer_s", 3],
["Or", ["$I_Manuell", "$O_AutomatikAktiv"], "$O_PumpeEin"]
]
}