Adhan automation (أذان التلقائي) using Home Assistant and Google Home Mini

One Error I was able to find was the naming of entity (entity_id: media_player.**dining_room_speakerr**) was wrong for Fajr prayers resulting not in playing this. I will wait for Dhuhur prayers to see if it works and update the thread.

JazzakAllah

Update:
Alhamdulillah, I was able to play Asr Adhan … There was change in sensor naming convention in automation that caused the issue, I have corrected it as it was advised in the comments. Following is the correct automations.yaml file

automations.yaml

- id: '1517693010922'
  alias: Adhan
  trigger:
  - platform: template
    value_template: '{{ as_timestamp(strptime(states("sensor.time_date"), "%H:%M,
      %Y-%m-%d")) == as_timestamp(strptime(states("sensor.dhuhr_prayer"), "%Y-%m-%dT%H:%M:%S"))
      }}'
  - platform: template
    value_template: '{{ as_timestamp(strptime(states("sensor.time_date"), "%H:%M,
      %Y-%m-%d")) == as_timestamp(strptime(states("sensor.asr_prayer"), "%Y-%m-%dT%H:%M:%S"))
      }}'
  - platform: template
    value_template: '{{ as_timestamp(strptime(states("sensor.time_date"), "%H:%M,
      %Y-%m-%d")) == as_timestamp(strptime(states("sensor.maghrib_prayer"), "%Y-%m-%dT%H:%M:%S"))
      }}'
  - platform: template
    value_template: '{{ as_timestamp(strptime(states("sensor.time_date"), "%H:%M,
      %Y-%m-%d")) == as_timestamp(strptime(states("sensor.isha_prayer"), "%Y-%m-%dT%H:%M:%S"))
      }}'
  condition: []
  action:
  - alias: ''
    data:
      entity_id: media_player.dining_room_speaker
      media_content_id: https://www.islamcan.com/audio/adhan/azan2.mp3
      media_content_type: audio/mp3
    service: media_extractor.play_media
  - data:
      volume_level: 0.4
    service: media_player.volume_set
    target:
      entity_id: media_player.dining_room_speaker
  mode: single
- id: '1517693034922'
  alias: Fajar Azaan
  trigger:
  - platform: template
    value_template: '{{ as_timestamp(strptime(states("sensor.time_date"), "%H:%M,
      %Y-%m-%d")) == as_timestamp(strptime(states("sensor.fajr_prayer"), "%Y-%m-%dT%H:%M:%S"))
      }}'
  condition: []
  action:
  - alias: Fajar
    data:
      entity_id: media_player.dining_room_speaker
      media_content_id: https://www.islamcan.com/audio/adhan/azan3.mp3
      media_content_type: audio/mp3
    service: media_extractor.play_media
  - data:
      volume_level: 0.4
    service: media_player.volume_set
    target:
      area_id: living_room
      device_id: 83982c1f80fda986dd93cfbee8f335d7
      entity_id: media_player.dining_room_speaker
  mode: single
- alias: Restart HA
  trigger:
    platform: time
    at: 02:00:00
  action:
  - service: homeassistant.restart

JazzakAllah

The information presented in the first post of this thread is almost 3 years old. Some of it is outdated and there are now simpler, easier ways to do the same things.

For example, I posted a revised version of the automation here and it demonstrates that the original Template Triggers can be replaced with a far more compact Time Trigger:

  trigger:
  - platform: time
    at: 
    - sensor.fajr_prayer
    - sensor.dhuhr_prayer
    - sensor.asr_prayer
    - sensor.maghrib_prayer
    - sensor.isha_prayer

If we apply this enhancement to your two automations, we get this:

- id: '1517693010922'
  alias: Adhan
  trigger:
  - platform: time
    at:
    - sensor.dhuhr_prayer
    - sensor.asr_prayer
    - sensor.maghrib_prayer
    - sensor.isha_prayer
  condition: []
  action:
  - service: media_extractor.play_media
    target:
      entity_id: media_player.dining_room_speaker
    data:
      media_content_id: https://www.islamcan.com/audio/adhan/azan2.mp3
      media_content_type: audio/mp3
  - service: media_player.volume_set
    target:
      entity_id: media_player.dining_room_speaker
    data:
      volume_level: 0.4
  mode: single
