24 lines
673 B
Python
24 lines
673 B
Python
from mqtt import MqttMessage
|
|
|
|
from workers.base import BaseWorker
|
|
import logger
|
|
|
|
REQUIREMENTS = ['pyserial']
|
|
_LOGGER = logger.get(__name__)
|
|
|
|
|
|
class MysensorsWorker(BaseWorker):
|
|
def run(self, mqtt):
|
|
import serial
|
|
|
|
with serial.Serial(self.port, self.baudrate, timeout=10) as ser:
|
|
_LOGGER.debug("Starting mysensors at: %s" % ser.name)
|
|
while True:
|
|
line = ser.readline()
|
|
if not line:
|
|
continue
|
|
splited_line = self.format_topic(line.decode('utf-8').strip()).split(';')
|
|
topic = '/'.join(splited_line[0:-1])
|
|
payload = ''.join(splited_line[-1])
|
|
mqtt.publish([MqttMessage(topic=topic, payload=payload)])
|