Skip to content

trooffEE/air-quality-notifyer

Repository files navigation

air-quality-notifier

Небольшое приложение на языке Golang, целью которого является оповещение жителей города Кемерово о состоянии воздуха

Оповещение происходит на данный момент для следующих соц. сетей (список вероятно будет пополняться):

  1. Telegram (https://t.me/airquality_kemerovo_notifyer_bot)

Важно отметить вклад оригинального волонтерского проекта, данные которого используются для более широкого информирования граждан

https://airkemerovo.ru/

Отличный сервис, мотивация создания которого совпадает с мотивацией создания этого скромного проекта


Следить за воздухом

Общественный мониторинг, естественно, несёт в себе и прямую функцию отслеживания и регистрации уровня загрязнения воздуха. Такой массив открытых данных, доступных любому желающему для анализа или иного использования на благо общества - неоспоримо важный ресурс. Области их применения могут быть разными, начиная от простого оповещения о превышении предельно допустимых норм и заканчивая научными исследованиями городского пространства.

Рассказать о проблеме

Многие из наших соседей не задумываются о том, чем дышат. Не знают, что концентрация загрязнений меняется в течение дня. Не представляют где можно посмотреть актуальные данные и как на них реагировать. Участие в проекте это не только возможность узнать больше об окружающей нас атмосфере, но и поделиться этими знаниями с окружающими.

Контролировать власти

У властей есть свои лаборатории и непрозрачные для общества источники данных. В отсутствии альтернатив у властей велик соблазн манипулировать данными, но когда есть показания альтернативной системы, такое решение уже не эффективно, так как только привлечет к нему дополнительное внимание.

Узнать друг друга

Вокруг нас много неравнодушных людей готовых внести свой вклад в общее благо, но узнать друг о друге бывает сложно. Создавая горизонтальные связи между участниками, проект позволит нам добиваться большего - вместе мы сила.


Особенности функционала проекта

  1. Приложение инвалидирует датчики каждые 4 часа на актуальность.
  2. Приложение проверяет воздух по городу каждый час.
  3. Датчики при ежечасной проверке в случае плохого AQI - всегда отдают инфу за строго прошлый час.
    Пример: для человека в 22:00 - датчик пришлет информацию за 21:00 - 21:59. Это сознательно решение, чтобы не вводить заблуждение человека. О состояние воздуха за определенный час мы можем судить только, когда полностью данный час пройдет.

Работа с проектом

Здесь и далее примеры развертки для Linux

Обязательные для разработки технологии:

  1. golang 1.24.3 (https://go.dev/doc/install)
  2. make

Для начала запустите install-hooks.sh, чтобы выставить все хуки проекта, связанные с git. Для развертки проекта необходимо создать папку /data в корне проекта, /tmp. Выставить руками env переменные в .env файл (см .env.example)

Database: Далее необходимо поднять контейнер с базой данных.

docker compose up airquality_db --build -d

После выше указанной команды введите docker ps должен содержать выше поднятый контейнер.

Приложение:

docker compose up airquality_app --build -d

Технический долг/roadmap

  1. Актуальные сенсоры перенести в REDIS с TTL - 4 часа. Если в редисе есть инфа о датчике - берем от туда каждый час, каждые 4 часа наполняем редис актуальными датчиками в cron.
  2. Все сенсоры теперь храним в отдельной таблице - sensors. (ПОДУМАТЬ ТУТ)
  3. Их показатели в таблице sensors_aqi
  4. Убрать address поле из Sensor (учесть выше описанный пункт)
  5. Проработать context дерево, сейчас везде создается свой собственный, просто как заглушка
  6. Подумать об разделение на подмодули Commander, например Commander.OperatingMode.SetCity

About

Small application that takes data from https://airkemerovo.ru and notifies users in telegram if there's AQI is dangerous in their area!

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors