NEWS
"einfaches" Blockly-Script zur Bewässeungssteuerung
-
Ich denke ich sollte das Wort einfach aus meinem Wortschatz und dem Betreff hier streichen.
Um so mehr ich darüber nachdenke, um so größer werden meine Anforderungen und Vorstellungen.
Da man bei einer reinen Zeitsteuerung nicht von Automatik sprechen kann nenne ich das jetzt mal Semi-Automatik.
meine jetzigen Überlegungen:
<u>Semi-Automatik:</u>
-
zwei Kreisläufe nacheinander steuern
-
zu einer bestimmten Zeit (a) einschlten
-
für eine bestimmte dauer (b) laufen
-
a & b in Vis definierbar
-
Zeitpunkt der Einschaltung protokolieren und einem Objekt zuweisen
-
Dauer der Einschaltung protokolieren und einem Objekt zuweisen (ggf. aufrechnen)
-
Restlaufzeit anzeigen und einem Objekt zuweisen (counter)
-
möglichkeit der Unterbrechung
-
Zeitpunkt der nächsten geplanten Einschaltung einem Objekt zuweisen
<u>manuelle Schaltung:</u>
-
Einschalten mit auswahl Dauer bzw. nur ON (ähnlich Rollladenschalter)
-
Zeitpunkt der Einschaltung protokollieren
-
Dauer der Einschaltung protokollieren und einem Objekt zuweisen (ggf. aufrechnen)
-
Restlaufzeit anzeigen und einem Objekt zuweisen (counter)
-
möglichkeit der Unterbrechung
ist das, wenn auch mit viel Aufwand, umsetzbar?
Gruß
Sveni_Lee
-
-
Ich denke ich sollte das Wort einfach aus meinem Wortschatz und dem Betreff hier streichen.
`
Ja, das ist schon ein Projekt!Aber machbar.
Je nachdem was Du mit den ganzen Protokollierungen willst, würde ich mir mal "History" u.ä. anschauen.
Man muss das Rad ja nicht 2x erfinden.
Mach doch einfach einen neuen Thread auf "[Projekt] Blockly - Bewässerungssteuerung"
Das könnte auch andere Interessieren. Und Hilfe wird bestimmt kommen.
Grüße
-
War ja nur gut gemeint mit der docu [emoji6]
Ich habe die Karte in trello Mal zurück auf testen geholt.
Damit halt doch weiter testen, was geht wohl/nicht eventuell doch fix.
Danach die Frage ob das in die docu gehört oder einer how to.
Wie erstelle ich mir timer mit Zeit als Variable | wie setze ich die Variable (state/object) | besser practises wie Funktion umrechnen ms > sec > mm und Wiedergabe in mm:ss zb
Wäre ne coole how to und Beispiel!
~Dutch
–-----------------------
Send from mobile device
-
Mach doch einfach einen neuen Thread auf "[Projekt] Blockly - Bewässerungssteuerung"
Das könnte auch andere Interessieren. Und Hilfe wird bestimmt kommen.
Grüße `
werde ich dann auch machen…
eine Kurze Frage noch. Als Widget müsste ich ja eines mit Diqalog mehmen damit ich eine Auswahl treffen kann. Das hatte ich gerstern Abend auch probiert. ging auch ich hatte den Bereich 0-60 eingestellt und min als Einheit. Bei 25% wurden dann 15min angezeigt, passt also. Kann ich irgendwo Ändern, das nicht 25% sondern direkt 15min angezeigt werden?
Habe ich das richtig verstanden, Ich muß einen Objekt anlegen, dass Widget verweist dann auf das Objekt und es wird der Wert x gesetzt. Aber wie kann ich dann gleichzitig das script starten und wie müsste ich das Script anfangen... Ich habe irgendwie keinen passenden "ersten Baustein gefunden"...
-
eine Kurze Frage noch. Als Widget müsste ich ja eines mit Diqalog mehmen damit ich eine Auswahl treffen kann. Das hatte ich gerstern Abend auch probiert. ging auch ich hatte den Bereich 0-60 eingestellt und min als Einheit. Bei 25% wurden dann 15min angezeigt, passt also. Kann ich irgendwo Ändern, das nicht 25% sondern direkt 15min angezeigt werden? `
Der Widget Name wäre hilfreich.Das "jqui Select ValueList" ist recht flexibel.
Feld Werte: 10;20;30…...
Feld Texte: 10 Min;20 Min;30 Min........
Habe ich das richtig verstanden, Ich muß einen Objekt anlegen, dass Widget verweist dann auf das Objekt und es wird der Wert x gesetzt. Aber wie kann ich dann gleichzitig das script starten und wie müsste ich das Script anfangen… Ich habe irgendwie keinen passenden "ersten Baustein gefunden"... `
Bei Deinem Beispiel leuchtet mir nicht ganz ein, warum Du auf die Änderung Deiner "Zeit-Variablen" reagieren möchtest.Wenn Du das tun möchtest dann: "Falls Objekt <objekt id/deiner/variablen="">wurde geändert"…....
Ich habe es hier im Forum schon häufiger erklärt.
Aber nochmal in Kürze.
Blocklys/Scripte reagieren/starten in der Regen auf Ereignisse (Trigger).
WICHTIG!
Reagiert ein Trigger auf seine Bedingung, werden die Befehle INNERHALB des Triggers EINMAL von oben nach unten abgeabeitet.
Danach wartet der Trigger wieder auf seine Bedingung.
Grüße</objekt>
-
Der Widget Name wäre hilfreich.
Das "jqui Select ValueList" ist recht flexibel.
Feld Werte: 10;20;30…...
Feld Texte: 10 Min;20 Min;30 Min........ `
hab ich grad leider nicht zur Hand aber werde ich mir später ansehen, welcher das ist/war
Bei Deinem Beispiel leuchtet mir nicht ganz ein, warum Du auf die Änderung Deiner "Zeit-Variablen" reagieren möchtest.
Wenn Du das tun möchtest dann: "Falls Objekt <objekt id/deiner/variablen="">wurde geändert"…....</objekt> `
möchte ich ja im Grunde gar nicht…
mit dem Widget wird das Script aufgerufen und die Zeitvariable übergeben...
hatte ich mich falsch ausgedrückt.
Ich habe es hier im Forum schon häufiger erklärt.
Aber nochmal in Kürze.
Blocklys/Scripte reagieren/starten in der Regen auf Ereignisse (Trigger).
WICHTIG!
Reagiert ein Trigger auf seine Bedingung, werden die Befehle INNERHALB des Triggers EINMAL von oben nach unten abgeabeitet.
Danach wartet der Trigger wieder auf seine Bedingung. `
also:
Wert meiner <objekt id/actor="">auf WAHR setzen
–-> Ausführen Timeout <zeit variable/aus/widget="">---> Wert meiner <objekt id/actor="">auf FALSE setzen
habe ich das so jetzt richtig verstanden...
Gruß
Sveni_Lee</objekt></zeit></objekt>
-
möchte ich ja im Grunde gar nicht…
mit dem Widget wird das Script aufgerufen und die Zeitvariable übergeben... `
Mit dem Widget musst Du kein Script aufrufen.Das Widget ändert den Inhalt Variable direkt.
Wenn Du über ein Widget eine Lampe ein/aus schaltest, machst Du das ja auch nicht über ein Script.
also:
Wert meiner <objekt id/actor="">auf WAHR setzen
–-> Ausführen Timeout <zeit variable/aus/widget="">---> Wert meiner <objekt id/actor="">auf FALSE setzen
habe ich das so jetzt richtig verstanden...</objekt></zeit></objekt> `
Fast.Es gibt keine direkte Verbindung von Blockly zu VIS/Widget.
Du legst ja eine ioBroker Objekt/Variable an.
Widget -> ändert Zeit Variable
Blockly arbeitet mit "Wert von Objekt ID Zeit Variable".
Wert meiner <objekt id/actor="">auf WAHR setzen
–-> Ausführen Timeout <zeit variable="">---> Wert meiner <objekt id/actor="">auf FALSE setzen
So sieht es richtiger aus.
Grüße</objekt></zeit></objekt>
-
so, ich habe gerstern abend noch mal ein bischen gespielt aber irgendwie komme ich nicht weiter…
Ich verwende folgendes widget: jqui-mfd - Custom10 + jqui Dialog.
hier habe ich max auf 60 und min auf 0 gesetzt. als Winheit habe ich dann "min" eingegeben.
im jqui wird das auch korrekt angezeigt also 25% - 15min.
soweit so gut...
Ich habe mir mal einen sehr einfachen Ablaufplan erstellt.
Das sollte beim Einschalten/Betätigen des Widgets passieren...
wenn das steht müsste noch die mit übergebene Variable der dauer eingebaut werden...
2712_bew_sserungsablauf.jpg -
so, ich habe gerstern abend noch mal ein bischen gespielt aber irgendwie komme ich nicht weiter…
Ich verwende folgendes widget: jqui-mfd - Custom10 + jqui Dialog.
hier habe ich max auf 60 und min auf 0 gesetzt. als Winheit habe ich dann "min" eingegeben.
im jqui wird das auch korrekt angezeigt also 25% - 15min.
soweit so gut...
Ich habe mir mal einen sehr einfachen Ablaufplan erstellt.
Das sollte beim Einschalten/Betätigen des Widgets passieren...
wenn das steht müsste noch die mit übergebene Variable der dauer eingebaut werden... `
Piste mal dein skript (een blockly bitten eine export) und widget
~Dutch
–-----------------------
Send from mobile device
-
Ja genau da liegt ja mein Problem.
Ein Skript beginnt ja immer mit einem Trigger… Bei einem Zeitgesteuerten Ablauf ist das einfach.
Aber auf was müsste ich den Trigger in diesem Fall setzen und welches Objekt gebe ich denn im
Widget an?
Gruß
Sveni_lee
-
Sollen die beiden Pumpen nie gleichzeitig laufen?
-
Nein, es dürfen nicht beide Ventile gleichzeitig geöffnet sein…
-
Nein, es dürfen nicht beide Ventile gleichzeitig geöffnet sein… `
OK, dann habe ich Deinen Ablaufplan (fast) verstanden.Sollen die denn über einen bestimmten Tagesabschnitt, z.B. 05:45 bis 17:00 Uhr, im Wechsel für eine Laufzeit von x Minuten laufen?
Oder soll einmalig um 05:45 Pumpe-1 x-Minuten laufen und danach Pumpe-2 y-Minuten und dann Bewässerung Ende?
-
OK, dann habe ich Deinen Ablaufplan (fast) verstanden.
Sollen die denn über einen bestimmten Tagesabschnitt, z.B. 05:45 bis 17:00 Uhr, im Wechsel für eine Laufzeit von x Minuten laufen?
Oder soll einmalig um 05:45 Pumpe-1 x-Minuten laufen und danach Pumpe-2 y-Minuten und dann Bewässerung Ende? `
Das soll später mal kommen als Semi-Automatik…
in diesem Fall geht es um das "simple" Einschalten für x-Minuten und das nach meinem Ablaufplan...
darum müsste ich ja irgendwie das "widget" Triggern bzw ein eigens dafür angelegtes Objekt.
-
in diesem Fall geht es um das "simple" Einschalten für x-Minuten und das nach meinem Ablaufplan…
darum müsste ich ja irgendwie das "widget" Triggern bzw ein eigens dafür angelegtes Objekt. `
Also willst Du die Bewässerung manuell über VIS einschalten.
Dann brauchst Du eine boolsche Variable "Bewaesserung" Wahr = Ein / unwahr = Aus.
(Da gibt es etliche Widgets die eine Variable wahr/unwahr schalten)
Diese Variable musst Du dann triggern.
Falls Objekt ID <bewaesserung>gleich wahr
Damit würde Dein Ablauf gestartet, sobald Du über VIS diese Var auf wahr setzt.
Am Ende des Scripts: "steuere Wert von <bewaesserung>= unwahr"
Dann kannst Du auch in VIS sehen ob die Bewässerung aktiv ist oder nicht.
Noch eine Frage. Nach dem Starten sollen BEIDE Pumpen x-Minuten laufen, aber NICHT zusammen.
Und je Pumpe gibt es unterschiedliche Laufzeiten.</bewaesserung></bewaesserung>
-
Also willst Du die Bewässerung manuell über VIS einschalten.
Dann brauchst Du eine boolsche Variable "Bewaesserung" Wahr = Ein / unwahr = Aus.
(Da gibt es etliche Widgets die eine Variable wahr/unwahr schalten)
Diese Variable musst Du dann triggern.
Falls Objekt ID <bewaesserung>gleich wahr</bewaesserung> `
eigendlich schon Aber… Ich würde gern wie bei einem Rolladen Widget festlegen wie Lange die Bewässerung laufen soll (max 60min)...Ich hatte gester etwas gespielt und es wurde ja auch der 0 - 100 in die Variable übergeben aber eben noch nicht false und true...
Noch eine Frage. Nach dem Starten sollen BEIDE Pumpen x-Minuten laufen, aber NICHT zusammen.
Und je Pumpe gibt es unterschiedliche Laufzeiten. `
Eigendlich ist es nur eine Pumpe und zwei Ventile und Ja es dürfen nicht beide Ventile gleichzeitig geöffnet sein. Für die Semi-Automatic später sollen beide nacheinder für unterschiedliche Zeiten angesteuert werden. -
eigendlich schon Aber… Ich würde gern wie bei einem Rolladen Widget festlegen wie Lange die Bewässerung laufen soll (max 60min)...
Ich hatte gester etwas gespielt und es wurde ja auch der 0 - 100 in die Variable übergeben aber eben noch nicht false und true... `
Wir sind noch nicht auf dem gleichen Nenner.Zeiten für "x-Minuten" -> Dein (warum auch immer) Rolladen Widget. -> OK?
True/false kann dieses Widget NICHT.
Hast Du nur dieses eine Widget?
Und Du beantwortest meine Fragen nicht.
1. Sollen beide Ventile über EIN Script, nacheinander x-Minuten geöffnet werden?
2. Willst Du jedes Ventil einzeln für x-Minuten öffnen?
a) Wie soll Dein Script(e) gestartet werden?
aa) Bei einer bestimmten ZEIT?
ab) Wenn Du den Wert einer Laufzeit (x-Minuten) ÄNDERST?
ac) Wenn Du einen "Schalter" (Variable) auf WAHR SETZT?
Für die Semi-Automatic später sollen beide nacheinder für unterschiedliche Zeiten angesteuert werden. `
Lass mal das "später" weg. Das wäre nur doppelte Arbeit.Zuerst muss ich verstehen was Du möchtest.
Mach bitte keinen Ablaufplan, fasse es in Worte.
-
Wir sind noch nicht auf dem gleichen Nenner.
Zeiten für "x-Minuten" -> Dein (warum auch immer) Rolladen Widget. -> OK?
True/false kann dieses Widget NICHT.
Hast Du nur dieses eine Widget? `
ich bin nicht fixiert auf ein bestimmtes Widget. Ich hab's mit dem " jqui-mfd - Custom10 + jqui Dialog" versucht. Ich denke das es true/false kann nur weiß ich nicht wie…Und Du beantwortest meine Fragen nicht.
1. Sollen beide Ventile über EIN Script, nacheinander x-Minuten geöffnet werden?
2. Willst Du jedes Ventil einzeln für x-Minuten öffnen?
a) Wie soll Dein Script(e) gestartet werden?
aa) Bei einer bestimmten ZEIT?
ab) Wenn Du den Wert einer Laufzeit (x-Minuten) ÄNDERST?
ac) Wenn Du einen "Schalter" (Variable) auf WAHR SETZT? `
1.) nein getrennt von einander
2.) ja
a) jedes über ein eigenes Widget + plus eine Zeitsteuerung (Semi-Automatik)
aa) Venite einzeln - NEIN, Semi-Automatik - JA
ab)die beiden einzel Steuerungen - JA
ac) JA
Lass mal das "später" weg. Das wäre nur doppelte Arbeit.
Zuerst muss ich verstehen was Du möchtest.
Mach bitte keinen Ablaufplan, fasse es in Worte. `
okay okay… keine Pläne mehr.
Über ein Widget in der VIS möchte ich gern die dauer der Bewässerung für jedes Ventil einzeln steuern können. Also per knopfdruck für die ausgewähle Zeit starten. Das geht aber nur wenn das andere Ventil geschlossen ist. ansonsten muß die Ausführung hinten angestellt werden.
Des weiteren soll der Zeitpunkt der der Ausführung erfasst werden genauso wie die Dauer, die Dauer soll pro Tag aufaddiert werden. So das man sieht wie lange gesamt Bewässert wurde, daraus lässt ableiten wieviel Wasser aufgebracht wurde...
Zusätzlich möchte ich dann im VIS eine Semi Automatic erstellen können. Also für beide Ventile getrenn von einander die Startzeiten festlegen und auch täglich, jden zweiten Tag usw... Die Dauer sollte auch für beide wieder getrennt regelbar sein. Und natürlich auch wieder die Daten für die Historie liefern...
Ich hoffe so kommen wir langsam auf einen Nenner...
-
Über ein Widget in der VIS möchte ich gern die dauer der Bewässerung für jedes Ventil einzeln steuern können. Also per knopfdruck für die ausgewähle Zeit starten. Das geht aber nur wenn das andere Ventil geschlossen ist. ansonsten muß die Ausführung hinten angestellt werden. `
Sollte gehen.
@sveni_lee:Des weiteren soll der Zeitpunkt der der Ausführung erfasst werden genauso wie die Dauer, die Dauer soll pro Tag aufaddiert werden. So das man sieht wie lange gesamt Bewässert wurde, daraus lässt ableiten wieviel Wasser aufgebracht wurde… `
Da sind die Möglichkeiten von Blockly derzeit noch etwas begrenzt (oder auch meine :roll: )Aber das würde ich sowieso in ein ganz separates Script packen und kann ganz zum Schluss gebaut werden.
@sveni_lee:Zusätzlich möchte ich dann im VIS eine Semi Automatic erstellen können. Also für beide Ventile getrenn von einander die Startzeiten festlegen… `
Das sollte gehen.
@sveni_lee:…und auch täglich, jden zweiten Tag usw... `
Das ist wieder sehr tricky und umfangreich. Würde ich erstmal weglassen. Du sollst ja hinterher auch noch was zu basten haben
@sveni_lee:Ich hoffe so kommen wir langsam auf einen Nenner…
`
Glaube schonIch überlege mir mal wie wir da am besten anfangen.
Grüße
-
sooo…
ich habe mal ein wenig gespielt und doch tatsächlich ein laufendes Skript hinbekommen.
istzwar noch sehr rudimentär aber läuft...
2712_5.jpg