Dari Iseng-iseng Jadi Beneran, Cerita Bikin Mushola Timer Pakai Home Assistant
Awal mula: “Kayaknya keren kalau lampu mushola bisa kasih tanda gitu deh”
Jadi ceritanya, suatu hari saya kepikiran:
“Gimana kalau di depan mushola rumah kita pasang lampu dekorasi mihrab? Nyala 5 menit sebelum adzan, mati 10 menit setelah adzan. Biar orang yang lewat langsung paham: ‘Oh, mushola aktif. Adzan sebentar lagi. Atau baru selesai sholat.’”
Ide kelihatannya simpel. Tapi ternyata… eksekusinya nggak sesimpel itu.
Part 1: Belanja komponen
Langsung cari-cari kebutuhan:
- Smart breaker switch (Tuya/BARDI) — 1 channel buat nyalain LED 12V
- LED strip warm white — buat efek mihrab
- Power adapter 12V
Smart switch-nya saya ambil yang support WiFi, soalnya router mushola sudah ada. Masangnya juga relatif gampang, tinggal ganti di panel lampu yang sudah terpasang.
Part 2: Ikutin tutorial di Medium
Jujur saya awalnya nggak paham caranya ngontrol device ini secara programatik. Iseng cari-cari, ketemu tutorial ini:
👉 Control BARDI Smart Home Devices using Python — Randhi
Ternyata BARDI itu cuma rebranding device Tuya. Jadi bisa dikontrol pakai library Python tinytuya.
Langkahnya kurang lebih:
- Install
tinytuya - Bikin akun di iot.tuya.com
- Bikin cloud project
- Dapat API Key & API Secret
- Hubungkan aplikasi Smart Life ke akun developer
- Jalankan wizard:
python -m tinytuya wizard - Dapat local key, siap programming
Kodenya singkat:
import tinytuya
device = tinytuya.OutletDevice(
dev_id="YOUR_DEVICE_ID",
address="192.168.x.x",
key="YOUR_LOCAL_KEY"
)
device.set_version(3.4)
device.turn_on()
Saya jalankan, dan… BERHASIL! LED menyala dari Python. Rasanya senang banget.
Tapi… kebahagiaan itu nggak lama.
Part 3: Masa trial habis
Sekitar sebulan kemudian, saya dapet email:
“Your Tuya IoT Basic annual subscription trial has expired.”
Local key yang sudah saya dapatkan nggak bisa dipakai lagi untuk kontrol lewat cloud. Sebenarnya device masih bisa dikontrol via local network, tapi syaratnya: harus ada komputer yang hidup 24⁄7 buat jalanin script.
Masalahnya, saya nggak punya server di rumah. Laptop biasa mati kalau tidur. Raspberry Pi lagi dipakai semua.
Alternatif lain sempat kepikiran:
- Home Assistant Core di laptop bekas — tapi boros listrik dan kurang reliable
- Google Home routines — sayangnya nggak bisa trigger tepat waktu sebelum adzan
- Esp32 + NTP — malah bikin device baru sendiri
Semuanya terasa nggak pas.
Part 4: Cerita ke Opencode AI
Akhirnya saya cerita ke Opencode:
“Saya mau bikin automation: LED nyala sebelum adzan, mati setelah adzan. Udah cobain tinytuya tapi butuh server 24⁄7. Saya di Windows, ada solusi nggak?”
Jawabannya singkat:
“Pake Home Assistant aja.”
Singkat, tapi langsung ngena. Memang itu solusi paling pas buat kebutuhan ini — home automation terpusat yang bisa jalan terus di background.
Part 5: Pasang Home Assistant di Hyper-V
Saya nggak mau beli hardware baru. Untungnya di kantor ada PC yang nyala 24⁄7 — komputer server IT yang jarang dimatiin. Speknya biasa aja: PC Windows, RAM 32GB, Intel Core i7.
Langkah-langkahnya:
- Aktifkan Hyper-V di Windows
- Download HAOS image
.qcow2dari home-assistant.io - Bikin Virtual Machine:
- RAM 4GB
- Disk 32GB
- Network Bridge (biar dapet IP lokal)
- Boot dari image, tunggu sekitar 15 menit
- Akses via browser:
http://homeassistant.local:8123
Tampilan Home Assistant muncul. Proses instalasi ternyata gampang, tanpa ribet command line.
Part 6: Hubungkan Smart Switch
Masuk ke UI Home Assistant:
- Settings → Devices & Services → Add Integration
- Pilih Tuya (kalau belum ada, install dari HACS dulu)
- Login pakai akun Tuya yang sudah expired tadi? GAGAL.
Saya ganti strategi: Local Control.
Di Home Assistant, cari device via IP. Karena smart switch-nya pakai WiFi yang sama, HA bisa mendeteksi secara otomatis.
⚠️ Catatan penting: Pastikan switch support local control dan firmware-nya nggak ngeblokir koneksi.
Ketemu! Sekarang ada entity bernama switch.led_mushola_switch_1 di HA. Dari UI bisa ON/OFF langsung. LED hidup lagi. Alhamdulillah!
Part 7: Otomatisasi pakai jadwal sholat
Tantangan berikutnya: bikin lampu nyala/mati otomatis sesuai waktu adzan.
Awalnya kepikiran bikin automation manual:
trigger:
- platform: time
at: "04:30:00"
action:
- service: switch.turn_on
target:
entity_id: switch.led_mushola_switch_1
Tapi ini nggak fleksibel — harus isi manual setiap waktu, padahal jadwal adzan berubah tiap hari (walaupun cuma sedikit).
Saya butuh API jadwal sholat. Akhirnya pakai Aladhan API (gratisan):
GET http://api.aladhan.com/v1/timings/{date}
?latitude=-6.9175&longitude=107.6191&method=20
Method 20 itu Kemenag — tepat untuk Indonesia. Response-nya lengkap ada semua waktu sholat. Tinggal parsing dan jadwalkan automasi.
Part 8: Dari AppDaemon ke HACS
Awalnya saya coba pakai AppDaemon — addon di HA yang bisa jalanin Python script terjadwal.
Script yang dibuat kurang lebih:
class MusholaLEDTimer(hass.Hass):
def initialize(self):
# ambil jadwal sholat dari Aladhan API
# jadwalkan ON/OFF pakai self.run_at()
AppDaemon jalan… tapi konfigurasinya ribet. Satu error bisa bikin seluruh aplikasi mati, dan log-nya nggak gampang dibaca.
Saya cerita lagi ke Opencode:
“AppDaemon error terus, susah di-debug. Ada solusi lain?”
Opencode menjawab:
“Bikin custom HACS integration aja. Lebih native, gampang di-debug, bahkan bisa dipublish ke HACS store.”
Saya nggak punya pengalaman bikin integrasi HA. Tapi ya sudahlah, gas aja!
Part 9: Bikin integrasi dari nol (dibantu AI)
Saya kasih requirement ke Opencode:
- Pakai entity switch yang sudah ada di HA
- Ambil jadwal sholat dari Aladhan API (metode Kemenag)
- LED ON 5 menit sebelum adzan, OFF 10 menit setelah adzan
- Jalan di background tanpa server eksternal
- Bikin custom component HACS biar bisa di-install dari UI
Dalam hitungan jam, Opencode bikin struktur integrasi lengkap:
custom_components/mushola_timer/
├── __init__.py
├── config_flow.py
├── coordinator.py
├── sensor.py
├── binary_sensor.py
├── strings.json
├── manifest.json
└── icon.svg
Saya tinggal tes di HA:
- Settings → Devices & Services → Add Integration
- Search “Adzan Timer Switch”
- Masukkan ID switch:
switch.led_mushola_switch_1 - Atur timing (5 menit sebelum, 10 menit sesudah)
- Finish
WOW, LANGSUNG JALAN!
LED hidup dan mati otomatis sesuai jadwal sholat. Nggak ada script eksternal, nggak perlu server lain. Semua berjalan rapi di dalam Home Assistant Hyper-V kantor.
Part 10: Publik ke HACS Store
Integrasinya sudah jalan mulus. Tiba-tiba Opencode nanya:
“Mau publish ke HACS nggak? Biar orang lain bisa install dari store.”
Saya kaget sekaligus seneng: “Bisa gitu? Ya mau dong!”
Kami siapkan:
hacs.json— buat HACS storeREADME.md— lengkap dengan badge, cara install, screenshotLICENSE— MIT Licenseicon.svg— gambar masjid/LED- GitHub Release
v1.0.0
Prosesnya:
- Bikin repo publik di GitHub
- Push semua file
- Bikin Release
- Submit ke HACS via Pull Request
Sekarang orang lain bisa install dengan sekali klik dari HACS store. Senang rasanya bisa berbagi.
Hasil akhir
Hari ini di mushola rumah:
- ✅ LED mihrab otomatis nyala 5 menit sebelum adzan
- ✅ Mati otomatis 10 menit setelah adzan
- ✅ Dari luar keliatan “sibuk” — orang tahu waktu sholat sudah dekat
- ✅ Bisa pantau lewat dashboard Home Assistant
- ✅ Bisa manual ON/OFF dari HP
- ✅ Kode terbuka, siapa pun bisa improvisasi
Semua dimulai dari keinginan sederhana: membuat mushola terlihat hidup dari luar.
Ternyata, yang dibutuhkan bukan cuma hardware — tapi juga belajar pakai alat yang tepat untuk mengotomatisasi rumah.
Yang saya pelajari
- Trial Tuya itu cuma sementara — kalau mau lokal, pastikan device support local key
- Home Assistant bukan cuma buat ahli IT — UI-nya sudah cukup ramah untuk pemula
- Agentic Coding itu keren — dengan menjelaskan kebutuhan secara jelas, AI bisa bikin integrasi dari nol
- Komunitas HACS luar biasa — banyak integrasi custom dari relawan, dan kamu juga bisa ikut kontribusi
Repositori
Kode lengkapnya ada di sini: 👉 github.com/kamilersz/homeassistant-adzan-timer-switch
Clone, install, atau ikut ngoprek — semuanya bebas.
Jazakallahu khair untuk semua yang sudah membantu proyek ini berjalan. Kalau ada yang mau didiskusikan atau ditanyakan, silakan buka GitHub Issue atau DM aja @kamilersz.