• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Отправка данных температуры, влажности и давления по mqtt в Home Assistant на ESP32, BME280 и немного Node-RED

23 января, 2022

 

ESP32: http://alii.pub/67hfo2

BME280: http://alii.pub/5yjrsz

Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.

 

MQTT (англ. message queuing telemetry transport) — упрощённый сетевой протокол, работающий поверх TCP/IP, ориентированный на обмен сообщениями между устройствами по принципу издатель-подписчик.

Для чего мне все это нужно наверное спросите? Ведь есть ESPHome и я уже описывал как легко добавить датчик температуры, влажности и давления BME280 в ESPHome и Home Assistant в этой статье:

Подключение датчика температуры, влажности и давления bme280 в ESPHome и Home Assistant.

И будете правы, это реально очень простой способ. Но у меня есть 5-6 датчиков, которых нет в ESPHome. А в систему умного дома Home Assistant мне бы их хотелось добавить.

И к моему стыду, я скажу, что с MQTT не работал вообще никогда. За исключением короткого времени, когда готовил видео про оцифровку показаний с счетчиков с помощью ESP32-cam.

Так-вот, хотелось мне побольше разобраться с MQTT и на основе уже этого скетча ( отправки показаний с датчика BME280). Делать уже свои скетчи про другие датчики.

Итак, как датчик BME280 подключать к ESP32 думаю говорить не нужно. Подключается он по шине i2c. И у разных плат ESP32 эта шина находится в разных местах. Но все-же если нужно, то вот для примера одна из них:

Скетч и библиотеки можно скачать отсюда:

https://disk.yandex.ru/d/-wsPcp8R5eA6mQ

Но не все библиотека там имеются. Две еще нужно доставить.

А именно библиотеки самой BME280.

Adafruit_BME280

Заходим в Скетч->Подключить библиотеку->Менеджер библиотек и устанавливаем ее:

 

А вторая – это Adafruit Unified Sensor

Тут так-же заходим в Скетч->Подключить библиотеку->Менеджер библиотек и устанавливаем ее:

 

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

#define WIFI_SSID "REPLACE_WITH_YOUR_SSID"
#define WIFI_PASSWORD "REPLACE_WITH_YOUR_PASSWORD"

Здесь прописываются SSID и Пароль от ВАшей WI-fi сети.

#define MQTT_HOST IPAddress(192, 168, 1, XXX)
// For a cloud MQTT broker, type the domain name
//#define MQTT_HOST "example.com"

В первой строчке указываете ip адрес MQTT сервера. В моем случае это сервер Home Assistant. Если же у Вас какой-то сторонний MQTT сервер ( которых очень много). То раскомментируйте строчку //#define MQTT_HOST "example.com" Ив ковычках впешите его адрес. Ну а первую строчку с ip адресом нужно закомментировать.

 

Ну и строчка:

mqttClient.setCredentials(“mqtt”, “mqtt”);

Здесь указываем логин и пароль от mqtt сервера. У меня он mqtt – логин и такой-же пароль.

Все, после этого загружаем код в ESP32 и после подключения к wi-fi сети и к серверу MQTT начнут публиковаться данные в топики:

“esp32/bme280/temperature” – Температура
“esp32/bme280/humidity” – Влажность
“esp32/bme280/pressure” – Давление

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

Если все прописали правильно и контроллер ESP32 связался с mqtt сервером, то в мониторе порта можем видеть как передаются данные. Выглядит это примерно так:

Теперь что касается Home Assistant. Там должен быть установлен Mosquitto брокер. Как его устанавливать описано у меня в статье тут:

Подключение к Home Assistant модуля Zigbee CC2531

Ну так вот, если мы зайдем в Интеграции и нажмем кнопку “Настроить” на интеграции core-mosquitto, то увидим следующее окно:

Где в графе Подписаться на топик, впишем топик показаний температуры esp32/bme280/temperature, нажмем кнопку “подписаться” и будем получать данные температуры.

 

Теперь можем создать специальные сенсоры, в которые будут записываться данные значения с MQTT.

Для этого зайдем в Configuration.yaml и в графе Sensor, добавим следующее:


  - platform: "mqtt"
    name: "bme280_temp"
    state_topic: "esp32/bme280/temperature"
    value_template: "{{ value }}"
    unit_of_measurement: "C"
    
  - platform: "mqtt"
    name: "bme280_hum"
    state_topic: "esp32/bme280/humidity"
    value_template: "{{ value }}"
    unit_of_measurement: "%"
    
  - platform: "mqtt"
    name: "bme280_pres"
    state_topic: "esp32/bme280/pressure"
    value_template: "{{ value }}"
    unit_of_measurement: "mm"

Ну собственно тут описаны 3 сенсора соответствующие температуре, влажности и давлению с датчика BME280.

И сенсеры теперь в Home Assistant будут называться

sensor.bme280_pres

sensor.bme280_hum

sensor.bme280_temp

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

На этом можно было бы и закончить. Но хочется немного рассказать еще про NODe-red:

Нам нужно добавить 3 блока mqtt in и guage. Выглядеть это все будет так:

 

Далее отредактируем блок MQTT следующим образом:

Ну а блок guag следующим образом:

Ну естественно в блоках Mqtt меняем топики под темературу, влажность и давление.

А в блоке guage меняем range от минимального значения, до максимального. И цветовую схему.

 

После этого соединяем блоки между собой, как показано тут:

И нажимаем кнопку “Развенуть”

После этого переходим по адресу:

http://серверHomeAssistant:1880/ui

И получаем следующее:

Primary Sidebar

Поиск

Новые записи

  • Автоматизация перезагрузки устройства по команде Ping.
  • Разблокирование и добавление шлюза Xiaomi gateway 3 в Home Assistant для управления Bluetooth устройствами из экосистемы Xiaomi Home (mihome)
  • Интеграция для локального управления (без интернета) ик пультом Tuya работающим по wifi из Home Assistant
  • Транслируем показания с Уличного Bluetooth Датчика температуры по BTHome на дисплей датчика температуры XIaomi LYWSD03MMC
  • Заставляем Bluetooth датчики температуры tuya и xiaomi отправлять данные по Zigbee в Home Assistant.

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·