- id: '1517693034922'
  alias: Fajar Azaan
  trigger:
  - platform: time
    at: sensor.fajr_prayer
  condition: []
  action:
  - service: media_extractor.play_media
    target:
      entity_id: media_player.dining_room_speaker
    data:
      media_content_id: https://www.islamcan.com/audio/adhan/azan3.mp3
      media_content_type: audio/mp3
  - service: media_player.volume_set
    target:
      area_id: living_room
      device_id: 83982c1f80fda986dd93cfbee8f335d7
      entity_id: media_player.dining_room_speaker
    data:
      volume_level: 0.4
  mode: single

In addition, the Islamic Prayer integration can now be configured via the UI:

image

Therefore it is no longer necessary to configure it via configuration.yaml

# This is not needed because it can now be done via the UI
islamic_prayer_times:
    calculation_method: karachi

The optional five Template Sensors, showing the current day’s prayer times, can be reduced to this:

  - platform: template
    sensors:
      salah_fajr:
        friendly_name: "Salah Fajr"
        value_template: "{{ states('sensor.fajr_prayer') | as_timestamp | timestamp_custom('%H:%M') }}"
      salah_dhuhr:
        friendly_name: "Salah Dhuhr"
        value_template: "{{ states('sensor.dhuhr_prayer') | as_timestamp | timestamp_custom('%H:%M') }}"
      salah_asr:
        friendly_name: "Salah Asr"
        value_template: "{{ states('sensor.asr_prayer') | as_timestamp | timestamp_custom('%H:%M') }}"
      salah_maghrib:
        friendly_name: "Salah Maghrib"
        value_template: "{{ states('sensor.maghrib_prayer') | as_timestamp | timestamp_custom('%H:%M') }}"
      salah_isha:
        friendly_name: "Salah Isha"
        value_template: "{{ states('sensor.isha_prayer') | as_timestamp | timestamp_custom('%H:%M') }}"
1 Like

Thank you a lot for the updated information! I was wondering if it was possible to only show the highlighted information instead of all of that data:

@123

Could you please help me out configuring the configuration.yaml? I’m using the version you posted above. I now get this error:

2021-12-06 01:05:20 WARNING (MainThread) [homeassistant.helpers.template] Template warning: 'as_timestamp' got invalid input 'unknown' when rendering template '{{ states('sensor.fajr_prayer') | as_timestamp | timestamp_custom('%H:%M') }}' but no default was specified. Currently 'as_timestamp' will return 'None', however this template will fail to render in Home Assistant core 2022.1

Any help is very welcome! Thank you!

It’s not an error, it’s a warning.

WARNING (MainThread) [homeassistant.helpers.template]

The message clearly explains why:

‘as_timestamp’ got invalid input ‘unknown’

The result of this:

states('sensor.fajr_prayer')

was unknown.

That means the value of sensor.fajr_prayer is unknown. Did you install the Islamic Prayer Times integration? Do you see five sensors in Configuration > Entities related to the Prayer Times integration?

1 Like

Thank you a lot! That was indeed the problem: I did not have the Islamic Prayer Times installed. Thanks again!

Guys, the times which is gives to me is not really correct, some of 10 minutes after or before. How can i setup some + or - to let me see the correct times on lovelace?

pryaer

type: glance
entities:
  - entity: sensor.fajr_prayer
    format: time
  - entity: sensor.dhuhr_prayer
    format: time
  - entity: sensor.asr_prayer
    format: time
  - entity: sensor.maghrib_prayer
    format: time
  - entity: sensor.isha_prayer
    format: time

Same problem did you just find the problem? See my question up maybe a workaround if that is possible to let see the lovelace the time with some +10 min -10 min as example.

Can someone post an updated version of this, I cannot get this working correctly. the original post is outdated as of today and does not function correctly.

Currently, I am getting the following error in the logs, It does execute when I run the automation manually but does not execute on its own or on the correct time.

Thank you

