🌱 Датчик AQI на основі API від Eco City
Виправив проблему з датчиком якості повітря, що стягував данні з Eco City. Розкажу як все було.
Мої побоювання справдились — мене забанили за IP. Я зателефонував за номером телефону в контактах Eco City і поспілкувався з представником. У мене поцікавились, чи я стягував дані з їх сайту — звісно ж я стягував. Сказали, щоб я написав в телеграм за номером +380988084092 і мені видадуть посилання для API. Також поцікавились для яких цілей я використовую їх дані — я сказав, що для розумного дому.
Посилання, яке можна використовувати в якості API зовсім просте: https://eco-city.org.ua/output.json
Єдине обмеження: робити не більш ніж один запит за хвилину.
Однак, з цим посиланням є кілька проблем:
1. Не працюють параметри для запиту, які дозволяли зробити запит лише для однієї станції. При зверненні завжди видаються всі показники з усіх станцій.
2. Серед усіх показників, що видаються немає індексу якості повітря AQI — його потрібно вираховувати самостійно на основі даних з інших датчиків.
Перша проблема вирішується легко: простим пошуком потрібної станції за її ідентифікатором.
Друга проблема дещо цікавіша. Я вирішив обчислювати індекс якості повітря самостійно.
Індекс якості повітря (AQI) — це кусково-лінійна функція, що залежить від концентрації забруднення. Способів вимірювання та інтерпретації є дуже багато. Для свого випадку, я вирішив рахувати AQI для кожного окремого показника датчика забрудненості PM2.5 (без врахування показників за проміжки часу).
Формулу обчислення AQI та таблиці з концентраціями та точками зупинки індексу можна знайти на Вікіпедії — показники та формулу для себе я взяв саме звідти.
Я написав ось таку функцію-макрос для AQI на шаблонізаторі для Home Assistant:
Пошук потрібного сенсора та таблицю точок зупинки для концентрації PM2.5 я реалізував звичайними операторами if
{%
Відповідно тепер я маю точний сенсор AQI, ще й з показниками забрудненості за різними параметрами: PM2.5, PM10, NH₃, NO₂, CO, радіації, а також температуру, вологість та атмосферний тиск.
Виправив проблему з датчиком якості повітря, що стягував данні з Eco City. Розкажу як все було.
Мої побоювання справдились — мене забанили за IP. Я зателефонував за номером телефону в контактах Eco City і поспілкувався з представником. У мене поцікавились, чи я стягував дані з їх сайту — звісно ж я стягував. Сказали, щоб я написав в телеграм за номером +380988084092 і мені видадуть посилання для API. Також поцікавились для яких цілей я використовую їх дані — я сказав, що для розумного дому.
Посилання, яке можна використовувати в якості API зовсім просте: https://eco-city.org.ua/output.json
Єдине обмеження: робити не більш ніж один запит за хвилину.
Однак, з цим посиланням є кілька проблем:
1. Не працюють параметри для запиту, які дозволяли зробити запит лише для однієї станції. При зверненні завжди видаються всі показники з усіх станцій.
2. Серед усіх показників, що видаються немає індексу якості повітря AQI — його потрібно вираховувати самостійно на основі даних з інших датчиків.
Перша проблема вирішується легко: простим пошуком потрібної станції за її ідентифікатором.
Друга проблема дещо цікавіша. Я вирішив обчислювати індекс якості повітря самостійно.
Індекс якості повітря (AQI) — це кусково-лінійна функція, що залежить від концентрації забруднення. Способів вимірювання та інтерпретації є дуже багато. Для свого випадку, я вирішив рахувати AQI для кожного окремого показника датчика забрудненості PM2.5 (без врахування показників за проміжки часу).
Формулу обчислення AQI та таблиці з концентраціями та точками зупинки індексу можна знайти на Вікіпедії — показники та формулу для себе я взяв саме звідти.
Я написав ось таку функцію-макрос для AQI на шаблонізаторі для Home Assistant:
{% macro aqi(aqihigh, aqilow, conchigh, conclow, conc) -%}
{{ ((aqihigh - aqilow) / (conchigh - conclow) * (conc - conclow) + aqilow) | int }}
{%- endmacro %}Пошук потрібного сенсора та таблицю точок зупинки для концентрації PM2.5 я реалізував звичайними операторами if
-elif-elst ось так:{%
for sensor in value_json %}Повний код сенсора можна знайти на скріншоті у сусідньому повідомленні.
{% if sensor.id == station %}
{% set conc = sensor.pollutants[0].value | float %}
{% if conc >= 0 and conc <= 50 %}
{{ aqi(50, 0, 12, 0, conc) }}
{% elif conc > 50 and conc <= 100 %}
{{ aqi(100, 51, 35.4, 12.1, conc) }}
{% elif conc > 100 and conc <= 150 %}
{{ aqi(150, 101, 55.4, 35.5, conc) }}
{% elif conc > 150 and conc <= 200 %}
{{ aqi(200, 151, 150.4, 55.5, conc) }}
{% elif conc > 200 and conc <= 300 %}
{{ aqi(300, 201, 250.4, 150.5, conc) }}
{% elif conc > 300 and conc <= 400 %}
{{ aqi(400, 301, 350.4, 250.5, conc) }}
{% elif conc > 400 and conc <= 500 %}
{{ aqi(500, 401, 500.4, 350.5, conc) }}
{% else %}
unknown
{% endif %}
{% endif %}
{% endfor %}
Відповідно тепер я маю точний сенсор AQI, ще й з показниками забрудненості за різними параметрами: PM2.5, PM10, NH₃, NO₂, CO, радіації, а також температуру, вологість та атмосферний тиск.
Півроку тому я захистив диплом на тему трекінгу громадського транспорту.
В своїй роботі я проаналізував системи для трекінгу в Чернівцях.
Щойно мені зателефонував мій завідувач кафедри і сказав, що хтось з Чернівецької міськради зацікавився моєю роботою і хоче про це поговорити.
Дуже цікаво. Я погодився, щоб моїми контактами поділились.
Подивимось, що з цього вийде 🤔
В своїй роботі я проаналізував системи для трекінгу в Чернівцях.
Щойно мені зателефонував мій завідувач кафедри і сказав, що хтось з Чернівецької міськради зацікавився моєю роботою і хоче про це поговорити.
Дуже цікаво. Я погодився, щоб моїми контактами поділились.
Подивимось, що з цього вийде 🤔
den the dev pinned «📱 Друзі, продаю неактивований iPhone XS 256GB Продаю з повним комплектом: зарядним блоком, навушниками та нерозпакованим кабелем lightning. Раніше користувався цією ж моделлю, однак трапився гарантійний випадок і пристрій був замінений на повністю новий…»
Між іншим, коли мій завкаф сказав: «Твоєю дипломною роботою зацікавилась міська рада,» я ледь в штани не наклав.
Мені здалось, що вони знайшли якийсь плагіат, антинауковість чи ще щось і тепер у мене відберуть диплом. Я подумав про це попри те, що писав свій диплом самостійно.
Сьогодні зранку стався інший епізод.
Я проснувся від дзвінка свого топ-менеджера з литовського офісу Wix. Я злякався, подумав, що все, приплили: будуть мене звільняти, бо у мене низька продуктивність, я тупий і обмежений.
Виявилось, що мені переглянули зарплатню (в більшу сторону), а він хотів мені подякувати за роботу і сказати це особисто.
Схоже я страждаю на синдром самозванця :(((
Мені здалось, що вони знайшли якийсь плагіат, антинауковість чи ще щось і тепер у мене відберуть диплом. Я подумав про це попри те, що писав свій диплом самостійно.
Сьогодні зранку стався інший епізод.
Я проснувся від дзвінка свого топ-менеджера з литовського офісу Wix. Я злякався, подумав, що все, приплили: будуть мене звільняти, бо у мене низька продуктивність, я тупий і обмежений.
Виявилось, що мені переглянули зарплатню (в більшу сторону), а він хотів мені подякувати за роботу і сказати це особисто.
Схоже я страждаю на синдром самозванця :(((
Wikipedia
Синдром самозванця
психологічне явище, при якому людина не здатна приписати свої досягнення власним здібностям і зусиллям
А найгірше те, що ти не можеш зрозуміти: ти дійсно є самозванецем, чи лише страждаєш на синдром самозванця?
den the dev
Між іншим, коли мій завкаф сказав: «Твоєю дипломною роботою зацікавилась міська рада,» я ледь в штани не наклав. Мені здалось, що вони знайшли якийсь плагіат, антинауковість чи ще щось і тепер у мене відберуть диплом. Я подумав про це попри те, що писав свій…
Між іншим, ні вчора, ні сьогодні ніхто не подзвонив ¯\_(ツ)_/¯
🎉 Новий реліз Home Assistant 0.112
Вчора ввечері прийшла звістка про нову версію Home Assistant 0.112. Серед нового:
• Переробили вкладки Logbook та History, перепланували базу даних — тепер все працює швидше, можна дивитись історію протягом вибраного проміжку.
• В автоматизаціях на YAML тепер можна вказувати кілька сутностей всередині однієї умови.
• Інтеграції, які мають власні панелі налаштувань (як от MQTT) тепер мають кнопку Configure, яка відкриватиме самі панелі для налаштувань таких інтеграцій.
• Вкладки з логами та інформацією про систему перемістили з вкладки Інструменти для розробників у вкладку Конфігурація
• Якщо браузерна вкладка з Home Assistant неактивна протягом 5 хвилин, то вона відключатиметься від сервера для економії ресурсів. Відповідно перепідключатиметься, якщо знову стане активною.
Серед іншого цікавого, що я знайшов в логах:
• Додали інтеграцію humidifier — скоріш за все розумні зволожувачі повітря переїдуть у цю інтеграцію, замість поточної інтеграції fan.
• Переробили інтеграцію xiaomi_miio.
Я сьогодні накотив нову версію собі і побачив, що мій очищувач повітря повністю відключився від розумного дому. Жодні перезапуски роутера, Home Assistant чи самого очищувача ніяк не допомагали.
Згодом побачив, що у інших людей теж поламались їхні очищувачі. Причина: баг у бібліотеці для роботи з сяомішними пристроями. Баг вже пофіксили, тому потрібно лише дочекатись коли вийде нова версія з фіксом.
Я ж тим часом, вирішив відкотитись до попередньої версії 0.111.4
Публікація про новий реліз: https://www.home-assistant.io/blog/2020/07/01/release-112/
Вчора ввечері прийшла звістка про нову версію Home Assistant 0.112. Серед нового:
• Переробили вкладки Logbook та History, перепланували базу даних — тепер все працює швидше, можна дивитись історію протягом вибраного проміжку.
• В автоматизаціях на YAML тепер можна вказувати кілька сутностей всередині однієї умови.
• Інтеграції, які мають власні панелі налаштувань (як от MQTT) тепер мають кнопку Configure, яка відкриватиме самі панелі для налаштувань таких інтеграцій.
• Вкладки з логами та інформацією про систему перемістили з вкладки Інструменти для розробників у вкладку Конфігурація
• Якщо браузерна вкладка з Home Assistant неактивна протягом 5 хвилин, то вона відключатиметься від сервера для економії ресурсів. Відповідно перепідключатиметься, якщо знову стане активною.
Серед іншого цікавого, що я знайшов в логах:
• Додали інтеграцію humidifier — скоріш за все розумні зволожувачі повітря переїдуть у цю інтеграцію, замість поточної інтеграції fan.
• Переробили інтеграцію xiaomi_miio.
Я сьогодні накотив нову версію собі і побачив, що мій очищувач повітря повністю відключився від розумного дому. Жодні перезапуски роутера, Home Assistant чи самого очищувача ніяк не допомагали.
Згодом побачив, що у інших людей теж поламались їхні очищувачі. Причина: баг у бібліотеці для роботи з сяомішними пристроями. Баг вже пофіксили, тому потрібно лише дочекатись коли вийде нова версія з фіксом.
Я ж тим часом, вирішив відкотитись до попередньої версії 0.111.4
Публікація про новий реліз: https://www.home-assistant.io/blog/2020/07/01/release-112/
GitHub
Xiaomi Air Purifier 3 Got exception while fetching the state: {'code': -5001, 'message': 'command error'} · Issue #36993 · home…
The problem Hello, I have a purifier zhimi.airpurifier.ma4 and a kettle viomi.health_pot.v1 (https://github.com/fineemb/Xiaomi-Smart-Multipurpose-Kettle) in custom componets, previously both entiti...
den the dev
Мене майже розвели на гроші на OLX Збирався замовити б/в електровелосипед QiCycle від Xiaomi. Позичив цю ж модель у колеги і катаюсь вже кілька тижнів — напишу про це окремий пост. Отже, знайшов велосипед і натиснув замовити з доставкою. Від OLX прийшло…
Я вже раніше писав про те, як мене ледь на розвели на 1000$ на OLX.
Схоже тепер на GitHub можна прикріплювати будь-який текст у форматі markdown.
Для цього достатньо лише зробити репозиторій тою ж назвою, що і ваш юзернейм. Вміст README.md файлу з цього репозиторію буде відображений у вас на сторінці.
https://twitter.com/jaredpalmer/status/1280135934948802560
Для цього достатньо лише зробити репозиторій тою ж назвою, що і ваш юзернейм. Вміст README.md файлу з цього репозиторію буде відображений у вас на сторінці.
https://twitter.com/jaredpalmer/status/1280135934948802560
Twitter
Jared Palmer
GitHub: You can now show a https://t.co/3VE3Xkh25W on your profile to tell everyone more about yourself! Me: https://t.co/SG1PsIMDpB
Цей день настав. Я вперше законтриб’ютив в Home Assistant.
Home Assistant написаний на Python — абсолютно незнайомій і новій для мене екосистемі. Це перший мій пул-реквест у якийсь популярний проект не на JS.
Мій PR: https://github.com/home-assistant/core/pull/37561
Home Assistant написаний на Python — абсолютно незнайомій і новій для мене екосистемі. Це перший мій пул-реквест у якийсь популярний проект не на JS.
Мій PR: https://github.com/home-assistant/core/pull/37561
GitHub
Allow loading Lovelace dashboards not only from root by denysdovhan · Pull Request #37561 · home-assistant/core
Proposed change
Type of change
Dependency upgrade
Bugfix (non-breaking change which fixes an issue)
New integration (thank you!)
New feature (which adds functionality to an existing integrat...
Type of change
Dependency upgrade
Bugfix (non-breaking change which fixes an issue)
New integration (thank you!)
New feature (which adds functionality to an existing integrat...