Home Assistant

Home Assistant: 0.113

Hass 0.113

Home Assistant 0.113 tập trung làm mới automations và scripts với rất nhiều tuỳ chọn mới, bên cạnh đó hiệu năng được cải thiện rất nhiều so với các phiên bản cũ hơn

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

Ngày phát hành: 23/07/2020

Thay đổi cách bạn dùng Automation, Script & Cải thiện hiệu năng

Tiếp nối phiên bản 0.112, phiên bản Home Assistant 0.113 tiếp tục cải thiện hiệu năng của phần Core, có thể cải thiện tối đa hơn 40% hiệu năng. Tuy nhiên, thay đổi lớn chính là việc sửa lỗi và cải tiến cách xử lý các automation và script. Điều này chắc chắn mang lại nhiều lợi ích, tuy nhiên cách bạn “nghĩ về” automation sẽ phải thay đổi một chút.

0.113.3 – Phát hành ngày 02/08/2020
! 0.113.3
  • Sửa lỗi phát âm của google_translate TTS
  • Thêm hỗ trợ on off cho Abode camera
  • Sửa lỗi kiểm tra songpal đã được cấu hình trong config flow
  • Ngăn kodi khoá quá trình khởi động
  • Bỏ qua các remote Plex clients trong quá trình tìm kiếm plex.tv
  • Nâng androidtv lên 0.0.47 và adb-shell lên 0.2.1
  • Nâng pychromecast lên 7.2.0
  • Nâng cấp aioharmony lên 0.2.6
  • Tránh lỗi với các mục cấu hình harmony đã bị bỏ qua
  • Ngăn lỗi cấu hình nut khi kiểm tra các mục bị bỏ qua
  • Chắc chắn webhook ID của Toon chưa được đăng ký trong quá trình đăng ký lại
  • Sửa lỗi rmvtransport khi đích đến không khớp
  • Sửa lỗi tích hợp ads sau 0.113
  • Ghim yarl ở phiên bản 1.4.2 như một thành phần cần thiết
  • Tạm thời khoá pip ở phiên bản 20.1.1 để tránh lỗi khi build

0.113.2 – Phát hành ngày 29/07/2020
! 0.113.2
  • Cập nhật netdisco lên 2.8.1
  • Ngừng automation đang chạy khi tắt hoặc reload
  • Cập nhật tesla-powerwall lên 0.2.12 để đáp ứng powerwall firmware 1.48 trở lên
  • Bỏ qua địa chỉ IP của hub harmony nếu đã được cấu hình trong khi phát hiện tự động
  • Sửa lỗi nhận biết zones 2 và 3 trong Onkyo/Pioneer amplifiers
  • Sửa lỗi sử dụng biến trong action bên trong repeat của script
  • Sửa lỗi script song song có chứa repear hoặc action với max_runs lớn hơn 10
  • Sửa lỗi Skybell
  • Cải thiện logic khi cố gắng thực hiện lại thiết lập để xử lý lỗi khả dụng không ổn định của hub powerview
  • Không thiết lập callbacks cho đến khi thực thể được tạo
  • Ngăn onvif khoá quá trình khởi động
  • Sửa lỗi thư viện xboxapi
  • Nâng cấp python-miio lên 0.5.3
  • Ngăn speedtest khoá quá trình khởi động
  • Sửa lỗi một số TV Samsung nhất định liên tục hiển thị yêu cầu xác thực
  • Thêm thông vào vào log khi có một chuỗi hoạt động đang khoá quá trình khởi động
  • Xoá bỏ kiểm tra phiên bản AdGuard

0.113.1 – Phát hành ngày 25/07/2020
! 0.113.1
  • Cập nhật discord.py lên v1.3.4 để đáp ứng thay đổi trong API
  • Sửa lỗi khởi tạo PT2262 trong tích hợp rfxtrx
  • Sửa lỗi route53 phụ thuộc vào các gói bị lỗi
  • Nâng cấp pysmartthings lên 0.7.2
  • Nâng cấp androidtc lên 0.0.46
  • Ngăn dịch vụ quét zeroconf bị ngừng khi một thiết bị được tìm thấy nhưng không có địa chỉ
  • Sửa lỗi SimpliSafe để hoạt động được với MFA mới
  • Sửa lỗi văn bản khi nhận IP ngoài trong route53
  • Sửa lỗi biến repeat có khi không được định nghĩ trong script
  • Ghi lại các tác vụ ngăn quá trình khởi động nếu tính năng tìm lỗi được bật
  • Sửa lỗi tích hợp Xbox Live
  • Sửa lỗi đo lường sai giá trị meter low trong Toon
  • Sửa lỗi Nuki Locks và Openers không khả dụng sau một thời gian
  • Loại bỏ các thông báo thừa trong simplisafe

