Bài viết này được tóm tắt từ nội dung của blog có tựa đề “The future of YAML” của tác giả Franck Nijhof đăng ngày 14/04/2020 trên chuyên mục Nhật ký – Blog của nhóm phát triển Home Assistant.
Các bạn có thể đọc bài viết gốc tại trang web home-assistant.io.
YAML là một phần không thể thiếu của Home Assistant từ ban đầu cho đến lúc này. YAML là một chuẩn dữ liệu kiểu tuần tự (hiểu nôm na là được đọc/biên dịch từ trên xuống dưới, từ trái qua phải) thân thiện với con người, sử dụng được cho tất cả các ngôn ngữ lập trình. YAML thường được sử dụng để tạo nên các file chứa cấu hình – config file hoặc dữ liệu – data cho ứng dụng.
YAML được Home Assistant sử dụng như chuẩn chính để lưu trữ cấu hình của chính nó và các tích hợp – integration/component cũng như platform v.v.. Bạn có thể mở file cấu hình chính của Hass tại /config/configuration.yaml để hình dung về cách ngôn ngữ YAML được sử dụng trong Hass.
# Configure a default setup of Home Assistant (frontend, api, etc) default_config: http: base_url: konnected.vn:28123 tts: - platform: google_translate service_name: google_say - platform: microsoft api_key: !secret ms_text_to_speech language: en-us gender: Female volume: 0 region: eastasia #YAML có thể được tìm thấy trong mọi ngóc ngách của Hass
Tuy nhiên, một số thay đổi và tuyên bố gần đây của nhóm phát triển Hass đã làm dấy lên mối nghi ngại lớn về tương lai của YAML – một ngôn ngữ vốn đã rất quen thuộc với cộng đồng người dùng Hasss. Câu hỏi lớn nhất là:
Có phải YAML sẽ bị loại bỏ?
Is YAML going away?
Câu trả lời là: CÓ và KHÔNG
Home Assistant càng ngày càng dễ sử dụng hơn
Với một loạt các tính năng mới liên quan đến UI – giao diện người dùng gần đây, Hass đang trở nên dễ sử dụng hơn bao giờ hết. Khởi đầu từ một dự án nhỏ với mục tiêu mang đến một giải pháp điều khiển tự động các thiết bị gia đình trong khi vẫn đặt quyền riêng tư lên hàng đầu, hướng đến một nhóm nhỏ lập trình viên và người am hiểu công nghệ – tech savvy; Hass đã phát triển đến mức được sử dụng bởi hàng triệu người dùng, mà phần lớn trong số đó không am hiểu về công nghệ (công nghệ thông tin nói chung).
Điều này biến nhu cầu dễ dàng điều khiển và cấu hình Hass qua giao diện đồ hoạ – UI trở thành cấp thiết nhằm mang đến sự tiện lợi cũng như khả năng làm chủ cho hàng triệu người dùng, ngay cả với người dùng kinh nghiệm hay am hiểu công nghệ.
Làm cho mọi thứ dễ dàng hơn đã trở thành một mục tiêu hàng đầu của nhóm phát triển.
YAML và UI
Khả năng cấu hình qua UI đã được đưa vào một phần và cải thiện đáng kể trong các phiên bản Hass gần đây như trong zones – vùng, Lovelace và đặc biệt là tính năng mới được giới thiệu Helpers.
Zones hay Lovelace có thể được cấu hình bằng cả UI và YAML cùng lúc. Đi cùng với nó là khả năng tải lại – reload cấu hình liên quan ngay trong lúc hoạt động – on-the-fly mà không cần phải khởi động lại Hass.
Trong tương lai, Hass sẽ phát triển theo định hướng này, cho phép người dùng sử dụng UI hay YAML tuỳ theo sở thích mà không bị trói buộc vào một phương thức nhất định (là YAML trong quá khứ). Hass sẽ cải thiện khả năng của YAML thông qua việc cho phép tải lại cấu hình mà không cần khởi động và loại bỏ dần những thành phần gây ảnh hưởng đến các file YAML.
Tuy nhiên…
Tương lai của YAML
Cho đến hôm nay và từ hôm nay:
- Mọi tích hợp – integration mới có có giao tiếp với thiết bị hoặc dịch vụ cụ thể phải cấu hình qua UI. Cấu hình YAML chỉ được cho phép trong một số trường hợp đặc biệt và phải được cho phép từng trường hợp cụ thể.
- Khuyến khích các tích hợp giao tiếp với thiết bị/dịch vụ đang có chuyển qua cấu hình bằng UI và loại bỏ hỗ trợ YAML.
- Các tích hợp giao tiếp với thiết bị/dịch vụ đang có sẽ không được chấp nhận bất cứ thay đổi nào trong cách cấu hình YAML nữa.
Các integration còn lại được cấu hình bằng cả YAML và Storage Collections (Storage Collections hỗ trợ cả UI và YAML, như trong trường hợp của Lovelace). Các integration này thường là:
- Integration tích hợp transports, cho phép người dùng cấu hình và định nghĩa các giao thức vận chuyển như MQTT, Serial, GPIO.
- Integration xử lý dữ liệu trong Hass để cung cấp cho các integration khác, ví dụ như template, stats, derivative, utility meter (đồng hồ điện nước).
- Integration cung cấp tự động hoá như automation, device_sun_light_trigger, alert.
- Integration hỗ trợ điều khiển thiết bị/dịch vụ như script, scene.
- Integration giúp chuyển dữ liệu từ Hass đến các dịch vụ khác như Google Assistant, Homekit.
Một số lợi ích đi cùng những thay đổi mới
Breaking changes, là những thay đổi không tương thích với phiên bản cũ, từ giờ sẽ dần có khả năng được quản lý và thay đổi tự động bởi Hass. Bạn không cần phải dò từng dòng cấu hình YAML để sửa đổi cho phù hợp với phiên bản mới nữa.
Khả năng chia sẻ và bảo mật: chia sẻ là niềm đam mê và sở thích của cộng đồng Hass, từ cấu hình giao diện Lovelace đến automation hay custom_component. Đi cùng với thay đổi mới, bạn sẽ vẫn có khả năng chia sẻ cấu hình YAML trong khi các thông tin nhạy cảm như token, mật khẩu sẽ không còn được lưu trữ ở dạng YAML do đó sẽ loại bỏ khả năng vô tình bị chia sẻ.
Cuối cùng, bạn có thể xem video sau về phần hỏi đáp liên quan đến YAML từ buổi State of the Union 2019.
Cảm ơn bạn đã xem bài viết này!
konnectED Team.