Skip to content

ajisetiawan716/Jsholat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

198 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Jsholat / luci-app-jsholat

Jsholat atau luci-app-jsholat adalah aplikasi penjadwal waktu sholat otomatis untuk perangkat OpenWrt (Router/STB/Mini PC Server) yang dilengkapi pemutar adzan, pengingat TTS, dukungan nuansa Ramadhan (Imsak & Sahur, dan notifikasi telegram), serta integrasi Telegram Bot untuk kontrol jarak jauh.


Fitur

  • Jadwal Sholat Multi-Sumber: Mendukung jadwal dari JadwalSholat.Org, MyQuran API, Aladhan API, Arina.id, Equran.id dan AjiMedia API.
  • Antarmuka LuCI Modern: Pengaturan lengkap melalui GUI dengan pemilihan provinsi, kota/kabupaten, dan zona waktu otomatis.
  • Pengingat Waktu Sholat (TTS): Pengingat suara otomatis sebelum waktu sholat tiba dengan dukungan Google TTS, Edge-TTS, eSpeak, Murf.ai, dan Gemini AI TTS.
  • Adzan Otomatis: Memutar file MP3 adzan (umum dan subuh) serta tarhim/imsak saat waktu tiba.
  • Bot Telegram Terintegrasi: Kontrol penuh jadwal, pengaturan suara, alarm sahur, tarhim, dan monitoring melalui Telegram.
  • Alarm Sahur Ramadhan: Pengingat bangun sahur dengan teks yang dapat dikustomisasi (hanya aktif saat Ramadhan) via bot Telegram.
  • Ayat Acak: Mengirim ayat Al-Qur'an beserta terjemahan melalui notifikasi Telegram.
  • Status Detail & Monitoring: Halaman status lengkap dengan informasi service, bot, memori sistem, dan jadwal hari ini.
  • Installer Otomatis (jsi): Script instalasi yang mengurus dependensi, driver soundcard, dan pemilihan versi paket (MAIN/DEV/Latest Release).
  • Logging Terpusat: Log untuk service utama, penjadwal, bot Telegram dengan rotasi otomatis.

Screenshot

1. Pengaturan Jadwal

Screenshot JSHOLAT 1

Screenshot JSHOLAT 2

Screenshot JSHOLAT 3

Screenshot JSHOLAT 4

Screenshot JSHOLAT 5

Screenshot JSHOLAT 6


2. Status Detail

Screenshot JSHOLAT 7

Screenshot JSHOLAT 8

Screenshot JSHOLAT 9

Screenshot JSHOLAT 10


3. Jadwal Bulanan

Screenshot JSHOLAT 11


4. Halaman Log

Screenshot JSHOLAT 12

Screenshot JSHOLAT 13

Screenshot JSHOLAT 14


Panduan Instalasi

1. Persyaratan

  • Perangkat dengan OpenWrt terinstal (termasuk arsitektur seperti x86, ARM, MIPS).
  • Koneksi internet untuk mengunduh file dan update jadwal.
  • USB Soundcard (jika tidak ada soundcard internal) dan speaker.
  • Paket-paket berikut akan diinstall otomatis oleh jsi:
    • madplay / mpg123 (pemutar MP3)
    • alsa-utils (tools audio)
    • python3, python3-pip, jq, curl, luci-lib-jsonc
    • Pillow (via pip) untuk generate gambar jadwal bulanan
    • Edge-TTS (via pip) untuk suara reminder/pengingat dari Microst
    • Gemini AI TTS untuk suara natural TTS berbasis AI dari Google. (via API key)

2. Langkah-Langkah Instalasi

a. Download Installer (jsi)

wget --no-check-certificate -q "https://github.com/ajisetiawan716/Jsholat/raw/refs/heads/main/jsi" \
  -O /usr/bin/jsi && chmod +x /usr/bin/jsi && clear && /usr/bin/jsi

Catatan: jalankan dengan perintah jsi di terminal.

b. Proses Instalasi via jsi

  1. Jalankan jsi di terminal.
  2. Pilih opsi 1 untuk menginstall semua dependensi dan file pendukung (MP3 adzan, tarhim, intro/outro reminder).
  3. Pilih opsi 2 untuk mendeteksi dan menginstall driver soundcard secara otomatis (membuat konfigurasi audio /etc/asound.conf).
  4. Pilih opsi 3 untuk menginstall paket luci-app-jsholat:
    • a) dari URL/file lokal
    • b) dari branch MAIN*
    • c) dari branch DEV*
    • d) dari Latest Release (GitHub) - Recommended
  5. Setelah install selesai bersihkan cache LuCi (Opsional).

c. Restart Service Web

/etc/init.d/uhttpd restart
/etc/init.d/rpcd restart

