NEWS
Blocky Hilfe bitte
-
Moinsens,
hier mal ein Bild, wie das aussehen könnte.
Die Objekt-IDs müßtest Du dann noch anpassen.Zu beachten ist auch, daß wenn sich der Wert unterhalb von 35 verringert
(etwa von 30 auf 29), daß dann auch die Lampe angeschaltet wird.
Daher müßte man vorher evtl. noch den alten Wert abfragen, ob der über 35 war.
Dafür kann ich auf die Schneller aber nur ein Skript liefern:
on({id: "ID des Sensors", change: "lt"}, function (obj) { if (obj.state.val < 35 && obj.oldState.val >= 35) { // anschalten setState("ID der Steckdose", true); } });
Damit sich die Steckdose nach Überschreiten der 35 wieder ausschaltet,
müßte auch noch was gemacht werden, wie in nachfolge Skript beschrieben.
on({id: "ID des Sensors", change: "ne"}, function (obj) { if (obj.state.val < 35 && obj.oldState.val >= 35) { // anschalten setState("ID der Steckdose", true); } else if (obj.state.val > 35 && obj.oldState.val < 35) { // ausschalten setState("ID der Steckdose", false); } });
Hier würde bei jeder Änderung getriggert.
Wenn Sensoir unter 35 fällt, dann anschalten,
wenn er steigt und über 35 ist, dann aus.
Kann dann aber dazu führen, daß die Steckdose regelmäßig an/aus
geht, wenn der Wert um die 35 schwankt.
Daher die zweite Abfrage auf einen etwas höheren Wert setzen (z.B. 38).
Dann schaltet die Steckdose an, wenn sie unter 35 fällt und
wird erst ausgeschaltet, wenn sie wieder einmal über 38 war.
Für die Werte zwischen 35 und 38 bleibt die Steckdose an oder aus,
je nachdem ob der Wert fallend oder steigend ist.
-
Das klingt großartig!
Danke, werde ich schnellstens testen.
-
Wahrscheinlich super einfach….aber wie füge ich ein Script in Blockly ein?
-
Luftfeuchtigkeit kleiner/gleich 35% ausgibt dann soll sich mein Luftbefeuchter, über Osram Wifi Stecker (über Hue kontrolliert) einschalten. Größer/gleich 45%: ausschalten. `
@Robbsy:aber wie füge ich ein Script in Blockly ein? `
Es geht auch in Blockly.
Hier der Export, in den noch die richtigen IDs eingefügt werden müssen.! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="xY1ZWm,+2EJohhee~qTo" x="-587" y="-337"><field name="COMMENT">ID Luftfeuchte</field>
<next><block type="on" id="R.tnni:[OVG-`,!SO?^-"><field name="OID">Object ID</field>
<field name="CONDITION">ne</field><statement name="STATEMENT"><block type="controls_if" id="!ukq.(e%x7[?v)C^c9Pu"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_operation" id="TIi{f6Wr8tytMG3Q*JV8"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="0=RYe[Fo!p6y1~J)aoQC"><field name="OP">LTE</field> <value name="A"><block type="variables_get" id="m/=bZA+/.5^(XwoacL:P"><field name="VAR">value</field></block></value> <value name="B"><block type="math_number" id="8[JVTbY@[n{][Ty]_%MA"><field name="NUM">35</field></block></value></block></value> <value name="B"><block type="logic_compare" id="Vmz#QOLpDvFzP6y4t-?^"><field name="OP">GT</field> <value name="A"><block type="variables_get" id="`odN@@jN0UiUA.(oyLP|"><field name="VAR">oldValue</field></block></value> <value name="B"><block type="math_number" id="zS!,z,`CaQE^1Bxbm4t6"><field name="NUM">35</field></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="Ax-F333s_8JL6V*fQg0@"><mutation delay_input="false"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="xZ)z|lBDDq,f9FM,gy1|"><field name="BOOL">TRUE</field></block></value></block></statement> <value name="IF1"><block type="logic_operation" id="P|jrKgJzROk+5dTEA[a]"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="XF1;wR%nXLmtmA+NQ;`("><field name="OP">GTE</field> <value name="A"><block type="variables_get" id="Vq4sHfUSzn9Jxo/m@:Fj"><field name="VAR">value</field></block></value> <value name="B"><block type="math_number" id="sZ-=`;4(FiWDP~IvO-LW"><field name="NUM">45</field></block></value></block></value> <value name="B"><block type="logic_compare" id="]u,f02:zDVVaHL6h%a:v"><field name="OP">LT</field> <value name="A"><block type="variables_get" id="COXr;XMvjdFm3g%~e{]V"><field name="VAR">oldValue</field></block></value> <value name="B"><block type="math_number" id="5:{5pwD4+DYA4Hp_{%LQ"><field name="NUM">45</field></block></value></block></value></block></value> <statement name="DO1"><block type="control" id="/Jctsap|B6DF~z!/,7z,"><mutation delay_input="false"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="~KF,Az?ML1HN6o[CT[Rj"><field name="BOOL">FALSE</field></block></value></block></statement></block></statement></block></next></block>
<block type="comment" id="zZloThnMeSu;p5jOW#Ec" x="-437" y="-37"><field name="COMMENT">ID Befeuchter</field></block></xml>
-
Blockly Befeuchter.JPG
Hier der Export, in den noch die richtigen IDs eingefügt werden müssen.
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="xY1ZWm,+2EJohhee~qTo" x="-587" y="-337"><field name="COMMENT">ID Luftfeuchte</field>
<next><block type="on" id="R.tnni:[OVG-`,!SO?^-"><field name="OID">Object ID</field>
<field name="CONDITION">ne</field><statement name="STATEMENT"><block type="controls_if" id="!ukq.(e%x7[?v)C^c9Pu"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_operation" id="TIi{f6Wr8tytMG3Q*JV8"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="0=RYe[Fo!p6y1~J)aoQC"><field name="OP">LTE</field> <value name="A"><block type="variables_get" id="m/=bZA+/.5^(XwoacL:P"><field name="VAR">value</field></block></value> <value name="B"><block type="math_number" id="8[JVTbY@[n{][Ty]_%MA"><field name="NUM">35</field></block></value></block></value> <value name="B"><block type="logic_compare" id="Vmz#QOLpDvFzP6y4t-?^"><field name="OP">GT</field> <value name="A"><block type="variables_get" id="`odN@@jN0UiUA.(oyLP|"><field name="VAR">oldValue</field></block></value> <value name="B"><block type="math_number" id="zS!,z,`CaQE^1Bxbm4t6"><field name="NUM">35</field></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="Ax-F333s_8JL6V*fQg0@"><mutation delay_input="false"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="xZ)z|lBDDq,f9FM,gy1|"><field name="BOOL">TRUE</field></block></value></block></statement> <value name="IF1"><block type="logic_operation" id="P|jrKgJzROk+5dTEA[a]"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="XF1;wR%nXLmtmA+NQ;`("><field name="OP">GTE</field> <value name="A"><block type="variables_get" id="Vq4sHfUSzn9Jxo/m@:Fj"><field name="VAR">value</field></block></value> <value name="B"><block type="math_number" id="sZ-=`;4(FiWDP~IvO-LW"><field name="NUM">45</field></block></value></block></value> <value name="B"><block type="logic_compare" id="]u,f02:zDVVaHL6h%a:v"><field name="OP">LT</field> <value name="A"><block type="variables_get" id="COXr;XMvjdFm3g%~e{]V"><field name="VAR">oldValue</field></block></value> <value name="B"><block type="math_number" id="5:{5pwD4+DYA4Hp_{%LQ"><field name="NUM">45</field></block></value></block></value></block></value> <statement name="DO1"><block type="control" id="/Jctsap|B6DF~z!/,7z,"><mutation delay_input="false"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="~KF,Az?ML1HN6o[CT[Rj"><field name="BOOL">FALSE</field></block></value></block></statement></block></statement></block></next></block>
<block type="comment" id="zZloThnMeSu;p5jOW#Ec" x="-437" y="-37"><field name="COMMENT">ID Befeuchter</field></block></xml>
```` `
wieder einmal einen kreativen Lösungsansatz kennengelernt mit der Verwendung von "oldValue" 8-) -
Aufgrund der eingebauten Hysterese ist folgende Lösung noch zuverlässiger (sendet nur, wenn wirklich erforderlich).
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="variables_set" id="zX3-_1w%Tfw1ll=E5Ypl" x="-550" y="-337"><field name="VAR">befeuchter</field>
<value name="VALUE"><block type="get_value" id=";In!?f]hJ^R{yXkNxhzE"><field name="ATTR">val</field>
<field name="OID">ID auswählen</field></block></value>
<next><block type="comment" id="xY1ZWm,+2EJohhee~qTo"><field name="COMMENT">ID Luftfeuchte</field>
<next><block type="on" id="R.tnni:[OVG-`,!SO?^-"><field name="OID">Object ID</field>
<field name="CONDITION">ne</field><statement name="STATEMENT"><block type="controls_if" id="!ukq.(e%x7[?v)C^c9Pu"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_operation" id="TIi{f6Wr8tytMG3Q*JV8"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="0=RYe[Fo!p6y1~J)aoQC"><field name="OP">LTE</field> <value name="A"><block type="on_source" id="V:I%HObLeriqNo_#HwdQ"><field name="ATTR">state.val</field></block></value> <value name="B"><block type="math_number" id="8[JVTbY@[n{][Ty]_%MA"><field name="NUM">35</field></block></value></block></value> <value name="B"><block type="logic_negate" id="Kv2D6OmoX:DGJ%XGr+`x"><value name="BOOL"><block type="variables_get" id="`odN@@jN0UiUA.(oyLP|"><field name="VAR">befeuchter</field></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="Ax-F333s_8JL6V*fQg0@"><mutation delay_input="false"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="xZ)z|lBDDq,f9FM,gy1|"><field name="BOOL">TRUE</field></block></value></block></statement> <value name="IF1"><block type="logic_operation" id="P|jrKgJzROk+5dTEA[a]"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="XF1;wR%nXLmtmA+NQ;`("><field name="OP">GTE</field> <value name="A"><block type="on_source" id="8oWSo(Z:mX)ILa{fb[8#"><field name="ATTR">state.val</field></block></value> <value name="B"><block type="math_number" id="sZ-=`;4(FiWDP~IvO-LW"><field name="NUM">45</field></block></value></block></value> <value name="B"><block type="variables_get" id="COXr;XMvjdFm3g%~e{]V"><field name="VAR">befeuchter</field></block></value></block></value> <statement name="DO1"><block type="control" id="/Jctsap|B6DF~z!/,7z,"><mutation delay_input="false"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="~KF,Az?ML1HN6o[CT[Rj"><field name="BOOL">FALSE</field></block></value></block></statement></block></statement> <next><block type="comment" id="zZloThnMeSu;p5jOW#Ec"><field name="COMMENT">ID Befeuchter</field> <next><block type="on" id="%tNgK/*+A0~k}iB1,cc,"><field name="OID">Object ID</field> <field name="CONDITION">any</field> <field name="ACK_CONDITION">true</field> <statement name="STATEMENT"><block type="variables_set" id="*Xy/Lu9J#cbgrq(j{5PE"><field name="VAR">befeuchter</field> <value name="VALUE"><block type="on_source" id="F+u#OXL|y@+WdoIZa5Rf"><field name="ATTR">state.val</field></block></value></block></statement></block></next></block></next></block></next></block></next></block></xml>
-
-
Super!
Jetzt fängt @Paul53 auch noch an, bei Blockly hochoptimierten Code zu schreiben.
Wahnsinn, was da alles sogar mit Blockly geht!
Gruß Rainer
-
Wahnsinn, was da alles sogar mit Blockly geht! `
Ja, aber es gibt schon einige Einschränkungen in Blockly.
@Homoran:bei Blockly hochoptimierten Code zu schreiben. `
Die Begeisterung teilen nicht alle, denn einige Nutzer sind der Meinung, dass es in Blockly http://forum.iobroker.net/viewtopic.php?f=21&t=10807&start=40#p118668 geht. -
Liebe Leute,
ein wenig peinlich ist es mir zwar nicht selbst auf die Lösung zu kommen, aber der Luftbefeuchter springt einfach nicht an :shock:
! <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml">
! <block type="variables_set" id="zX3-_1w%Tfw1ll=E5Ypl" x="-550" y="-337"><field name="VAR">befeuchter</field>
! <value name="VALUE"><block type="get_value" id=";In!?f]hJ^R{yXkNxhzE"><field name="ATTR">val</field>
! <field name="OID">netatmo.0.Robert.Indoor.Humidity.Humidity</field></block></value>
! <next><block type="comment" id="xY1ZWm,+2EJohhee~qTo"><field name="COMMENT">ID Luftfeuchte</field>
! <next><block type="on" id="R.tnni:[OVG-,!SO?^-"><field name="OID">netatmo.0.Robert.Indoor.Humidity.Humidity</field> ! <field name="CONDITION">ne</field> ! <statement name="STATEMENT"><block type="controls_if" id="!ukq.(e%x7[?v)C^c9Pu"><mutation elseif="1"></mutation> ! <value name="IF0"><block type="logic_operation" id="TIi{f6Wr8tytMG3Q*JV8"><field name="OP">AND</field> ! <value name="A"><block type="logic_compare" id="0=RYe[Fo!p6y1~J)aoQC"><field name="OP">LTE</field> ! <value name="A"><block type="on_source" id="V:I%HObLeriqNo_#HwdQ"><field name="ATTR">state.val</field></block></value> ! <value name="B"><block type="math_number" id="8[JVTbY@[n{][Ty]_%MA"><field name="NUM">39</field></block></value></block></value> ! <value name="B"><block type="logic_negate" id="Kv2D6OmoX:DGJ%XGr+
x"><value name="BOOL"><block type="variables_get" id="odN@@jN0UiUA.(oyLP|"><field name="VAR">befeuchter</field></block></value></block></value></block></value> ! <statement name="DO0"><block type="control" id="Ax-F333s_8JL6V*fQg0@"><mutation delay_input="false"></mutation> ! <field name="OID">hue.0.Philips_hue.On/Off_Osram.on</field> ! <field name="WITH_DELAY">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id="xZ)z|lBDDq,f9FM,gy1|"><field name="BOOL">TRUE</field></block></value></block></statement> ! <value name="IF1"><block type="logic_operation" id="P|jrKgJzROk+5dTEA[a]"><field name="OP">AND</field> ! <value name="A"><block type="logic_compare" id="XF1;wR%nXLmtmA+NQ;
("><field name="OP">GTE</field>
! <value name="A"><block type="on_source" id="8oWSo(Z:mX)ILa{fb[8#"><field name="ATTR">state.val</field></block></value>
! <value name="B"><block type="math_number" id="sZ-=`;4(FiWDP~IvO-LW"><field name="NUM">43</field></block></value></block></value>
! <value name="B"><block type="variables_get" id="COXr;XMvjdFm3g%~e{]V"><field name="VAR">befeuchter</field></block></value></block></value>
! <statement name="DO1"><block type="control" id="/Jctsap|B6DF~z!/,7z,"><mutation delay_input="false"></mutation>
! <field name="OID">hue.0.Philips_hue.On/Off_Osram.on</field>
! <field name="WITH_DELAY">FALSE</field>
! <value name="VALUE"><block type="logic_boolean" id="~KF,Az?ML1HN6o[CT[Rj"><field name="BOOL">FALSE</field></block></value></block></statement></block></statement>
! <next><block type="comment" id="zZloThnMeSu;p5jOW#Ec"><field name="COMMENT">ID Befeuchter</field>
! <next><block type="on" id="%tNgK/*+A0~k}iB1,cc,"><field name="OID">hue.0.Philips_hue.On/Off_Osram.on</field>
! <field name="CONDITION">any</field>
! <field name="ACK_CONDITION">true</field>
! <statement name="STATEMENT"><block type="variables_set" id="*Xy/Lu9J#cbgrq(j{5PE"><field name="VAR">befeuchter</field>
! <value name="VALUE"><block type="on_source" id="F+u#OXL|y@+WdoIZa5Rf"><field name="ATTR">state.val</field></block></value></block></statement></block></next></block></next></block></next></block></next></block></xml>Wenn es hilft: Mit einem IFTTT Trigger rennt es. Nur möchte ich IFTTT nicht verwenden, ist mir irgendwie niht sympatisch.
5652_luftbefeuchter.jpg -
Ganz oben muss die Objekt ID Philips_hue.On/Off_Osram.on rein.
-
Hallo zusammen,
auch ich brauch mal eure Hilfe bezgl Blocky
Ich versuche mittels RFID-Chip eine Lampe zu schalten.
Per Sprache über IOBroker geht es.
Das schalten mittels einer RFID für AN und einer anderen für AUS geht auch.
Ich will aber keine 2 RFID-Chips dafür verwenden sondern der Zeitstempel mit einbinden.
Das klappt aber gar nicht.
Hier mal mein Script:
on({id: 'mqtt.0.domoticz.in', change: "any"}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (getState("mqtt.0.domoticz.in").ts != getState("mqtt.0.domoticz.in").ts) {
if (getState("mqtt.0.domoticz.in").val == ('mqtt.0.domoticz.in' == '{"idx":1,"nvalue":0,"svalue":"909222828"}' && getState("broadlink.0.learnedSignals.TV_Licht").val == false)) {
setStateDelayed("broadlink.0.learnedSignals.TV_Licht"/TV Licht_/, true, 1000, false);
} else if (getState("mqtt.0.domoticz.in").val == ('mqtt.0.domoticz.in' == '{"idx":1,"nvalue":0,"svalue":"909222828"}' && getState("broadlink.0.learnedSignals.TV_Licht").val == true)) {
setStateDelayed("broadlink.0.learnedSignals.TV_Licht"/TV Licht_/, false, 1000, false);
}
}
});
Habt Ihr ne Idee??? Irgendwas mach ich wohl falsch.
Danke
-
Hier mal mein Script: `
Hallo Marko79
Was sollen die Leute, die mit Blockly arbeiten, mit dem Script anfangen? :roll:
Ein Screenshot von dem Blockly wäre da bestimmt hilfreicher.
Grüße
-
Sorry, das hab ich nicht bedacht.
Hier nun also ein Screenshot.
5810_screenshot_20180224-143242.png -
if (getState("mqtt.0.domoticz.in").ts != getState("mqtt.0.domoticz.in").ts) { `
Dieser Ausdruck liefert immer false, die folgenden Befehle werden also nie ausgeführt.
@Marko79:if (getState("mqtt.0.domoticz.in").val == ('mqtt.0.domoticz.in' == '{"idx":1,"nvalue":0,"svalue":"909222828"}' && getState("broadlink.0.learnedSignals.TV_Licht").val == false)) { `
Was soll hier geprüft werden ? -
Ich wollte prüfen ob der Zeitstempel der gleiche ist und wenn ja dann den token mit dem hinterlegten vergleichen.
Stimmt der Token und der Zeitstempel ist ein anderer dann soll der Schalter TV_Licht umschalten.