Home Assistant

Home Assistant: thông báo Mùng Một và Rằm âm lịch

Home Assistant and Vietnamese Beliefs

Thêm sự kiện ngày Rằm và mùng Một vào Home Assistant, thiết lập thông báo mà không cần cài đặt thêm tích hợp bên ngoài

Photo: Home-assistant.io & Zing.vn
17 phút để đọc hết nội dung

Gia đình người Việt luôn giữ thói quen tốt đẹp thắp hương hay đi chùa vào ngày Rằm và mùng Một để tưởng nhớ ông bà tổ tiên. Cũng là người Việt, chúng tôi muốn gìn giữ những truyền thống tốt đẹp này trong cuộc sống hằng ngày và cho thế hệ mai sau. Kết hợp giữa công nghệ hiện đại và truyền thống lâu đời là một trong các cách tuyệt vời để làm điều đó. Với bài viết này, chúng tôi xin đưa ra một cách để thông báo bằng hiển thị hay lời nói cho mọi thành viên trong gia đình bạn khi đến những ngày này thông qua Home Assistant“quản gia 4.0” của nhà bạn.

update Retina01/05/2020: Thay đổi trigger của automation do trigger trước đây không hoạt động, liên quan đến sự kiện cập nhật trạng thái của entity calendar
! Lưu ý

Hướng dẫn này chỉ để hiện thông báo sắp đến ngày Rằm hay mùng Một. Đây không phải hướng dẫn tích hợp hay hiển thị Âm Lịch trong Hass.

Để thực hiện theo hướng dẫn này bạn sẽ cần:

  1. Máy chủ Home Assistant đang hoạt động bình thường
  2. Một tài khoản Google đang hoạt động bình thường
  3. Hướng dẫn này dễ thực hiện hơn trên máy tính với trình duyệt web và kết nối internet

Thêm ngày rằm và mùng một vào Google Calendar

Tải về file chứa các ngày lễ Âm lịch

Trước tiên bạn cần tải – download và giải nén – unzip file chứa tất cả các ngày Rằmmùng Một về theo liên kết ở dưới. File này được tạo sẵn bởi KonnectED, sử dụng app và hướng dẫn tạo âm lịch trên Google của thành viên bunpbu chia sẻ trên diễn đàn tinhte.vn (bài gốc).

File sau giải nén có phần mở rộng ics là định dạng file tương thích với ứng dụng lịch của Google, Apple và Microsoft Outlook. File không chứa phần mềm độc hại hay bất cứ thông tin quảng cáo nào (bạn có thể tải về, giải nén và mở bằng phần mềm xử lý văn bản thông thường để xem nội dung).

ZIPKonnectED_Hass_Le_Am_Lich_2020-2040.zip

Thêm lịch mới vào Google Calendar

Trước tiên, truy cập vào ứng dụng lịch Google Calendar tại địa chỉ calendar.google.com bằng tài khoản Google của bạn. Lưu ý, để thuận tiện quản lý, tài khoản này cũng nên là tài khoản Google dùng để liên kết trợ lý ảo Google Assistant hay dịch vụ Google Home vào Hass, tuy nhiên có thể là bất cứ tài khoản Google nào bạn có.

Sau khi giải nén file ở trên, tạo lịch mới trên Google Calendar và nhập – import tất cả sự kiện mùng Một và Rằm vào lịch này.
Lưu ý: sau khi giải nén bạn sẽ thu được 2 file có phần mở rộng ics, nếu chỉ cần Ngày Rằm và Mùng Một, bạn chỉ cần import file có tên bắt đầu bằng Ram_va_Mung_Mot, nếu bạn muốn thêm một số ngày lễ khác như Tết Hàn Thực, Tết Đoan Ngọ, Hội Đền Hùng v.v.., import thêm file thứ hai có tên bắt đầu bằng Cac_Ngay_Le (vào cùng lịch đã tạo).

update Retina Cập nhật ngày 24/05/2020 – Bổ sung các năm nhuận
Cập nhật các tháng bị nhiếu trong năm Nhuận

Do file chứa sự kiện mùng Một và Rằm bên trên không có các tháng Nhuận, bạn cần tải và import thêm file bên dưới để bổ sung các tháng bị thiếu.
Chúng tôi vô cùng xin lỗi về sự bất tiện này!

ZIPkonnected_Bo_Sung_Nam_Nhuan_Am_Lich.zip

Google Calendar Import lich
Thêm các sự kiện từ năm nhuận Âm vào lịch

Nếu đây là lần đầu bạn thực hiện, import file vừa tải tương tự như 2 file .ics ở trên.

Nếu bạn đã thực hiện rồi và cần bổ sung, bạn vào mục Cài đặt của Lịch, chọn mục Import & export rồi import file lịch “[email protected]” đã giải nén từ file trên. Nhớ chọn đúng lịch (Ngày Rằm và Mồng Một) dành cho Home Assistant đã tạo trước đây.

