
Di rumah saya ini, kebetulan selain ada Home Server dari bekas STB juga ada Google Nest, atau Speaker Google. Google Speaker ini akan langsung dikenali kalau berada dalam satu jaringan dengan Home Assistant.
Kebetulan sudah lama ada satu keinginan, bagaimana jika saat Adzan, speaker google saya juga melantunkan Adzan. Bahkan kalau dirumah saya bukan hanya adzan, namun juga bacaan sholat setiap sepuluh menit setiap Adzan, bacaan ini saya gunakan sebagai guidance Ibu saya yang menderita stroke.
Terakhir, setiap 25 menit dari Adzan Maghrib melantunkan dzikir perang dan setiap 25 menit dari Adzan Subuh melantunkan dzikir pagi.
Sebenarnya ada Islamic Prayer Times , sebagai aplikasi resmi di home assistant, namun entah kenapa dulu jika listrik padam, maka walaupun waktu sholatnya benar namun waktu bunyinya speaker google tidak sinkron.
Akhirnya saya berdiskusi dengan beberapa AI Agent dan menemukan titik optmalnya seperti ini.
Karena saya menggunakan docker maka saya masuk ke volume Home Assistant disini
/var/lib/docker/volumes/ha_data/_data
Ada 2 file penting
1. configuration.yaml
2. automations.yaml
Di configuration.yaml kita bisa mendefinisikan sensor Adzan lalu dengan template kita membuat penyesuaian dengan menambah atau mengurangi waktunya.
#homeassistant: # Loads default set of integrations. Do not remove. default_config: # Load frontend themes from the themes folder frontend: themes: !include_dir_merge_named themes # Text-to-speech tts: - platform: google_translate automation: !include automations.yaml script: !include scripts.yaml scene: !include scenes.yaml sensor: !include sensors.yaml # Sensor Adzan HA # By Cak Edy Santoso ( [email protected] ) # =============================== # Jadwal Sholat - Aladhan # =============================== sensor: - platform: time_date display_options: - 'time' - 'date' - 'date_time' - 'date_time_iso' - 'time_date' - 'time_utc' - 'beat' - platform: rest name: Jadwal Sholat Aladhan resource: "https://api.aladhan.com/v1/timings" params: latitude: -8.1240872 longitude: 111.825 method: 11 school: 0 timezone: Asia/Jakarta # INI KUNCI UTAMANYA value_template: "{{ value_json.data.timings.Fajr }}" json_attributes_path: "$.data.timings" json_attributes: - Fajr - Dhuhr - Asr - Maghrib - Isha scan_interval: 21600 template: - trigger: - platform: state entity_id: sensor.jadwal_sholat_aladhan sensor: - name: "Adzan Subuh" state: > {% set t = state_attr('sensor.jadwal_sholat_aladhan', 'Fajr') %} {{ (strptime(t, '%H:%M') + timedelta(minutes=2)).strftime('%H:%M') }} - name: "Adzan Dzuhur" state: > {% set t = state_attr('sensor.jadwal_sholat_aladhan', 'Dhuhr') %} {{ (strptime(t, '%H:%M') + timedelta(minutes=4)).strftime('%H:%M') }} - name: "Adzan Ashar" state: > {% set t = state_attr('sensor.jadwal_sholat_aladhan', 'Asr') %} {{ (strptime(t, '%H:%M') + timedelta(minutes=4)).strftime('%H:%M') }} - name: "Adzan Maghrib" state: > {% set t = state_attr('sensor.jadwal_sholat_aladhan', 'Maghrib') %} {{ (strptime(t, '%H:%M') + timedelta(minutes=4)).strftime('%H:%M') }} - name: "Adzan Isya" state: > {% set t = state_attr('sensor.jadwal_sholat_aladhan', 'Isha') %} {{ (strptime(t, '%H:%M') + timedelta(minutes=4)).strftime('%H:%M') }} # Waktu Sholat (Adzan + 10 menit) - PERUBAHAN 1 - name: "Waktu Sholat Subuh" unique_id: waktu_sholat_subuh_dinamis state: > {% set t = state_attr('sensor.jadwal_sholat_aladhan', 'Fajr') %} {{ (strptime(t, '%H:%M') + timedelta(minutes=12)).strftime('%H:%M') }} - name: "Waktu Sholat Dzuhur" unique_id: waktu_sholat_dzuhur_dinamis state: > {% set t = state_attr('sensor.jadwal_sholat_aladhan', 'Dhuhr') %} {{ (strptime(t, '%H:%M') + timedelta(minutes=14)).strftime('%H:%M') }} - name: "Waktu Sholat Ashar" unique_id: waktu_sholat_ashar_dinamis state: > {% set t = state_attr('sensor.jadwal_sholat_aladhan', 'Asr') %} {{ (strptime(t, '%H:%M') + timedelta(minutes=14)).strftime('%H:%M') }} - name: "Waktu Sholat Maghrib" unique_id: waktu_sholat_maghrib_dinamis state: > {% set t = state_attr('sensor.jadwal_sholat_aladhan', 'Maghrib') %} {{ (strptime(t, '%H:%M') + timedelta(minutes=14)).strftime('%H:%M') }} - name: "Waktu Sholat Isya" unique_id: waktu_sholat_isya_dinamis state: > {% set t = state_attr('sensor.jadwal_sholat_aladhan', 'Isha') %} {{ (strptime(t, '%H:%M') + timedelta(minutes=14)).strftime('%H:%M') }} # Waktu Dzikir (Adzan + 25 menit) - PERUBAHAN 2 & 3 - name: "Waktu Dzikir Pagi" unique_id: waktu_dzikir_pagi_dinamis state: > {% set t = state_attr('sensor.jadwal_sholat_aladhan', 'Fajr') %} {{ (strptime(t, '%H:%M') + timedelta(minutes=27)).strftime('%H:%M') }} - name: "Waktu Dzikir Petang" unique_id: waktu_dzikir_petang_dinamis state: > {% set t = state_attr('sensor.jadwal_sholat_aladhan', 'Maghrib') %} {{ (strptime(t, '%H:%M') + timedelta(minutes=29)).strftime('%H:%M') }} # bagian agar bisa tersambung dengan Cloudflare Tunnel http: use_x_forwarded_for: true trusted_proxies: - 192.168.1.1 - 192.168.1.20
Kemudian ini isi dari automations.yaml
# #################### # Automation, Adzan, Dzikir dan Sholat By CakEdy # [email protected] # ################# # ==================== ADZAN ==================== - id: 'adzan_otomatis' alias: "Adzan Otomatis" description: "Memainkan adzan sesuai waktu yang sudah dihitung" mode: queued max_exceeded: silent trigger: - platform: template value_template: "{{ states('sensor.time') == states('sensor.adzan_subuh') }}" alias: "Trigger Adzan Subuh" - platform: template value_template: "{{ states('sensor.time') == states('sensor.adzan_dzuhur') }}" alias: "Trigger Adzan Dzuhur" - platform: template value_template: "{{ states('sensor.time') == states('sensor.adzan_ashar') }}" alias: "Trigger Adzan Ashar" - platform: template value_template: "{{ states('sensor.time') == states('sensor.adzan_maghrib') }}" alias: "Trigger Adzan Maghrib" - platform: template value_template: "{{ states('sensor.time') == states('sensor.adzan_isya') }}" alias: "Trigger Adzan Isya" condition: [] action: - choose: - conditions: - "{{ trigger.alias == 'Trigger Adzan Subuh' }}" sequence: - service: media_player.play_media target: entity_id: media_player.ruang_keluarga data: media_content_id: media-source://media_source/local/azansubuh.mp3 media_content_type: audio/mpeg - conditions: [] sequence: - service: media_player.play_media target: entity_id: media_player.ruang_keluarga data: media_content_id: media-source://media_source/local/azan.mp3 media_content_type: audio/mpeg # ==================== SHOLAT (Adzan + 10 menit) ==================== - id: 'sholat_otomatis' alias: "Sholat Otomatis" description: "Mengingatkan waktu sholat 10 menit setelah adzan" mode: queued max_exceeded: silent trigger: - platform: template value_template: "{{ states('sensor.time') == states('sensor.waktu_sholat_subuh') }}" alias: "Trigger Sholat Subuh" - platform: template value_template: "{{ states('sensor.time') == states('sensor.waktu_sholat_dzuhur') }}" alias: "Trigger Sholat Dzuhur" - platform: template value_template: "{{ states('sensor.time') == states('sensor.waktu_sholat_ashar') }}" alias: "Trigger Sholat Ashar" - platform: template value_template: "{{ states('sensor.time') == states('sensor.waktu_sholat_maghrib') }}" alias: "Trigger Sholat Maghrib" - platform: template value_template: "{{ states('sensor.time') == states('sensor.waktu_sholat_isya') }}" alias: "Trigger Sholat Isya" condition: [] action: - choose: - conditions: - "{{ trigger.alias == 'Trigger Sholat Subuh' }}" sequence: - service: media_player.play_media target: entity_id: media_player.ruang_keluarga data: media_content_id: media-source://media_source/local/Sholat/sholat_subuh.mp3 media_content_type: audio/mpeg - conditions: - "{{ trigger.alias == 'Trigger Sholat Dzuhur' }}" sequence: - service: media_player.play_media target: entity_id: media_player.ruang_keluarga data: media_content_id: media-source://media_source/local/Sholat/sholat_dhuhur.mp3 media_content_type: audio/mpeg - conditions: - "{{ trigger.alias == 'Trigger Sholat Ashar' }}" sequence: - service: media_player.play_media target: entity_id: media_player.ruang_keluarga data: media_content_id: media-source://media_source/local/Sholat/sholat_ashar.mp3 media_content_type: audio/mpeg - conditions: - "{{ trigger.alias == 'Trigger Sholat Maghrib' }}" sequence: - service: media_player.play_media target: entity_id: media_player.ruang_keluarga data: media_content_id: media-source://media_source/local/Sholat/sholat_maghrib.mp3 media_content_type: audio/mpeg - conditions: - "{{ trigger.alias == 'Trigger Sholat Isya' }}" sequence: - service: media_player.play_media target: entity_id: media_player.ruang_keluarga data: media_content_id: media-source://media_source/local/Sholat/sholat_isya.mp3 media_content_type: audio/mpeg # ==================== DZIKIR ==================== - id: 'dzikir_otomatis' alias: "Dzikir Otomatis" description: "Dzikir pagi dan petang 25 menit setelah adzan" mode: queued max_exceeded: silent trigger: - platform: template value_template: "{{ states('sensor.time') == states('sensor.waktu_dzikir_pagi') }}" alias: "Trigger Dzikir Pagi" - platform: template value_template: "{{ states('sensor.time') == states('sensor.waktu_dzikir_petang') }}" alias: "Trigger Dzikir Petang" condition: [] action: - choose: - conditions: - "{{ trigger.alias == 'Trigger Dzikir Pagi' }}" sequence: - service: media_player.play_media target: entity_id: media_player.ruang_keluarga data: media_content_id: media-source://media_source/local/Dzikir/AlMatsurat Pagi.mp3 media_content_type: audio/mpeg - conditions: - "{{ trigger.alias == 'Trigger Dzikir Petang' }}" sequence: - service: media_player.play_media target: entity_id: media_player.ruang_keluarga data: media_content_id: media-source://media_source/local/Dzikir/AlMatsurat Petang.mp3 media_content_type: audio/mpeg
Enjoy HA 🙂

