den the dev
1.7K subscribers
377 photos
66 videos
2 files
277 links
Привіт, на звʼязку @denysdovhan 👋

Тут я пишу про все: AI, програмування, розумний дім, адміністрування, технології, ігри та медіа.

Роблю фронтенд для AI-чату у Wix
Download Telegram
🌱 Датчик 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:

{% 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, радіації, а також температуру, вологість та атмосферний тиск.
Повний код сенсора для AQI
Півроку тому я захистив диплом на тему трекінгу громадського транспорту.

В своїй роботі я проаналізував системи для трекінгу в Чернівцях.

Щойно мені зателефонував мій завідувач кафедри і сказав, що хтось з Чернівецької міськради зацікавився моєю роботою і хоче про це поговорити.

Дуже цікаво. Я погодився, щоб моїми контактами поділились.

Подивимось, що з цього вийде 🤔
den the dev pinned «📱 Друзі, продаю неактивований iPhone XS 256GB Продаю з повним комплектом: зарядним блоком, навушниками та нерозпакованим кабелем lightning. Раніше користувався цією ж моделлю, однак трапився гарантійний випадок і пристрій був замінений на повністю новий…»
Між іншим, коли мій завкаф сказав: «Твоєю дипломною роботою зацікавилась міська рада,» я ледь в штани не наклав.

Мені здалось, що вони знайшли якийсь плагіат, антинауковість чи ще щось і тепер у мене відберуть диплом. Я подумав про це попри те, що писав свій диплом самостійно.

Сьогодні зранку стався інший епізод.

Я проснувся від дзвінка свого топ-менеджера з литовського офісу Wix. Я злякався, подумав, що все, приплили: будуть мене звільняти, бо у мене низька продуктивність, я тупий і обмежений.

Виявилось, що мені переглянули зарплатню (в більшу сторону), а він хотів мені подякувати за роботу і сказати це особисто.

Схоже я страждаю на синдром самозванця :(((
А найгірше те, що ти не можеш зрозуміти: ти дійсно є самозванецем, чи лише страждаєш на синдром самозванця?
🎉 Новий реліз 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/
OLX - це якась платформа для шахраїв.

Я вже давно хочу придбати електровелосипед Xiaomi Qicycle, який зараз можна купити лише б/у.

На скріншоті два оголошення з аналогічними описами та фото, але від різних людей з різних міст ¯\_(ツ)_/¯
Схоже тепер на GitHub можна прикріплювати будь-який текст у форматі markdown.

Для цього достатньо лише зробити репозиторій тою ж назвою, що і ваш юзернейм. Вміст README.md файлу з цього репозиторію буде відображений у вас на сторінці.

https://twitter.com/jaredpalmer/status/1280135934948802560
Цей день настав. Я вперше законтриб’ютив в Home Assistant.

Home Assistant написаний на Python — абсолютно незнайомій і новій для мене екосистемі. Це перший мій пул-реквест у якийсь популярний проект не на JS.

Мій PR: https://github.com/home-assistant/core/pull/37561