NEWS
Function Node welche zwei Werte vergleicht
-
@mickym
@mickym
ich begreife die Logik nicht.
Habs probiert.
Wieso bekommt jetzt nach Ablauf der Pause der shelly kein true mehr aber Pumpe schon?[ { "id": "c00995b3e526eedf", "type": "shelly-gen2", "z": "b7365eb2cd9f043a", "hostname": "192.168.1.110", "description": "", "mode": "polling", "server": "", "outputmode": "event", "uploadretryinterval": 5000, "pollinginterval": "60000", "pollstatus": true, "getstatusoncommand": true, "devicetype": "Relay", "outputs": 1, "x": 3020, "y": 600, "wires": [ [ "f95b5910053d7931", "12d5210d37cca83a" ] ] }, { "id": "12d5210d37cca83a", "type": "debug", "z": "b7365eb2cd9f043a", "name": "Status shelly", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 3230, "y": 520, "wires": [] }, { "id": "f95b5910053d7931", "type": "switch", "z": "b7365eb2cd9f043a", "name": "Check WP", "property": "payload.switch0.output", "propertyType": "msg", "rules": [ { "t": "true" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 3210, "y": 600, "wires": [ [ "a81280bcde91cb43" ] ] }, { "id": "a81280bcde91cb43", "type": "change", "z": "b7365eb2cd9f043a", "name": "Setze Laufzeit", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "LaufzeitWP", "tot": "flow" }, { "t": "set", "p": "payload", "pt": "msg", "to": "$exists(payload) ? payload : 0", "tot": "jsonata" }, { "t": "set", "p": "payload", "pt": "msg", "to": "payload + 1", "tot": "jsonata" }, { "t": "set", "p": "LaufzeitWP", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 3400, "y": 600, "wires": [ [ "8dc301ec673ad604", "6952778507c39b73", "8b7cf8516fdd7fa9" ] ] }, { "id": "8dc301ec673ad604", "type": "debug", "z": "b7365eb2cd9f043a", "name": "Laufzeit", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 3580, "y": 520, "wires": [] }, { "id": "6952778507c39b73", "type": "mqtt out", "z": "b7365eb2cd9f043a", "name": "", "topic": "Laufzeit WP", "qos": "", "retain": "true", "respTopic": "", "contentType": "", "userProps": "", "correl": "", "expiry": "", "broker": "642915c7f69dceb8", "x": 3570, "y": 680, "wires": [] }, { "id": "8b7cf8516fdd7fa9", "type": "switch", "z": "b7365eb2cd9f043a", "name": "Laufzeitlimit erreicht?", "property": "payload", "propertyType": "msg", "rules": [ { "t": "gt", "v": "2", "vt": "num" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 3640, "y": 600, "wires": [ [ "a99fb16f9e1aaf53" ] ] }, { "id": "a99fb16f9e1aaf53", "type": "trigger", "z": "b7365eb2cd9f043a", "name": "", "op1": "false", "op2": "0", "op1type": "bool", "op2type": "str", "duration": "0", "extend": false, "overrideDelay": false, "units": "ms", "reset": "true", "bytopic": "all", "topic": "topic", "outputs": 1, "x": 3860, "y": 600, "wires": [ [ "d32930fee61a93db" ] ] }, { "id": "d32930fee61a93db", "type": "trigger", "z": "b7365eb2cd9f043a", "name": "PauseWP ", "op1": "false", "op2": "true", "op1type": "bool", "op2type": "bool", "duration": "1", "extend": false, "overrideDelay": false, "units": "min", "reset": "", "bytopic": "all", "topic": "topic", "outputs": 2, "x": 4040, "y": 600, "wires": [ [ "0df1fcecdcb502cd", "b7384ed837f983ef" ], [ "878c47ba3fe7f98d", "b7384ed837f983ef" ] ] }, { "id": "d64cd3672f38dec5", "type": "debug", "z": "b7365eb2cd9f043a", "name": "Ergebnis für Shelly 1", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 4480, "y": 540, "wires": [] }, { "id": "0df1fcecdcb502cd", "type": "change", "z": "b7365eb2cd9f043a", "name": "PauseWP", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "{\t \"method\": \"Switch.Set\",\t \"parameters\" : {\t \"id\" : 0,\t \"on\": payload \t }\t}", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 4220, "y": 540, "wires": [ [ "d64cd3672f38dec5" ] ] }, { "id": "878c47ba3fe7f98d", "type": "change", "z": "b7365eb2cd9f043a", "name": "", "rules": [ { "t": "set", "p": "LaufzeitWP", "pt": "flow", "to": "0", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 4240, "y": 720, "wires": [ [ "a99fb16f9e1aaf53" ] ] }, { "id": "dbb3de1955f4208b", "type": "mqtt in", "z": "b7365eb2cd9f043a", "name": "", "topic": "Laufzeit WP", "qos": "2", "datatype": "auto-detect", "broker": "642915c7f69dceb8", "nl": false, "rap": true, "rh": 0, "inputs": 0, "x": 3790, "y": 740, "wires": [ [ "80e2f07516e1e78f" ] ] }, { "id": "80e2f07516e1e78f", "type": "change", "z": "b7365eb2cd9f043a", "name": "", "rules": [ { "t": "set", "p": "LaufzeitWP", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 3980, "y": 740, "wires": [ [] ] }, { "id": "b7384ed837f983ef", "type": "change", "z": "b7365eb2cd9f043a", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "payload ? \"Pumpe ein 1\" : \"Pumpe aus 0\"", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 4270, "y": 600, "wires": [ [ "f44b626f907ee971" ] ] }, { "id": "f44b626f907ee971", "type": "debug", "z": "b7365eb2cd9f043a", "name": "Ergebnis für Poolpumpe1 nach pause", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 4550, "y": 600, "wires": [] }, { "id": "642915c7f69dceb8", "type": "mqtt-broker", "name": "", "broker": "192.168.1.154", "port": "1883", "clientid": "", "autoConnect": true, "usetls": false, "protocolVersion": "4", "keepalive": "60", "cleansession": true, "autoUnsubscribe": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "birthMsg": {}, "closeTopic": "", "closeQos": "0", "closePayload": "", "closeMsg": {}, "willTopic": "", "willQos": "0", "willPayload": "", "willMsg": {}, "userProps": "", "sessionExpiry": "" } ]
-
Nun Du musst den ganzen Flow beachten - sprich der obige Flow gehört ja mit dazu, da ja nicht in jedem Fall eingeschaltet werden soll, wenn die Laufzeit abgelaufen ist, sondern nur dann, wenn entsprechender Überschuss beim Pausenende vorhanden ist.
Sowas ist schon macht keinen Sinn, weil Du gleichzeit AUS- und EINSCHALTEST.
Das ist der Originalflow und der SCHALTER nur die Pumpe aus und dann startet die Pause.
Gleichzeitig musst Du aber doch den Hauptflow betrachten.
Hier wird doch ein Wiedereinschalten verhindert, weil die max. Laufzeit überschritten ist. Das Ausschalten spielt keine Rolle, weil es ja eh schon ausgeschaltet ist bzw. wie unten geändert ausgeschaltet wird.
Wenn die Zwangspause vorbei ist, dann wird gar nichts geschaltet, sondern lediglich die Laufzeit wieder auf 0 gesetzt und der Block zurückgesetzt.
Das Einschalten muss ja dann auch wieder der normalen Logik folgen und darf ja nur erfolgen, wenn Soc und Überschuss ein Einschalten erfordern. Trotzdem ist mir noch ein Fehler aufgefallen, da der Filter oben blockiert - deswegen musst Du das Ausschaltsignal nach oben zu dem Filter durchreichen! Ich zeig es dir in der folgenden Abbildung:
PS: Entschuldige manchmal meine Ausdrucksweise. Ich gebe mir wieder mehr Mühe um die korrekte Ausdrucksweise.
-
Was ggf. auch nochzu bedenken ist, ob Du die Laufzeit ggf. zurücksetzt, wenn eine Pause durch das Ausschalten der Pumpe nicht mehr erforderlich ist, da sie eh lange genug ausgeschaltet war.
-
@mickym
jetztz bekomme ich aber am Ende kein ein mehr weder für Shelly noch für Homeserver -
@1984chris Ja weil wahrscheinlich die Laufzeit erreicht wurde. Lösche mal im Kontext die Laufzeit einfach.
-
@mickym sagte in Function Node welche zwei Werte vergleicht:
Was ggf. auch nochzu bedenken ist, ob Du die Laufzeit ggf. zurücksetzt, wenn eine Pause durch das Ausschalten der Pumpe nicht mehr erforderlich ist, da sie eh lange genug ausgeschaltet war.
Hier mal die Änderung um die Auszeiten zu zählen - damit wird quasi auch wenn über Nacht eh alles ausgeschaltet ist, dass dann die Laufzeit zurückgestellt wird. Du musst halt die Pausenzeit genauso anpassen.
Hier zum Import:
-
@1984chris sagte in Function Node welche zwei Werte vergleicht:
@mickym
jetztz bekomme ich aber am Ende kein ein mehr weder für Shelly noch für HomeserverAch ja und vergiss nicht das Pollintervall in der Shelly Node auf 60000 ms zu setzen. Die Werte für die Laufzeit und die Pause sind ja Minuten.
-
@mickym
es wird kein ein signal durchgeleitet... -
@1984chris Gut - dann musst Du mit debug Nodes schauen, wo es hängen bleibt.
Aktiviere halt mal alle Debug Nodes bzw. schau wie weit die Nachrichten kommen - ggf. neue Debug Nodes dran machen.
Hast Du in dem Switch
auch die max. Laufzeit richtig eingetragen?
-
@mickym
es liegt an der Laufzeitlimit erreicht Node im Hauptast habe dahinter ein Debug Node und da wird nix angezeigt. -
@1984chris
habe die Laufzeit auf 2 runtergesetzt zum testen... -
@1984chris Gut und hast Du den Wert da drin angepasst - da waren ja noch 5 Minuten drin zum Test.
-
@1984chris Nein im Gegenteil - das ist das Maximum an Laufzeit. In der Realität wenn Du 5 Stunden Laufzeit haben willst, muss da <= 300 drin stehen.
Genauso wie Du unten dann Laufzeit erreicht > 300 einstellen musst.
-
@mickym
mit 2 hab ich Minuten gemeint. -
@1984chris sagte in Function Node welche zwei Werte vergleicht:
@mickym
mit 2 hab ich Minuten gemeint.Ja trotzdem oben wird durchgelassen, wenn die Laufzeit KLEINER als x Minuten ist.
Wenn Du da 2 einträgst, dann blockiert es doch bereits bei der 2. Minute Laufzeit
-
@mickym
hab den Fehler schon es war unter Eigenschaft msg und nicht flow eingestellt.
hab aber nichts geändert... -
@1984chris Trag da oben 300 ein. Es wird durchgelassen, wenn die Kontextvariable LaufzeitWP kleiner als der eingetragene Wert ist.
-
Um bei Testen den Filter zurückzusetzen kannst Du mit Inject ein msg.reset in den filter einspeisen.
-
Und zeig mal die Kontextvariable LaufzeitWP aus dem Kontextfenster.
-