Привет всем, в настоящее время загрязнение является трендовой темой. Я живу в Мадриде, и загрязнение воздуха — одна из самых больших проблем в городах мира. Для этого я решил создать собственное оповещение о загрязнении воздуха. Я использую свой сервер Grafana (размещенный на моем raspberry pi) для создания оповещений и скрипт Python для получить данные о загрязнении.

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

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

Прежде всего, вам нужно будет создать новую учетную запись в AirVisual, чтобы получить свой API-ключ, что необходимо, потому что этот сервис предоставит нам уровень загрязнения.

API_KEY = 'YOUR_AIRVISUAL_API_KEY'

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

import requests
URL = 'http://api.airvisual.com/v2/city?city=Madrid&state=Madrid&country=Spain&key={}'.format(API_KEY)
response = requests.get(URL)

Я использую конечную точку/city для получения информации из определенного города. Если вам нужна дополнительная информация об этой или других конечных точках, посмотрите официальную API doc.

Отлично, теперь меня интересует значение aqius

aqius = response.json()['data']['current']['pollution']['aqius']

Значение AQI, основанное на Агентстве по охране окружающей среды США, является стандартным значением качества воздуха, в следующей таблице вы можете увидеть различные уровни. С помощью этого API вы можете получить другое стандартное значение качества воздуха, например, AQI CN. Выберите, что вы хотите. В этом посте я работаю с EPA.

import requests
API_KEY = 'YOUR_AIRVISUAL_API_KEY'
city = 'Madrid'
state = 'Madrid'
country = 'Spain'
URL = 'http://api.airvisual.com/v2/city?city={}&state={}&country={}&key={}'.format(city, state, country, API_KEY)
def get_aqius(response):
    return response['data']['current']['pollution']['aqius']
aqius_level = get_aqius(requests.get(URL).json())

С этим aqius_level мы отправим на наш сервер Grafana и настроим наши оповещения. Извините, что пропустил остальные шаги, но в Grafana слишком много форм для отправки информации на сервер. Я предпочитаю оставить эту часть для другого будущего поста.

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

Например, это моя конфигурация Gauge. Я создал пороги для каждого из разных уровней

Я использую график, чтобы определить предупреждение о загрязнении. Когда загрязнение превысит 100, служба отправит сообщение в мой Slack.

Вот пример сообщения из Slack.

И это все. Я предлагаю вам создать собственное оповещение с помощью другого вида службы, например электронной почты.

import smtplib, ssl
def send_email(message):
    context = ssl.create_default_context()
    with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
        server.login(sender_email, password)
        server.sendmail(sender_email, receiver_email, message)

Я часто использую доску Grafana, в будущем я буду создавать больше постов о различных источниках информации, которые будут включены в ваши разные доски.

Спасибо за чтение, скоро увидимся.