Trong giao diện Google Calendar, tại thanh tác vụ bên trái, ở dưới, bấm vào dấu (+) ở mục Các lịch khác – Other calendars, rồi chọn Tạo lịch mới – Create new calendar để thêm mới một lịch.

Đặt tên cho lịch mới, ví dụ Ngày Rằm và Mùng Một. Thêm vào Mô tả – description nếu bạn muốn. Chọn Múi giờ – Timezone tại nơi của bạn, chọn (GMT+7) cho múi giờ Việt Nam, rồi chọn Tạo lịch – Create calendar.

Lúc này bạn sẽ quay trở lại giao diện Google Calendar ban đầu với lịch mới Ngày Rằm và Mùng Một được thêm vào ở thanh bên trái. Lần nữa, bấm vào dấu (+) và chọn Nhập – Import để thêm các sự kiện trong file vừa tải ở trên vào lịch mới tạo này.

Tải lên file đã tải về và giải nén bằng cách bấm vào nút Chọn file – Select file from your computer. Sau khi chọn file, chọn lịch vừa tạo ở mục Thêm vào lịch – Add to calendar. Bấm Nhập – Import để thêm sự kiện vào lịch. Ở bước này, bạn phải chờ vài giây để Google xử lý.

Sau khi thêm thành công, quay trở lại giao diện chính của Google Calendar, chọn lịch vừa tạo. Lúc này bạn sẽ thấy các sự kiện Mùng Một và Ngày Rằm xuất hiện đúng ngày trong lịch.

Tiếp theo bạn cần chép – copy Calendar ID của lịch mới tạo để sử dụng trong bước B2. Thêm lịch vào Hass. Tại giao diện Google Calendar, mục My Calendar, di chuột lên trên lịch cần lấy ID, bấm vào nút Menu cạnh tên lịch và chọn Settings and sharing, kéo xuống mục Integrate calendar, Calendar ID. Chép lại – copy Calendar ID này và thay vào mục cal_id: ở dưới

Thêm Google Calendar vào Home Assistant

Cách thêm Google Calendar vào Hass, bạn xem tại bài viết này: Tích hợp Google Calendar vào Hass.
Sau khi thêm cấu hình Google Calendar vào Hass và xác thực với Google theo liên kết bên trên, bạn copy và paste nội dung sau vào file cấu hình của Hass tại /config/google_calendars.yaml để thêm lịch vừa tạo ở trên vào Hass, nếu chưa có, hãy tạo mới file này.

#Cấu hình thủ công Google Calendar
- cal_id: [email protected]
  entities:
  - device_id: mung_mot_va_ram
    ignore_availability: true
    name: Mùng Một và Ngày Rằm
    track: true

Thay cal_id bằng Calendar ID bạn đã copy từ bước cuối bước B1, bạn cũng có thể thay đổi: device_id là tên của entity chứa event sắp tới của lịch vừa tạo và name là tên hiển thị – friendly name của entity này.

Sau khi thay đổi và lưu lại file /config/google_calendars.yaml, bạn hãy kiểm tra cấu hình và khởi động lại Hass.

Sau khi khởi động lại, một entity mới (binary_sensor) sẽ xuất hiện trong Hass với các thuộc tính:
– message: tên của sự kiện gần nhất
– start_time: thời gian bắt đầu diễn ra
và trạng thái – state của entity này là on khi đến thời điểm sự kiện diễn ra. Bạn cũng có thể hiển thị state và các attributes này ra giao diện của Hass (lovelace).

Entity: calendar.mung_mot_va_ram

Tạo thông báo nhắc nhở khi gần đến mùng Một và Rằm

Ở đây ta sẽ tạo ra một Automation – Tự động hoá, để gửi thông báo nhắc nhở đến ứng dụng Home Assistant trên điện thoại (mobile_app.konnected_thap_huong_iphone) và thông báo qua loa Google Home và Google Home Mini (media_player.google_home) trước khi sự kiện diễn ra 18g (tức là vào khoảng 06 giờ sáng của ngày hôm trước) với thông điệp nhắc nhở là tên sự kiện (mùng một, tết trung thu v.v…).

Nếu bạn chỉ sử dụng một thông báo hãy xoá bớt cái còn lại đi, nếu bạn muốn sử dụng thêm nhiều thông báo hay action khác, thêm vào cho phù hợp.

Đây chỉ là cấu hình mẫu, bạn cần thay các thông số cho phù hợp (chúng tôi sẽ chú thích bên trong đoạn mã bên dưới) hoặc có thể thay đổi và cải thiện – improve cho phù hợp nhu cầu và hay hơn.