Automations & Scripts

Sửa lỗi

Không thật sự là lỗi, đây là một sự đánh đổi – tradeoff trong thiết kế. Như chúng tôi nhiều lần cảnh báo về việc sử dụng action delay trong các bài viết trước đây (ví dụ như lưu ý đầu tiên trong bài viết này: tạo thanh trượt hẹn giờ), đặc biệt là delay thời gian dài, có một lỗi lâu đời trong cách Hass xử lý automation.

Lỗi này tóm gọn lại như sau: nếu một automation đang ở giữa quá trình thực hiện action delay hoặc wait và lại bị kích hoạt – trigger lần nữa, delaywait sẽ mặc định hoàn tất hoặc timeout (hết hạn). Điều này dẫn tới rất nhiều kết quả ngoài dự định của người tạo automation.

Lỗi này đã được sửa trong Home Assistant 0.113 bằng 2 lựa chọn:

  1. Lựa chọn đầu tiên, automation vẫn sẽ tiếp tục chạy như dự định, lệnh kích hoạt thứ hai sẽ bị bỏ qua
  2. Lựa chọn thứ hai, chế độ chạy song song như mô tả ở dưới

Chế độ chạy

! Lưu ý

Chạy song song là một ý tưởng tuyệt vời (đa luồng) nhưng luôn rất khó để tối ưu và kiểm soát, kể cả với các lập trình viên lâu năm. Là người dùng cuối, bạn cần phải hình dung rõ ràng logic và các khả năng có thể xảy ra khi áp dụng.

Tạm thời, KonnectED Team khuyến cáo hãy giữ các automation và script hiện có ở chế độ chạy đơn single gần tương tự như trước giờ. Chỉ áp dụng chế độ chạy song song parallel cho số lượng hạn chế automation rất cần thiết.

Automations và Scripts sẽ có thêm tuỳ chọn mới khi chạy: running modes. Tuỳ chọn này thể hiện trong mã YAML như bên dưới:

automation:
  - alias: 'Running modes'
    trigger:
      - ...
    condition:
      - ...
    mode: single
    action:
      - ...

Các tuỳ chọn mode bao gồm:

  • single đơn lẻ, nếu automation đang chạy giữa chừng, kích hoạt thêm sẽ chỉ tạo ra cảnh báo, không ảnh hưởng đến quá trình chạy
  • restart khởi động lại, dừng giữa chừng và chạy lại từ đầu nếu bị kích hoạt lần nữa
  • queued xếp hàng, chờ cho automation đang chạy hoàn tất rồi lại tiếp tục chạy từ đầu cho đến hết hàng đợi
  • parallel song song, khi bị kích hoạt lại, ngay lập tức, chạy lại từ đầu thêm lần nữa, phiên bản đang chạy vẫn sẽ tiếp tục như bình thường. Lúc này sẽ có nhiều phiên bản – instance của cùng một automation chạy (song song).
Hass running modes
Giải thích các running modes

Với các chế độ parallelqueued, tuỳ chọn phụ max sẽ quy định số lượng tối đa các phiên bản được chạy song song hoặc độ dài tối đa của hàng đợi.

Repeats – Lặp lại

Đây là một action mới cho automations và scripts, quy định số lần lặp lại của một chuỗi action.

Ví dụ automation bên dưới:

- alias: Gửi lặp lại nhiều thông báo đến điện thoại
  repeat:
    count: 10
    sequence:
      - service: notify.my_iphone
        data:
          message: 'Thông báo lặp lại'

Sẽ gọi liên tiếp 10 lần dịch vụ notify.my_iphone, qua đó gửi 10 thông báo đến ứng dụng Home Assistant trên điện thoại.

