NEWS
Wasserregulierung Aquarium
-
@aphofis Gut den false Inject kannst Du dir ja sparen, weil die Berechnung ja NUR stattfinden, wenn das Magnetventil auf false triggert. Sprich du startest die Berechnung mit einem eigenen Flow und filterst die Nachrichten aus, dass nur noch true als payload durchkommt.
Ja Du kannst das jetzt mit Testdatenpunkten machen - später langt es mit Inject-Nodes zu simmulieren. Aber so ist das doch OK.
Also triggere mit dem Magnetventil die Berechnung, wenn die payload false ist und zeige den Flow. Wir entwickeln den Schritt für Schritt aber mit STANDARD Nodes.
-
@mickym
Jetzt wird erst auf false die Rechnung ausgegeben. und in den Datenpunkt Test Wasser Kallibriert eingetragen.
[ { "id": "e96d40e5c03c8e73", "type": "tab", "label": "Flow 2", "disabled": false, "info": "", "env": [] }, { "id": "8eeeee9dee4f69dd", "type": "junction", "z": "e96d40e5c03c8e73", "x": 180, "y": 80, "wires": [ [ "ed6a34a53f4a5f8a" ] ] }, { "id": "4135d8f01c675d48", "type": "debug", "z": "e96d40e5c03c8e73", "name": "ml aktuell", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 880, "y": 180, "wires": [] }, { "id": "d603f22a313281eb", "type": "calculator", "z": "e96d40e5c03c8e73", "name": "multi ml", "inputMsgField": "payload", "outputMsgField": "payload", "operation": "mult", "constant": "5.21", "round": true, "truncate": false, "decimals": "2", "decimals2": 0, "x": 660, "y": 180, "wires": [ [ "4135d8f01c675d48", "be1fec4a5a0c39ea" ] ], "outputLabels": [ "ml" ], "icon": "font-awesome/fa-subscript" }, { "id": "17fc122a8cc82dc5", "type": "ioBroker in", "z": "e96d40e5c03c8e73", "name": "Schwimmer", "attrname": "payload", "topic": "0_userdata.0.Test_Wasser.Test_Schwimmer", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "outFormat": "MQTT", "x": 70, "y": 120, "wires": [ [ "8eeeee9dee4f69dd" ] ] }, { "id": "9f9432b0c01ceb15", "type": "ioBroker get", "z": "e96d40e5c03c8e73", "name": "Wasserdurchfluß", "topic": "0_userdata.0.Test_Wasser.Test_Durchfluss", "attrname": "payload", "payloadType": "value", "errOnInvalidState": "nothing", "x": 490, "y": 180, "wires": [ [ "d603f22a313281eb" ] ] }, { "id": "df1de44c69ce020f", "type": "inject", "z": "e96d40e5c03c8e73", "name": "", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "true", "payloadType": "str", "x": 90, "y": 80, "wires": [ [ "8eeeee9dee4f69dd" ] ] }, { "id": "ed6a34a53f4a5f8a", "type": "ioBroker out", "z": "e96d40e5c03c8e73", "name": "Magnetventil", "topic": "0_userdata.0.Test_Wasser.Test_Magnetventil", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 890, "y": 80, "wires": [] }, { "id": "be1fec4a5a0c39ea", "type": "ioBroker out", "z": "e96d40e5c03c8e73", "name": "Wasser errechnet ml", "topic": "0_userdata.0.Test_Wasser.Test_Wasser_kallibriert", "ack": "true", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 920, "y": 220, "wires": [] }, { "id": "2eb8ac5cc0f35dca", "type": "ioBroker in", "z": "e96d40e5c03c8e73", "name": "Magnetventil", "attrname": "payload", "topic": "0_userdata.0.Test_Wasser.Test_Magnetventil", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "outFormat": "MQTT", "x": 70, "y": 180, "wires": [ [ "74d17f220e91338e" ] ] }, { "id": "fb8e38c311376891", "type": "inject", "z": "e96d40e5c03c8e73", "name": "", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "false", "payloadType": "str", "x": 90, "y": 40, "wires": [ [ "8eeeee9dee4f69dd" ] ] }, { "id": "74d17f220e91338e", "type": "switch", "z": "e96d40e5c03c8e73", "name": "", "property": "payload", "propertyType": "msg", "rules": [ { "t": "eq", "v": "false", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 270, "y": 180, "wires": [ [ "9f9432b0c01ceb15" ] ] } ]
-
@aphofis Ja Du machst zwar immer mehr, als wir zusammen entwickeln aber immerhin bist Du jetzt auf dem richtigen Weg, aber schmei0 diese Kalkulator Node weg - sondern lerne mit den Standardnodes umzugehen. Es gibt NOdes die man sich zusätzlich installieren kann, aber das braucht man nicht.
Für Berechnungen nutzt man JSONATA. Also schmeiß das weg und nutze die Node, die man nutzt um ein payload zu Ändern.
-
-
Sowas braucht kein Mensch und ICH werde diese NODES nicht installieren
Um eine payload zu ÄNDERN gibt es eine Standardnode. Wie heißt die wohl ÄNDERN = ...... - NOde
-
@mickym
ok also change node
hab die calculator Node rausgeschmissen. -
@aphofis Sehr gut
So also mit der Change Node kannst Du eine payload innerhalb des Nachrichtenobjektes verschieben, sie neu schreiben, ändern oder löschen.
Sind dir diese 4 Fälle geläufig?
Importiere Dir mal diesen Flow - und schau Dir an, was wir mit dem Nachrichtenobjekt machen können:
Damit siehst Du auch wie ein minimales Nachrichtenobjekt in der Regel aussieht. Schau Dir auch an, was der UNTERSCHIED ist, wenn Du Dir das komplette Nachrichtenobjekt ausgibst oder nur die payload Eigenschaft des Nachrichtenobjektes.
-
@mickym bekannt ja aber was genau verschieben und setzen heißt nicht so genau
-
Ja hab ich gesehen.
- Debug hat den Wert 20
- Debug hat den Wert 0
-
@aphofis sagte in Wasserregulierung Aquarium:
@mickym bekannt ja aber was genau verschieben und setzen heißt nicht so genau
Na deswegen machen wir erst mal diese Grundlagen.
Also importiere den unteren Flow - und Du musst wissen, welche Datentypen es gibt.
Also: Zeichenkette, Boolean, Zahl, Objekt, Array.
-
@aphofis Na siehst Du dass wir das GESAMTE Nachrichtenobjekt ausgegeben haben?
-
@aphofis sagte in Wasserregulierung Aquarium:
Ja hab ich gesehen.
- Debug hat den Wert 20
- Debug hat den Wert 0
Nein - die 2. Debug Node enthält nicht den Wert 0 sondern eine leere Zeichenkette.
-
@mickym
Ja die Datentypen sind mir bekannt. Wir wollen ja nur mit value (Zahlen) arbeiten. -
@mickym sagte in Wasserregulierung Aquarium:
@aphofis sagte in Wasserregulierung Aquarium:
Ja hab ich gesehen.
- Debug hat den Wert 20
- Debug hat den Wert 0
Nein - die 2. Debug Node enthält nicht den Wert 0 sondern eine leere Zeichenkette.
-
@mickym sagte in Wasserregulierung Aquarium:
@aphofis sagte in Wasserregulierung Aquarium:
Ja hab ich gesehen.
- Debug hat den Wert 20
- Debug hat den Wert 0
Nein - die 2. Debug Node enthält nicht den Wert 0 sondern eine leere Zeichenkette.
@mickym sagte in Wasserregulierung Aquarium:
@aphofis sagte in Wasserregulierung Aquarium:
Ja hab ich gesehen.
- Debug hat den Wert 20
- Debug hat den Wert 0
Nein - die 2. Debug Node enthält nicht den Wert 0 sondern eine leere Zeichenkette.
Jupp oder halt eine leere Zeichenkette durch die Change Node
-
@aphofis sagte in Wasserregulierung Aquarium:
@mickym
Ja die Datentypen sind mir bekannt. Wir wollen ja nur mit value (Zahlen) arbeiten.Ja aber willst Du ein paar Grundlagen lernen?
-
@mickym auf jeden Fall ich bin dabei und versuche dem zu folgen was du schreibst
-
@aphofis Wie ist ein Objekt definiert, wie ist ein Array definiert?
und siehst du den Unterschied, ob man sich ein Nachrichtenobjekt ausgibt oder nur die Eigenschaft eines Objektes?
Ändere mal in der 1. Debug Node - die Ausgabe nur auf die payload und kannst Du mir den Unterschied erklären?
-
@mickym Dann wird aus msg:Object msg:payload Number also kann man damit schon festlegen ob man ein Objekt oder ob ein Value erwartet wird bzw ausgegeben wird.
hatte vergessen das man im Debug den Pfeil anklicken kann wo man dann sieht das eine object ID und das payload ausgegeben wird dh die Change Node filtert das man dann nur den payload wert hat. -
@aphofis sagte in Wasserregulierung Aquarium:
@mickym Dann wird aus msg:Object msg:payload Number also kann man damit schon festlegen ob man ein Objekt oder ob ein Value erwartet wird bzw ausgegeben wird
Nein, eine Debug Node legt gar nichts fest, sondern sie gibt entweder das gesamte Nachrichtenobjekt oder eine Eigenschaft des Datenpunktes aus.
Mach mal wie bei mir eine 2 Debug Node an die Inject Node und gib nur den Inhalt der Inject Node aus.
Dann steht noch aus, wie ein Array und ein Objekt definiert ist.
Wir werden das soweit klären - hier nochmal, das gesamte Nachrichtenobjekt und nur die payload.