53 lines
1.2 KiB
Python
53 lines
1.2 KiB
Python
#! /usr/bin/python3
|
|
import time
|
|
import sys
|
|
from paho.mqtt import client as mqtt_client
|
|
import os
|
|
import serial
|
|
|
|
# MQTT Settings
|
|
mqtt_server=os.environ['MQTT_SERVER']
|
|
mqtt_topic=os.environ['MQTT_TOPIC']
|
|
# SERIAL Port
|
|
serial_device=os.environ['SERIAL_DEVICE']
|
|
|
|
# The callback for when a PUBLISH message is received from the server.
|
|
def on_message(client, userdata, msg):
|
|
print(msg.topic+" "+str(msg.payload))
|
|
|
|
|
|
# Start mqtt
|
|
client_id = f'python-fan-ctrl'
|
|
client = mqtt_client.Client(mqtt_client.CallbackAPIVersion.VERSION2)
|
|
client.on_message = on_message
|
|
|
|
if (not (mqtt_server)):
|
|
print("MQTT_SERVER is not set")
|
|
|
|
if (not (mqtt_topic)):
|
|
print("MQTT_TOPIC is not set")
|
|
|
|
client.connect(mqtt_server, 1883)
|
|
val=0
|
|
|
|
client.loop_start()
|
|
|
|
ser = serial.Serial(serial_device, 115200, timeout=1) # open serial port
|
|
client.publish(mqtt_topic + "device", ser.name) # check which port was really used
|
|
|
|
line = ser.readline() # read a '\n' terminated line
|
|
client.publish(mqtt_topic + "debug", line) # check which port was really used
|
|
|
|
# Endless Loop
|
|
while True:
|
|
try:
|
|
client.publish(mqtt_topic + "val", val)
|
|
|
|
time.sleep(0.2)
|
|
val = val + 1
|
|
|
|
except (KeyboardInterrupt, SystemExit):
|
|
cleanAndExit()
|
|
|
|
client.loop_stop()
|