Schau mal - ich glaube ich habe hier sowas ähnliches mit NodeRed unterstützt.
Auch wenn Du den modbus Adapter verwendest - kannst Du evtl NodeRed als Logikmaschine nutzen. Ich selbst habe kein Modbus und kenne weder die Nodes noch den Modbus Adapter. Aber hier war zum Beispiel wie man einen Float Wert umwandeln muss, dass es Modbus versteht.
Ansonsten hat Steve (ist zwar Node Red Guru) auch in JS gezeigt, wie Du Werte über die Zerlegung in das high und low Array in Modbus schreibst.
6517b566-b035-41a7-8c82-4db693032fdd-image.png
Deswegen schau Dir mal diesen Thread an: https://forum.iobroker.net/topic/65273/node-red-modbus und dann das Javascript von Steve: https://stevesnoderedguide.com/modbus-writing-data
Der hat ein paar Beispiele, wie Du bestimmte Werte konvertieren musst.
Für mich sieht das so aus:
The return of the Voltage value is two bytes,High-bit in the former and low-bit
in the post,convert it to decimal and divided by 100, is the Voltage value, Unit
dass Du hier genau den Weg rückwärts machen mußt.
Ich hab hier mal einen Flow der Konvertierung vor und rückwärts gemacht:
1012a9e6-6fd3-4f91-8d0f-e3eadca9728c-image.png
Sprich Du musst die beiden Bytes wieder in einen Buffer umwandeln.
Ich hab mal das was in dem Flow rückkonvertiert wurde in JS umgesetzt:
var highByte = 17096;
var lowByte = 0;
var buf0 = Buffer.alloc(2);
var buf1 = Buffer.alloc(2);
buf0.writeUint16BE(highByte);
buf1.writeUint16BE(lowByte);
var buf = Buffer.concat([buf0,buf1]);
console.log (buf);
var n = buf.readFloatBE(0);
console.log (n);
97d55b45-2101-4e61-a2fe-902069919271-image.png
Damit hast du dann die Dezimalzahl die Du durch 100 teilen musst - oder was auch immer.