Cài đặt tự động hóa Pyscript Home Assistant thông qua giao diện.
Máy Tính

Pyscript Home Assistant: Tự Động Hóa Nhà Thông Minh Với Python

Home Assistant, một nền tảng phần mềm tuyệt vời đã giúp tôi tự động hóa vô vàn thứ trong ngôi nhà của mình nhờ hàng loạt tích hợp có sẵn. Nó có thể làm được tất cả, từ những điều kỳ lạ và độc đáo như phát hiện bàn chải điện để khởi động ngày mới, cho đến việc tự động hóa toàn bộ hệ thống chiếu sáng. Và giờ đây, tôi còn đang dùng nó để biến đèn của mình thành công cụ giao tiếp bằng mã Morse. Điều đó… có vẻ cũng hữu ích, tôi đoán vậy?

Tôi nói vậy chỉ để đùa thôi. Thực ra, tôi đã dùng Home Assistant để biến đèn thông minh thành thiết bị truyền tin mã Morse, nhưng không vì bất kỳ lý do cụ thể nào cả. Ý tưởng này nảy sinh chủ yếu từ sự buồn chán, sau khi tôi cấu hình tích hợp Tuya Local (không nhầm lẫn với LocalTuya) để có thể điều khiển đèn trên mạng LAN của mình. Khi nhận ra mình có thể hoàn toàn bỏ qua mọi giới hạn tốc độ có thể xảy ra, tôi bắt đầu nghĩ ra những cách ngớ ngẩn để tận dụng quyền năng mới tìm thấy này.

Do đó, ý tưởng về một công cụ giao tiếp mã Morse nảy ra. Tôi cũng đã tìm hiểu về tích hợp Pyscript, cho phép bạn viết các script Python để điều khiển ngôi nhà của mình, vì vậy tôi nghĩ đây là thời điểm hoàn hảo để thử nghiệm và xem mình có thể đạt được điều gì. Hóa ra nó hoạt động rất tốt, vì vậy bây giờ tôi có thể giao tiếp với hàng xóm thông qua ánh sáng nhấp nháy trong phòng khách, giả sử họ đang nhìn đúng lúc. Ồ, và giả sử họ biết đó là mã Morse và có thể hiểu được nữa… Nghĩ lại thì, có lẽ nó không thực sự hữu ích lắm.

Dù sao, đây là một dự án thú vị, và có thể bạn có thể áp dụng một số điều tôi học được ở đây để biến nó thành thứ gì đó có ích hơn. Phần giao tiếp mã Morse thực tế hiếm khi hữu ích, nhưng một số khái niệm chắc chắn sẽ có giá trị.

Home Assistant Pyscript là gì?

Một tích hợp tùy chỉnh với nhiều tính năng

Pyscript, được cài đặt thông qua HACS, là một tích hợp tùy chỉnh có thể được sử dụng để viết các hàm và script Python cho các tác vụ tự động hóa và logic. Bạn có thể viết một dịch vụ có thể được gọi từ bất kỳ tích hợp nào khác trong Home Assistant, cho phép bạn tạo chức năng tùy chỉnh của riêng mình mà không cần phải biết cách viết một tích hợp hoàn chỉnh. Các hàm cũng có thể “ngủ” hoặc chờ đợi các thay đổi và sự kiện bổ sung, và Pyscript có thể tích hợp với các giao diện Jupyter như Notebook.

Với tư cách là một người thành thạo Python, việc tìm hiểu và thử nghiệm Pyscript có vẻ là một điều hiển nhiên. Tôi đã tự xây dựng tích hợp Home Assistant riêng để điều khiển đèn Govee B615 mà tôi đã reverse engineering. Nhưng nếu Pyscript có thể giúp việc điều khiển ngôi nhà thông minh của tôi dễ dàng hơn mà không cần đến một tích hợp hoàn chỉnh, thì nó hoàn toàn xứng đáng để tôi dành thời gian tìm hiểu. Xây dựng một tích hợp có thể tốn thời gian, nhưng một script Python, nếu bạn biết mình đang làm gì, có thể chỉ mất vài phút.

Tất nhiên, nhiều điều bạn muốn làm với Pyscript có thể được thực hiện đơn giản bằng cách sử dụng tích hợp “command_line” thay thế. Đây là một tích hợp cũ cho phép bạn định nghĩa các lệnh shell để thực thi dựa trên các tiêu chí cụ thể. Tuy nhiên, không phải mọi thứ đều có thể, và với Pyscript, bạn có thể tự động hóa việc điều khiển các thiết bị riêng lẻ thông qua mã trong Home Assistant.

Cài đặt tự động hóa Pyscript Home Assistant thông qua giao diện.Cài đặt tự động hóa Pyscript Home Assistant thông qua giao diện.

Viết script đèn Morse Code với Pyscript trong Home Assistant

Quá trình triển khai đơn giản đáng ngạc nhiên

Việc xây dựng và triển khai script này khá đơn giản, mặc dù tôi đã mắc một sai lầm nhỏ trong quá trình thực hiện mà nếu tránh được, mọi thứ đã dễ dàng hơn nhiều. Sai lầm đó chủ yếu là việc tôi sử dụng các tác vụ bất đồng bộ (async tasks), nơi tôi đã viết một tác vụ async bằng cách sử dụng await để ngăn chặn vòng lặp sự kiện chính của Home Assistant bị “ngủ”. Hóa ra, điều này không cần thiết khi sử dụng Pyscript, và việc sử dụng async bị khuyến cáo không nên dùng khi liên quan đến AppDaemon của Home Assistant trừ khi bạn thực sự hiểu rõ. Lý do là mọi Pyscript đều chạy bất đồng bộ sẵn rồi. Mặc dù tôi đã quen thuộc với async, nhưng điều này có thể gây ra những vấn đề khó giải quyết, may mắn thay nó vẫn hoạt động tốt.