Scroll up about 7 posts and you’ll find an updated version posted on July 29. That post also contains a link to the following simplified version:

https://community.home-assistant.io/t/adhan-automation-using-home-assistant-and-google-home-mini/135622/290?u=123

Still not working below is the error

That’s not one of the simplified versions I suggested.

@123
Thank you, after I reapplied the automation using your simplified version, everything worked as expected.

Below is my configuration for anyone who wishes to use it.

Configuration.yaml

homeassistant:
  latitude: xxxx
  longitude: xxxxx
  elevation: xx
  unit_system: metric
  time_zone: Asia/Kolkata

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:
discovery:
media_extractor:
sun:
updater:

# Text to speech
tts:
  - platform: google_translate

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

mqtt:
  discovery: true
  discovery_prefix: homeassistant
  broker: 192.168.xxx.xxx
  port: 18xx
  client_id: xxxxxxx
  keepalive: 60
  username: xxxxxxxxx
  password:xxxxxxxxxx

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - xxx

sensor:
  - platform: time_date
    display_options:
      - "time"
      - "date"
      - "date_time"
      - "date_time_iso"
      - "time_date"
      - "time_utc"
      - "beat"

Automations.yaml

- id: "1517693010922"
  alias: Adhan
  trigger:
    - platform: time
      at:
        - sensor.fajr_prayer
        - sensor.dhuhr_prayer
        - sensor.asr_prayer
        - sensor.maghrib_prayer
        - sensor.isha_prayer
  condition: []
  action:
    - service: media_extractor.play_media
      target:
        entity_id: media_player.living_room_speaker
      data:
        media_content_id: https://www.islamcan.com/audio/adhan/azan2.mp3
        media_content_type: audio/mp3
    - service: media_player.volume_set
      target:
        entity_id: media_player.living_room_speaker
      data:
        volume_level: 1.0
  mode: single

Sensors.yaml

sensors:
  salah_fajr:
    friendly_name: "Salah Fajr"
    value_template: "{{ states('sensor.fajr_prayer') | as_timestamp | timestamp_custom('%H:%M') }}"
  salah_dhuhr:
    friendly_name: "Salah Dhuhr"
    value_template: "{{ states('sensor.dhuhr_prayer') | as_timestamp | timestamp_custom('%H:%M') }}"
  salah_asr:
    friendly_name: "Salah Asr"
    value_template: "{{ states('sensor.asr_prayer') | as_timestamp | timestamp_custom('%H:%M') }}"
  salah_maghrib:
    friendly_name: "Salah Maghrib"
    value_template: "{{ states('sensor.maghrib_prayer') | as_timestamp | timestamp_custom('%H:%M') }}"
  salah_isha:
    friendly_name: "Salah Isha"
    value_template: "{{ states('sensor.isha_prayer') | as_timestamp | timestamp_custom('%H:%M') }}"

Glad to hear it works for you but why did you feel the need to re-post the example that I had already posted?

This thread is already exceedingly long and filled with duplications; it’s preferable to just link to a post.

Because you don’t have everything in a single place, plus it’s not user-friendly because you don’t mention what goes in which file. If I had to guess these things from your post, I am sure others who are new would also have to guess the same, therefore I mentioned the complete information in 1 single post instead of going back and forth to different posts.

@Himdola and others looking for Diyanet times:

I’ve managed to make this work using scrape. Go to the diyanet website and change the location based on your current location. My example below is set to Rotterdam, The Netherlands: Diyanet İşleri Başkanlığı | Rotterdam İçin Namaz Vakti

You should change the URL in below and copy paste this in your configuration.yaml

