From 400340ac5fe0332e3add87de6fac406009aae046 Mon Sep 17 00:00:00 2001 From: IchaAulia Date: Thu, 25 Jul 2024 13:21:55 +0700 Subject: [PATCH] upload kode program --- Kode program alat/8relay.py | 52 ++++++++++++++++++++++++++++ Kode program alat/button_image1.png | Bin 0 -> 5426 bytes Kode program alat/button_image2.png | Bin 0 -> 6940 bytes Kode program alat/button_image3.png | Bin 0 -> 9081 bytes Kode program alat/button_image4.png | Bin 0 -> 7728 bytes 5 files changed, 52 insertions(+) create mode 100644 Kode program alat/8relay.py create mode 100644 Kode program alat/button_image1.png create mode 100644 Kode program alat/button_image2.png create mode 100644 Kode program alat/button_image3.png create mode 100644 Kode program alat/button_image4.png diff --git a/Kode program alat/8relay.py b/Kode program alat/8relay.py new file mode 100644 index 0000000..5ede9ad --- /dev/null +++ b/Kode program alat/8relay.py @@ -0,0 +1,52 @@ +import RPi.GPIO as GPIO +import time +import paho.mqtt.client as mqtt + +# Atur mode pin GPIO +GPIO.setmode(GPIO.BCM) + +# Atur pin relay +relay_pins = [20, 21, 16, 12, 13, 6, 26, 19] +for pin in relay_pins: + GPIO.setup(pin, GPIO.OUT) + +# Fungsi callback ketika koneksi ke broker berhasil +def on_connect(client, userdata, flags, rc): + print("Connected with result code "+str(rc)) + # Subscribe ke topik untuk setiap lampu + client.subscribe("Room/lamp_schedule") + for i in range(8): + client.subscribe("Room/lamp" + str(i + 1)) + +# Fungsi callback ketika pesan diterima dari broker +def on_message(client, userdata, msg): + print(msg.topic+" "+str(msg.payload)) + # Pisahkan 'lamp' dari angka yang menyusul + lamp_index = int(msg.topic.split("/")[-1][4:]) - 1 + # Hidupkan atau matikan relay sesuai dengan pesan yang diterima + if msg.payload == b'1': + GPIO.output(relay_pins[lamp_index], GPIO.HIGH) + print("Relay "+ str(lamp_index + 1) +" ON") + # Kirim nilai E ke MQTT saat relay hidup + client.publish("Icha/relay_status", "A") + elif msg.payload == b'0': + GPIO.output(relay_pins[lamp_index], GPIO.LOW) + print("Relay "+ str(lamp_index + 1) +" OFF") + # Kirim nilai E ke MQTT saat relay mati + client.publish("Icha/relay_status", "B") + +# Inisialisasi client MQTT +client = mqtt.Client() + +# Mengatur fungsi callback +client.on_connect = on_connect +client.on_message = on_message + +# Menghubungkan client ke broker MQTT +client.connect("habibigarden.com", 1883, 60) + +# Loop utama +client.loop_forever() + +# Cleanup GPIO ketika program berhenti +GPIO.cleanup() diff --git a/Kode program alat/button_image1.png b/Kode program alat/button_image1.png new file mode 100644 index 0000000000000000000000000000000000000000..385a211986ffee741af9bad18e3e26703eb73a04 GIT binary patch literal 5426 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 JJwNUm`#1SQUsV7A literal 0 HcmV?d00001 diff --git a/Kode program alat/button_image2.png b/Kode program alat/button_image2.png new file mode 100644 index 0000000000000000000000000000000000000000..da38d7ef42b89d271493faf9e9b2f46b4c6336ae GIT binary patch literal 6940 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 literal 0 HcmV?d00001