Home Assistant

Integrasi Waktu Solat Malaysia untuk Home Assistant

Integrasi custom component ini membolehkan anda mendapatkan waktu solat Malaysia terus dalam Home Assistant, dengan sokongan automasi azan, papan pemuka, dan pertukaran zon secara langsung.

Ciri-ciri

  • 16 entiti dicipta secara automatik — sensor waktu solat, tarikh Hijri, zon, pemain media azan, dan lain-lain
  • Sokong 59 zon JAKIM di seluruh Malaysia
  • Pertukaran zon secara langsung — semua sensor dikemas kini serta-merta tanpa restart
  • Sokongan berbilang peranti (cth: "Rumah" dan "Pejabat")
  • Persediaan melalui UI — tanpa perlu edit YAML

Pemasangan

Disyorkan Melalui HACS
  1. 1 Dalam HACS, pergi ke Integrations → klik menu tiga titik → Custom repositories
  2. 2
    Tambah URL repositori berikut dan pilih kategori Integration:
    https://github.com/mysolat/homeassistant
  3. 3 Cari "Waktu Solat Malaysia" dalam HACS dan klik Download
  4. 4 Restart Home Assistant
Pemasangan Manual
  1. 1 Muat turun atau klon repositori dari GitHub
  2. 2 Salin folder custom_components/solat_my/ ke dalam direktori config/custom_components/ Home Assistant anda
  3. 3 Restart Home Assistant

Konfigurasi

  1. 1 Pergi ke Settings → Devices & Services → Add Integration
  2. 2 Cari "Waktu Solat Malaysia"
  3. 3 Masukkan Nama Peranti (cth: Waktu Solat) — ini menjadi prefix ID entiti
  4. 4 Pilih zon permulaan (cth: SGR01 — Selangor)
  5. 5 Klik Submit — semua 16 entiti akan muncul serta-merta

Untuk menukar zon kemudian, pergi ke halaman peranti dan tukar entiti Zon. Semua sensor dikemas kini serta-merta tanpa restart.

Entiti yang Dicipta

16 entiti dicipta secara automatik di bawah peranti "Waktu Solat":

Sensor Waktu Solat
ID Entiti Nama Keterangan
sensor.waktu_solat_imsakImsakWaktu Imsak (timestamp)
sensor.waktu_solat_subuhSubuhWaktu Subuh (timestamp)
sensor.waktu_solat_syurukSyurukWaktu Syuruk (timestamp)
sensor.waktu_solat_dhuhaDhuhaWaktu Dhuha (timestamp)
sensor.waktu_solat_zohorZohorWaktu Zohor (timestamp)
sensor.waktu_solat_asarAsarWaktu Asar (timestamp)
sensor.waktu_solat_maghribMaghribWaktu Maghrib (timestamp)
sensor.waktu_solat_isyakIsyakWaktu Isyak (timestamp)
sensor.waktu_solat_tarikh_hijriTarikh HijriTarikh Hijri berformat dengan nama bulan dalam Bahasa Melayu
sensor.waktu_solat_waktu_solat_seterusnyaWaktu Solat SeterusnyaWaktu solat berikutnya dengan kiraan detik
sensor.waktu_solat_waktu_solat_semasaWaktu Solat SemasaTempoh waktu solat semasa
Entiti Konfigurasi
ID Entiti Nama Keterangan
select.waktu_solat_zonZonZon aktif — tukar untuk kemas kini semua sensor serta-merta
select.waktu_solat_pemain_media_azanPemain Media AzanPemain media untuk main balik azan
number.waktu_solat_kelantangan_azanKelantangan AzanKelantangan azan (0.0–1.0)
text.waktu_solat_fail_audio_azanFail Audio AzanNama fail azan (dipisahkan koma)
text.waktu_solat_fail_audio_azan_subuhFail Audio Azan SubuhNama fail azan Subuh (dipisahkan koma)
text.waktu_solat_fail_doa_selepas_azanFail Doa Selepas AzanNama fail audio doa selepas azan

Contoh Papan Pemuka

Kad Entiti Waktu Solat (YAML)
type: entities
title: Waktu Solat
entities:
  - entity: sensor.waktu_solat_waktu_solat_semasa
    name: Waktu Semasa
  - entity: sensor.waktu_solat_waktu_solat_seterusnya
    name: Waktu Seterusnya
  - entity: sensor.waktu_solat_imsak
    name: Imsak
    format: time
  - entity: sensor.waktu_solat_subuh
    name: Subuh
    format: time
  - entity: sensor.waktu_solat_zohor
    name: Zohor
    format: time
  - entity: sensor.waktu_solat_asar
    name: Asar
    format: time
  - entity: sensor.waktu_solat_maghrib
    name: Maghrib
    format: time
  - entity: sensor.waktu_solat_isyak
    name: Isyak
    format: time
  - entity: sensor.waktu_solat_tarikh_hijri
    name: Tarikh Hijri