sensor:
  - platform: time_date
    display_options:
      - 'time'
      - 'date'
      - 'date_time'
      - 'date_time_utc'
      - 'date_time_iso'
      - 'time_date'
      - 'time_utc'
      - 'beat'
  - platform: scrape
    resource: https://namazvakitleri.diyanet.gov.tr/tr-TR/13980/rotterdam-icin-namaz-vakti
    select: "#today-pray-times-row > div:nth-child(1) > div > div.tpt-time"
    name: İmsak
  - platform: scrape
    resource: https://namazvakitleri.diyanet.gov.tr/tr-TR/13980/rotterdam-icin-namaz-vakti
    name: Güneş
    select: "#today-pray-times-row > div:nth-child(2) > div > div.tpt-time"
  - platform: scrape
    resource: https://namazvakitleri.diyanet.gov.tr/tr-TR/13980/rotterdam-icin-namaz-vakti
    name: Öğle
    select: "#today-pray-times-row > div:nth-child(3) > div > div.tpt-time"
  - platform: scrape
    resource: https://namazvakitleri.diyanet.gov.tr/tr-TR/13980/rotterdam-icin-namaz-vakti
    name: İkindi
    select: "#today-pray-times-row > div:nth-child(4) > div > div.tpt-time"
  - platform: scrape
    resource: https://namazvakitleri.diyanet.gov.tr/tr-TR/13980/rotterdam-icin-namaz-vakti
    name: Akşam
    select: "#today-pray-times-row > div:nth-child(5) > div > div.tpt-time"
  - platform: scrape
    resource: https://namazvakitleri.diyanet.gov.tr/tr-TR/13980/rotterdam-icin-namaz-vakti
    name: Yatsı
    select: "#today-pray-times-row > div:nth-child(6) > div > div.tpt-time"
  - platform: template
    sensors:
     imsak_vakti:
      friendly_name: "İmsak Vakti"
      value_template: "{{ states('sensor.imsak') == states('sensor.time') }}"
  - platform: template
    sensors:
     gunes_vakti:
      friendly_name: "Güneş Vakti"
      value_template: "{{ states('sensor.gunes') == states('sensor.time') }}"      
  - platform: template
    sensors:
     ogle_namazi:
      friendly_name: "Öğle Vakti"
      value_template: "{{ states('sensor.ogle') == states('sensor.time') }}"   
  - platform: template
    sensors:
     ikindi_namazi:
      friendly_name: "İkindi Vakti"
      value_template: "{{ states('sensor.ikindi') == states('sensor.time') }}" 
  - platform: template
    sensors:
     aksam_namazi:
      friendly_name: "Akşam Vakti"
      value_template: "{{ states('sensor.aksam') == states('sensor.time') }}" 
  - platform: template
    sensors:
     yatsi_namazi:
      friendly_name: "Yatsı Vakti"
      value_template: "{{ states('sensor.yatsi') == states('sensor.time') }}"

Go to your automations.yaml and add this:

- alias: Namaz
  trigger:
  - platform: state
    entity_id: 
    - sensor.imsak_vakti
    - sensor.ogle_namazi
    - sensor.ikindi_namazi
    - sensor.aksam_namazi
    - sensor.yatsi_namazi
    to: "True"
  action:
  - service: media_player.play_media
    data:
      entity_id: media_player.home_group
      media_content_id: https://www.naataudio.com/downloads/IslamicRingtones/bismillah_ir_rahman.mp3
      media_content_type: music
  - service: media_player.volume_set
    data:
      entity_id: media_player.home_group
      volume_level: '0.2'

Lovelace would look like this:

type: glance
entities:
  - entity: sensor.imsak
    icon: mdi:clock-time-five-outline
  - entity: sensor.ogle
    icon: mdi:clock-time-five-outline
  - entity: sensor.ikindi
    icon: mdi:clock-time-five-outline
  - entity: sensor.aksam
    icon: mdi:clock-time-five-outline
  - entity: sensor.yatsi
    icon: mdi:clock-time-five-outline
state_color: false
show_state: true
show_icon: true
show_name: true
columns: 5
5 Likes

It’s this kind of attitude that makes me regret having providing assistance in this topic.

Given that my contributions have been so terribly difficult to comprehend, I have decided to cease participation to avoid confusing anyone else.

From now on, you can answer any questions about my examples you have re-posted. Good luck.

@123 Just ignore that guy. I found your contribution very valuable! Thanks.

Thank you so many many much. It is so simple and working like a charm, i was looking so long time a long as 2 years a solution to get that information from diyanet site. But my developer skills are so bad. Thank you thank you…