NEWS
[gelöst] Kleine Lichtsteuerung mit Bewegungsmelder
-
So habe den Roborock jetzt über MiHome Vacuum Adapter aktiv.
Doch wie stelle ich es jetzt an, das die Lichtsteuerung deaktiviert ist wenn die Reinigung aktiv ist.!?[ { "id": "2e295f1c879e6af4", "type": "tab", "label": "Küche Bad Motion Timer", "disabled": false, "info": "", "env": [] }, { "id": "7d4ab0828d82e844", "type": "ioBroker in", "z": "2e295f1c879e6af4", "name": "Bad Motion", "attrname": "payload", "topic": "hue.0.Bad_Motion_Sensor.presence", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "outFormat": "MQTT", "x": 210, "y": 100, "wires": [ [ "0c475f0f9588a3f7" ] ] }, { "id": "c6adf9d10b1da0b1", "type": "ioBroker out", "z": "2e295f1c879e6af4", "name": "Bad Decke", "topic": "sonoff.0.bad_deckenlampe.POWER", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 990, "y": 160, "wires": [] }, { "id": "f2d561282f7163ed", "type": "debug", "z": "2e295f1c879e6af4", "name": "debug 1", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 980, "y": 100, "wires": [] }, { "id": "0ad0adc9762722c5", "type": "inject", "z": "2e295f1c879e6af4", "name": "", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "true", "payloadType": "str", "x": 230, "y": 160, "wires": [ [ "0c475f0f9588a3f7" ] ] }, { "id": "d14674cd9f0cb2b4", "type": "trigger", "z": "2e295f1c879e6af4", "name": "", "op1": "true", "op2": "false", "op1type": "bool", "op2type": "bool", "duration": "5", "extend": false, "overrideDelay": true, "units": "s", "reset": "", "bytopic": "all", "topic": "topic", "outputs": 1, "x": 800, "y": 140, "wires": [ [ "f2d561282f7163ed", "c6adf9d10b1da0b1" ] ] }, { "id": "1ac75a0bc5ee3bc7", "type": "ioBroker in", "z": "2e295f1c879e6af4", "name": "Küche Motion", "attrname": "payload", "topic": "hue.0.Küche_Motion_Sensor.presence", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "outFormat": "MQTT", "x": 210, "y": 260, "wires": [ [ "2a11a3084a3bfc87" ] ] }, { "id": "f34957801db99988", "type": "ioBroker out", "z": "2e295f1c879e6af4", "name": "Küche Unterschrank links", "topic": "hue.0.Küche_Unterschr_Links.on", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 670, "y": 280, "wires": [] }, { "id": "e2da7a63d3c15673", "type": "debug", "z": "2e295f1c879e6af4", "name": "debug 2", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 620, "y": 220, "wires": [] }, { "id": "08933b607402d98c", "type": "inject", "z": "2e295f1c879e6af4", "name": "", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "true", "payloadType": "str", "x": 230, "y": 320, "wires": [ [ "2a11a3084a3bfc87" ] ] }, { "id": "2a11a3084a3bfc87", "type": "trigger", "z": "2e295f1c879e6af4", "name": "", "op1": "true", "op2": "false", "op1type": "bool", "op2type": "bool", "duration": "5", "extend": false, "overrideDelay": true, "units": "s", "reset": "", "bytopic": "all", "topic": "topic", "outputs": 1, "x": 400, "y": 300, "wires": [ [ "e2da7a63d3c15673", "f34957801db99988", "3980458ba6d298ac", "a7ac79dac573570f" ] ] }, { "id": "3980458ba6d298ac", "type": "ioBroker out", "z": "2e295f1c879e6af4", "name": "Küche Unterschrank rechts", "topic": "sonoff.0.kueche_unterschrank_rechts.POWER", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 680, "y": 340, "wires": [] }, { "id": "a7ac79dac573570f", "type": "ioBroker out", "z": "2e295f1c879e6af4", "name": "Küche Decke", "topic": "tuya.0.bf36b7d083796c35e8gq51.1", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 630, "y": 400, "wires": [] }, { "id": "0c475f0f9588a3f7", "type": "ioBroker get", "z": "2e295f1c879e6af4", "name": "Reinigung Status", "topic": "mihome-vacuum.0.control.clean_home", "attrname": "payload", "payloadType": "value", "errOnInvalidState": "nothing", "x": 410, "y": 140, "wires": [ [ "f7a7cd85e1339dc9" ] ] }, { "id": "cf5f4179cbb90024", "type": "trigger", "z": "2e295f1c879e6af4", "name": "", "op1": "1", "op2": "0", "op1type": "val", "op2type": "val", "duration": "250", "extend": "false", "overrideDelay": "false", "units": "ms", "reset": "", "bytopic": "all", "topic": "topic", "outputs": 1, "x": 340, "y": 520, "wires": [ [] ] }, { "id": "f7a7cd85e1339dc9", "type": "toggle", "z": "2e295f1c879e6af4", "name": "", "onOffTopic": "", "onValue": "true", "onType": "str", "offValue": "false", "offType": "str", "toggleTopic": "", "toggleValue": "", "toggleType": "str", "passOnOff": "", "x": 610, "y": 140, "wires": [ [ "d14674cd9f0cb2b4" ] ] } ]
Wenn der Roborock Robotersauger beim arbeiten ist, Hat er den Status "5" sprich wenn Roborock den wert 5 hat darf das Badlicht nicht angesprochen werden trotz Bewegung.
hat der Status Roborock irgend einen anderen Wert dann kann das Licht per Bewegungsmelder eingeschaltet werden und irgenwie geht das licht immer wieder aus trotz das der bewegungsmelder bewegung erkennt. geht das Licht aus und auch ganz lange nicht mehr an als ob der Trigger nicht auf Bewegung reagiert. -
-
@aphofis Für so was brauch man keine toggle Node- Auch hier gilt: NodeRed bringt in den meisen Fällen das nötige Rüstzeug bereist mit..
Für alle Bedingungen nimmt man einen Switch. Es ist richtig, dass der Bewegungsmelder triggert. Ausserdem würde ich nicht per Trigger das Licht wieder ausschalten, sondern das soll der BWM am Besten selbst machen. Sprich wenn der BWM false sendet dann soll er immer ausschalten, schließlich kann sich Dein Staubi ja in einem anderen Raum befinden.
Ich sage also bei false soll er immer ausschalten bei True nur dann einschalten wenn der Staubi nicht arbeitet. Damit der Stautus des Staubi die payload nicht überschriebt, setze ich den Staubi auf ein anderes Attribut des Nachrichtenobjektes
Als Erstes weisen wir also dem Staubi in der get Node einen eigenen Status zu, sodass wir die payload des BWM nicht überschreiben:
Dann lassen wir den BWM aus und einschalten und keinen trigger. Ich gehe mal davon aus, dass der BWM true/false liefert und damit auch das Licht schalten kann. Ausschalten darf der BWM also immer, einschalten nur wenn der Roborok nicht den Status 5 hat.
Hier der Flow zum Import:
Wenn Du willst, dass das false Signal erst nach 1 Minute Verzögerung ausschaltet, dann kannst Du einen entsprechenden Trigger in den false setzen und durch ein true zurücksetzen. Ich modifiziere das noch schnell.
-
@Aphofis wenn du nicht willst, dass der BWM false sendet, dann hängst du den trigger node in den true Asr und löschst den false Ast in der 1. switchNode. In diesem Fall vereinfacht sich der Flow wie folgt:
Hier zum Import:Also nimm diesen Flow - einfach ist immer am Besten - hier ignorierst Du die false Nachrichten des Bewegungsmelders.
EDIT: Flow (Trigger Node noch korrigiert siehe anderer Thread).
-
@aphofis sagte: wenn Roborock den wert 5 hat darf das Badlicht nicht angesprochen werden trotz Bewegung.
Das Thema läuft unter der Kategorie "Blockly". Deshalb Vorschlag:
-
@codierknecht sagte in Kleine Lichtsteuerung mit Bewegungsmelder:
@aphofis
Bei NodeRed bin ich raus.
Vielleicht kann da @mickym weiterhelfen?Danke für die Info
-
@paul53
Das Super! Das stimmt, es ging um ein Blockly nur wollte ich mal meine Hussteuerungen mit Node-Red ausprobieren.
Da der Aufbau doch eher nachvollziehbarer ist. Zumindest für meine Verhältnisse.
Funktioniert auch! Vielen Dank -
@mickym
Hab jetzt diese Steuerung am laufen und funktioniert nur der Datenpunkt für die bedingung ist:mihome-vacuum.1.info.state
Das war die einzige Änderung die ich gemacht hatte. Es läuft prima.
Wenn der Roborock unterwegs ist und den Wert Cleaning (5) Hat geht das Licht nicht an.
Wenn er andere Werte hat löse ich diese wenn dann sowieso manuell aus wenn ich zu Hause bin.
Ansonsten steht er beim laden auf Charging (8). Auch Licht getestet wenn Bewegung bleibt, bleibt das Licht auch an bzw bei kurzem nicht bewegen geht das Licht aus und nach bewegung sofort wieder an. Also alles TippiToppi -
@aphofis OK wenn Du diesen Flow nimmst funktioniert das. Wenn Du den letzten Flow nimmst, musst Du die Trigger node noch ändern. Aber wenn Du mit dem Flow zufrieden bist, ist OK. Ansonsten vielleicht lieber den anderen Thread nehmen, weil hier sind wir im Bockly Forum.
-
@mickym
I know hatte ich vergessen. -
Für alle die sowas auch machen wollen und den Roborock haben und aber keine Inhalte in den Datenpunkten hat obwohl der Roborock Adapter sagt alles verbunden.
Einfach die MiHome Vacuum App auf dem Handy laden.
Den Roborock neu einlernen. Die Karten Zeitpläne etc bleiben in der App erhalten dann den Roborock Adapter deinstallieren und den MiHome Vacuum Adapter einstellen.
per Account E-Mail und passwort bezieht der Adapter den Roborock.
Wenn man mehrere hat, werden diese mit dem Token; IP etc angezeigt. Die Daten übertragen in den Adapter. Ich habe dazu noch in Node-Red die Nodes node-red-contrib-xiaomi-roborock installiert. darüber kann man den Xiaomi super steuern bez. touchscreen (VIS).
Es werden alle Werte unter Objekten angezeigt. -
@aphofis sagte in [gelöst] Kleine Lichtsteuerung mit Bewegungsmelder:
Wenn man mehrere hat, werden diese mit dem Token; IP etc angezeigt. Die Daten übertragen in den Adapter. Ich habe dazu noch in Node-Red die Nodes node-red-contrib-xiaomi-roborock installiert. darüber kann man den Xiaomi super steuern bez. touchscreen (VIS).
Es werden alle Werte unter Objekten angezeigt.Grundsätzlich ist es gefährlich eine Hardware von 2 Systemen anzusteueren, das kann zu Konflikten führen. Also entweder die Node oder den Adapter. Du kannst ja über NodeRed auch die Datenpunkte im iobroker Adapter ansteuern. Beides würde ich NICHT machen.
-
@mickym
Kann mann die bestehende Lichtsteuerung erweitern um den smarten Lichtschalter.!?
Sprich, wenn Schalter benutzt wird dann Bewegungmelder ignorieren und dann automatisch nach 15 min Licht ausschalten und Bewegung wieder aktiv !? und natürlich bleibt der Roborock mit drin das echt ne tolle Steuerung!
Ich weiß nur nicht ob das geht, weil Bad deckenlicht wird ja jetz nur über den Smart Lichtschalter geschaltet. Doch müsste doch wenn schalter true dann bewegung inaktiv dann 15 min warten dann licht aus und bewegung aktiv. -
@aphofis Ja Du musst doch nur die Nachrichten aus dem Bewegungsmelder blockieren. Ich würde die Blockade über eine Flowvariable aus dem parallelen Flow für den Schalter steuern.
-
@mickym Oha das weiß ich nicht wie das geht !
-
@aphofis Na dann mach halt erst mal Deinen Flow für den Schalter - der hat mit dem Flow des Bewegungsmelder nichts zu tun, da ja der Schalter ein eigener Trigger ist.
Ich dachte Du hast den doch schon. Den Trigger würde ich parallel machen, denn Du willst ja, dass der Schalter sofort an das Licht weiter gibt.
-
@mickym ja das ja aber dann greift doch auch bewegungsmelder weil ja das deckelicht durch den smart schalter eingeschaltet wird und auch der bewegungsmelder das licht mit dem selben schalter einschaltet also muss doch bewegungs flow deaktiviert werden mit delay ???
Das Licht wird ja eingeschaltet wenn man den schalter betätigt ich würde nur gerne einen Delay von 15 min gerne einbauen -
@aphofis Ich hab Dir doch gerade gesagt, dass Du den Trigger mit dem Bewegungsmelder aussen vorlassen sollst und Deine Logik mit dem Schalter implementieren sollst. Streich also den Bewegungsmelder aus Deinem Kopf und mach den Flow mit Deinem Lichtschalter. Ein Licht kann auch mehrfach getriggert werden.
Ich würde halt den Lichtschalter direkt ans Licht durchreichen und die Zeitverzögerung dann schalten nach dem letzten Schalten des Schalters. - Ich mach Dich aber darauf aufmerksam, dass dann das Licht ausgeschaltet wird auch wenn jemand länger in der Badewanne liegt und das Licht über den Schalter eingeschaltet hat. Aber wie Du willst. -
@mickym
Ich denke das Problem ist, das ich nicht weiß mit welcher node man was alles tun kann.
Wenn ich mir eine schaltung aufschreibe, was diese machen soll. Komme ich spätestens da nicht weiter wenn es darum geht eine node auszuwählen.
payload ist auch ein sehr mächtiges werkzeug nur wie man es korrekt benutzt weiß ich nicht.
In allen Tutorial Videos wird halt nur erklärt nimm dies mach das dann hast du das aber nicht was es bewirkt.
sprich ein Auto fährt mit Benzin nur viele wissen nicht wie ein Motor funktioniert.
Was machen die einzel Kommponenten in einem Motor.
Wenn ich also eine In node nehme dort den Lichtschalter verknüpfe dann kommt der moment, wie deaktiviere ich nun das der Bewegunsgmelder nicht reagiert bin Timer abgelaufen dann schalte Lichtschalter Bad aus. Nach ablauf des Timers Motion wieder freigegeben. Ich bin da leider nicht so gut im programmieren.
Wenn man den Hintergrund der einzelnen Nodes nicht kennt, was kann welche Node und das ist garantiert gewaltig was jede node an funktionen hat. -
@aphofis du befindest dich wieder im falschen thread. Hier ist Blockly-Land..
Und dort fängst du an, dich erst nur um den Schalter zu kümmern und sonst nichts. Also Schalter true = Licht true und Schalter false = Licht false. und wenn du das dann hast treffen wir uns in dem anderen Thread wieder.Wenn du also mal begonnen hast und du Fragen hast, dann beantworte ich dir alle. Aber du solltest mal mit dem trigger, also dem Schalter beginnen, denn der soll ja Deine Lampe zu leuchten bzw. zu erlöschen bringen.