1 заметка с тегом

#dashboard

Погодный монитор или Google SpreadSheets Dashboard

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

На многие наборы мы можем влиять: мы управляем напряжением, умеем менять яркостью осветительных приборов, преодолевать расстояния, двигаться с разной скорость, зарабатывать разное кол-во денег, покупать разное кол-во товаров, но за метеоцифрами мы можем только наблюдать, либо наше влияние локально (климат в помещении), либо управление —
чрезвычайно сложный процесс (одной кнопки будет не достаточно😁).

Вот за такими цифрами я и люблю наблюдать. В далеком 2015 году все началось с температуры, влажности и давления, когда был собран первый макет метеостанции, с тех пор метеостанция переместилась за окно, подкачалась:

  • датчик освещенности
  • радиационный фон
  • скорость ветра
  • был и успел исчезнуть датчик пыли

Также станция обзавелась комнатным модулем (который связан по радиоканалу с уличным модулем и по последовательному интерфейсу с компьютером, где и происходит вся магия 🧙‍♂️) и в конце 2019 года появился дисплейный модуль

Цветовой индикатор отображает среднюю скорость роста давления за последние 3 часа (3 часа разбиваются на интервалы по 30 минут и считается среднее), имеет следующие цвета:

  • красный

    Рост свыше 1.8 мм/час — Quickly rising High Pressure System, not stable
  • желтый

    Рост выше 0.37 мм/час менее 1.8 мм/час — Slowly rising High Pressure System, stable good weather
  • зеленый

    Рост выше -0.37 мм/час и менее 0.37 мм/час — Stable weather condition
  • синий

    Рост более -0.37 мм/час — Slowly falling Low Pressure System, stable rainy weather
  • фиолетовый

    Рост более -1.8 мм/час — Quickly falling Low Pressure, Thunderstorm, not stable

За основу взят алгоритм компании NXP https://www.nxp.com/docs/en/application-note/AN3914.pdf.

После появления метеостанции естественным образом захотелось собирать данных и что еще более естественно их анализировать — это и стало мотиватором к изучению программирования. Были опробованы многие языки (processing (аля С++), php, bash, R). Но когда я открыл для себя python — почувствовал, вот оно!

Был написан скрипт, который запрашивает данные с комнатного модуля, принимает, проверяет и записывает в файл, таким образом начальная база файловая, она и осталась до сих пор. Иерархия такова Папка YYYYMM -> Файл YYYYMMDD.txt. Как говорится, цыплят по осени считают и пока учился в Яндекс.Практикуме, решил что надо весь погодный архив положить в базу данных и продолжить её наполнять и все это в облаке (модно/популярно/хайпово). Все прошло быстро, настройка виртуальной машины Ubuntu 18, установка PostgreSQL 10, создание схем/таблиц/пользователей/прав. В процессе решил не отказываться от хранения файлового архива, а параллельно записывать и в файл и в бд.

Все настроено — данные копятся (на данный момент, в погодной таблице 6.5 млн строк).

Я очень люблю всякие визуализации и с момента появления первых данных с метеостанции всегда хотел иметь приятную глазу картинку. Были разные варианты, но я не силен во фронтэнде, чтобы делать хоть какую-нибудь красоту🤷‍♂️. Не так давно попалась мне статья про дашборды с помощью google таблиц и тут я решил совместить приятное с полезным: SQL + python + Google Sheets.

Потратив какое-то время на эксперименты (выгрузка из бд, предобработка, дизайн дашборда (громкое слово, конечно)), получил требуемый результат.
Итого:

  • SQL запрос, который формирует поминутные данные скользящих средних (окно около 3 минут) температуры, влажности, давления, скорости ветра и порывов ветра (максимальная скорость за 15 минут) и радиационный фон
  • python скрипт, который подключается к бд, выполняет запрос, осуществляет необходимую предобработку данных для google таблиц и апдейтит данные в нужном листе goolge таблиц
  • cron запускает python скрипт раз в 5 минут

Внешний вид дашборда (показатели и график температуры)

Там еще давление и скорость ветра с порывами есть, заходите

Weather Dashboard

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

 948   6 мес   #dashboard   #data   #google   #python   #weather