NEWS
Blockly mit Bedingung und schedule
-
Hallo zusammen, ich habe mir da mal etwas kompliziertes für den Anfang ausgedacht
Ich möchte die Regenintensität alle 20 Sekunden (?) berechnen, aber nur wenn es regnet.
Hier mein Versuch, der nix macht
Mag sein, dass es am Trigger liegt, in einem anderen Fall habe ich nur auf Änderung getriggert und dann eine "Falls" Unterscheidung gemacht.
Das funktioniert, allerdings mit 0/1.
Gruß
Rainer
-
Wozu die Wiederholung?
Sollte er es solange machen wie es regnet?
Dan doch besser das Schedule laufen lassen und abfragen ob es Regent
–-----------------------
Send from mobile device
-
Nochmal drüber geschaut, Regen counter ändert sich doch nur wen es regnet was Abfrage des Regensensor überflüssig macht?
–-----------------------
Send from mobile device
-
ok, Regencounter als Trigger, dann muss ich aber auch noch die Zeit zwischen den zwei Messwerten in die Rechnung mit aufnehmen.
Das wollte ich mit dem Schedule vermeiden.
Aber im MOment triggert er gar nicht und jetzt hat es auch noch aufgehört zu regnen.
Gruß
Rainer
-
mein vorschlag (berechnung und richtigen interval noch selber rein machen) :
code:
<block xmlns="http://www.w3.org/1999/xhtml" type="on" id="CKVHK{C@;-WCdd|/6/jS" x="-287.49999999999955" y="162.00000000000034"><field name="OID">javascript.1.regensensor</field> <field name="CONDITION">ne</field> <statement name="STATEMENT"><block type="controls_if" id=";eqydYRi)hw(0c2hzYRr"><mutation else="1"></mutation> <value name="IF0"><block type="logic_compare" id="XRg@C4%R}Uvc(jtO@wFN"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="%^44gm#z2NU=||ID5JWZ"><field name="ATTR">val</field> <field name="OID">javascript.1.regensensor</field></block></value> <value name="B"><block type="logic_boolean" id="{wNK2KE/|taFhGJfaQhy"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="timeouts_setinterval" id=";2^a!UX9Z~wMC~7VmeIG"><field name="NAME">interval</field> <field name="INTERVAL">1000</field> <field name="UNIT">ms</field> <statement name="STATEMENT"><block type="debug" id="q5iLJ:;8@o)!Bk_2L?K("><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="Rdyal|hS7key|KSPuuE5"><field name="TEXT">Hier deine berechnung</field></shadow></value></block></statement></block></statement> <statement name="ELSE"><block type="timeouts_clearinterval" id="`ZX#7qTX-L=A;O*ETN,5"><field name="NAME">interval</field></block></statement></block></statement></block>
-
Der nächste Regen kommt bestimmt!Gruß
Rainer
-
Nachdem fast der ganze Regen an mir vorbeigegangen ist hat es jetzt endlich angefangen zu regnen.
mit diesem Blockly (ohne den letzte debug-Block):
kam im log nur "wurde getriggert"Als ob der Wert 1 nicht erreicht wurde.
jetzt habe ich noch einen debug-Block angehängt, der mir den Wert von regensensor_STATE (Number) ausgibt. und genau da hörte der Regen auf
Dort wird jetzt 0 ausgegeben.
-
dein regensensor gibt kein true oder false sondern 0 und 1 ?
glaube dan musst du den mate block mit einem text block tauschen
-
Der Funktioniert:
Und so sieht der DP aus:
Gruß
Rainer
-
Eh was funktioniert mit Mathe oder Text Block ?
Er kam doch mit dem Mathe Block immer in die oder Schleife?
–-----------------------
Send from mobile device
-
Diese Regenerkennungs-Blockly funktioniert mit dem gleichen Trigger und dem Wert von als Mathe Block (Ansagen und Lichtänderung ist korrekt ausgeführt)
Das Regenintensität-Blockly funktioniert anscheinend nicht mit der selben Trigger / falls Kombination
Der debug-Block "ist getriggert" wird noch ausgelöst, dann kommt nichts mehr :?:
Gruß
Rainer
-
Das Regenintensität-Blockly funktioniert anscheinend nicht mit der selben Trigger / falls Kombination `
meine glaskugel geht gerade nicht, wo ist dein Regenintensität-Blockly ?
-
meine glaskugel geht gerade nicht, wo ist dein Regenintensität-Blockly ? `
um das geht es eigentlich die Ganze Zeit:http://forum.iobroker.net/posting.php?m … 87#pr88873
Habe inzwischen ganz unten noch einen debug-Block drangehängt, der mir den Wert des regensensor States ausgibt.
javascript.0 2017-10-08 16:10:03.336 info script.js.Regenintensitaet: Check - fertig javascript.0 2017-10-08 16:10:03.336 info script.js.Regenintensitaet: Der Zustand vom Regensensor ist: 0
(Im Moment regnet es mal wieder nicht)
Gruß
Rainer
-
meine glaskugel geht gerade nicht, wo ist dein Regenintensität-Blockly ? `
um das geht es eigentlich die Ganze Zeit:http://forum.iobroker.net/posting.php?m … 87#pr88873
Habe inzwischen ganz unten noch einen debug-Block drangehängt, der mir den Wert des regensensor States ausgibt.
javascript.0 2017-10-08 16:10:03.336 info script.js.Regenintensitaet: Check - fertig javascript.0 2017-10-08 16:10:03.336 info script.js.Regenintensitaet: Der Zustand vom Regensensor ist: 0
(Im Moment regnet es mal wieder nicht)
Gruß
Rainer `
hast du meinen block als vorschlag mal probiert ? Also nicht wiederhohle sondern interval
-
Noch nicht!
Wollte es erst mit meiner Version testen. Ich denke der Fehler liegt woanders. Wenn du mir erklären kannst, warum in meiner Version der debug-block "es regnet" nicht ausgeführt wird wären ich schon ein Stück weiter.
Selbst wenn der wiederhole-Block nicht funktioniert hätte doch der debug-Block "es regnet" ausgegeben werden müssen, ODER?
Gruß
Rainer
-
Selbst wenn der wiederhole-Block nicht funktioniert hätte doch der debug-Block "es regnet" ausgegeben werden müssen, ODER? `
jup, verstehe ich auch nicht warum er fuer die ansagen geht aber nicht fuer den block mit berechnungen er ist ja gleich.
DUe koennste mal zum spass den wert in eine variable schreiben und dan die variable als debug block auslesen vielleicht war er doch was anderes als 1 zu de zeitpunkt?
-
Nachdem keiine Meldungen mehr im Blockly-log kamen und nach neustart des javascript-Adapters Error code7 already running kam, habe ich mir über die Konsole mit top die Prozesse angesehen.
Sobald ich den Block mit falls… unten angehängt hatte, damit er immer läuft stieg der Adapter mit 100% CPU aus.
Da muss ich erst mal nachdenken warum.
Deine Version scheint keine Probleme zu machen.
...waiting for rain again.
Rainer
-
Bei dem nächsten Regen lief die neue Version nahezu komplett.
nur nach dem Regen hörte sie nicht mehr auf mit dem "Auführen Intervall"
Ich hatte das "sonst - clear interval" vergessen :oops:
Warum der Wert in Liter / Minute immer auf 0 stand??
Ich logge jetzt die Werte mal.
insgesamt fielen 0,3mm Regen - nicht viel aber >0!
Warum meine Version den js-Adapter an die Kapazitätsgrenzen brachte habe ich noch nicht herausbekommen.
Danke für die Hilfe
Rainer
-
Warum meine Version den js-Adapter an die Kapazitätsgrenzen brachte habe ich noch nicht herausbekommen. `
Wenn Du den Javascript-Code (in Code-Tags) postest, kann Dir vielleicht geholfen werden. -
Hallo Paul,
ich hoffe ich habe ihn wieder vollständig rekonstruiert:
on({id: 'hm-rpc.0.KEQ1022589.1.STATE', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; console.log('ist getriggert'); if (getState("hm-rpc.0.KEQ1022589.1.STATE").val == 1) { console.log('es regnet'); while (!(getState("hm-rpc.0.KEQ1022589.1.STATE").val == 0)) { schedule("*/3 * * * *", function () { setState("Messwerte.0.Wetterdaten.Regenintensitaet"/*Regenintensitaet*/, ((getState("hm-rpc.0.JEQ0140901.1.RAIN_COUNTER").val - getState("Messwerte.0.Wetterdaten.Regenmenge_alt").val) / 3), true); setStateDelayed("Messwerte.0.Wetterdaten.Regenmenge_alt"/*Regenmenge_alt*/, getState("hm-rpc.0.JEQ0140901.1.RAIN_COUNTER").val, true, 200, false); console.log((String('Die Regenmenge der letzten drei Minuten betrug: ') + String(getState("hm-rpc.0.JEQ0140901.1.RAIN_COUNTER").val - getState("Messwerte.0.Wetterdaten.Regenmenge_alt").val))); }); } console.log('es regnet nicht mehr'); } console.log('es regnet nicht'); }); console.log('Check - fertig'); console.log((String('Der Zustand vom Regensensor ist: ') + String(getState("hm-rpc.0.KEQ1022589.1.STATE").val)));
(in Code-Tags) `
Das ist der code, den Blockly ausspuckt.
Gruß
Rainer