NEWS
Rollladensteuerung Logikfehler
-
@hc-yami Das heißt es war OK, dass sich der Rollladen geöffnet hat, obwohl es draussen noch dunkel war? Mit anderen Worten das Schließen durch die Wetterstation sollte immer erst nachmittags erfolgen - insofern müsstest Du also oben nur noch einen Zeitfilter einfügen, sodass das Schließen halt nur abends bzw. nachmittags erfolgt.
-
Ja, im Badezimmer ist das tatsächlich okay, weil wir i.d.R. danach lüften und es ggf. schon ein wenig hell draußen ist.
An die Abfrage mit der Zeit, habe ich irgendwie nicht gedacht, das hilft mir sehr, dankeschön!
Ich dachte ich müsse irgendwie mit einem Zusatzobjekt arbeiten, bei dem ich den State manuell immer anpasse. Die Zeit macht es aber bei weitem einfacher. -
@mickym ich hoffe du kannst mir erneut helfen.
Seit geraumer Zeit verstehe ich meinen Fehler auch bei meinem Wohnzimmerrolladen nicht:Meine Frage betrifft nur den oberen Flow mit dem "Playstation.state" und "Wohnzimmer_Türkontakt.state" leider funktioniert der filter nicht vernünftig. Ich gehe hier von einem Bug aus. Im Screenshot bspw. siehst du nun, dass "0" an "Shelly-Wohnzimmer-Rollo.Position" als letztes gesendet wurde. Also eigentlich die "Wetterstation.lux" <=1 ist. Tatsächlich ist aber die Wetterstation nun >=10, also sollte eigentlich der obere Flow "getriggert" werden. Wenn ich den Flow komplett neu anlege, passt das für den Moment auch. Das Rolladen ist derzeit unten und würde dann hochfahren. Wenn ich den filter komplett raus nehme, passt das auch. Dann wird der Shelly jedoch dauerhaft angesteuert und man hört jedes Mal das Relais klicken.
P.S. Das mit der Playstation hatte ich bspw. schonmal rausgenommen, leider kein Unterschied.
Danke für deine kommende Antwort.
[ { "id": "8f0f12f0.c4f6f", "type": "ioBroker get", "z": "bc142309.a5d5b", "name": "Wohnzimmer_Fensterkontakt_groß.contact", "topic": "zigbee.0.00158d000478e665.contact", "attrname": "payload", "payloadType": "value", "x": 710, "y": 260, "wires": [ [ "47ab5a81.766c1c" ] ] }, { "id": "47ab5a81.766c1c", "type": "switch", "z": "bc142309.a5d5b", "name": "is true", "property": "payload", "propertyType": "msg", "rules": [ { "t": "true" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 950, "y": 260, "wires": [ [ "6fe868e4.7a1068" ] ] }, { "id": "6fe868e4.7a1068", "type": "change", "z": "bc142309.a5d5b", "name": "0", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "0", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1070, "y": 260, "wires": [ [ "3e7b764c.80df4a" ] ] }, { "id": "661cd0be.dd18b", "type": "ioBroker out", "z": "bc142309.a5d5b", "name": "Velux-Wohnzimmer_groß-Rollo.targetposition", "topic": "klf200.0.products.0.targetPosition", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1460, "y": 300, "wires": [] }, { "id": "78434c67.ba6e4c", "type": "ioBroker get", "z": "bc142309.a5d5b", "name": "Wohnzimmer_Fensterkontakt_klein.contact", "topic": "zigbee.0.00158d0004a043f6.contact", "attrname": "payload", "payloadType": "value", "x": 710, "y": 400, "wires": [ [ "8bb5a88c.52ecd" ] ] }, { "id": "b0ac92f0.37c328", "type": "switch", "z": "bc142309.a5d5b", "name": "is true", "property": "payload", "propertyType": "msg", "rules": [ { "t": "true" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 950, "y": 340, "wires": [ [ "8c7f330b.373928" ] ] }, { "id": "8c7f330b.373928", "type": "change", "z": "bc142309.a5d5b", "name": "100", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "100", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1070, "y": 340, "wires": [ [ "3e7b764c.80df4a" ] ] }, { "id": "2a0ae80e.384a58", "type": "ioBroker out", "z": "bc142309.a5d5b", "name": "Velux-Wohnzimmer_klein-Rollo.targetposition", "topic": "klf200.0.products.6.targetPosition", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1450, "y": 460, "wires": [] }, { "id": "2572e2d8.aec536", "type": "ioBroker get", "z": "bc142309.a5d5b", "name": "Wohnzimmer_Fensterkontakt_groß.contact", "topic": "zigbee.0.00158d000478e665.contact", "attrname": "payload", "payloadType": "value", "x": 710, "y": 340, "wires": [ [ "b0ac92f0.37c328" ] ] }, { "id": "4c34ae3.fea135", "type": "ioBroker get", "z": "bc142309.a5d5b", "name": "Wohnzimmer_Fensterkontakt_klein.contact", "topic": "zigbee.0.00158d0004a043f6.contact", "attrname": "payload", "payloadType": "value", "x": 710, "y": 520, "wires": [ [ "f31219e1.27d5a8" ] ] }, { "id": "8bb5a88c.52ecd", "type": "switch", "z": "bc142309.a5d5b", "name": "is true", "property": "payload", "propertyType": "msg", "rules": [ { "t": "true" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 950, "y": 400, "wires": [ [ "36aae59d.319f1a" ] ] }, { "id": "36aae59d.319f1a", "type": "change", "z": "bc142309.a5d5b", "name": "0", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "0", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1070, "y": 400, "wires": [ [ "ee5e306.3306cd" ] ] }, { "id": "f31219e1.27d5a8", "type": "switch", "z": "bc142309.a5d5b", "name": "is true", "property": "payload", "propertyType": "msg", "rules": [ { "t": "true" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 950, "y": 520, "wires": [ [ "ab5b136.fd148f" ] ] }, { "id": "ab5b136.fd148f", "type": "change", "z": "bc142309.a5d5b", "name": "100", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "100", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1070, "y": 520, "wires": [ [ "ee5e306.3306cd" ] ] }, { "id": "65fe1d3e.593ccc", "type": "ioBroker get", "z": "bc142309.a5d5b", "name": "Wohnzimmer_Türrkontakt.state", "topic": "hm-rpc.2.00109709A3B501.1.STATE", "attrname": "payload", "payloadType": "value", "x": 670, "y": 180, "wires": [ [ "edb769db.d1d078" ] ] }, { "id": "edb769db.d1d078", "type": "switch", "z": "bc142309.a5d5b", "name": "is 0", "property": "payload", "propertyType": "msg", "rules": [ { "t": "eq", "v": "0", "vt": "num" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 930, "y": 180, "wires": [ [ "dffcd6d1c1c8fe9a" ] ] }, { "id": "ee5e306.3306cd", "type": "rbe", "z": "bc142309.a5d5b", "name": "", "func": "rbe", "gap": "", "start": "", "inout": "out", "septopics": true, "property": "payload", "x": 1210, "y": 460, "wires": [ [ "2a0ae80e.384a58" ] ] }, { "id": "3e7b764c.80df4a", "type": "rbe", "z": "bc142309.a5d5b", "name": "", "func": "rbe", "gap": "", "start": "", "inout": "out", "septopics": true, "property": "payload", "x": 1210, "y": 300, "wires": [ [ "661cd0be.dd18b" ] ] }, { "id": "cbd8c9be.d497e8", "type": "switch", "z": "bc142309.a5d5b", "name": ">=10", "property": "payload", "propertyType": "msg", "rules": [ { "t": "gte", "v": "10", "vt": "num" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 290, "y": 220, "wires": [ [ "8f0f12f0.c4f6f", "78434c67.ba6e4c", "a162a0183489cb02" ] ] }, { "id": "33d7a0f9.518e8", "type": "switch", "z": "bc142309.a5d5b", "name": "<=1", "property": "payload", "propertyType": "msg", "rules": [ { "t": "lte", "v": "1", "vt": "num" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 290, "y": 300, "wires": [ [ "2572e2d8.aec536", "4c34ae3.fea135", "65fe1d3e.593ccc" ] ] }, { "id": "a162a0183489cb02", "type": "ioBroker get", "z": "bc142309.a5d5b", "name": "Playstation.state", "topic": "tr-064.0.devices.Playstation.active", "attrname": "payload", "payloadType": "value", "x": 630, "y": 120, "wires": [ [ "f83b129f5000893a" ] ] }, { "id": "f83b129f5000893a", "type": "switch", "z": "bc142309.a5d5b", "name": "is false", "property": "payload", "propertyType": "msg", "rules": [ { "t": "false" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 940, "y": 120, "wires": [ [ "1f9a8ecced193764" ] ] }, { "id": "d8c72eb7f87bc425", "type": "ioBroker in", "z": "bc142309.a5d5b", "name": "Wetterstation.lux", "topic": "hm-rpc.2.000D5D899BFB75.1.AVERAGE_ILLUMINATION", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "x": 120, "y": 260, "wires": [ [ "cbd8c9be.d497e8", "33d7a0f9.518e8" ] ] }, { "id": "55da8cc3cad3571a", "type": "ioBroker out", "z": "bc142309.a5d5b", "name": "Shelly-Wohnzimmer-Rollo.Position", "topic": "shelly.0.SHSW-25#68C63AF992F9#1.Shutter.Position", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1420, "y": 140, "wires": [] }, { "id": "650a42086e8f4eed", "type": "rbe", "z": "bc142309.a5d5b", "name": "", "func": "rbe", "gap": "", "start": "", "inout": "out", "septopics": true, "property": "payload", "topi": "topic", "x": 1210, "y": 140, "wires": [ [ "55da8cc3cad3571a" ] ] }, { "id": "1f9a8ecced193764", "type": "change", "z": "bc142309.a5d5b", "name": "100", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "100", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1070, "y": 120, "wires": [ [ "650a42086e8f4eed" ] ] }, { "id": "dffcd6d1c1c8fe9a", "type": "change", "z": "bc142309.a5d5b", "name": "0", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "0", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1070, "y": 180, "wires": [ [ "650a42086e8f4eed" ] ] } ]
-
@hc-yami Dein Fehler ist super einfach.
Und liegt leider an Dir und nicht an NodeRed - also gehe mal nicht von einem Bug aus.
Im Grunde ist das Problem ganz einfach.
Mit der filter-Node willst Du verhindern dass mehrfach 0 oder 100 gesendet wird.
Das klappt bei dem unteren und mittleren richtig, beim oberen nicht.
Was ist der Unterschied von oben zu den unteren?
Nun das topic ist bei dem mittleren und unteren gleich . insofern ist Dir Dein Fehler nicht aufgefallen. Im oberen ist Dein Fehler, dass ein mal das topic vom tr064 Adapter stammt und einmal von homematic.In Deiner filter Node hast Du aber
angehakt, dass die filter node für jedes topic getrennt arbeiten soll. Sprich es kommt nur jeweils ein Wert einmal von jedem Strang durch und dann ist dieser Flow komplett blockiert. Sprich die 0 kam an, als es dunkel war - hell kann aber nicht mehr gesendet werden, da vom Vortag noch blockiert ist.
Also mach den Haken raus, dass jedes topic separat behandelt werden soll und alles ist gut. Im Grunde brauchst Du es bei den unteren beiden auch nicht - aber da spielt es keine Rolle, weil das topic gleich ist.
Am Besten kommt man sowas aber auch durch debug Nodes auf die Spur - aber in dem Fall war es einfach so logisch.
Und zum Glück hast Du Deinen Flow exportiert - weil man das natürlich im Screenshot alleine nicht sieht.
-
@mickym Das ist hier zwar kein node-red Kurs, aber vlt kann ich was lernen
Würde man denn die wetterstation.lux als Trigger nehmen? Die Helligkeit zackelt doch bei jedem Vogel, der vorbeifliegt. In Blockly jedenfalls würde ich das anders machen und die Helligkeit als Bedingung nachschalten. -
@ostfrieseunterwegs hat er ja gemacht, aber statt mit einer Switch Node mit 2 Ausgängen filtert er halt mit 2 Switch nodes mit einem Ausgang. Oben größer 10 Lux und unten kleiner 1 Lux. beides valide. Und wie gesagt an der Helligkeit liegt’s nicht, sonst würde es ja mit den unteren beiden Rollläden nicht klappen.
Außerdem hat er ja eine kleine Hystereses eingebaut. Sprich zwischen 2 und 9 lux passiert nichts. Und ob das hinhaut oder nicht, hängt wohl immer am luxmesser oder den Bedingungen ab. Und triggern tut ja die Wetterstation (startet den Flow ganz links)
-
@mickym Ja das ist schon klar, ich wollte drauf hinaus, dass der Flow bei jedem 10tel Änderung in der Helligkeit getriggert wird, und zumindest bis zum Filter durchläuft. Ich beschäftige mich im Moment ein wenig mit green-coding/effektiverem coding und da ist mir das aufgefallen.
-
@ostfrieseunterwegs ja aber imPrinzip ist es egal ob du hinten oder vorne blockiert - glaube nicht dass das viel ausmacht. Triggern tut der Datenpunkt der Wetterstation immer egal ob Blockly oder NodeRed. Selbst wenn man noch einen Filter vorne macht, dass sich die Lux mind. Um 10 ändern muss, kannst vielleicht noch etwas Traffic einsparen. Wird aber tagsüber beim Vogel wenn die Helligkeit zwischen 310 und 320 schwankt immer noch triggern. Und mehr als 10 Lux geht nicht, da es sonst unten nicht mehr auflösen würde.
Man könnte bei über 10 Lux noch einen Filter machen, dass sich ein best. Prozentsatz ändern muss, dann läuft es nicht bis hinten durch, aber ich glaube nicht, dass man sowas strommässig messen kann.
-
@mickym Ne, in ioBroker in einer privaten Umgebung kannst das natürlich nicht messen - das ist wirklich eher OT
In diesem speziellen Fall könnte man den suncron trigger nehmen, eine Stunde vor sunset anfangen die Helligkeit regelmässig abzufragen, über 5 Minuten mitteln, und im gewünschen Fall die Rolläden absenken. Und vlt bei 'night' wieder aufhören.
Morgens dann umgekehrt.
Danke für Deine ErläuterungenOver and out
-
@ostfrieseunterwegs bei meinem Helligkeitsensor ist das tatsächlich auch nicht die aktuelle Helligkeit, sondern der Durchschnittswert der letzten 30 Werte. Bin mit 1 und 10 tatsächlich sehr gut gefahren bisher.
@mickym danke, du weißt nicht wie lange mich die schei** schon beschäftigt, natürlich erst seitdem ich den Türkontakt gegen den von Homematic getauscht habe... Hatte mir auch immer nur den msg.payload angeschaut und nicht den Topic. Danke dir!
-
@hc-yami sagte in Rollladensteuerung Logikfehler:
Hatte mir auch immer nur den msg.payload angeschaut und nicht den Topic. Danke dir!
Ehrlich gesagt würde ich die Option in den filter Nodes grundsätzlich abschalten, dass für jedes topic separat gearbeitet wird.
Verstehe nicht, warum das defaultmäßig angehakt ist, denn ich denke es kommt seltener vor, dass die Leute die filter node für unterschiedliche topics nutzen.
Ja und generell ist immer das ganze Nachrichtenobjekt im Zweifel relevant - und das topic kommt in der Bedeutung gleich hinter der payload. (Was nützt schließlich ein Wert, wenn ich seine Bedeutung nicht mehr kenne.).
Das nächste Mal würde ich sowas auch immer schnell selbst simulieren.Mit so einem Aufbau:
hättest Du schnell herausgefunden, dass spätestens nach dem 2. Inject drücken nichts mehr hinten raus gekommen wäre.