Небольшое приложение на языке Golang, целью которого является оповещение жителей города Кемерово о состоянии воздуха
Оповещение происходит на данный момент для следующих соц. сетей (список вероятно будет пополняться):
Важно отметить вклад оригинального волонтерского проекта, данные которого используются для более широкого информирования граждан
Отличный сервис, мотивация создания которого совпадает с мотивацией создания этого скромного проекта
Мотивация (https://airkemerovo.ru/content/about):
Общественный мониторинг, естественно, несёт в себе и прямую функцию отслеживания и регистрации уровня загрязнения воздуха. Такой массив открытых данных, доступных любому желающему для анализа или иного использования на благо общества - неоспоримо важный ресурс. Области их применения могут быть разными, начиная от простого оповещения о превышении предельно допустимых норм и заканчивая научными исследованиями городского пространства.
Многие из наших соседей не задумываются о том, чем дышат. Не знают, что концентрация загрязнений меняется в течение дня. Не представляют где можно посмотреть актуальные данные и как на них реагировать. Участие в проекте это не только возможность узнать больше об окружающей нас атмосфере, но и поделиться этими знаниями с окружающими.
У властей есть свои лаборатории и непрозрачные для общества источники данных. В отсутствии альтернатив у властей велик соблазн манипулировать данными, но когда есть показания альтернативной системы, такое решение уже не эффективно, так как только привлечет к нему дополнительное внимание.
Вокруг нас много неравнодушных людей готовых внести свой вклад в общее благо, но узнать друг о друге бывает сложно. Создавая горизонтальные связи между участниками, проект позволит нам добиваться большего - вместе мы сила.
- Приложение инвалидирует датчики каждые 4 часа на актуальность.
- Приложение проверяет воздух по городу каждый час.
- Датчики при ежечасной проверке в случае плохого AQI - всегда отдают инфу за строго прошлый час.
Пример: для человека в 22:00 - датчик пришлет информацию за 21:00 - 21:59. Это сознательно решение, чтобы не вводить заблуждение человека. О состояние воздуха за определенный час мы можем судить только, когда полностью данный час пройдет.
Здесь и далее примеры развертки для Linux
Обязательные для разработки технологии:
- golang 1.24.3 (https://go.dev/doc/install)
- 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- Актуальные сенсоры перенести в REDIS с TTL - 4 часа. Если в редисе есть инфа о датчике - берем от туда каждый час, каждые 4 часа наполняем редис актуальными датчиками в cron.
- Все сенсоры теперь храним в отдельной таблице - sensors. (ПОДУМАТЬ ТУТ)
- Их показатели в таблице sensors_aqi
- Убрать address поле из Sensor (учесть выше описанный пункт)
- Проработать context дерево, сейчас везде создается свой собственный, просто как заглушка
- Подумать об разделение на подмодули Commander, например Commander.OperatingMode.SetCity