Logo Craft Homelab Docs Контакты Telegram
Arduino и Python: консольная метеостанция от датчика до графика Трендовые github проекты в нашем телеграм канале. Подпишись →
20 апреля 2026 г.

Arduino и Python: консольная метеостанция от датчика до графика

Домашняя метеостанция — хороший pet project для изучения IoT без лишней сложности. Есть датчик, микроконтроллер, поток измерений и Python-скрипт, который превращает сырые значения в понятные графики. Такой проект учит сразу нескольким вещам: работе с serial port, хранению time series, обработке ошибок и визуализации.

Главная ценность не в том, чтобы получить идеальный прогноз погоды. Ценность в маленьком, но полноценном data pipeline: физический мир → измерение → передача → парсинг → хранение → график.

Базовая архитектура

Минимальная схема выглядит так:

датчик → Arduino → USB/Serial → Python reader → CSV/SQLite → график

Arduino считывает температуру, влажность или давление и отправляет строку в serial port. Python читает поток, валидирует данные и сохраняет измерения.

Важно сразу договориться о формате строки. Например:

2026-04-20T12:00:00,temp=22.4,humidity=41.2

Чем проще формат, тем легче отлаживать.

Ошибки чтения

В реальном мире датчик не всегда отдаёт идеальные значения. Возможны пропуски, мусор в serial, временные disconnect, скачки показаний. Поэтому reader не должен падать от одной плохой строки.

Нужны:

  • timeout;
  • retry;
  • логирование ошибок;
  • пропуск невалидных строк;
  • проверка диапазонов;
  • graceful shutdown;
  • отметка времени на стороне Python.

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

Хранение данных

Для старта достаточно CSV. Но SQLite быстро становится удобнее: можно делать выборки по времени, агрегировать данные и строить графики за период.

Минимальная таблица:

  • timestamp;
  • sensor_id;
  • metric;
  • value;
  • unit;
  • raw_line;
  • created_at.

Даже для pet project полезно хранить raw_line: она помогает понять, что произошло при ошибке парсинга.

Графики

Python даёт простой путь к визуализации: matplotlib, plotly или rich/terminal-графики. Для консольной метеостанции можно начать с ежедневного PNG-графика или ASCII-вывода последних значений.

Полезные графики:

  • температура за 24 часа;
  • влажность за неделю;
  • min/max/avg по дням;
  • пропуски измерений;
  • сравнение нескольких датчиков.

Калибровка

Дешёвые датчики могут врать. Поэтому стоит добавить offset и calibration config. Например, если датчик стабильно показывает +1.5 °C, поправку можно применять при сохранении.

Лучше хранить и raw value, и normalized value. Тогда всегда можно пересчитать историю при изменении калибровки.

Итог

Arduino + Python метеостанция — отличный учебный проект для homelab. Он небольшой, но содержит все элементы production-мышления: протокол данных, устойчивость к ошибкам, хранение, графики, калибровку и наблюдаемость.

Если проект хорошо спроектирован, его легко развить дальше: добавить web-dashboard, MQTT, Prometheus exporter или несколько датчиков в разных комнатах.