Membuat Jadwal Adzan di Home Assistant

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 🙂

Spread the love

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.