NEWS
NodeRed BufferParser
-
@alexander_1990 oder das Objekt heißt payload.data. Simuliere halt mit einer inject node das objekt
-
@mickym sorry Micky bin nicht so fit das ich das hin bekomme
könntest du mir die Konfig ausführlicher erklären? der Buffer Parser als node kann das ja oder? wo muss ich payload.data einstellen?
-
@alexander_1990 Also ich hab das mal nachgestellt vielleicht liegt es an Deinen anderen Einstellungen.
Über eine Inject Node habe ich Dein Objekt nachgebildet (solltest Du ja auch tun) und der auf payload.buffer als Eingang verwiesen.
Da gibt es keine Fehler.
Du musst mal schauen, was bei Dir anders ist - hier der Flow zum Import:
-
@mickym hm wirklich sehr merkwürdig... habe deinen Code importiert... und den Buffer Parser wie er war an meinen Modbus Read angehängt und wieder selber Fehler. Verstehe ich nicht ganz...
Habe jetzt aber mal den Buffer Parser des anderen kopiert und jetzt wird mir der richtige Wert angezeigt. Muss ich nicht verstehen.
aber weshalb der Buffer Parser mit bayload.buffer ist komisch.
der Inject unterscheidet sich nicht zu meinem.
21.11.2023, 07:38:01node: debug 19
polling : msg.payload : Object
object
data: array[1]
0: 1
buffer: buffer[2]
0: 0x0
1: 0x121.11.2023, 07:39:09node: debug
msg.payload : Object
object
data: array[1]
0: 0
buffer: buffer[2]
0: 0x0
1: 0x0 -
@alexander_1990 Na ja - dann exportiere Deinen Flow halt aber bitte in CodeTags - mit der Inject Node und der Buffer Node, mit der der Fehler auftritt - wenn man es nicht nachvollziehen kann, ist das halt schwierig.
Bitte allen Code immer in CodeTags einbinden.
-
[ { "id": "307694db7ef6d14c", "type": "tab", "label": "Flow 2", "disabled": false, "info": "", "env": [] }, { "id": "bc4618129e3c331d", "type": "inject", "z": "307694db7ef6d14c", "name": "", "props": [ { "p": "payload.data", "v": "[0]", "vt": "json" }, { "p": "payload.buffer", "v": "[0,0]", "vt": "bin" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "x": 170, "y": 260, "wires": [ [ "425b8349b94cc69a", "424cc1ab750aaba6", "5333f300f58fcf84" ] ] }, { "id": "5333f300f58fcf84", "type": "debug", "z": "307694db7ef6d14c", "name": "debug", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 510, "y": 140, "wires": [] }, { "id": "425b8349b94cc69a", "type": "buffer-parser", "z": "307694db7ef6d14c", "name": "", "data": "payload.buffer", "dataType": "msg", "specification": "spec", "specificationType": "ui", "items": [ { "type": "int16le", "name": "item1", "offset": 0, "length": 1, "offsetbit": 0, "scale": "1", "mask": "" } ], "swap1": "", "swap2": "", "swap3": "", "swap1Type": "swap", "swap2Type": "swap", "swap3Type": "swap", "msgProperty": "payload", "msgPropertyType": "str", "resultType": "keyvalue", "resultTypeType": "return", "multipleResult": false, "fanOutMultipleResult": false, "setTopic": true, "outputs": 1, "x": 350, "y": 260, "wires": [ [] ] }, { "id": "424cc1ab750aaba6", "type": "debug", "z": "307694db7ef6d14c", "name": "input", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 310, "y": 200, "wires": [] }, { "id": "e410ba0907d6488b", "type": "modbus-read", "z": "307694db7ef6d14c", "name": "IDM Verdichter 1", "topic": "", "showStatusActivities": true, "logIOActivities": false, "showErrors": true, "showWarnings": true, "unitid": "1", "dataType": "InputRegister", "adr": "1509", "quantity": "1", "rate": "1", "rateUnit": "m", "delayOnStart": false, "startDelayTime": "", "server": "e7c103762c33db8f", "useIOFile": false, "ioFile": "", "useIOForPayload": false, "emptyMsgOnFail": true, "x": 140, "y": 400, "wires": [ [ "cfbcb681ae4e8015" ], [ "e678b3f79fb4fda9" ] ] }, { "id": "853b1b3ad998b1c2", "type": "ha-sensor", "z": "307694db7ef6d14c", "name": "IDM Verdichter 1 Status", "entityConfig": "92370e09c49793eb", "version": 0, "state": "payload", "stateType": "msg", "attributes": [], "inputOverride": "allow", "outputProperties": [], "x": 930, "y": 400, "wires": [ [] ] }, { "id": "e678b3f79fb4fda9", "type": "debug", "z": "307694db7ef6d14c", "name": "debug 20", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 340, "y": 440, "wires": [] }, { "id": "cfbcb681ae4e8015", "type": "buffer-parser", "z": "307694db7ef6d14c", "name": "", "data": "payload", "dataType": "msg", "specification": "spec", "specificationType": "ui", "items": [ { "type": "int16be", "name": "item1", "offset": 0, "length": 1, "offsetbit": 0, "scale": "1", "mask": "" } ], "swap1": "", "swap2": "", "swap3": "", "swap1Type": "swap", "swap2Type": "swap", "swap3Type": "swap", "msgProperty": "payload", "msgPropertyType": "str", "resultType": "value", "resultTypeType": "return", "multipleResult": true, "fanOutMultipleResult": true, "setTopic": true, "outputs": 1, "x": 530, "y": 400, "wires": [ [ "853b1b3ad998b1c2" ] ] }, { "id": "935b553623270170", "type": "modbus-read", "z": "307694db7ef6d14c", "name": "IDM Verdichter 1", "topic": "", "showStatusActivities": true, "logIOActivities": false, "showErrors": true, "showWarnings": true, "unitid": "1", "dataType": "InputRegister", "adr": "1509", "quantity": "1", "rate": "1", "rateUnit": "m", "delayOnStart": false, "startDelayTime": "", "server": "e7c103762c33db8f", "useIOFile": false, "ioFile": "", "useIOForPayload": false, "emptyMsgOnFail": true, "x": 140, "y": 560, "wires": [ [ "664603dab06e7c36" ], [] ] }, { "id": "664603dab06e7c36", "type": "buffer-parser", "z": "307694db7ef6d14c", "name": "", "data": "payload.buffer", "dataType": "msg", "specification": "spec", "specificationType": "ui", "items": [ { "type": "int16le", "name": "item1", "offset": 0, "length": 1, "offsetbit": 0, "scale": "1", "mask": "" } ], "swap1": "", "swap2": "", "swap3": "", "swap1Type": "swap", "swap2Type": "swap", "swap3Type": "swap", "msgProperty": "payload", "msgPropertyType": "str", "resultType": "keyvalue", "resultTypeType": "return", "multipleResult": false, "fanOutMultipleResult": false, "setTopic": true, "outputs": 1, "x": 530, "y": 560, "wires": [ [ "73d11eaf5c5b3662" ] ] }, { "id": "73d11eaf5c5b3662", "type": "ha-sensor", "z": "307694db7ef6d14c", "name": "IDM Verdichter 1 Status", "entityConfig": "92370e09c49793eb", "version": 0, "state": "payload", "stateType": "msg", "attributes": [], "inputOverride": "allow", "outputProperties": [], "x": 930, "y": 560, "wires": [ [] ] }, { "id": "e7c103762c33db8f", "type": "modbus-client", "name": "IDM-Wärmepumpe", "clienttype": "tcp", "bufferCommands": true, "stateLogEnabled": false, "queueLogEnabled": false, "failureLogEnabled": true, "tcpHost": "192.168.188.25", "tcpPort": "502", "tcpType": "DEFAULT", "serialPort": "/dev/ttyUSB", "serialType": "RTU-BUFFERD", "serialBaudrate": "9600", "serialDatabits": "8", "serialStopbits": "1", "serialParity": "none", "serialConnectionDelay": "100", "serialAsciiResponseStartDelimiter": "0x3A", "unit_id": "1", "commandDelay": "1", "clientTimeout": "2000", "reconnectOnTimeout": true, "reconnectTimeout": "3000", "parallelUnitIdsAllowed": true, "showWarnings": true, "showLogs": true }, { "id": "92370e09c49793eb", "type": "ha-entity-config", "server": "ad1ca830.06e1e8", "deviceConfig": "d0bbe7316be5f16e", "name": "IDM Verdichter 1 Status", "version": "6", "entityType": "sensor", "haConfig": [ { "property": "name", "value": "IDM Verdichter 1 Status" }, { "property": "icon", "value": "" }, { "property": "entity_category", "value": "" }, { "property": "entity_picture", "value": "" }, { "property": "device_class", "value": "" }, { "property": "unit_of_measurement", "value": "" }, { "property": "state_class", "value": "" } ], "resend": false, "debugEnabled": false }, { "id": "ad1ca830.06e1e8", "type": "server", "name": "Home Assistant", "addon": true, "rejectUnauthorizedCerts": true, "ha_boolean": "", "connectionDelay": false, "cacheJson": false, "heartbeat": false, "heartbeatInterval": "", "statusSeparator": "", "enableGlobalContextStore": false }, { "id": "d0bbe7316be5f16e", "type": "ha-device-config", "name": "IDM Verdichter 1 Status", "hwVersion": "", "manufacturer": "Node-RED", "model": "", "swVersion": "" } ]
-
@alexander_1990 Nun mit Deinen Hardware Nodes kann ich leider nichts anfangen - da ich weder Modbus noch HomeAssistant habe.
Das Einzige was Du noch machen kannst, damit man das ggf. nachvollziehen kann - ich denke die untere Buffer-Node ist korrekt, ist dass Du in der Debug 20 Node Dir das komplette Nachrichtenobjekt ausgeben lässt und es hier in CodeTags einstellst, in dem Du Wert über die Schaltfläche Wert kopieren aus dem Debug Fenster in die Zwischenablage kopierst.
Nur so kann man ggf. nachvollziehen, welche Eigenschaft vielleicht stört.
Wichtig ist das die debug 20 Node noch die Originalnachricht von modbus enthält. Anders kann ich es nicht nachvollziehen.
-
@mickym Hallo Micky sorry für die späte Rückmeldung! Vielen Dank für deine Antwort!
Also so sieht die Sache aktuell aus!
Eigentlich müsste es aktuell so sein dass Verdichter 1 der Wert 0 sein müsste und Verdichter 2 der Wert 1
{"data":[256],"buffer":[1,0]}
{"data":[1],"buffer":[0,1]}
deswegen dachte ich dass vll. der zweite Wert aus Buffer der richtige sein könnte?
aktuell bekomme ich mit meinem Buffer parser aber nur den Wert 256 und 1
-
@alexander_1990 nun die Parser node arbeitet doch korrekt. Wenn dich aus dem buffer aber halt nur das 2. Byte interessiert dann musst halt Byte mit einem Offset nehmen und nicht eine int16 Zahl. Ansonsten ist doch klar, dass beide Bytes als eine Zahl interpretiert werden. Ob das so ist kann ich nicht sagen, da musst du in Deiner Dokumentation nachschauen, aber wie gesagt, wenn Du nur das 2. Byte interpretieren willst, dann musst das halt angeben. Kann ja auch sein, dass Byte 1 für den 1. verdichter steht und Byte 2 Förden 2. verdichter. Wenn das auch noch die gleiche Adresse ist, dann würde ich beide Bytes auch nicht als Zahl sondern als Boolean auslesen.
-
@mickym Danke Dir für dein schnelles Feedback! ich werde das mal genauer anschauen mit den Zuständen, aber Verdichter 1 wird aus dem Register 1509 und Verdichter 2 aus Register 1510 ausgelesen und ich dachte eben dass nur die Zahl interessiert.
Kannst du mir sagen wie ich den buffer parser modifizieren muss um speziell den zweiten Wert aus dem Buffer raus zu kriegen und den als Zahl ausgeben zu lassen?
{"data":[256],"buffer":[1,0]}
{"data":[1],"buffer":[0,1]} -
-
@mickym viielen herzlichen Dank!! bekomme aber nun einen Fehler eine Kleinigkeit passt wohl noch nicht.
8.1.2024, 17:59:39node: IDM Verdichter 1 Status
msg : error
"HomeAssistantError: expected bool for dictionary value @ data['state']. Got {'item1': 0}" -
Na dann musst Du den Haken setzen, dass Du einzelne Nachrichten haben willst.
und wenn ein Boolean erwartet wird dann kannst Du das auch von Byte auf Boolean umstellen.
und nimmst dann bei dem Bool - das Bit 0 des Bytes.
-
@mickym ich glaube..... es sieht gut aus! kaum zu glauben alle anderen Register habe ich regulär auslesen können nur die Verdichter haben so komische Werte
jedenfalls vielen vielen herzlichen Dank schonmal - hätteich nicht hinbekommen! Ich beobachte das mal noch etwas aber freue mich sehr nun!