Ngoài count để quy định số lần lặp thì bạn có thể sử dụng while để lặp lại một chuỗi action – sequence chừng nào một hoặc một số điều kiện còn thoả mãn, tương tự cách hoạt động của alert.

Ngoài ra bạn cũng có thể sử dụng repeatuntil để lặp lại sequence cho đến khi nào một điều kiện thoả mãn (gần ngược lại với while).

Ví dụ về whilerepeat:

- alias: Repeat the sequence AS LONG AS the conditions are true
  description: 'Lặp lại chừng nào điều kiện còn thoả mãn'
  repeat:
    while:
      - condition: state
        entity_id: input_boolean.run_loop
        state: 'on'
      - condition: template
        value_template: "{{ repeat.index <= 20 }}" #số lần lăp nhỏ hơn 21
    sequence:
      - ...
- alias: Repeat the sequence UNTIL the conditions are true
  description: 'Lặp lại đến chừng nào một điều kiện thoả mãn'
  repeat:
    sequence:
      - ...
    until:
      - condition: state
        entity_id: binary_sensor.the_cows_have_come_home
        state: 'on'

Chooser

Thêm một tuỳ chọn mới khi tạo automationscript, từ giờ bạn có thể chọn kích hoạt một chuỗi action tuỳ vào entity nào kích hoạt. Trước đây, điều này thường được thực hiện bằng các sử dụng template và if, bạn vẫn có thể dùng cách này hoặc chuyển sang dùng chooser như ví dụ dưới.

automation:
  - alias: "Example"
    description: "Bật đèn tuỳ vào nút được bấm"
    trigger:
      - platform: state
        entity_id:
          - binary_sensor.button1
          - binary_sensor.button2
    action:
      - choose:
        - conditions:
            - condition: state
              entity_id: binary_sensor.button1
              state: "on"
          sequence:
            - service: light.turn_on
              entity_id: light.bulb
        - conditions:
            - condition: state
              entity_id: binary_sensor.button2
              state: "on"
          sequence:
            - service: light.turn_off
              entity_id: light.bulb
        default:
          - service: notify.my_iphone
            data:
              message: Ai đó bấm nút của tôi!

Giải thích:

  • Automation kích hoạt bằng cách bấm 1 trong 3 nút
  • choose đi kèm với conditionsdefault
  • Bấm nút 1 sẽ bật đèn, nút 2 sẽ tắt đèn
  • Nếu không phải nút 1 và 2 được bấm, gửi thông báo đến ứng dụng trên điện thoại qua service: notify.my_iphone

Delay nhỏ hơn 1 giây

Bạn có thể sử dụng delay với thời lượng nhỏ hơn 1 giây, ví dụ miliseconds: 500 sẽ thực hiện delay với 0,5 giây (500/1000).

Cool-down

Đây không phải tính năng mới mà là một ứng dụng từ running modes đã giới thiệu ở trên. Kết hợp giữa mode: singledelay ở cuối sẽ ngăn automation không bị tái kích hoạt trong một khoảng thời gian nào đó. Thay vì sử dụng thuộc tính last_triggered để kiểm tra xem automation có mới chạy gần đây như trước, bây giờ bạn có thể sử dụng mode: singledelay để thay thế.

Cập nhật bộ biểu tượng MDI

Như các bạn đã biết, Home Assistant sử dụng bộ biểu tượng đến từ MDI – http://materialdesignicons.com. Bộ biểu tượng này đã được cập nhật rất nhiều trong thời gian vừa qua, bao gồm cả việc thêm mới và loại bỏ một số biểu tượng, cũng như thay đổi tên của các biểu tượng.

Home Assistant 0.113 cập nhật bộ thư viện MDI mới này, đồng thời chỉnh sửa để đảm bảo tất cả các tên cũ trước đây vẫn còn dùng được song song với tên mới. Một khi tên cũ được dùng, một cảnh báo trong log sẽ báo cho bạn biết để thay đổi sang tên mới. Điều này sẽ kết thúc vào phiên bản Home Assistant 0.115, lúc này các tên cũ sẽ không còn dùng được nữa.