Về việc viết và triển khai script, ngoài việc tôi đã đi sai hướng với các tác vụ async, mọi thứ đều cực kỳ đơn giản. Có một bản đồ ký tự ở đầu để ánh xạ mọi chữ cái và số với tổ hợp chấm và gạch ngang tương ứng trong mã Morse. Sau đó, chúng ta định nghĩa hành vi về thời gian chờ cho một “chấm” và thời gian chờ cho một “gạch ngang”. Tiếp theo, chúng ta định nghĩa khoảng cách giữa các ký tự và các từ, được nhân với thời gian của một “chấm”. Bởi vì đèn tắt ở cuối một “chấm”, điều này không có nghĩa là đèn vẫn sáng trong thời gian đó; đây chỉ là một cách để liên kết logic lại với nhau và làm cho mọi thứ tương đối, đặc biệt vì độ trễ có thể khác nhau giữa các thiết bị. Điều này giúp script có thể hoạt động trên bất kỳ đèn nào với một vài thay đổi nhỏ.

Điều tôi yêu thích về Pyscript là sự đơn giản trong việc xem và điều khiển các thực thể (entities) trong phiên bản Home Assistant của bạn. Chỉ cần định nghĩa đèn của tôi là “light.office_light” và gọi nó bằng entity_id là nó có thể được điều khiển ngay lập tức, vì vậy tôi có thể sử dụng các hàm như “light.turn_on” và nó chỉ đơn giản là… hoạt động. Trong suốt quá trình thử nghiệm, tôi đã sử dụng các công cụ dành cho nhà phát triển của Home Assistant, đặc biệt là tab “Action”, để kiểm tra script của mình và đảm bảo các tính năng hoạt động. Sau khi một script được Pyscript nhận diện trong thư mục /config/pyscript và Home Assistant đã khởi động lại, bạn chỉ cần tải lại tích hợp Pyscript mỗi khi thực hiện thay đổi, giúp bạn tiết kiệm thời gian không phải khởi động lại liên tục.

Script Pyscript Home Assistant điều khiển đèn theo mã Morse.Script Pyscript Home Assistant điều khiển đèn theo mã Morse.

Tôi không thể nhấn mạnh đủ mức độ “ngớ ngẩn” của dự án này đối với hầu hết mọi người, nhưng có những ứng dụng thực sự hữu ích cho một thứ tương tự như vậy đối với những ai muốn biến đèn của mình thành một phần cốt lõi của nhà thông minh. Bạn có thể cài đặt đèn nhấp nháy dựa trên các tiêu chí cụ thể, chẳng hạn như khi hệ thống home lab của bạn gặp sự cố. Nếu bạn tạo một tự động hóa sử dụng Uptime Kuma để sau đó gọi một script nhấp nháy một số lần nhất định, đại diện cho dịch vụ nào đang gặp sự cố, điều đó sẽ thực sự hữu ích. Và chúng ta không chỉ nói về đèn trần ở đây, đó có thể là bất kỳ loại đèn nào bạn có thể điều khiển.

Ngoài ra, trong các ngữ cảnh về khả năng tiếp cận, những người có thể bị suy giảm khả năng nói có thể thích sử dụng một chiếc đèn có thể nhấp nháy một lần cho “có”, hoặc hai lần cho “không”. Và kiểu điều khiển tự động này không chỉ giới hạn ở đèn; mã Morse chỉ là một ví dụ vui nhộn, nhưng các khái niệm tương tự được áp dụng ở đây để thực hiện dự án này có thể được ứng dụng trên nhiều công cụ và thiết bị khác nhau.

Giao diện công cụ phát triển Home Assistant để kiểm thử script Pyscript đèn.Giao diện công cụ phát triển Home Assistant để kiểm thử script Pyscript đèn.

Ứng dụng tiềm năng vượt ra ngoài mã Morse

Nếu bạn đang cân nhắc nên thử nghiệm gì tiếp theo, Pyscript chắc chắn là một cái tên đáng để xem xét. Nó có sẵn trong HACS, dễ sử dụng, và bạn có thể kiểm soát nhà thông minh của mình một cách tinh vi hơn thông qua mã Python thay vì YAML, đặc biệt khi thực hiện những điều không phải lúc nào cũng dễ dàng thông qua các tự động hóa mặc định của Home Assistant.

Pyscript mở ra một thế giới khả năng tùy chỉnh vô hạn, cho phép bạn biến những ý tưởng sáng tạo nhất thành hiện thực trong ngôi nhà thông minh của mình. Đừng ngần ngại khám phá và chia sẻ những dự án độc đáo mà bạn tạo ra với cộng đồng congnghe360.net nhé!

Related posts

Lý Do Tôi Từ Bỏ Google Chrome Sau Gần Hai Thập Kỷ Gắn Bó

Administrator

Thị Phần Windows 11 Sắp Vượt Windows 10: Cuộc Chuyển Đổi Không Thể Tránh Khỏi

Administrator

NocoDB: Hướng dẫn tự host giải pháp thay thế Airtable hiệu quả

Administrator