Умная розетка с поддержкой Wi-Fi и контролем температуры: 4 шага
Умная розетка с поддержкой Wi-Fi и контролем температуры: 4 шага
Anonim
Умная розетка с поддержкой Wi-Fi и контролем температуры
Умная розетка с поддержкой Wi-Fi и контролем температуры

В этом наборе инструкций мы рассмотрим, как создать датчик температуры с поддержкой 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
Настройка умной розетки 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: Заключительные шаги

Image
Image
Заключительные шаги
Заключительные шаги
Заключительные шаги
Заключительные шаги

Теперь, когда вы настроили домашний помощник и настроили код Arduino, вы будете готовы активировать всю систему. Таким образом, вставьте вилку нагревателя / вентилятора / охладителя в интеллектуальную розетку и подключите интеллектуальную розетку. Как только он будет готов, вам нужно будет подключить небольшое зарядное устройство USB, а затем датчик температуры с поддержкой Wi-Fi. После того, как все будет в сети, вы сможете заглянуть в приборную панель домашнего помощника и увидеть новую сообщаемую температуру.

Большое спасибо за вашу помощь и поддержку. Обязательно оставьте лайк и посетите канал по адресу https://www.youbue.com/misperry и посмотрите, что у нас есть для вас. Убедитесь, что вы подписались и поделитесь с друзьями, чтобы помочь каналу.

Рекомендуемые: