From bf3475a79684431e34e330e432048fc455a4b9d4 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Wed, 17 Jul 2019 12:18:48 +0200 Subject: [PATCH] improve bit output --- src/RegisterDatapoint.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/RegisterDatapoint.py b/src/RegisterDatapoint.py index 78e00ee..5a3e32c 100644 --- a/src/RegisterDatapoint.py +++ b/src/RegisterDatapoint.py @@ -111,7 +111,8 @@ class ReadOnlyDatapoint(AbstractModbusDatapoint): class InputRegisterDatapoint(ReadOnlyDatapoint): - def __init__(self, label=None, unit=None, address=None, count=None, scanRate=None, updateOnly=None, publishTopic=None, converter=None): + def __init__(self, label=None, unit=None, address=None, count=None, scanRate=None, updateOnly=None, + publishTopic=None, converter=None): super().__init__(label, unit, address, count, scanRate, updateOnly, publishTopic, converter) self.type = 'input register' @@ -143,9 +144,11 @@ class InputRegisterDatapoint(ReadOnlyDatapoint): class DiscreteInputDatapoint(ReadOnlyDatapoint): - def __init__(self, label=None, unit=None, address=None, count=None, scanRate=None, updateOnly=None, publishTopic=None, converter=None): + def __init__(self, label=None, unit=None, address=None, count=None, scanRate=None, updateOnly=None, + publishTopic=None, converter=None, bitCount=8): super().__init__(label, unit, address, count, scanRate, updateOnly, publishTopic, converter) self.type = 'discrete input' + self.bitCount = bitCount def process(self, client, pubQueue): logger = logging.getLogger('DiscreteInputDatapoint') @@ -160,8 +163,9 @@ class DiscreteInputDatapoint(ReadOnlyDatapoint): raise DatapointException(result) if not self.updateOnly or (result.bits != self.lastValue): self.lastValue = result.bits - logger.debug("{0}: {1!s}".format(self.label, result.bits)) - pubQueue.put(MqttProcessor.PublishItem(self.publishTopic, str(result.bits))) + logger.debug("{0}: {1!s}".format(self.label, result.bits)) + for i in range(self.bitCount): + pubQueue.put(MqttProcessor.PublishItem("{0}/{1}".format(self.publishTopic, i), str(result.getBit(i)))) self.lastContact = datetime.datetime.now()