Умный датчик температуры
Первый полноценный проект: датчик температуры, который сам шлёт показания в облако и на телефон. Здесь сходится всё, что мы учили.
Умный термометр — классический «первый IoT-проект». Он собирает данные с датчика, обрабатывает на ESP32 и публикует по MQTT. Просто, но содержит всю цепочку IoT.
Соберём устройство, которое измеряет температуру и влажность и отправляет их в систему умного дома. Понадобятся: ESP32 (мозг и Wi-Fi), цифровой датчик (например DHT22 для температуры/влажности или DS18B20 для точной температуры) и питание. Датчик подключается к GPIO, ESP32 читает его, упаковывает данные и публикует по MQTT.
Архитектура повторяет цепочку из раздела про IoT: датчик измеряет, ESP32 обрабатывает, Wi-Fi передаёт, брокер раздаёт, приложение показывает. Это шаблон, на который лягут все будущие проекты.
Как это работает под капотом
[DHT22] --GPIO--> [ESP32] --Wi-Fi--> [MQTT брокер] --> [телефон]
|
publish home/livingroom/temp
publish home/livingroom/humidity
Цикл работы: проснуться, прочитать датчик, проверить данные на адекватность, опубликовать в тему MQTT, при батарейном питании — уйти в deep sleep до следующего замера. Чтобы не слать мусор и не дёргать сеть зря, добавляют простую обработку: отбрасывают явно ошибочные значения и шлют обновление, только если показания заметно изменились. Отработаем эту логику в Python — «Посчитай сам ▶».
# Логика умного термометра: фильтрация и отправка по изменению
def process_reading(temp, last_sent, min_delta=0.5):
# 1) проверка на адекватность (датчик иногда врёт)
if temp < -40 or temp > 80:
return last_sent, None # отбрасываем мусор
# 2) шлём только если изменилось заметно
if last_sent is None or abs(temp - last_sent) >= min_delta:
return temp, f"publish home/livingroom/temp = {temp}"
return last_sent, None # без изменений — молчим
last = None
stream = [22.1, 22.2, 22.4, 199.0, 22.9, 23.6, 23.6] # сырые замеры
for t in stream:
last, action = process_reading(t, last)
if action:
print(action)
else:
print(f"{t}: пропуск (мусор или без изменений)")
Запусти врезку. Видно, как значение 199 отбрасывается как ошибка датчика, а близкие показания не плодят лишних сообщений. Это бережёт батарею и не засоряет брокер.
На реальном ESP32 чтение датчика делает библиотека, а публикацию — MQTT-клиент, но логика фильтрации остаётся ровно такой. В систему умного дома (например Home Assistant) устройство встроится автоматически, подписавшись на нужные темы.
Частые ошибки
- Слать каждое микроизменение. Брокер и батарея страдают; шли по существенной дельте.
- Не проверять данные датчика. Дешёвые датчики иногда выдают выбросы — фильтруй их.
- Опрашивать датчик слишком часто. Тому же DHT22 нужно время между замерами.
Best practices
- Публикуй по изменению или по таймеру, а не в бесконечном цикле без пауз.
- Используй retained-сообщения MQTT, чтобы приложение сразу видело последнее значение.
- Для батарейного варианта обязательно используй deep sleep между замерами.
Где это встречается
Умный датчик температуры — это не игрушка, а основа множества реальных систем. На его базе строят термостаты, управляющие отоплением; мониторинг серверных и холодильников, где перегрев означает убытки; теплицы, где климат поддерживается автоматически; и личные метеостанции. Один и тот же шаблон «датчик → обработка → публикация» масштабируется от домашней поделки до промышленного решения.
Ценность таких устройств — в истории и трендах. Один замер температуры мало что говорит, а вот график за неделю показывает, как остывает дом ночью, эффективно ли работает обогреватель, нет ли аномалий. Поэтому данные публикуют в облако или базу, строят дашборды и настраивают оповещения на выход за пределы нормы. Так простой термометр превращается в инструмент, который реально экономит энергию и предупреждает о проблемах заранее.
Запомни главное
- Умный термометр объединяет датчик, ESP32, Wi-Fi и MQTT.
- Фильтр выбросов и отправка по изменению экономят батарею и трафик.
- Ценность датчика — в истории и трендах, а не в одном замере.
- Используй retained-сообщения, чтобы приложение сразу видело последнее значение.
Итог: умный термометр объединяет датчик, ESP32, Wi-Fi и MQTT в работающую цепочку, а простая обработка (фильтр выбросов и отправка по изменению) делает его экономным и надёжным. Дальше добавим управление — реле и умную розетку.