NEWS
Pumpe steuern über Tempdifferenz
-
@rudolf1957 sagte in Pumpe steuern über Tempdifferenz:
Eines meiner Probleme war, die Temperaturwerte aus den DeviceNotes in NodeRed auszulesen.
Nun da ich die Geräte ja nicht habe - kann ich dazu nichts sagen. Du kannst höchstens mal die Ausgaben der Debug Nodes posten und dann muss da ja entweder die Temperatur enthalten sein. Vielleicht in einem Objekt. Stell einfach mal auf das gesamte Nachrichtenobjekt um und poste mal was aus den Device Nodes rauskommt.
-
@rudolf1957 sagte: irgendwo anders im „Home Assistant“ eingetragen wird.
Nein, im Javascript-Adapter von ioBroker wird das Skript editiert und ausgeführt. Wir sind hier im ioBroker-Forum.
-
@mickym
Das ist nicht so einfach, da die DeviceNotes bisher nur etwas ausgeben, wenn ich Temp. Werte im DeviceModul eintrage.
Bei Über oder Unterschreitung des Wertes, kommte es erst zu einem AusgabeWert.
So, gerade kam der Wert.15.3.2023, 23:27:04node: debug 31
a0031401d392beeeeb6cec8e8fae598f : msg.payload : Object
{ id: "0", idx: "0", alias: null, platform: "device", entity_id: "sensor.28_ff641f5989ef_tempera…" … } -
@rudolf1957 Ja da kannst doch die temperatur leicht herauslösen. Du musst halt mal das ganze Objekt hier rein kopieren:
Ansonsten den Wert und den Pfad ermittelst Du einfach:
Wenn du den Pfad rauskopiert hast dann setzt du die payload in einer Change Node. und dann filterst Du halt - dass nur die Temperatur in Deinen Flow kommt.
Wie gesagt kopiere den Wert so wie in der Animation gezeigt und füge ihn hier mit CodeTags ein.
-
@mickym Danke, probiere ich morgen aus! Gute Nacht!
-
@rudolf1957
Ich arbeite weder mit NodeRed noch mit Home Assistant und vielleicht gehen meine Gedanken daher am Problem vorbei und die Antwort stört nur.Aber die Logik, die hinter der Aufgabe steht, ist m.E. recht simpel.
Wenn TempAusgang minus TempEingang > x°K ist schalte Pumpe ein
Wenn TempAusgang minus TempEingang < x°K ist schalte Pumpe ausHysterese beachten, damit das System nicht ins Schwingen kommt.
Also beide Werte auslesen, Differenz berechnen und Pumpensteuerung anlegen.
VG Peter
-
@mickym
Moin, dann schicke ich dir mal das Object! -
@rudolf1957 Du solltest das noch in Code Tags einbinden und über die Schaltfläche "Wert kopieren hier rein kopieren und nicht in dem Du den Text markierst und hierher kopierst.
Deswegen habe ich Dir doch das Bild geschickt. Warum machst Du das nicht?Also bitte direkt auf die Schaltfläche rechts
Wert kopieren und den Inhalt dann hier zwischen Code-Tags reinkopieren:
-
@mickym
Sorry, ich hoffe das ist jetzt besser!
Allerdings Topic + Payload sind nicht in dem Object enthalten. Ich habe keine Ahnung wo Topic + Payload zu finden sind.Da die Sensoren bereits eingebaut sind, bekomme ich nur eine Ausgabe über eine DeviceNode wenn der darin angegebene Wert über, oder unterschritten wird. Jedes Mal muss ich warten, bis dies geschieht. Bisher bin ich daran gescheitert, die DeviceNode anders zur Ausgabe zu zwingen.
Warum machst Du das nicht? - Sorry, war keine Absicht, ich muss mich einfach noch zurecht finden!
code_text 1.Object: {"id":"0","idx":"0","alias":null,"platform":"device","entity_id":"sensor.28_ff641f5989ef_temperature","below":33,"above":32,"from_state":{"entity_id":"sensor.28_ff641f5989ef_temperature","state":"33.0","attributes":{"state_class":"measurement","device_file":"/28.FF641F5989EF/temperature","raw_value":33,"unit_of_measurement":"°C","device_class":"temperature","friendly_name":"Fußbodenheizung Vorlauf"},"last_changed":"2023-03-16T12:38:38.001968+00:00","last_updated":"2023-03-16T12:38:38.001968+00:00","context":{"id":"01GVN6VV5H0P7ZS7T0QC4BHGS1","parent_id":null,"user_id":null}},"to_state":{"entity_id":"sensor.28_ff641f5989ef_temperature","state":"32.8","attributes":{"state_class":"measurement","device_file":"/28.FF641F5989EF/temperature","raw_value":32.8125,"unit_of_measurement":"°C","device_class":"temperature","friendly_name":"Fußbodenheizung Vorlauf"},"last_changed":"2023-03-16T12:39:37.933096+00:00","last_updated":"2023-03-16T12:39:37.933096+00:00","context":{"id":"01GVN6XNPDPBVZ0F663B75G2Y4","parent_id":null,"user_id":null}},"for":null,"description":"numeric state of sensor.28_ff641f5989ef_temperature"}
-
@rudolf1957 Na gut ist das immer noch nicht - ausser dass es in den CodeTags eingebunden ist. Das ist gut.
Schau mal ob Deinen Nachricht in etwa so aussieht:
So was kopiert man - in dem man mit der Maus direkt in die erste Zeile unter der roten Schrift msg.payload fährt und dann auf die Schaltfläche Wert kopieren drückt:
Jedenfalls sieht es so aus, als ob Du da ja bereits irgendwelche Alerts oder Temperaturbereiche eingeben kannst.
Ansonsten das topic und die Eigenschaften zu sehen, musst Du halt das ganze Nachrichtenobjekt ausgeben lassen. (kannst Du in der Debug Node einstellen).
Was mich wundert sind diese Grenzen - keine Ahnung - ob die was mit der Benachrichtigung zu tun haben:
Jedenfalls um einzelne Werte zu extrahieren oder zu überprüfen gehst Du auf den Pfad:
Um zum Beispiel zu selektieren, dass nur Temperatur rauskommt, könnte man vielleicht dieses Element nehmen:
Diesen Pfad gibst Du dann in der Eigenschaft einer Switch Node ein und filterst dann nur noch auf den Wert temperature - dann kommen nur Temperaturwerte durch:
Die aktuelle Temperatur selektierst Du in dem Du die payload eben auf den Pfad setzt der die aktuelle Temperatur ausgibt:
Ich habe jetzt mal folgenden Wert genommen:
darauf setzt Du nun die payload in einer ChangeNode:
Schon bekommst du die Temperaturwerte in Reinform:
Hier Flow zum Testen:
-
@rudolf1957 sagte in Pumpe steuern über Tempdifferenz:
Da die Sensoren bereits eingebaut sind, bekomme ich nur eine Ausgabe über eine DeviceNode wenn der darin angegebene Wert über, oder unterschritten wird. Jedes Mal muss ich warten, bis dies geschieht. Bisher bin ich daran gescheitert, die DeviceNode anders zur Ausgabe zu zwingen.
Wie heissen den diese Nodes die Du da installiert hast?
Schau mal im Paletten- Manager nach.
-
@mickym Danke, für die vielen Infos! Damit sollte ich meiner DifferenzSteuerung näher kommen!
Was mich wundert sind diese Grenzen<< Die gesetzten TempWerte kannst du vernachlässigen, sie dienen nur zum Schnellen Auslösen der Wertübergabe.
Das NoteModul, das die Temperatur aus dem RS485 TempFühler ausliest, heißt Device, aus der Pallette "Home Assistant"
Die Einstellmöglichkeiten von der DeviceNote habe ich unten in das Fenster eingestellt, mit der Einschränkung, dass bei "Values: trigger | action" , nur Trigger funktioniert. Wenn ich "action" aktiviere, bekommt das Modul einen Eingang, schließe ich dann eine InjectNote am Eingang an und löse eine Aktion aus, bekomme ich aber nur Fehlermeldungen - {"code":"unknown_error","message":"Integration 'sensor' does not support device automation actions"}" Alpha version: At this point anything could change or not work.
Found an issue? Post it in issues . Have questions or comments? Post them here".
Hier die Einstellmöglichkeiten vom der DeviceNote
device Configuration Typestring Values: trigger | action Devicestring Id of the device Triggerobject Home Assistant object of the trigger Actionobject Home Assistant object of the action Capabilitiesobject Outputs Value types: config: config properties of the node device id: device id that triggered the node event data: event data received from Home Assistant sent data: data sent to Home Assistant code_text
Deine Vorschläge probiere ich später aus, jetzt muss ich erst einem raus in die Sonne und einkaufen.
-
@rudolf1957 sagte in Pumpe steuern über Tempdifferenz:
Home Assistant
Ja OK - aber dann denke ich bin ich erst mal raus - das sind Dinge die aus der Device Node kommen, die stammen von Home Assistant.
und da kenn ich mich nicht aus. Da solltest Du deine Fragen doch lieber in einem HomeAssistant Forum stellen, das hat mit NodeRed erst mal nichts zu tun.
-
@mickym
Guten Abend, ganz herzlichen Dank für deine Hilfe!
Ebenso auch danke allen anderen die geantwortet haben.
Ich bin zwar noch nicht am Ziel aber zu mindest etwas näher gekommen.
VG
Rudi -
@rudolf1957
Versuche es mal mit diesem flow[ { "id": "899599b8f9de1378", "type": "tab", "label": "Flow 2", "disabled": false, "info": "", "env": [] }, { "id": "458e3bc802ffa358", "type": "api-current-state", "z": "899599b8f9de1378", "name": "", "server": "2a08017d41c42a0a", "version": 3, "outputs": 1, "halt_if": "", "halt_if_type": "str", "halt_if_compare": "is", "entity_id": "sensor.28_ff641f598ee0_temperature", "state_type": "num", "blockInputOverrides": false, "outputProperties": [ { "property": "payload", "propertyType": "msg", "value": "", "valueType": "entityState" }, { "property": "topic", "propertyType": "msg", "value": "Temp1", "valueType": "str" } ], "for": "0", "forType": "num", "forUnits": "minutes", "override_topic": false, "state_location": "payload", "override_payload": "msg", "entity_location": "data", "override_data": "msg", "x": 550, "y": 540, "wires": [ [ "c9415f769ea20817" ] ] }, { "id": "fce1376ac4483678", "type": "inject", "z": "899599b8f9de1378", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "1", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 210, "y": 560, "wires": [ [ "458e3bc802ffa358", "e562b1ee38ae590c" ] ] }, { "id": "e562b1ee38ae590c", "type": "api-current-state", "z": "899599b8f9de1378", "name": "", "server": "2a08017d41c42a0a", "version": 3, "outputs": 1, "halt_if": "", "halt_if_type": "str", "halt_if_compare": "is", "entity_id": "sensor.solis_temperature", "state_type": "num", "blockInputOverrides": false, "outputProperties": [ { "property": "payload", "propertyType": "msg", "value": "", "valueType": "entityState" }, { "property": "topic", "propertyType": "msg", "value": "Temp2", "valueType": "str" } ], "for": "0", "forType": "num", "forUnits": "minutes", "override_topic": false, "state_location": "payload", "override_payload": "msg", "entity_location": "data", "override_data": "msg", "x": 520, "y": 600, "wires": [ [ "c9415f769ea20817" ] ] }, { "id": "80b539375074cdfd", "type": "function", "z": "899599b8f9de1378", "name": "function 5", "func": "msg.topic = \"diff\"\nmsg.payload = msg.payload.Temp2 - msg.payload.Temp1;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1080, "y": 560, "wires": [ [ "19dc43570ca9090f", "61e394b2b1d96a82" ] ] }, { "id": "c9415f769ea20817", "type": "join", "z": "899599b8f9de1378", "name": "", "mode": "custom", "build": "object", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": false, "timeout": "", "count": "2", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 890, "y": 560, "wires": [ [ "80b539375074cdfd", "847e8baca31e6b10" ] ] }, { "id": "19dc43570ca9090f", "type": "debug", "z": "899599b8f9de1378", "name": "debug 6", "active": true, "tosidebar": true, "console": true, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload", "statusType": "auto", "x": 1310, "y": 620, "wires": [] }, { "id": "847e8baca31e6b10", "type": "debug", "z": "899599b8f9de1378", "name": "debug 7", "active": false, "tosidebar": true, "console": true, "tostatus": true, "complete": "payload", "targetType": "msg", "statusVal": "payload", "statusType": "auto", "x": 1070, "y": 640, "wires": [] }, { "id": "61e394b2b1d96a82", "type": "switch", "z": "899599b8f9de1378", "name": "", "property": "payload", "propertyType": "msg", "rules": [ { "t": "gt", "v": "1", "vt": "num" }, { "t": "lt", "v": "1", "vt": "num" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 1390, "y": 460, "wires": [ [ "316918699f3ea2ea" ], [ "0c942921a06f0cb7" ] ] }, { "id": "316918699f3ea2ea", "type": "api-call-service", "z": "899599b8f9de1378", "name": "Pumpe Ein", "server": "2a08017d41c42a0a", "version": 5, "debugenabled": false, "domain": "switch", "service": "turn_on", "areaId": [], "deviceId": [], "entityId": [ "switch.hm_flur_statusanzeige_state_ch3" ], "data": "", "dataType": "jsonata", "mergeContext": "", "mustacheAltTags": false, "outputProperties": [], "queue": "none", "x": 1610, "y": 400, "wires": [ [] ] }, { "id": "0c942921a06f0cb7", "type": "api-call-service", "z": "899599b8f9de1378", "name": "Pumpe Aus", "server": "2a08017d41c42a0a", "version": 5, "debugenabled": false, "domain": "switch", "service": "turn_off", "areaId": [], "deviceId": [], "entityId": [ "switch.hm_flur_statusanzeige_state_ch3" ], "data": "", "dataType": "jsonata", "mergeContext": "", "mustacheAltTags": false, "outputProperties": [], "queue": "none", "x": 1610, "y": 480, "wires": [ [] ] }, { "id": "2a08017d41c42a0a", "type": "server", "name": "Home Assistant", "version": 5, "addon": false, "rejectUnauthorizedCerts": true, "ha_boolean": "y|yes|true|on|home|open", "connectionDelay": true, "cacheJson": true, "heartbeat": false, "heartbeatInterval": "30", "areaSelector": "friendlyName", "deviceSelector": "friendlyName", "entitySelector": "friendlyName", "statusSeparator": ": ", "statusYear": "hidden", "statusMonth": "short", "statusDay": "numeric", "statusHourCycle": "default", "statusTimeFormat": "h:m", "enableGlobalContextStore": false } ]
-
@stefan14
Hallo Stefan14, es funktioniert, nachdem ich die Geräte angepasst habe!
Herzlichen Dank