d. Verifikasi Instalasi

  • Buka LuCI (mis. http://192.168.1.1), masuk ke menu Services โ†’ Jadwal Sholat.

  • Cek status semua service:

    /etc/init.d/jsholat status
    /etc/init.d/jadwal status
    /etc/init.d/jsholat-bot status
  • Atau cek status via menu monitoring di LuCi menu atau menu Status Detail.

e. Konfigurasi Awal di LuCI

  1. Pilih Provinsi & Kota/Kabupaten: Sistem akan otomatis mengisi zona waktu.
  2. Pilih Sumber Jadwal: JadwalSholat.Org, MyQuran API, Aladhan API, Arina.id, Equran.id atau AjiMedia API. (Rekomendasi pilih JadwalSholat.Org)
  3. Atur Koreksi Hijriyah (jika perlu): Penyesuaian -2 hingga +2 hari.
  4. Atur Volume dan Mixer Device: amixer control (Master, PCM, Speaker).
  5. Pilih Metode TTS: Google, Edge-TTS, eSpeak, Murf.ai, atau Gemini AI.
  6. Aktifkan Reminder: Durasi sebelum adzan (5,10,15 menit), jumlah pengulangan, interval.
  7. Atur Tarhim Imsyak:
    • ramadhan_only: Tarhim selalu diputar, TTS reminder hanya saat Ramadhan.
    • always: Tarhim dan TTS reminder diputar setiap hari.
  8. Masukkan Token dan Chat ID Bot Telegram (dapatkan dari @BotFather).
  9. Simpan (Save & Apply).

f. Konfigurasi Bot Telegram

Setelah token dan chat ID dimasukkan, service jsholat-bot akan berjalan secara otomatis.

  • Mulai bot dengan perintah /start. Bot akan secara otomatis menambahkan perintah bot.

  • Daftar lengkap perintah bot:

    /start - ๐Ÿš€ Mulai bot dan menu utama
    /jadwal - ๐Ÿ•Œ Jadwal sholat hari ini
    /jdwlbulan - ๐Ÿ“… Jadwal sholat bulan ini
    /statusbot - ๐Ÿค– Status detail bot
    /status - ๐Ÿ“Š Status singkat pengaturan
    /lokasi - ๐Ÿ“ Lihat lokasi saat ini
    /setlokasi - ๐Ÿ” Cari dan ubah lokasi
    /setjadwal - ๐ŸŒ Ganti sumber jadwal
    /sethijri - ๐Ÿ“† Koreksi tanggal Hijriyah
    /update - ๐Ÿ”„ Update jadwal sholat
    /setvolume - ๐Ÿ”Š Atur volume suara
    /detectaudio - ๐ŸŽ›๏ธ Deteksi mixer audio
    /reminder - ๐Ÿ”” Atur pengingat sholat
    /sahur - ๐ŸŒ™ Atur alarm sahur Ramadhan
    /settts - ๐Ÿ—ฃ๏ธ Pilih metode TTS
    /gemini - ๐Ÿค– Konfigurasi Gemini TTS
    /tarhim - ๐ŸŽต Atur tarhim imsyak
    /ayat - ๐Ÿ“– Atur ayat acak
    /control - ๐ŸŽฎ Kontrol service
    /setupbot - ๐Ÿค– Atur profil bot (nama, foto, bio)
    /help - โ“ Bantuan daftar perintah
    

g. Tes Suara

  • Tes speaker: speaker-test -D default -t sine -f 1000 -l 1 di terminal, atau via Bot: /detectaudio, lalu pilih "๐ŸŽง Tes Suara".
  • Tes TTS via bot: /settts pilih metode TTS, lalu /reminder aktifkan suara pilih durasi pengingat sebelum waktu sholat, lalu /reminder pilih "๐ŸŽง Test TTS".
  • Tes adzan: Tunggu hingga waktu sholat atau putar manual dengan madplay /root/jsholat/adzan.mp3.
  • Tes Sahur: Pilih /sahur pada menu bot, pilih "๐ŸŽง Tes Suara".

Cara Mengupdate & Monitoring

Update Jadwal

  • Manual di LuCI: Klik tombol "Perbarui Jadwal Sekarang".
  • Bot Telegram: Kirim perintah /update.
  • CLI: jadwal-update.sh

Monitoring via LuCI

  • Halaman Status Detail: Services โ†’ Jadwal Sholat โ†’ Status Detail.
    • Menampilkan status service jsholat & bot, uptime, penggunaan memori.
    • Menampilkan jadwal hari ini, sholat berikutnya, dan countdown real-time.
    • Informasi konfigurasi TTS (Gemini, Edge-TTS, Murf.AI), Tarhim, dan Sahur.
    • Memory usage dengan progress bar yang diupdate setiap 5 detik.
  • Halaman Log: Services โ†’ Jadwal Sholat โ†’ Log Service.
    • Menampilkan log service.log dan bot.log dengan auto-refresh.

Cara Uninstall

  1. Jalankan jsi, pilih opsi 4 (uninstall).

  2. Hapus sisa direktori jika masih ada:

    rm -rf /root/jsholat /usr/share/jsholat /var/log/jsholat
    rm -f /etc/config/jsholat

Struktur File Aplikasi

/usr/bin/
โ”œโ”€โ”€ jsholat              # Script utama pemutar adzan & reminder
โ”œโ”€โ”€ jsholat-bot          # Script bot Telegram
โ”œโ”€โ”€ jadwal-update.sh     # Update jadwal multi-source (JSON)
โ”œโ”€โ”€ jadwal-monthly       # Generator gambar jadwal bulanan (Python)

/etc/init.d/
โ”œโ”€โ”€ jsholat              # Service Jsholat (pemutar)
โ”œโ”€โ”€ jsholat-bot          # Service Bot Telegram
โ””โ”€โ”€ jadwal               # Service penjadwal update

/root/jsholat/           # File audio default
โ”œโ”€โ”€ adzan.mp3            # Adzan umum
โ”œโ”€โ”€ adzan_subuh.mp3      # Adzan subuh
โ””โ”€โ”€ tarhim.mp3           # Tarhim (menjelang imsyak)

/usr/share/jsholat/      # Data bersama
โ”œโ”€โ”€ cities.json          # Database kota & provinsi
โ”œโ”€โ”€ last_updated.txt     # Info update terakhir (JSON)
โ”œโ”€โ”€ sounds/              # Audio intro/outro reminder
โ”‚   โ”œโ”€โ”€ in_reminder.mp3
โ”‚   โ””โ”€โ”€ out_reminder.mp3
โ””โ”€โ”€ sahur-reminder.txt   # Teks custom alarm sahur

/usr/lib/lua/luci/
โ”œโ”€โ”€ controller/jsholat.lua          # Controller LuCI
โ”œโ”€โ”€ model/cbi/jsholat.lua           # Model CBI untuk konfigurasi
โ””โ”€โ”€ view/jsholat/                   # View
    โ”œโ”€โ”€ city_select.htm
    โ”œโ”€โ”€ output.htm
    โ”œโ”€โ”€ status_detail.htm
    โ”œโ”€โ”€ logs.htm
    โ””โ”€โ”€ jadwal.htm

/var/log/jsholat/        # Log files
โ”œโ”€โ”€ service.log
โ””โ”€โ”€ bot.log

Lisensi

Aplikasi ini dilisensikan di bawah Lisensi APACHE.


Berkontribusi: Buka Issues atau ajukan Pull Request.


Credits

Pengembang & Kontributor

Sumber Data Jadwal Sholat

  • JadwalSholat.Org โ€” Data jadwal sholat untuk wilayah Indonesia.
  • MyQuran API โ€” Layanan API dari MyQuran yang menyediakan jadwal sholat, data Al-Qur'an (termasuk ayat acak) dan Kalender Hijriyah.
  • Aladhan API โ€” API jadwal sholat internasional dengan berbagai metode perhitungan.
  • AjiMedia API โ€” API jadwal sholat untuk wilayah Indonesia (sumber data internal).
  • Arina.Id โ€” Penyedia jadwal sholat berbasis web untuk wilayah Indonesia dengan data per kota dan update berkala.
  • Equran.Id โ€” API jadwal sholat serta data Al-Qur'an untuk wilayah Indonesia dengan format JSON yang mudah diproses.

Layanan Text-to-Speech (TTS)

  • Google Translate TTS โ€” Layanan TTS gratis dari Google (tidak memerlukan API key).
  • Edge-TTS (Microsoft) โ€” Layanan TTS premium dari Microsoft Edge, diakses melalui library Python edge-tts.
  • eSpeak โ€” Mesin TTS sintesis suara ringan dan offline untuk OpenWrt.
  • Murf.ai โ€” Layanan TTS berkualitas tinggi dengan suara profesional (memerlukan API key).
  • Gemini AI TTS (Google) โ€” Teknologi TTS berbasis AI dari Google dengan berbagai pilihan voice premium (memerlukan API key dari Google AI Studio).

Teknologi & Library Pendukung

  • Pillow (PIL) โ€” Library Python untuk pemrosesan gambar (digunakan untuk generate jadwal bulanan).
  • jq โ€” Parser JSON untuk command-line (digunakan di berbagai script).
  • madplay / mpg123 โ€” Pemutar audio MP3 untuk OpenWrt.
  • ALSA (Advanced Linux Sound Architecture) โ€” Sistem suara pada Linux/OpenWrt.

About

A Luci app for JSholat with adzan sound support.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors