30 import paho.mqtt.client
as mqtt
31 from python_cayennelpp.decoder
import decode
34 SERIAL_PORT =
"/dev/ttyACM0" 37 MQTT_TOPIC =
"device/%s/payload" 38 MQTT_SERVER =
"localhost" 45 def send(topic, payload):
46 print(
"[MQTT] Sending %s => %s" % (topic, payload))
47 client.publish(topic, payload, MQTT_QOS, MQTT_RETAIN)
52 parts = data.rstrip().split(
",")
54 print(
"[PARSER] Wrong number of fields")
60 fields = decode(payload)
63 name = f[
"name"].replace(
' ',
'_').lower()
64 if isinstance(f[
"value"], dict):
65 for k, v
in f[
"value"].items():
66 name = k.replace(
' ',
'_').lower()
67 topic =
"device/%s/%s" % (device, name)
71 topic =
"device/%s/%s" % (device, name)
72 send(topic, f[
"value"])
75 def on_connect(client, userdata, flags, rc):
76 print(
"[MQTT] Connected")
78 client = mqtt.Client()
79 client.on_connect = on_connect
80 print(
"[MQTT] Connecting...")
81 client.connect(MQTT_SERVER, MQTT_PORT, 60)
84 ser = serial.Serial(SERIAL_PORT, SERIAL_BAUD, timeout=0.5)
87 if len(line)
and line[0] !=
"#":
88 print(
"[SERIAL] Received %s" % line.rstrip())