relais support
This commit is contained in:
36
src/pv_controller/RelaisPublish.py
Normal file
36
src/pv_controller/RelaisPublish.py
Normal 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"]))
|
Reference in New Issue
Block a user