Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni
🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!03.06.2023
Поєднання HomeAssistant, Firebase та SwiftBar: коли системи працюють на тебе
Приємне: віддалений геймінг з Parsec працює краще, ніж я міг собі уявити. В локальній мережі з дротовим підключенням взагалі непомітно, що граєш віддалено. Але не тільки — навіть за 200 км від дому та по вайфаю все ще можна грати із задоволенням! Так, час від часу підключення гальмує, але достатньо рідко щоб це не шкодило. Рекомендую.
Є тільки одна проблема: той самий компʼютер може використовуватись й напряму. Та Parsec не пропонує способу дізнатись, чи зайнятий він, чи ні. Щоб уникнути незручних ситуацій, вирішив зробити для себе індикатор.
-
Стан компʼютера, а точніше, стан медіацентру, до якого він під’єднаний, знає Home Assistant. Чого я точно не хочу робити, так це відкривати розумний дім в інтернет. Кількість вразливостей неможливо осягнути. Тому замість того обираю інший підхід — нехай Home Assistant сповіщає зовнішній сервіс про стан медіацентру. Для цього є інтеграція RESTful Command. Якщо дуже спрощено, то я створив пару автоматизацій, що спостерігають за джерелом зображення, та роблять відповідні HTTP виклики.
-
Куди підуть виклики? Для цього перевірене рішення - Firebase. Він надає відразу й функції, й сховище, та все це безплатно. В мене навіть проєкт вже готовий з минулого разу. Зробити функцію, яка записує в Cloud Firestore стан компʼютера — справа на пʼять хвилин. До речі, для такого проєкту на одного користувача для авторизації мої функції просто мають секретні назви з кодом всередині.
-
Нарешті, як перевірити поточний статус? Сам інтерфейс Firestore його показує — до речі, як я виявив, він навіть оновляється наживу, що допомогло в тестуванні, бо я міг перемикати налаштування медіацентру та миттєво спостерігати за результатами. Та заходити щоразу в вебконсоль Firebase - незручно. Тому зробив ще одну простеньку HTTP-функцію, та скрипт для Swiftbar, що її викликає. Знайшов, що якщо у Swiftbar вжити суфікс
|refresh=true
, то по клацу елемент просто оновлюватиметься. Дуже зручно.
Тепер я можу легко перевірити, чи не зайнятий компʼютер, перед тим як підключатись в Parsec. І на це пішло небагато часу, бо рішення складалося з частин, що в мене вже були, та треба було тільки поєднати їх між собою.