import [Link].
client as mqtt
from sense_emu import SenseHat
import time
sense = SenseHat()
[Link]()
# Konfigurasi MQTT
broker = "[Link]"
port = 1883
topic_sub = "pcr/haqi14/#"
client = [Link]()
def on_connect(client, userdata, flags, rc):
print("Terhubung ke broker dengan kode:", rc)
[Link](topic_sub)
def on_message(client, userdata, msg):
topik = [Link]
isi = [Link]("utf-8")
print(f"Topik Masuk: {topik}, Pesan: {isi}")
if [Link]("/pesan"):
sense.show_message(isi, scroll_speed=0.08, text_colour=[0, 255, 0])
elif [Link]("/pilih"):
if isi == "1":
sense.show_message("Halo!", scroll_speed=0.08, text_colour=[255, 0, 0])
elif isi == "2":
sense.show_message("Selamat!", scroll_speed=0.08, text_colour=[0, 0,
255])
else:
sense.show_message("Nomor?", scroll_speed=0.08, text_colour=[255, 255,
0])
elif "/lampu/" in topik:
try:
posisi = int([Link]("/")[-1])
warna = [Link]()
warna_rgb = {
"merah": (255, 0, 0),
"hijau": (0, 255, 0),
"biru": (0, 0, 255),
"kuning": (255, 255, 0),
"putih": (255, 255, 255),
"hitam": (0, 0, 0),
"limau": (100, 255, 100)
}.get(warna, (255, 255, 255))
pixels = [(0, 0, 0)] * 64
pixels[posisi] = warna_rgb
sense.set_pixels(pixels)
except:
print("Format lampu salah")
elif [Link]("/lampu"):
if isi == "senyum":
gambar = [(0,0,0)]*64
smile = [27, 28, 35, 36, 17, 22, 41, 46]
for i in smile:
gambar[i] = (255, 255, 0)
sense.set_pixels(gambar)
elif isi == "iloveu":
sense.show_message("I ❤ U", scroll_speed=0.08, text_colour=[255, 0,
255])
elif isi == "raspi":
sense.show_message("Raspberry Pi", scroll_speed=0.08, text_colour=[255,
0, 0])
elif [Link]("/animasi"):
if isi == "1":
for _ in range(2):
sense.show_message(":)", scroll_speed=0.08, text_colour=[0, 255,
0])
sense.show_message(":(", scroll_speed=0.08, text_colour=[255, 0,
0])
elif isi == "2":
for _ in range(2):
[Link]((255, 0, 255))
[Link]((0, 0, 255))
elif isi == "3":
for i in range(3):
for x in range(8):
for y in range(8):
sense.set_pixel(x, y, (255, 255, 0))
[Link]()
# Fungsi untuk tampilkan panah ke kanan
def tampilkan_panah_kanan():
panah_kanan = [
(0,0,0),(0,0,0),(0,0,255),(0,0,0),(0,0,0),(0,0,0),(0,0,0),(0,0,0),
(0,0,0),(0,0,0),(0,0,255),(0,0,0),(0,0,0),(0,0,0),(0,0,0),(0,0,0),
(0,0,0),(0,0,0),(0,0,255),(0,0,0),(0,0,0),(0,0,0),(0,0,0),(0,0,0),
(255,255,255),(255,255,255),(255,255,255),(255,255,255),(255,255,255),
(0,0,255),(0,0,0),(0,0,0),
(0,0,0),(0,0,0),(0,0,255),(0,0,0),(0,0,0),(0,0,0),(0,0,0),(0,0,0),
(0,0,0),(0,0,0),(0,0,255),(0,0,0),(0,0,0),(0,0,0),(0,0,0),(0,0,0),
(0,0,0),(0,0,0),(0,0,255),(0,0,0),(0,0,0),(0,0,0),(0,0,0),(0,0,0),
(0,0,0),(0,0,0),(0,0,255),(0,0,0),(0,0,0),(0,0,0),(0,0,0),(0,0,0),
]
sense.set_pixels(panah_kanan)
# Mulai koneksi MQTT
client.on_connect = on_connect
client.on_message = on_message
[Link](broker, port, 60)
client.loop_start()
# Loop untuk publish data sensor setiap 5 detik
try:
while True:
suhu = round(sense.get_temperature(), 2)
tekanan = round(sense.get_pressure(), 2)
kelembapan = round(sense.get_humidity(), 2)
[Link]("pcr/haqi14/sensor/suhu", suhu)
[Link]("pcr/haqi14/sensor/tekanan", tekanan)
[Link]("pcr/haqi14/sensor/lembab", kelembapan)
print(f"Data terkirim → Suhu: {suhu}, Tekanan: {tekanan}, Lembab:
{kelembapan}")
# Cek joystick, tampilkan panah jika klik kanan
for event in [Link].get_events():
if [Link] == 'pressed' and [Link] == 'right':
tampilkan_panah_kanan()
[Link](5)
except KeyboardInterrupt:
print("Program dihentikan.")
[Link]()
client.loop_stop()
[Link]()