Привет всем, в настоящее время загрязнение является трендовой темой. Я живу в Мадриде, и загрязнение воздуха — одна из самых больших проблем в городах мира. Для этого я решил создать собственное оповещение о загрязнении воздуха. Я использую свой сервер 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, в будущем я буду создавать больше постов о различных источниках информации, которые будут включены в ваши разные доски.
Спасибо за чтение, скоро увидимся.