Hallo,
ich versuche gerade mit dem Modul ModbusAttr mein Janiza UMG96s via Modbus auszulesen, habe aber Probleme bei der Datenaufbereitung. Wenn ich das Holding Register 201 (Spannung L2) auslese bekomme ich folgende Rohwerte im Reading angezeigt:
V_U2 hex=0927, string=.', s=9993, s>=2343, S=9993, S>=2343
Für mich wäre "s>" das richtige Format (der Wert wird mit einer Nachkommastelle vom Janitza übertragen). Ich habe also entsprechend das Attribut obj-h201-unpack s> hinzugefügt. Im Reading steht dann:
V_U2 hex=32333431, string=2341, s=13106, s>=12851, S=13106, S>=12851, i=13106, i>=12851, I=13106, I>=12851, f=2.62225485769818e-09, f>=1.04310382553763e-08
Damit schein dann der Wert als String vorzuliegen. Darauf habe ich dann versucht den String-Wert über das Attribut obj-h201-format %.1f zu formatieren. Dann steht allerdings 0.0 im Reading.
Welche Formatierung muss ich denn durchführen, damit in meinem Reading hinterher die "234.1 V" stehen?
Ok, ich glaube die erste Hürde habe ich genommen. Es fehlte noch das Attribut expr, mit dem der Wert übergeben wird. Damit das komma an der richtigen Stelle sitzt, musste ich noch mit 10 dividieren. Fertig sieht es dann so aus:
obj-h201-expr $val/10
obj-h201-unpack s>
obj-h201-format %.1f
wenn ich daraus nun aber eine Parsinfo Struktur ableite, bekomme ich wieder 0.0 in den readings:
my %UMG69parseInfo = (
"h200"=> {
name => "U_L1",
unpack => "s>",
expr => '$val\10',
format => '%.1f',
reading => "Voltage_L1",
poll => 1
},
"h201"=> {
name => "U_L2",
unpack => "s>",
expr => '$val\10',
format => '%.1f',
reading => "Voltage_L2",
poll => 1
},
"h202"=> {
name => "U_L3",
unpack => "s>",
expr => '$val\10',
format => '%.1f',
reading => "Voltage_L3",
poll => 1
},
);
Division ist "/" nicht "\" :-[ ;D