NEWS
Node Red unter Verbrauchswert ausschalten; Zeit X überprüfen
-
Node Red: Steckdose unter Verbrauchswert ausschalten; Bedingung für Zeit X überprüfen; Mindestdauer Leistungswert
Ich bin schon seit Stunden mit NodeRed dran, um genau eine Lösung meiner Waschmaschine zu realisieren.
Shelly Plug S plus ist eingerichtet, da hängt die Waschmaschine drauf.
Wenn der Shelly eingeschalten wird, schaltet auch die Waschmaschine an und hat einen Standby von unter 2W.
Ich möchte, dass so realisieren, dass beim Einschalten des Plug S, sofern die Leistung unter 2W mind. Zeit x nichts passieren soll (ansonsten bekomme ich die Meldung "Maschine fertig", obwohl ich erst eingeschalten habe). Nach Ablauf der Zeit (hier kann man die Waschmaschine einstellen und starten) soll dann die Meldung raus, dass fertig und der Plug S nach weiterer Zeit X wieder ausschalten.
D.h. auch, dass nach dem Waschvorgang die Leistung unter 2W sinkt und dann nach Zeit X der Shelly ihr den Strom nehmen soll.hier mal mein Flow, mit dem es nicht ganz funktioniert, wie es soll
[ { "id": "94d619d92cc465af", "type": "template", "z": "aa961794.080218", "name": "Maschine fertig!", "field": "payload", "fieldType": "msg", "format": "handlebars", "syntax": "mustache", "template": "<speak> \n<s>Maschine fertig!</s>\n</speak>", "output": "str", "x": 700, "y": 3540, "wires": [ [ "8ff1eaa5ed86870d" ] ] }, { "id": "e91c781a.fe3798", "type": "trigger", "z": "aa961794.080218", "name": "", "op1": "", "op2": "true", "op1type": "nul", "op2type": "bool", "duration": "5", "extend": false, "overrideDelay": false, "units": "s", "reset": "false", "bytopic": "all", "topic": "topic", "outputs": 1, "x": 480, "y": 3540, "wires": [ [ "94d619d92cc465af", "18a980b22943b428" ] ] }, { "id": "aa8125a6127677ac", "type": "ioBroker in", "z": "aa961794.080218", "name": "Leistung", "attrname": "", "topic": "", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "true", "x": 120, "y": 3540, "wires": [ [ "570f613f75da42c7" ] ] }, { "id": "570f613f75da42c7", "type": "switch", "z": "aa961794.080218", "name": ">=0.1W & <=2W", "property": "payload", "propertyType": "msg", "rules": [ { "t": "btwn", "v": "0.1", "vt": "num", "v2": "2", "v2t": "num" } ], "checkall": "false", "repair": false, "outputs": 1, "x": 310, "y": 3540, "wires": [ [ "e91c781a.fe3798" ] ] }, { "id": "18a980b22943b428", "type": "delay", "z": "aa961794.080218", "name": "", "pauseType": "delayv", "timeout": "5", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "10", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": true, "allowrate": false, "outputs": 1, "x": 680, "y": 3580, "wires": [ [ "097d8a2925375837" ] ] }, { "id": "097d8a2925375837", "type": "ioBroker out", "z": "aa961794.080218", "name": "Shelly Plug PM", "topic": "", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 920, "y": 3580, "wires": [] }, { "id": "8ff1eaa5ed86870d", "type": "alexa-remote-routine", "z": "aa961794.080218", "name": "", "account": "", "routineNode": { "type": "speak" }, "x": 920, "y": 3540, "wires": [ [] ] } ]
-
So ich habe mal Deinen Flow importiert:
Was funktioniert den nicht? Du prüfst ja gar nicht ob die Zeit X Sekunden in dem Leistungsfenster bleibt - ausserdem halte ich das Zeitfenster für viel zu kurz.
So wie es jetzt ist - muss das Leistungsfenster nur 1 mal getroffen werden und dann wird immer die Nachricht ausgegeben. Und warum dann noch mal eine delay Variable dahinter hängt - ja kann man machen - aber dann würde ich halt lieber das Zeitfenster größer wählen.
Wie gesagt ich halte Dein Zeitfenster von 5 Sekunden - für viel zu kurz, aber generell musst Du ja die trigger Node wieder resetten, wenn innerhalb des Zeitfensters wieder eine Leistung ausserhalb des Bereichs auftritt:
-
die 5s sind nur zum Testen, das wird dann geändert wenn es läuft
Hab deine Node getestet, geht auch nicht. Bin kein Fachmann in NodeRed, daher bitte nicht gleich verprügeln.
hier der Ablauf:
- Steckdose an - Zeit x bis zum Starten der Maschine - Wenn Maschine fertig, dann melden mittels Alexa - nach weiterer Zeit X soll dann die Steckdose wieder aus geschalten werden
-
@speedyblade Was geht denn nicht? - Simuliere mit einer Inject Node
Bei mir tut das - hier der Import:
Es wird true ausgegeben, solange innerhalb von 5 s kein anderer Wert ausserhalb des Bereiches ankommt.
-
"bei dem Change: 2 Regeln"...wie bekomme ich das "True" vom Trigger auf ein "False"?
dies funktioniert leider nicht
-
@speedyblade Na das ist doch logisch dass das nicht funktioniert.
Die Regeln werden nacheinander abgearbeitet und somit wird true in false gewandelt und dann in der nächsten Regel von false in true.
Somit kommt IMMER true raus!!!Entweder gehst du den Umweg über einen anderen Datentyp oder Du nutzt JSONATA.
-
@speedyblade Wenn Du aber AUSSCHALTEN willst warum machst DU nicht einfach in der TRIGGER Node ein false.
Für Alexa änderst Du doch die payload sowieso. Also brauchst Du doch gar nicht wandeln!!
-
scheint nun zu funktionieren
hab das nun so gelöst...
weil das true brauch ich da ja eh niefür mein Verständnis
wird hier der payload einfach invertiert? -
wenn die nette Dame damit was anfangen kann, hast du natürlich Recht
wird gleich getestet => soeben getestet...Alexa ist true oder false egal...in dem Fall hab ich das nun so gelöst...
besten Dank...muss ganz ehrlich sagen, ich liebe das Forum, da wird einem so schnell geholfen
-
wird hier der payload einfach invertiert?
Ja Du siehst ja im JSONATA Editor eine Kurzerklärung
-
ich möchte eh mal eine NodeRed Schulung machen...vielleicht kannst du ja was empfehlen.
Das was ich bis dato gemacht habe...try and errornoch ne Frage...
wie bekomme ich da noch ein "und" rein?
und zwar soll Shelly nur aktiviert werden, wenn der die Leistung erreicht ist und auch der Shelly Plug S ein ist und genau letzteres muss ich noch mit rein bringen, ansonsten meldet die Tante nämlich immer, wenn der Plug S ausgeschalten wurde, nochmals...
-
@speedyblade sagte in Node Red unter Verbrauchswert ausschalten; Zeit X überprüfen:
wie bekomme ich da noch ein "und" rein?
Indem Du die Abfragen in Serie schaltest. Sprich indem Du im positiv Ast über die Get-Node den Zustand holst und dann mit einer weiteren Switch Node filterst.
-
@speedyblade Hier hatte ich mal ein paar Links zusammengestellt: https://forum.iobroker.net/post/470328
-
@mickym sagte in Node Red unter Verbrauchswert ausschalten; Zeit X überprüfen:
Get-Node
wo bekomme ich die "Get-Node"?
-
@speedyblade sagte in Node Red unter Verbrauchswert ausschalten; Zeit X überprüfen:
@mickym sagte in Node Red unter Verbrauchswert ausschalten; Zeit X überprüfen:
Get-Node
wo bekomme ich die "Get-Node"?
Wieso die sind doch alle da?
-
-
-
das meinst du?
-
@speedyblade ja
-