Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05
В этом наборе инструкций мы рассмотрим, как создать датчик температуры с поддержкой Wi-Fi, используя простой ESP8266 для работы с тяжелыми грузами и датчик температуры / влажности DHT11. Мы также будем использовать созданную мною печатную плату, которая сейчас продается в интернет-магазине канала, если вы хотите ее приобрести.
Приступим к составлению перечня материалов, которые вам понадобятся:
Модуль Wi-Fi ESP8266
amzn.to/2pkGPoa
Датчик DHT11
amzn.to/2phwfhO
Умная розетка TP-Link
amzn.to/2GElQUz
Вы также можете забрать весь модуль в магазине tindie для канала:
www.tindie.com/products/misperry/wifi-enab…
Также проверьте JLCPCB для изготовления печатных плат. Это те, кого я использовал для изготовления печатной платы:
Бесплатная доставка при первом заказе и прототипирование печатной платы за 2 доллара на
Шаг 1. Добавление кода в ESP8266
Теперь нам нужно прошить следующий код на ESP8266. Этот код можно найти в следующем репозитории github:
В приведенном ниже коде вам нужно будет настроить только несколько верхних разделов определений:
Сервер MQTT:
Пользователь MQTT:
Пароль MQTT:
MQTT_sensor_topic:
-Вай фай
Сказано: сказано о сети Wi-Fi, к которой вы подключаетесь
Пароль: пароль WiFi.
После того, как вы заполнили это в приведенном ниже коде, вы можете затем скомпилировать и проверить на наличие ошибок, и если 0 ошибок, вы можете прошить его на ESP8266.
/ * * Имя файла: TempHumSensor.ino * * Приложение: HomeAssistant Space Heater Thermostat * * Описание: Этот код предназначен для Arduino * совместимого устройства ESP8266 с поддержкой WiFi. Это передаст информацию о температуре * устройства DHT11 во внешний интерфейс HASS для обработки. * * Автор: М. Сперри - https://www.youtube.com/misperry * Дата: 03 / * Редакция: 1.0 * * * /
#включают
#include #include #include #include #include
#define CON_TIME_OUT 20 // Тайм-аут отсутствия подключения к Wi-Fi
#define MQTT_TIME_OUT 10 // Тайм-аут отсутствия соединения с сервером MQTT
#define DHTPIN 0 // Вывод, который подключен к датчику DHT
#define DHTTYPE DHT11 // Тип датчика - DHT11, вы можете изменить его на DHT22 (AM2302), DHT21 (AM2301)
#define mqtt_server "" // Введите адрес вашего сервера MQTT или IP-адрес. Я использую свой адрес DuckDNS (yourname.duckdns.org) в этом поле
#define mqtt_user "" // введите свое имя пользователя MQTT #define mqtt_password "" // введите пароль #define MQTT_SENSOR_TOPIC "ha / bedroom_temp" // Введите тему для вашего MQTT
// Wi-Fi: SSID и пароль
const char * ssid = ""; const char * пароль = "";
// НАСТРОЙКА DHT
DHT_Unified dht (DHTPIN, DHTTYPE); uint32_t delayMS;
WiFiClient wifiClient;
Клиент PubSubClient (wifiClient);
// функция, вызываемая для публикации температуры и влажности
void publishData (float p_tempera) {// создать объект JSON // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject & root = jsonBuffer.createObject (); // ИНФОРМАЦИЯ: данные необходимо преобразовать в строку; проблема возникает при использовании числа с плавающей запятой… // преобразовать в значение по Фаренгейту p_tempera = (p_temperature * 1.8) + 32; // преобразовать в значение по Фаренгейту root ["temperature"] = (String) p_temperature; root.prettyPrintTo (серийный); Serial.println ("");
данные char [200];
root.printTo (данные, root.measureLength () + 1); client.publish (MQTT_SENSOR_TOPIC, data, true); }
// функция вызывается при получении сообщения MQTT
void callback (char * p_topic, byte * p_payload, unsigned int p_length) {}
void reconnect () {
// Цикл, пока мы не восстановим соединение while (! Client.connected ()) {Serial.print ("ИНФОРМАЦИЯ: Попытка соединения MQTT…"); // Попытка подключиться if (client.connect ("ESPBlindstl", mqtt_user, mqtt_password)) {Serial.println ("INFO: connected"); } else {Serial.print ("ОШИБКА: сбой, rc ="); Serial.print (client.state ()); Serial.println («ОТЛАДКА: повторите попытку через 5 секунд»); // Подождите 5 секунд перед повторной попыткой delay (5000); }}}
void setup (void) {
Serial.begin (9600);
// Начнем с подключения к сети Wi-Fi
Serial.println (); Serial.println (); Serial.print («Подключение к»); Serial.println (ssid);
WiFi.begin (ssid, пароль);
while (WiFi.status ()! = WL_CONNECTED) {
задержка (800); Serial.print ("."); }
Serial.println ("");
Serial.println («WiFi подключен»); Serial.println ("IP-адрес:"); Serial.println (WiFi.localIP ()); // инициализируем MQTT-соединение client.setServer (mqtt_server, 1883); client.setCallback (обратный вызов);
// Инициализируем датчик DHT
dht.begin (); Serial.println («Унифицированные данные датчика DHT11»);
// Распечатать данные датчика температуры
sensor_t датчик; dht.temperature (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println («Температура»); Serial.print ("Датчик:"); Serial.println (имя датчика); Serial.print ("Версия драйвера:"); Serial.println (сенсорная версия); Serial.print ("Уникальный идентификатор:"); Serial.println (sensor.sensor_id); Serial.print ("Максимальное значение:"); Serial.print (sensor.max_value); Serial.println ("* C"); Serial.print ("Мин. Значение:"); Serial.print (sensor.min_value); серийный. Отпечаток (sensor.min_value); Serial.println ("* C"); Serial.print ("Разрешение:"); Серийный. Отпечаток (сенсор. Разрешение); Serial.println ("* C"); Serial.println ("------------------------------------"); // Распечатать данные датчика влажности. dht.humidity (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println («Влажность»); Serial.print ("Датчик:"); Serial.println (имя датчика); Serial.print ("Версия драйвера:"); Serial.println (сенсорная версия); Serial.print ("Уникальный идентификатор:"); Serial.println (sensor.sensor_id); Serial.print ("Максимальное значение:"); Serial.print (sensor.max_value); Serial.println ("%"); Serial.print ("Мин. Значение:"); Serial.print (sensor.min_value); серийный. Отпечаток (sensor.min_value); Serial.println ("%"); Serial.print ("Разрешение:"); Серийный. Отпечаток (сенсор. Разрешение); Serial.println ("%"); Serial.println ("------------------------------------");
// Устанавливаем задержку между показаниями датчика на основе деталей датчика
delayMS = sensor.min_delay / 1000; }
void loop (void) {
температура поплавка;
если (! client.connected ())
{повторно подключиться (); }
задержка (delayMS);
// Получить событие температуры и распечатать его значение.
sensor_event_t событие; dht.tempera (). getEvent (& событие); if (isnan (event.temperature)) {Serial.println ("Ошибка чтения температуры!"); температура = 0,00; } else {температура = событие.температура; Serial.print ("Температура:"); Serial.print (температура); Serial.println ("* C"); } // публикуем в MQTT publishData (temperature); }
Шаг 2: Настройка умной розетки TP-LINK
Вам нужно будет настроить интеллектуальную розетку TP-LINK или любую интеллектуальную розетку для этого материала в соответствии с рекомендациями производителя.
Обязательно запишите MAC-адрес на устройстве. Если ваше устройство похоже на мое устройство TP-LINK, вы не можете указать статический IP-адрес. Таким образом, вам необходимо настроить маршрутизатор для резервирования DHCP. Это будет принимать MAC-адрес вашего устройства, и когда это устройство запрашивает адрес, маршрутизатор будет каждый раз давать ему один и тот же адрес.
Вот ссылка на то, как настроить это с помощью Linksys
www.linksys.com/us/support-article?article…
Шаг 3. Настройка Home Assistant
Теперь настроим Home Assistant. Для этого вам нужно будет добавить следующие конфигурации в файл configuration.yaml, который находится в структуре папок /home/homeassistant/.homeassistant на устройстве, на которое вы его установили.
После добавления этого параметра в конфигурацию домашнего помощника вам необходимо перезапустить программное обеспечение домашнего помощника, чтобы изменения вступили в силу.
Также я буду использовать интеллектуальную розетку TP-LINK для коммутирующего устройства, и определение приведено ниже в файле конфигурации. Для устройства используется тот IP-адрес, который вы установили для резервирования DHCP на предыдущем шаге.
Эту конфигурацию также можно найти в следующем репозитории на github:
mqtt: switch: - платформа: имя tplink: Хост обогревателя спальни: 192.168.2.11
датчик 1:
платформа: mqtt state_topic: 'ha / bedroom_temp' name: Bedroom Temp unit_of_measurement: '° F' value_template: '{{value_json.tempera}}'
автоматизация:
- псевдоним: _Temp Температура в спальне Высокий триггер: - platform: numeric_state entity_id: sensor. Bedroom_Temp выше: 73
действие:
service: homeassistant.turn_off entity_id: switch. Bedroom_Heater
- псевдоним: _Temp Bedroom Temp Low
триггер: - платформа: numeric_state entity_id: sensor. Bedroom_Temp ниже: 73 действие: service: homeassistant.turn_on entity_id: switch. Bedroom_Heater
Шаг 4: Заключительные шаги
Теперь, когда вы настроили домашний помощник и настроили код Arduino, вы будете готовы активировать всю систему. Таким образом, вставьте вилку нагревателя / вентилятора / охладителя в интеллектуальную розетку и подключите интеллектуальную розетку. Как только он будет готов, вам нужно будет подключить небольшое зарядное устройство USB, а затем датчик температуры с поддержкой Wi-Fi. После того, как все будет в сети, вы сможете заглянуть в приборную панель домашнего помощника и увидеть новую сообщаемую температуру.
Большое спасибо за вашу помощь и поддержку. Обязательно оставьте лайк и посетите канал по адресу https://www.youbue.com/misperry и посмотрите, что у нас есть для вас. Убедитесь, что вы подписались и поделитесь с друзьями, чтобы помочь каналу.
Рекомендуемые:
Умная розетка: 6 шагов
Smart Outlet: Заявление об ограничении ответственности: этот проект предназначен для демонстрации того, как можно создавать прототипы с принтером для печатных плат SV2. Это не тот продукт, который следует использовать в повседневной жизни. Он не был разработан и не протестирован на соответствие соответствующим стандартам безопасности. Вы несете ответственность
Tupperware с контролем температуры: 4 шага
Tupperware с регулируемой температурой: мы хотели иметь охлаждаемый контейнер для хранения различных предметов. Мы решили использовать MSP432 для питания и управления системой из-за ее универсальности. Мы использовали транзистор, чтобы использовать ШИМ для питания вентилятора. Если у вас 3-проводный вентилятор с ШИМ
ESP8266 Реле с контролем температуры: 9 шагов (с изображениями)
Реле с контролем температуры ESP8266: Мой друг - ученый, который проводит эксперименты, очень чувствительные к температуре и влажности воздуха. В помещении инкубатора есть небольшой керамический обогреватель, но термостат обогревателя не был достаточно точным, он мог только поддерживать температуру
Alexa Echo + ESP 8266 = умная розетка: 4 шага (с изображениями)
Alexa Echo + ESP 8266 = Smart Power Plug: в этом руководстве используется прямое управление ALEXA ECHO ESP8266. Мой сервер поддерживает авторизацию ESP8266 на сервере Amazon. Мой сервер не выполняет резервное копирование ваших данных. Голосуйте за меня: D Спасибо
Умная розетка Wi-Fi своими руками: 7 шагов (с изображениями)
Умная розетка DIY WiFi: это умная розетка с датчиком температуры и влажности DHT 11 и аварийной светодиодной подсветкой. Как обычно, эту розетку можно включать и выключать через WiFi любого смартфона. Его также можно подключить к Интернету и воспользоваться функцией Internet of Thing