relais support

This commit is contained in:
2022-11-22 21:15:38 +01:00
parent 6d9e5ee77c
commit a82b7f6247
7 changed files with 125 additions and 62 deletions

View File

@ -0,0 +1,36 @@
from threading import Event
from loguru import logger
from MqttBase import AbstractMqttPublisher
import json
import datetime
class RelaisPublish(AbstractMqttPublisher):
def __init__(self, config, modbusHandler):
super().__init__(config)
self.modbusHandler = modbusHandler
def localLoop(self):
cnt = 0
while not self.killBill:
cnt += 1
topic = self.config["relaisPublishTopic"]
payload = str(cnt)
try:
payload = {}
payload['status'] = "Error"
payload['timestamp'] = datetime.datetime.isoformat(datetime.datetime.utcnow())
v = self.modbusHandler.readHoldingRegister(1, 1)
logger.debug(f"{v}")
payload['state'] = 'Off' if v[0] == 0 else 'On'
payload['status'] = "Ok"
except Exception as e:
logger.error(f"Caught exception: {str(e)}")
payload['cnt'] = cnt
payloadStr = json.dumps(payload)
self.client.publish(topic, payloadStr)
logger.info(f"mqtt message sent: {topic} -> {payloadStr}")
self.killEvent.wait(timeout=float(self.config["relaisPublishPeriod"]))