Ramadhan 1447H adalah ujian berat bagi saya karena penglihatan bapak saya yang semula masih 5% sekarang benar-benar tidak bisa melihat. Gelap.
Ini membuat beliau tidak tahu waktu. Jangankan waktu, membedakan siang dan malam saja tidak bisa. Oleh sebab itu saya melengkapi automation pada HA saya dengan jam berbicara untuk sedikit membantu bapak saya mengenali waktu.
Saya menggunakan HA yang saya hubungkan dengan speaker google.
- Setiap jam, buat ucapan selamat pagi, siang, sore, atau malam, lalu sebutkan hari dan tanggal serta jam.
- Apabila speaker google dalam keadaan berbunyi, mungkin pas adzan atau dzikir, maka ucapan tidak dilakukan.
- Set volume ke 60% saat pengucapannya, dan kembalikan ke volume awal saat sudah selesai.
Taruh script ini di automations.yaml, dan restart home assistant
# ================ JAM SUARA =====================
- id: 'jam_suara'
alias: "Jam Suara"
trigger:
- platform: time_pattern
minutes: 0
condition:
- condition: not
conditions:
- condition: state
entity_id: media_player.ruang_keluarga
state: "playing"
- condition: time
after: "05:00:00"
before: "22:00:00"
action:
- variables:
prev_volume: "{{ state_attr('media_player.ruang_keluarga', 'volume_level') | float(0.5) }}"
- service: media_player.volume_set
target:
entity_id: media_player.ruang_keluarga
data:
volume_level: 0.6
- delay: "00:00:01"
- service: tts.google_translate_say
target:
entity_id: media_player.ruang_keluarga
data:
language: "id"
message: >
{% set now_dt = now() %}
{% set h = now_dt.hour %}
{% set m = now_dt.minute %}
{% set hari = ["Senin","Selasa","Rabu","Kamis","Jumat","Sabtu","Minggu"] %}
{% set bulan = ["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"] %}
{% set nama_hari = hari[now_dt.weekday()] %}
{% set tgl = now_dt.day %}
{% set nama_bulan = bulan[now_dt.month - 1] %}
{% set tahun = now_dt.year %}
{% set angka = ["nol","satu","dua","tiga","empat","lima","enam","tujuh","delapan","sembilan","sepuluh","sebelas"] %}
{% macro sebut(n) %}
{% if n <= 11 %}
{{ angka[n] }}
{% elif n < 20 %}
{{ angka[n-10] }} belas
{% elif n < 100 %}
{% set puluhan = n // 10 %}
{% set satuan = n % 10 %}
{{ 'se' if puluhan == 1 else angka[puluhan] }}puluh {{ angka[satuan] if satuan != 0 else '' }}
{% else %}
{{ n }}
{% endif %}
{% endmacro %}
{% if 5 <= h < 11 %}
{% set salam = "pagi" %}
{% elif 11 <= h < 15 %}
{% set salam = "siang" %}
{% elif 15 <= h < 18 %}
{% set salam = "sore" %}
{% else %}
{% set salam = "malam" %}
{% endif %}
Semoga selalu dalam limpahan hidayah, rahmat, dan keberkahan Alloh. Selamat {{ salam }}.
Hari ini, {{ nama_hari }}, {{ tgl }} {{ nama_bulan }} {{ tahun }}.
{% if m == 0 %}
Sekarang pukul {{ sebut(h) }} {{ salam }} tepat.
{% elif m < 30 %}
Sekarang pukul {{ sebut(h) }} lewat {{ sebut(m) }} menit.
{% else %}
Sekarang pukul {{ sebut(h + 1 if h < 23 else 0) }} kurang {{ sebut(60 - m) }} menit.
{% endif %}
- delay: "00:00:15"
- service: media_player.volume_set
target:
entity_id: media_player.ruang_keluarga
data:
volume_level: "{{ prev_volume }}"
Catatan: Script sebelumnya tidak berhasil. Dan masalahnya ternyata ada pada HA saya yang sudah terlalu lama. Versi 2023.6. Jadi sebelum kamu membuatnya, atau tanya AI sampaikan versi HA yang kamu punya,
-
service:vsaction:: Di versi 2023.6, kamu wajib pakaiservice:. -
Jinja2 Template: Logika macro
sebut(n)yang saya buat di atas sudah kompatibel dengan mesin template di versi tersebut. -
Volume Level: Kadang di beberapa media player lama, perubahan volume mendadak butuh sedikit waktu untuk “sinkron” sebelum suara TTS keluar, jadi
delay: "00:00:01"setelah set volume itu sudah benar.

