From 880794f966727399d5a2230520e2168f777a5d79 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Tue, 10 Sep 2019 15:31:36 +0200 Subject: [PATCH] converter for twos-complement fixed decimal numbers --- src/Converters.py | 13 +++++++++++++ src/registers.json | 10 +++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/Converters.py b/src/Converters.py index 05319a8..07f94fa 100644 --- a/src/Converters.py +++ b/src/Converters.py @@ -6,6 +6,14 @@ from struct import pack, unpack +def fix1twos(x): + x = x[0] + r = x + if x & 0x8000: + r = ((x - 1) ^ 0xffff) * -1 + return r / 10 + + Converters = { "dht20TOFloat": { "in": lambda x : float(x[0]) / 10.0, @@ -14,5 +22,10 @@ Converters = { "uint32": { "in": lambda x : unpack('L', pack('HH', *x))[0], "out": lambda x : unpack('HH', pack('L', int(x))) + }, + "fix1twos": { + "in": lambda x: fix1twos(x), + "out": None } } + diff --git a/src/registers.json b/src/registers.json index 0745362..401f6ce 100644 --- a/src/registers.json +++ b/src/registers.json @@ -90,7 +90,7 @@ { "args": { "address": 1, - "converter": "dht20TOFloat", + "converter": "fix1twos", "count": 1, "label": "wago1", "publishTopic": "IoT/Measurement/Modbus2/Wago1", @@ -103,14 +103,14 @@ { "args": { "address": 0, - "converter": "dht20TOFloat", + "converter": "fix1twos", "count": 1, - "label": "wago0", - "publishTopic": "IoT/Measurement/Modbus2/Wago0", + "label": "Freezer", + "publishTopic": "IoT/Measurement/Modbus2/Freezer", "scanRate": 1.0, "unit": 11, "updateOnly": false }, "type": "InputRegisterDatapoint" } -] \ No newline at end of file +]