-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
60 lines (49 loc) · 1.72 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import paho.mqtt.client as mqtt
import json
import tatu
import argparse
from time import sleep
parser = argparse.ArgumentParser(description = 'Params sensors')
parser.add_argument('--name', action = 'store', dest = 'name', required = True)
parser.add_argument('--broker', action = 'store', dest = 'broker', required = True)
args = parser.parse_args()
#You don't need to change this file. Just change sensors.py and config.json
def on_connect(mqttc, obj, flags, rc):
topic = obj["topicPrefix"] + obj["deviceName"]
mqttc.subscribe(topic)
print("Device's sensors:")
for sensor in obj['sensors']:
print ("\t" + sensor['name'])
print("Topic device subscribed: " + topic)
def on_message(mqttc, obj, msg):
print("msg"+ msg.topic)
if obj["topicPrefix"] in msg.topic:
tatu.main(obj, msg)
def on_disconnect(mqttc, obj, rc):
#print(str(obj))
print("disconnected!")
exit()
while True:
with open('config.json') as f:
data = json.load(f)
data["deviceName"]=args.name
data["mqttBroker"]=args.broker
data["dataset"]=False
mqttBroker = args.broker
mqttPort = data["mqttPort"]
mqttUsername = data["mqttUsername"]
mqttPassword = data["mqttPassword"]
deviceName = data["deviceName"]
sub_client = mqtt.Client(deviceName + "_sub", protocol=mqtt.MQTTv31)
#sub_client =mqtt.Client(client_id='', clean_session=True, userdata=None, protocol=mqtt.MQTTv31)
sub_client.username_pw_set(mqttUsername, mqttPassword)
sub_client.user_data_set(data)
sub_client.on_connect = on_connect
sub_client.on_message = on_message
sub_client.on_disconnect = on_disconnect
try:
sub_client.connect(mqttBroker, int(mqttPort), 60)
sub_client.loop_forever()
except :
print ("Broker unreachable on " + mqttBroker + " URL!")
sleep(5)