update Retina01/05/2020: Thay đổi trigger của automation do trigger trước đây không hoạt động, liên quan đến sự kiện cập nhật trạng thái của entity calendar
- id: '158296922705888'
  alias: 'Thong bao Thap Huong'
  trigger:
  - at: '06:30:00'
    platform: time
  condition:
  - condition: template
    value_template: >-
      {% set event_remaining = (as_timestamp(state_attr('calendar.mung_mot_va_ram','start_time'))
      - as_timestamp(now()))/3600 %}
      {{ event_remaining < 24 and event_remaining >= 0 }}
  action:
  #<Bắt đầu thông báo đến điện thoại
  - service: notify.mobile_app_konnected_thap_huong_iphone
    #service gửi thông báo đến iphone kết nối qua integration mobile_app
    data:
      title: 'Ngày rằm và mùng một'
      message: Mai là {{ state_attr('calendar.mung_mot_va_ram','message') }}.
  #<Bắt đầu thông báo qua loa Google Home
  - service: tts.google_say
    data_template:
      entity_id: media_player.google_home
      #entity đại diện loa Google Home
      message: >
        Cả nhà ơi, mai là {{ state_attr('calendar.mung_mot_va_ram','message') }}. Nhà ta nhớ thắp hương cho các cụ nhé!
      language: 'vi'
! Automation trước đây
- id: '158296922705887'
  alias: 'Thong bao Thap Huong'
  trigger:
  - platform: template
    value_template: >-
      {% set event_remaining = ((as_timestamp(state_attr('calendar.mung_mot_va_ram','start_time'))
      - as_timestamp(now()))/3600)|round(1) %}
      {{ event_remaining < 18 and event_remaining > 0 }}
  #18: số giờ còn lại trước khi xảy ra sự kiện
  condition: []
  action:
  #<Bắt đầu thông báo đến điện thoại
  - service: notify.mobile_app_konnected_thap_huong_iphone
    #service gửi thông báo đến iphone kết nối qua integration mobile_app
    data:
      title: 'Ngày rằm và mùng một'
      message: Mai là {{ state_attr('calendar.mung_mot_va_ram','message') }}.
  #<Bắt đầu thông báo qua loa Google Home
  - service: tts.google_say
    data_template:
      entity_id: media_player.google_home
      #entity đại diện loa Google Home
      message: >
        Cả nhà ơi, mai là {{ state_attr('calendar.mung_mot_va_ram','message') }}. Nhà ta nhớ thắp hương cho các cụ nhé!
      language: 'vi'
Thử kiểm tra câu thông báo với công cụ Template của Hass – Tác giả

Sau khi copy/paste và thay đổi cho phù hợp, bạn kiểm tra cấu hình rồi Tải lại Automation – Reload Automation trong Hass để áp dụng automation trên.

Giao diện Automation

Hoặc bạn có thể tạo Automation này bằng giao diện web của Hass

Một số cải thiện

Cải thiện thông báo TTS

Cải thiện sự tự nhiên của câu thông báo qua platform TTS Google Translate Say ở trên.

Khi thử kích hoạt automation trên, bạn có thể nghe thấy câu nói hơi bị vấp ở ngày, ví dụ (1/3). Ta có thể cải thiện bằng cách thay đổi (1/3) thành (1 tháng 3), như sau:

      message: >
        Cả nhà ơi, mai là {{ state_attr('calendar.mung_mot_va_ram','message').replace('/',' tháng ')}}. Nhà ta nhớ thắp hương cho các cụ nhé!
      language: 'vi'

Lovelace card

Lovelace card bao gồm một Markdown card nằm bên trong Conditional card để thông báo khi đến ngày mùng Một và Rằm.

Hôm nay mùng một(1/3), vợ nhớ mua hoa quả thắp hương các cụ nhé
Markdown Lovelace card
type: conditional
conditions:
  - entity: calendar.mung_mot_va_ram
    state: 'off'
card:
  type: markdown
  content: "Hôm nay **{{ state_attr('calendar.mung_mot_va_ram','message') }}**, vợ nhớ mua hoa quả thắp hương các cụ nhé \U0001F618"

Thêm ngày giỗ

Thêm ngày giỗ hay các ngày lễ khác vào lịch để nhắc nhở bằng cách vào Google Calendar và thêm một sự kiện mới vào lịch đã tạo như ảnh dưới. Lưu ý là lịch trên Google là Dương lịch nên không thể thêm các sự kiện lặp lại mỗi tháng hay năm mà chỉ có thể thêm sự kiện sắp tới gần nhất.

Bạn nhớ chọn đúng lịch vừa tạo

Về Bài viết

Bài viết chưa đầy đủ hoặc bạn còn có ý kiến khác? Bạn có thắc mắc và cần thêm thông tin. Vui lòng đăng ý kiến vào mục bình luận để tác giả và Team có thêm thông tin cải thiện chất lượng bài viết. Chúng tôi sẽ giải đáp các thắc mắc ngay trong mục bình luận để giúp được nhiều đọc giả với cùng vấn đề hơn hoặc chúng tôi sẽ trả lời trong một bài viết riêng. Trân trọng cảm ơn bạn!

Cảm ơn bạn đã xem bài viết này!

konnectED Team.

Lên Đầu
  • Đăng ký
Bạn quên mất mật khẩu? Vui lòng nhập tên đăng nhập và địa chỉ email đã đăng ký. Bạn sẽ nhận được liên kết tạo mật khẩu mới qua email (bạn nhớ kiểm tra hộp spam trong trường hợp email đi lạc).