NEWS
[gelöst]Zeitschaltung Bewässerung
-
Dein Script funktioniert.
Nur brauche ich ja dann noch ein hqwidget um ein- und auszuschalten, oder?
Also Zeit vorwählen, dann Kreis auswählen und dann starten?
Oder mache ich etwas verkehrt?
Hatte vorher 3 Scripte und drei Variablen. AnAus, AnAus2 und AnAus3.
Diese hatte ich dann, um die drei Scripte zu schalten, mit den Giesskannen verbunden.
-
Hallo,
du hast doch schöne Gieskannen.
Was sind denn die für ein widget.
Wenn on/off dann als objekt id die neu erstellten Datenpunkte nehmen.
Also: Gieskanne1 mit dem Datenpunkt "javascript.0.Kreis1" verknüpfen
usw.
Fazit:
Wenn Gieskanne1 gedrückt wurde (also on) dann ist der Datenpunkt "javascript.0.Kreis1" ja true oder 1
(das solltest du ja noch prüfen)
etc.
Und genau diese Datenpunkte "javascript.0.Kreis…." fragt das Script ja ab und öffnet die Ventile.
Meld dich wieder, wenn es nicht klappt.
mfg
-
Das habe ich schon probiert.
Wenn ich den Giesskannen bei "Objekt ID" und bei "in Arbeit Zustand ID" javascript.0.Kreis1, 2 oder 3 eintrage, ist der Wert dann 1 in Objekte.
Aber es wird weder das Ventil noch die Pumpe geschalten. Der Countdown läuft auch nicht an.
In deinem Script steht am Ende:
on({id: "javascript.0.AnAus", change: "ne", val: 1}, function() { // Bewaesserung ein weiter(); }); on({id: "javascript.0.AnAus", change: "ne", val: 0}, function() { // Bewaesserung aus weiter2(); });
Deswegen dachte ich, dass es über einen extra hqwidget zu starten ist.
Gruss
-
kannst du mir deine view mal per pn schicken.
view exportieren
mfg
-
Ich habe mir mal erlaubt, einzelne code-Teile für meine Bewässeungssteuerung zu "borgen".
Da Javascripte noch Neuland für mich sind, hätte ich mal eine Anfängerfrage.
Ich habe im Vis ein Widget mit ValueList, welches dem von mir angelegten Objekt (javascript.0.Bewässerung.Ventil1.LaufzeitVentil1) den Wert für die Öffnungszeit zuweist.
In meinem Fall (5; 10; 15; 20; 30; 45; 60; 90) bei OFF wird der Wert auf 0 gesetzt.
soweit so gut…
jetzt möchte ich genau dieses Object triggern. dazu hab ich mir folgenden Code geliehen:
on({id: "javascript.0.Bewässerung.Ventil1.LaufzeitVentil1.1.STATE", change: "ne", val: 1}, function() { // Ventil1 ein log("Ventil1 eingeschaltet"); weiter(); });
hier sollte ausgelöst werden wenn der val > 0 ist. val: >0 geht aber nicht
on({id: "javascript.0.Bewässerung.Ventil1.LaufzeitVentil1.1.STATE", change: "ne", val: 0}, function() { // Ventil1 aus log("Ventil1 ausgeschaltet"); weiter2(); });
hier sollte wieder ausgelöst werden wenn der Wert val = 0 ist. javascript.0.Bewässerung.Ventil1.LaufzeitVentil1.1.STATE wird entweder durch das countdown-scrpt oder manuell auf null gesetzt.
lässt sich das triggern überhaupt so bewerkstelligen oder müsste ich in diesem Fall mit IF und ELSE arbeiten. Also die Änderung von javascript.0.Bewässerung.Ventil1.LaufzeitVentil1.1.STATE triggern und dann den Wert auslesen und mit IF and ELSE weiter "verarbeiten"?
Gruß
Sveni_Lee
-
Schau dir mal das Skript von bahnuhr oben an.
Ich bin selber beileibe kein Könner, aber für mich sieht es so aus, als wenn du hier quasi zwei Dinge in eins vermuddeln willst.
Imho probierst du, eine Boolean mit einer dafür ungeeigneten Anfrage zu adressieren. Bool kann nur 0/1 false/true. Sprich sie kann mit ">0" nicht anfangen
Schalte via Trigger (0 / 1 bzw false / true) deinen Kreislauf ein und via setStateDelayed dann wieder von 1 bzw true auf 0 / false nach deiner definierten Zeit.
So wie es auch bahnuhr oben macht. Sein Skript ist gut kommentiert und sollte eigentlich einfach nachzuvollziehen sien.
-
so ich habe das ganze jetzt mal umgebaut so das die wählte Laufzeit geriggert wird. funktioniert soweit auch super.
könnt ihr mir sagen welches Widget hier zur Anzeige der Restlaufzeit verwendet wird (Kreis mit Zahl drin). Ich habe jetzt
hqwidgets-circle-Knob aber ich möchte ja daran nichts wählen sondern nur als Anzeige…
Gruß
Sveni_Lee
-
könnt ihr mir sagen welches Widget hier zur Anzeige der Restlaufzeit verwendet wird (Kreis mit Zahl drin). `
Hallo,
das ist das Widget number,knob CircleKnob.
Gruß
-
Hallo,
welches ist denn jetzt eigentlich das Objekt, dass ich über Skripte angelegt habe? Irgendwie sind bei mir zu viele Skripte drin, obwohl ich nur eines erstellt habe. Kann ich diese einfach löschen unter dem Ordner Javascript?
Gruß
-
Also meine Seite sieht jetzt so aus.
Das ist das Widget für die Restlaufzeit:
[{"tpl":"tplHqCircle","data":{"visibility-cond":">","visibility-val":"0","oid":"javascript.0.Countdown.countdown","min":"0","max":"{javascript.0.Countdown.countdown}","step":"1","displayPrevious":true,"readOnly":true,"unit":"","visibility-oid":"","name":"Countdown","caption":"Restzeit min.","hideNumber":false,"color":"#ffffff","thickness":"0.15","cursor":"","bgcolor":"#f00f36","linecap":true,"anticlockwise":false,"oid-working":"javascript.0.Countdown.countdown","oid-signal":"","angleArc":"360","angleOffset":"0","comment":"","digits":"0","is_comma":"true","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide","gestures-offsetY":"-6","descriptionLeft":"countdown"},"style":{"left":"963px","top":"117px","width":"200px","height":"200px","z-index":"77","text-align":"center","color":"#e7f5f9","font-family":"","font-style":"","font-weight":"","font-size":"","background-color":"rgba(0,140,200,1)","border-radius":"490px"},"widgetSet":"hqwidgets"}]
Das Script für die Zeitvorwahl:
// Countdown Brunnen // http://forum.iobroker.net/viewtopic.php?f=21&t=5067 var count,timer; function countdown(){ count--; if(count > 0) setState('javascript.0.Countdown.countdown', count); else { setState('javascript.0.Countdown.countTrigger', false ); } } on({id: "javascript.0.Countdown.countTrigger", change: "ne"}, function(obj){ if(obj.state.val) { count = getState('javascript.0.Countdown.Zeitvorgabe').val; // in Minuten setState('javascript.0.Countdown.countdown', count); timer = setInterval(countdown, 60000); // 1000 = 1 Sek. ; 60000 = 60 Sek. } else { clearInterval(timer); setState('javascript.0.Countdown.countdown', 0 ); } });
Das Widget dazu:
[{"tpl":"tplJquiRadioList","data":{"oid":"javascript.0.Countdown.Zeitvorgabe","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":true,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","values":"0;10;15;30;45;60;120","texts":"0;10;15;30;45;60;120","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false},"style":{"left":"611px","top":"345px","width":"385px","height":"40px","background":"","background-color":""},"widgetSet":"jqui"}]
Das Widget für z.Bsp. Kreis1:
[{"tpl":"tplHqButton","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"oid":"javascript.0.AnAus","min":"0","max":"1","iconName":"/icons-icons8/objects/white/Watering Can.png","btIconWidth":"97","offsetAuto":"true","leftOffset":"15","topOffset":"55","timeAsInterval":false,"infoLeftFontSize":"20","infoFontRightSize":"12","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"oid-working":"javascript.0.AnAus","oid-battery":"","iconOn":"/icons-icons8/objects/white/Watering Can Filled.png","styleActive":"hq-button-green-active","styleNormal":"hq-button-red-active","usejQueryStyle":false,"descriptionLeft":"Kreis1","infoColor":"white","visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","infoLeftPaddingLeft":"15","infoLeftPaddingRight":"50","infoRightPaddingRight":"15","infoBackground":"red"},"style":{"left":"676px","top":"429px","width":"107px","height":"108px"},"widgetSet":"hqwidgets"}]
Das Script für Kreis1:
// Pumpe: Ausschalten nach x Minuten // http://forum.iobroker.net/viewtopic.php?f=21&t=5067 function weiter() { var Zeitvorgabe = getState('javascript.0.Countdown.Zeitvorgabe').val ; // Zeit auswählen //############################################################# // Bewässerung zunächst ausschalten beim erstmaligen Skriptstart // um im Falle eines Reboots den zuvor laufenden Bewässerungstimer auszuschalten (Not-Aus), // da er nach Reboot den zuvor gesetzten Ausschalttrigger nicht mehr ausführen kann setState("hm-rpc.0.NEQ1316670.1.STATE", false); setState("hm-rpc.0.NEQ1316670.4.STATE", false); //############################################################# log (Zeitvorgabe); if (Zeitvorgabe === 0 || Zeitvorgabe === isNaN) Zeitvorgabe = 30; setStateDelayed("hm-rpc.0.NEQ1316670.1.STATE", true); // Kreis 1 Ventil einschalten setStateDelayed("hm-rpc.0.NEQ1316670.4.STATE", true, 1000); // nach 1 Sek. Pumpe ein setState("hm-rpc.0.NEQ1316670.1.ON_TIME", Zeitvorgabe); // OnTime setzen // Countdown starten für Anzeige der Zeit auf View setState('javascript.0.Countdown.countTrigger', true); // Countdown Brunnen starten setStateDelayed("javascript.0.AnAus", 0, (Zeitvorgabe*60*1000)); // nach x Min. ausschalten -> Pumpe setStateDelayed("hm-rpc.0.NEQ1316670.2.STATE", false); // Ventil 2 auf false setzen setStateDelayed("hm-rpc.0.NEQ1316670.3.STATE", false); // Ventil 3 auf false setzen //sendTo('telegram', "Brunnen eingeschaltet. \nNach " + (Zeitvorgabe*60*1000) + " Minuten wird er wieder automatisch ausgeschaltet."); //log ("Brunnen eingeschaltet. Nach " + (Zeitvorgabe*60*1000) + " Minuten wird er wieder automatisch ausgeschaltet."); } function weiter2() { setState("hm-rpc.0.NEQ1316670.1.STATE", false); // Brunnen Ventil aus setState("hm-rpc.0.NEQ1316670.4.STATE", false); // Brunnen Pumpe aus //sendTo('telegram', "Brunnen ausgeschaltet."); //log ("Brunnen ausgeschaltet."); setState('javascript.0.Countdown.countTrigger', false); // Countdown Pumpe aus setState('javascript.0.Countdown.Zeitvorgabe', 0); // Zeitvorwahl auf Null setzen setState('javascript.0.Countdown.countdown', 0); // Countdown auf Null setzen setState("hm-rpc.0.NEQ1316670.1.ON_TIME", 0); // OnTime auf Null } on({id: "javascript.0.AnAus", change: "ne", val: 1}, function() { // Bewaesserung Kreis1 einschalten //log("Auslöser Schalter - Cux: Brunnen ein"); weiter(); event("Gartenpumpe Kreis1 läuft"); // in eventlist schreiben // Sprachausgabe nachricht = 'Kreis eins ist eingeschalten ' setState("sayit.2.tts.text"/*Text to speech*/, nachricht); // Sprachausgabe Kreis 1 ein }); on({id: "javascript.0.AnAus", change: "ne", val: 0}, function() { // Bewaesserung Kreis1 ausschalten weiter2(); event("Gartenpumpe Kreis1 aus"); // Sprachausgabe nachricht = 'Kreis eins ist ausgeschalten ' setState("sayit.2.tts.text"/*Text to speech*/, nachricht); // Sprachausgabe Kreis 1 aus });
Dazu unter Objekte/Javascript.0 eine Variable anlegen:
Das Widget für Kreis 1 muss dann auf javascript.0.AnAus verweisen.
Gruss