-
Notifications
You must be signed in to change notification settings - Fork 1
/
utama.py.save
93 lines (82 loc) · 3.77 KB
/
utama.py.save
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import paho.mqtt.client as mqtt #import library mqtt
import lampu, buzzer, pintu #memanggil file lampu.py dan buzzer.py
#import sensingpintu2 #memanggil file sensingpintu2.py untuk alert saat pintu dibuka paksa
from time import sleep
topik = ["indisbuildinglampu","indisbuildingbuzzer","indisbuildingpintu"] #list topik untuk mqtt
status = ["off","on"] #list payload untuk mqtt
global pin_lampu, pin_buzzer, pin_pintu #sinkronisasi variabel di program utama dengan program yg dipanggil (lampu, buzzer, dan pintu)
pin_lampu = lampu.pin_lampu
pin_buzzer = buzzer.pin_buzzer
pin_pintu = pintu.pin_pintu
#pin_sensor = sensingpintu2.pin_sensor
log = open('statuslampu.txt', 'r') #membaca log status lampu
statuslampu = log.read()
print (statuslampu)
if statuslampu == "mati" : #sinkronisasi lampu dengan sta$
lampu.lampu_on(pin_lampu)
elif statuslampu == "menyala" :
lampu.lampu_off(pin_lampu)
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, rc):
print ("Terhubung dengan kode hasil "+str(rc))
# Subscribing in on_connect() means that if we lose the connection and
# reconnect the subscriptions will be renewed.
#client.subscribe("$SYS/#")
for i in range(len(topik)) : #menjadikan semua item di list topik menjadi topik subscribe
client.subscribe(topik[i])
# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
print(msg.topic + " " + str(msg.payload))
topic = msg.topic
payload = msg.payload
#check = 0 #untuk pembaca dibuka oleh aplikasi atau dibuka paksa, 1 oleh aplikasi
if str(topic) == str(topik[0]) : #kondisi topik dan payload yang diterima dari user (via HP atau Web platform kita)
if str(payload) == str(status[0]) : #lampu Normally Close
lampu.lampu_on(pin_lampu)
file = open("statuslampu.txt", "w")
file.write("mati")
file.close()
print "Lampu MATI"
elif str(payload) == str(status[1]) :
lampu.lampu_off(pin_lampu)
file = open("statuslampu.txt", "w")
file.write("menyala")
file.close()
print "Lampu MENYALA"
if str(topic) == topik[1] :
if str(payload) == status[1] :
buzzer.buzzer_on(pin_buzzer)
print "Buzzer MENYALA"
elif str(payload) == status[0] :
buzzer.buzzer_off(pin_buzzer)
print "Buzzer MATI"
if str(topic) == topik[2] :
if str(payload) == status[1] :
pintu.pintu_kunci(pin_pintu)
file = open("statuspintu.txt", "w")
file.write("terkunci")
file.close()
print "Pintu TERKUNCI"
#check = 0
elif str(payload) == status[0] :
pintu.pintu_buka(pin_pintu)
file = open("statuspintu.txt", "w")
file.write("terbuka")
file.close()
print "Pintu TERBUKA"
#check = 1
#if check == 0 and GPIO.input(pin_sensor) == False:
#if check == 0 :
#import simsenspint
#else :
#import sensingpintu
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.mqttdashboard.com", 1883, 60) #broker yang digunakan
#client.connect("iot.eclipse.org", 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.
client.loop_forever()