-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbrokerconnect2.py
60 lines (46 loc) · 1.48 KB
/
brokerconnect2.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
60
import paho.mqtt.client as mqtt
import time
import json
status = "off"
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
#Subscribing in on_connect() means that if we lose the connection and
# reconnect then subscriptions will be renewed.
client.subscribe("/iot/coffeemaker")
# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
global status
payload = json.loads(str(msg.payload))
status = payload["status"]
print status
#def on_publish(client, userdata, msg):
# print{"alive":"true"}
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker_ip_address", 1883, 60)
# Blocking call that processes network traffic, dispatches callbacks and
# handles reconnecting.
# Other loop*() functions are available that give a threaded interface and a
# manual interface.
alive = True
t = 0
time.sleep(5)
while alive:
client.loop()
now = time.time()
print now
print t
if status == "on" and t == 0:
print "problem"
alive = False
if status == "off" and 10 < now-t < 60 and t != 0:
print "problem"
alive = False
if status == "off" and t == 0:
client.publish("/iot/coffeemaker/messages", '{"command":"on"}')
t = now
if status == "on" and now-t > 60:
client.publish("/iot/coffeemaker/messages", '{"command":"off"}')
alive = False