Cập nhật công cụ chỉnh sửa Scripts và Scenes

Công cụ chỉnh sửa Scripts và Scenes được cập nhật để áp dụng các cải tiến đã giới thiệu ở trên. Bên cạnh đó, từ giờ bạn có thể chỉnh sửa cả idicon từ công cụ chỉnh sửa trực quan thay vì YAML như trước.

Hass Scene Chỉnh sửa
Công cụ chỉnh sửa Script

Tối ưu hiệu năng

Ngoại trừ Home Assistant Core trên Python Env, tất cả các phiên bản Home Assisant Core còn lại (bao gồm HassOS, Docker) sẽ mặc định chạy trên phiên bản Python 3.8.

Việc tối ưu Python 3.8 trên các nền tảng kể trên sẽ giúp hiệu năng của Home Assistant tăng lên đến hơn 40% trong một số trường hợp. Các tối ưu này được thực hiện bởi pvizeli và được mô tả trong liên kết này nếu bạn muốn đọc cụ thể.

Một số thay đổi và tinh chỉnh khác cũng được thực hiện trong cách Home Assistant hoạt động bên trong phần lõi.

Kết quả là bạn có lẽ sẽ thấy CPU Usage thấp hơn so với phiên bản trước và các hoạt động khác như automation cũng sẽ “mượt mà” hơn.

Thay đổi không tương thích

Xem kĩ danh sách bên dưới trước khi ấn CẬP NHẬT.

! Lưu ý trước khi nâng cấp

Không chỉ xem kĩ nội dung phần này, có thể bạn sẽ phải xem cả thay đổi quan trọng của các phiên bản trước nữa nếu trước đây bạn chưa xoá bỏ hết các cấu hình bị đánh dấu “sẽ loại bỏ” hoặc khi bạn nâng cấp từ một phiên bản cũ hơn bản 0.111 lên bản này.
Có thể xem lại các phiên bản cũ hơn tại đây: Chuyên mục con: Tin tức và Cập nhật.
Nhiều cấu hình bị đánh dấu sẽ loại bỏ trong 0.111 sẽ bị đánh dấu không hợp lệ trong phiên bản 0.113 dù vẫn hoạt động trong 0.112.

Các thay đổi quan trọng:

  • xiaomi_miio điều khiển led trên quạt – fan và remote được tách riêng, nếu đang dùng remote_set_led_on/off cho quạt, bạn cần chỉnh lại thành fan_set_led_on/off
  • python 3.7.1 là phiên bản cũ nhất còn chạy được
  • automations & scripts chế độ mặc định là single
  • template thay đổi cách template xử lý các entity không thể kết xuất để cập nhật
  • thời gian tương đối khoảng thời gian sẽ được làm tròn kiểu toán học thay vì làm tròn xuống, tức 47 giờ trước sẽ được thể hiện là 2 ngày trước thay vì 1 ngày trước
  • MQTT birth_message và will_message sẽ được publish mặc định (xem thêm về birth và will message trong MQTT)
  • ZHA Hue remotesđơn vị đo kW
  • Philips Hue từ giờ cấu hình qua UI
  • InfluxDB hỗ trợ glob và thay đổi cách các bộ lọc (include, exclude) hoạt động
  • Transmission các torrent cũ hơn sẽ xuất hiện trên đầu danh sách, tối đa 10 mục trong mỗi danh sách
  • Logitech Harmony Hub thiết bị và hoạt động mới sẽ được ghi nhận trong attributes, các hoạt động mới sẽ được cập nhật ngay khi bắt đầu
  • Samsung SyncThru Printer nay cấu hình qua UI
  • Slack trả lại khả năng sử dụng file qua url
  • RFXCOM RFXtrx
  • Fibaro thiết bị điều khiển đèn sẽ được chuyển về domain light thay vì switch
  • Frontend: Deprecated HTML imports extra_html_url được thay thế bởi extra_module_urlextra_js_url_es5. Một số custom_component sẽ phải được điều chỉnh lại.
  • Frontend: Themes thiết lập (biến) css paper-card-background-color bị thay thế bởi ha-card-background  và card-background-color. Nhiều card và theme sẽ bị ảnh hưởng.

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).