NEWS
Bewässerung - Ausführung/Verzögerung unterbrechen
-
Hi zusammen,
ich möchte zeitversetzt die Ventile meiner Bewässerungsanlage steuern. Hierzu habe ich relativ schnell folgendes Blockly Skript erstellt:
Idee:
Ich setze die Variable "Automatische Bewässerung" über pocketControl am Handy auf "wahr". Anschließend laufen die vier Zonen nacheinander mit dem jeweiligen Versatz durch und beregnen.Problem:
Habe ich die Variable auf "wahr" gesetzt, habe ich momentan keine Möglichkeit mehr, die Abarbeitung der Zonen zu stoppen.Ziel:
Idealerweise würde ich einfach die Variable "Automatische Bewässerung" wieder auf "falsch" setzen und die Ausführung würde stoppen. Ideal wäre es natürlich, wenn das Skript wieder dort starten würde, wenn ich die Variable z. B. innerhalb 60 Minuten wieder auf "wahr" stelle und wieder von vorne starten würde, wenn der Zeitraum größer 60 Minuten ist.Hat hier jemand eine schlaue Idee, wie man das hinbekommen könnte?
Danke schon einmal für eure Tipps!
Grüße!
-
Ich bin am gleichen Thema dran und klinke mich mal mit ein. Ich habe:
1 Schaltbare Steckdose an der Wasserpumpe
1 Sonoff 4CH pro
2 Hunter Ventile die an je einem Kanal des Sonoff 4CH angeschlossen sind
1 24v AC Netzteil welches ich mit einer schaltbaren Steckdose schalte (Ist noch nicht das optimale, es brummt daher möchte ich es lieber ausschalten wenn eh nicht bewässert wird) um 24v AC auf den Sonoff zu bekommenMein Skript:
Ich schalte einen Datenpunkt "Rasensprenger) der dann die Aktion auslöst. Durch die Verzögerungen läuft linke Rasenfläche 1 Minute denn wenn die rechte an geht, geht die linke (sonoffseitig) aus und nach 2 Minuten greift der Timeout und setzt den Datenpunkt "Rasensprenger" wieder auf False.
So kann ich den Datenpunkt künftig ja auch in Alexa integrieren.
Problem/Frage:
- Wenn die Sprenger dann einmal laufen laufen sie die entsprechende Zeit auch wenn der "Rasensprenger" false ist. Vermutlich das Timeout falsch gesezt; wo muss es hin?
- Zusätzlich möchte ich einen Zeitplan laufen lassen jedoch nur wenn "Rasensprenger" true und über yr Adapter zB Niederschlag unter 10mm (yr Adapter ist vorhanden) ist. So müsste der Zeitplan nicht greifen. Steht also eine Gartenparty an, ich den "Rasensprenger" vorher auf false setze dürfen die Sprenger natürlich nicht laufen.
Folgend mein Startskript.
Vielleicht hat ja jemand die selbe Anforderung, hat das umgesetzt und kann helfen.
Alternativ mein Skript womit ich dann nur den Datenpunkt true/false schalte, da reagieren die Geräte entsprechend sofort (falls das jemand so schon gebrauchen kann)
-
@Gerni sagte:
Vermutlich das Timeout falsch gesezt; wo muss es hin?
Prinzip:
Weshalb haben die Funktionen einen Übergabe-Parameter, wenn dieser nicht in der Funktion ausgewertet wird ?
-
@paul53 verstehe ich nicht. Was soll ich wo auswerten? Zeig mal die eigentliche Funktion. Ich sage da ja, dass innerhalb der Funktion wahr oder falsch sein soll.
Oder kann man das richtiger machen? -
@Gerni sagte:
Ich sage da ja, dass innerhalb der Funktion wahr oder falsch sein soll.
Ja eben, unabhängig vom übergebenen Parameter. Die Funktion braucht also keinen Parameter.
-
@paul53 Ach so und dann setze ich die Variable anstellen true/false auf der linken Seite. Probiere ich auch, setze auch den Timer anders. Und dann kann ich zudem auch manuell ein/aus schalten?
Kurze Frage; in Deinem Screenshot beim ersten "Falls" steht ein "roter Wert". Was ist das? Das Feld habe ich gefunden aber was sagt das aus bzw. was ist das für eine Funktion?
Und die Variable sagt ja "an/aus". Woher weiß das Gerät denn dann ob es an oder aus gehen soll? Auf der Linken Seite, also im Skript selbst wählt man ja auch die Variable "an/aus".
Und woher kommt denn das "Pumpe an Ventile auf".
Ansonsten hätte ich das jetzt so:
Sry für die vielen Fragen aber so einige Funktionen in Blockly kenne ich nicht bzw. finde sie auch nicht um das nachzubauen.
-
@Gerni sagte:
steht ein "roter Wert". Was ist das?
Das ist der Wert des Trigger-Datenpuktes (Blöcke "Trigger").
@Gerni sagte in Bewässerung - Ausführung/Verzögerung unterbrechen:
Ansonsten hätte ich das jetzt so:
Im mache-Zweig fehlt der Aufruf der oberen 3 Funktionen mit Übergabe von "wahr" an den Parameter "an/aus" der Funktionen, so wie Du es zuerst hattest. An die Funktion im sonst-Zweig muss der Wert "falsch" übergeben werden (wie ursprünglich).
@Gerni sagte in Bewässerung - Ausführung/Verzögerung unterbrechen:
Und woher kommt denn das "Pumpe an Ventile auf".
Das ist eine Zusammenfassung Deiner oberen 3 Funktionen in einer Funktion ohne Parameter.
-
@paul53 sagte in Bewässerung - Ausführung/Verzögerung unterbrechen:
Das ist der Wert des Trigger-Datenpuktes (Blöcke "Trigger").
Ok, nur verstehe ich nicht was "Falls Wert" bedeutet. Da muss doch noch eine Kennzahl bzw. ein State gefragt werden, oder? Oder ist es grad einfach zu warm und ich kann nicht denken?
Mache-Zweig: Also exakt so wie ich es vorher hatte? Bei Dir steht doch da "Pumpe an Ventile auf".
Und zum letzten Punkt; Du hast also (in meinem Bsp) eine 4. Funktion erstellt die die ersten 3 Funktionen beinhaltet jedoch ohne Parameter?
Logisch weiß ich zwar was das macht aber nicht wie ich das erstellen kann.
Wenn Du Zeit hast kannst Du das vielleicht mal nachstellen und Screenshoten?
-
@Gerni sagte:
Du hast also (in meinem Bsp) eine 4. Funktion erstellt die die ersten 3 Funktionen beinhaltet jedoch ohne Parameter?
Nicht ganz: 3 Funktionen zu einer zusammengefasst:
- steuere Wasserpumpe mit wahr
- steuere Ventile mit wahr 5 s verzögert
- steuere Linke Rasenfläche mit wahr 3 s verzögert
- steuere Rechte Rasenfläche mit wahr 1 min verzögert
@Gerni sagte in Bewässerung - Ausführung/Verzögerung unterbrechen:
Da muss doch noch eine Kennzahl bzw. ein State gefragt werden, oder?
Ja, es wird der Wert des Triggerdatenpunktes "Rasensprenger" abgefragt.
-
@paul53 Ich glaube ich habe es. Hier mal komplett, ist doch leichter zu verstehen hoffe ich.
Was jetzt noch fehlt damit es für mich perfekt wäre:
einen Zeitplan laufen lassen jedoch nur wenn "Rasensprenger" true und über yr Adapter zB Niederschlag unter 10mm (yr Adapter ist vorhanden) ist. So müsste der Zeitplan nicht greifen. Steht also eine Gartenparty an, ich den "Rasensprenger" vorher auf false setze dürfen die Sprenger natürlich nicht laufen. -
@Gerni sagte:
Hier mal komplett,
Die oberen 3 Funktionen können gelöscht werden, da sie nirgends verwendet (aufgerufen) werden.
Im sonst-Zweig false an den Parameter an/aus der Funktion übergeben !! -
@paul53 ok vielen Dank für Deine Unterstützung, habe ich verstanden. Auch, dass die oberen drei nicht verwendet werden weil ich die ja mit letzter Funktion zusammengefasst werden.
Sieht nun so aus.
Wenn ich nun einen Zeitplan davor setze, prüft der dann ob "Rasensprenger" an und ob Regen "<10", wenn "true" und "<10" dann durchlaufe Skript, wenn "false" lasse alles ausgeschaltet?
Dann hätte ich mein Ziel erreicht. Wäre das so logisch korrekt aufgebaut?
-
@Gerni sagte:
Wäre das so logisch korrekt aufgebaut?
Nein, keine Trigger (Falls Objekt) innerhalb von Triggern (Zeitplan) verwenden ! So wird jede Minute ein neuer Trigger erzeugt.
Vorschlag:
-
@paul53 Ah Trigger in Trigger muss ich mir merken. Habe ich nachgebaut, teste ich heute Abend bzw. Morgen und gebe Feedback.
-
Datenpunkt Rasensprenger steht auf true und Blockly hat funktioniert. Zeitplan läuft also.
Lediglich an manuelles anschalten ist jetzt nicht möglich weil das ja erst startet wenn Die Zeit erreicht ist.
Ansonsten schon mal top
-
Heute dann mal einfach gewartet; Skript läuft. Vielen Dank!
-
Ich hoffe ich darf mich hier mal anhängen. Bin ein völliger Neuling und mit Skripten auf Kriegsfuß
Ich hab ein Gardena Smart System.
1x Water Control am Gartenwasseranschluss
1x Smart Power Steckdose an einer Tauchpumpe in der Zisterne
1x den Bodenfeuchtigkeitssensor
An beiden "Pumpen" hängt ein 6xfach manueller Verteiler von Gardena (heisst ich lassen Kreislauf 1 20min laufen. Schließe das Ventil/bzw. Pumpe aus. Der Verteiler wechselt nach Druckabfall auf 2. Kreislauf und ich lass wieder laufen... wenn alles 20 läuft bin ich nach 2h mit dem Bewässern fertig (wahrscheinlich viel zuviel)Die nette Garden-App lässt eine Kopplung des Sensor nur mit dem Water Control am Wasserhahn zu.. ist der Boden feucht. Pumpt das Teil trotzdem Wasser.
Meine Idee bzw Vorgehen wäre:
Jeden Tag um 5:30 Uhr wird die Feuchtigkeit abgefragt.
Ist der Wert kleiner als 40% so soll beregnet werden.
Water Control an für 20min
Pause 60 Sekunden
Water Control an 20min
usw.
Parallel dazu soll die Steckdose der Pumpe an
Steckdose an 20min
Pause 60 Sekunden
Steckdose an 20 min
usw...
bis alle Kreisläufe abgeleistet wurden
Um 21 Uhr soll das Skript quasi nochmal laufen falls der Sommertag sehr heiß war.Ich habe die Objekte via Openhab in IOB übernommen, da ich keinen Gardena-Adapter gefunden hab.
In den Skripten habe ich nun ein neuen Ordner erstellt "Gardena" und dort ein Blockly-Skript begonnen "Water Control"
Trigger Zeitplan
schedule('{"time":{"start":"06:00","end":"06:20","mode":"minutes","interval":1},"period":{"days":1}}', function () { on({id: 'openhab.0.items.gardena_sensor__humidity_humidity', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("openhab.0.items.gardena_sensor__humidity_humidity").val < 40) { } }); }); true;
Falls Der Wert von Feuchtigkeit kleiner als 40..
mache... und dann?Ich bin grad am rätseln...
Danke
Gruß
Dreamsleeper