Contoh Automasi Azan

Panduan Lengkap
Azan Harian (YAML)
alias: Azan Harian
description: Play azan for all prayer times via solat.my integration
triggers:
  - trigger: time
    at: sensor.waktu_solat_subuh
    id: subuh
  - trigger: time
    at: sensor.waktu_solat_zohor
    id: zohor
  - trigger: time
    at: sensor.waktu_solat_asar
    id: asar
  - trigger: time
    at: sensor.waktu_solat_maghrib
    id: maghrib
  - trigger: time
    at: sensor.waktu_solat_isyak
    id: isyak
conditions: []
actions:
  - action: persistent_notification.create
    data:
      notification_id: solat_azan
      title: >
        🕋 Waktu Solat — {% set names = {'subuh': 'Subuh', 'zohor': 'Zohor',
        'asar': 'Asar', 'maghrib': 'Maghrib', 'isyak': 'Isyak'} %} {{ names[trigger.id] }}
      message: >
        {% set names = {'subuh': 'Subuh', 'zohor': 'Zohor', 'asar': 'Asar',
        'maghrib': 'Maghrib', 'isyak': 'Isyak'} %} {{ now().strftime('%-I:%M %p') }}
        — Sekarang telah masuk waktu {{ names[trigger.id] }}.
  - action: notify.notify
    data:
      title: >
        🕋 Waktu Solat — {% set names = {'subuh': 'Subuh', 'zohor': 'Zohor',
        'asar': 'Asar', 'maghrib': 'Maghrib', 'isyak': 'Isyak'} %} {{ names[trigger.id] }}
      message: >
        {% set names = {'subuh': 'Subuh', 'zohor': 'Zohor', 'asar': 'Asar',
        'maghrib': 'Maghrib', 'isyak': 'Isyak'} %} {{ now().strftime('%-I:%M %p') }}
        — Sekarang telah masuk waktu {{ names[trigger.id] }}.
  - action: media_player.volume_set
    target:
      entity_id: "{{ states('select.waktu_solat_pemain_media_azan') }}"
    data:
      volume_level: "{{ states('number.waktu_solat_kelantangan_azan') | float }}"
  - action: tts.google_translate_say
    data:
      entity_id: "{{ states('select.waktu_solat_pemain_media_azan') }}"
      language: id
      message: >
        {% set names = {'subuh': 'Subuh', 'zohor': 'Zohor', 'asar': 'Asar',
        'maghrib': 'Maghrib', 'isyak': 'Isyak'} %} Sekarang telah masuk waktu
        {{ names[trigger.id] }} bagi kawasan ini dan kawasan yang sama waktu dengannya.
  - delay: "00:00:10"
  - action: media_player.play_media
    target:
      entity_id: "{{ states('select.waktu_solat_pemain_media_azan') }}"
    data:
      extra:
        title: >
          {% set names = {'subuh': 'Subuh', 'zohor': 'Zohor', 'asar': 'Asar',
          'maghrib': 'Maghrib', 'isyak': 'Isyak'} %} Azan {{ names[trigger.id] }}
        thumb: https://solat.my/icon.png
      media:
        media_content_type: audio/mp3
        media_content_id: |
          {% if trigger.id == 'subuh' %}
            {{ "media-source://media_source/local/azan/" ~
               states('text.waktu_solat_fail_audio_azan_subuh').split(', ') | random }}
          {% else %}
            {{ "media-source://media_source/local/azan/" ~
               states('text.waktu_solat_fail_audio_azan').split(', ') | random }}
          {% endif %}
  - choose:
      - conditions:
          - condition: trigger
            id: subuh
        sequence:
          - delay:
              minutes: 4
              seconds: 30
      - conditions:
          - condition: not
            conditions:
              - condition: trigger
                id: subuh
        sequence:
          - delay:
              minutes: 2
              seconds: 47
  - action: media_player.play_media
    alias: Doa Selepas Azan
    target:
      entity_id: "{{ states('select.waktu_solat_pemain_media_azan') }}"
    data:
      media:
        media_content_id: media-source://media_source/local/azan/doa_selepas_azan.mp3
        media_content_type: audio/mpeg
        metadata:
          title: doa_selepas_azan.mp3
          media_class: music
mode: single

Kod sumber tersedia di GitHub. Laporkan isu atau sumbangkan penambahbaikan.

github.com/mysolat/homeassistant →