should work so far
This commit is contained in:
@@ -9,7 +9,7 @@ def floatAdaptor(i):
|
||||
return float(f"{i:0.2f}") if i else 0.0
|
||||
|
||||
def onOffAdaptor(i):
|
||||
return i[0] if i else '-1'
|
||||
return bool(i)
|
||||
|
||||
|
||||
|
||||
@@ -22,27 +22,39 @@ class FromDevices(AbstractMqttPublisher):
|
||||
cnt = 0
|
||||
while not self.killBill:
|
||||
cnt += 1
|
||||
payload = {}
|
||||
|
||||
try:
|
||||
payload['status'] = "Error"
|
||||
payload['timestamp'] = datetime.datetime.isoformat(datetime.datetime.utcnow())
|
||||
for device in self.config.output:
|
||||
for device in self.config.output:
|
||||
try:
|
||||
payload = {}
|
||||
payload['status'] = "Error"
|
||||
payload['timestamp'] = datetime.datetime.isoformat(datetime.datetime.utcnow())
|
||||
logger.debug(f"{device.name=} {device.publish_topic=}")
|
||||
if not device.enabled:
|
||||
logger.debug(f" device disabled, skipping")
|
||||
continue
|
||||
if cnt % device.scan_rate != 0:
|
||||
logger.debug(f" not scan_rate yet, skipping")
|
||||
continue
|
||||
for registers in device.registers:
|
||||
logger.debug(f" {registers.name=} {registers.address=} {registers.register_type=}")
|
||||
rawValue = self.modbusHandler.readRegister(registers.register_type, device.slave_id, registers.address, registers.data_type)
|
||||
logger.debug(f" {rawValue=}")
|
||||
payload['status'] = "Ok"
|
||||
except Exception as e:
|
||||
logger.error(f"Caught exception: {str(e)}")
|
||||
if registers.adaptor == "floatAdaptor":
|
||||
value = floatAdaptor(rawValue)
|
||||
elif registers.adaptor == "onOffAdaptor":
|
||||
value = onOffAdaptor(rawValue)
|
||||
else:
|
||||
value = rawValue
|
||||
logger.debug(f" {value=}")
|
||||
payload[registers.attribute] = value
|
||||
|
||||
# payload['cnt'] = cnt
|
||||
# payloadStr = json.dumps(payload)
|
||||
# self.client.publish(topic, payloadStr)
|
||||
# logger.info(f"mqtt message sent: {topic} -> {payloadStr}")
|
||||
payload['status'] = "Ok"
|
||||
except Exception as e:
|
||||
logger.error(f"Caught exception: {str(e)}")
|
||||
|
||||
self.killEvent.wait(timeout=float(self.config.mqtt.publish_period))
|
||||
payload['cnt'] = cnt
|
||||
payloadStr = json.dumps(payload)
|
||||
self.client.publish(device.publish_topic, payloadStr)
|
||||
logger.debug(f"mqtt message sent: {device.publish_topic} -> {payloadStr}")
|
||||
|
||||
self.killEvent.wait(timeout=float(self.config.global_.scan_interval))
|
||||
|
||||
Reference in New Issue
Block a user