ESP + MQTT как основа умного дома

Публикация 12.02.2017

Платы ESP8266 стали очень популярны из-за своей низкой цены и совместимостью с Arduino IDE. Для решения задач устройств "Умного дома" они просто идеальны. ESP требует только подключения питания, а сбор и отправку данных она может осуществлять по Wi-Fi через домашний роутер.

Одним из популярных открытых протоколов связи для Умного дома является MQTT. Его основа - обычные http(s) сокет соединение. Протокол по сути дела описывает лишь язык, а не способ доставки данных. MQTT требует наличие сервера - брокера, который объединяет подключенные устройства в сеть. Сами же устройства при подключении подписываются на топики в которых отсылаются данные и брокер отсылает только те топики устройству, которые ему нужны.

ESP + MQTT как основа умного дома

Получить к возможность подключиться к брокер серверу можно двумя способами: воспользоваться бесплатными MGTT брокерами или поднять свой собственный сервер (путь самурая).

Первый вариант самый простой. Из бесплатных я бы рекомендовал cloudmqtt.com. Там есть ограничения по количеству устройств и запросов, но для домашнего использования этого более чем достаточно. При регистрации выдается логин, пароль, сервер к которому нужно делать коннект, тип соединения (с/без ssl).

Свой брокер поднять не на много сложнее. Дольше уйдет время на настройку окружения, чем на поднятие брокера. Сделать это можно на nodeJs с npm пакетом mqtt. Примеры можно посмотреть на сайте расширения. Но это уже выходит за рамки данной статейки.

Вернемся к нашей ESP. Из этих устройств мы соберем периферию по сбору данных. Для реализации устройств удобно использовать модуль ESP8266 ESP-12. Он имеет встроенный стабилизатор на 3.2 вольта и множество свободных GPIO для подключения периферии. Цена так себе, если паяльник не вызывает страха, то можно замутить на 01/07 модулях. На али такие меньше чем за 2$ за штуку можно отхватить.

ESP + MQTT как основа умного дома

Настройка Arduino IDE

Для прошивки ESP будем использовать Arduino IDE. Просто так взять и залить скетч нельзя. Для начала нужно подготовить настроить IDE для работы с платой ESP.

Запускаем наше IDE и идем в Файл - Настройки.

ESP + MQTT как основа умного дома

Прописываем ссылку на менеджер плат http://arduino.esp8266.com/stable/package_esp8266com_index.json
Теперь выбираем Инструменты - Плата - Менеджер плат. В конце списка мы увидим esp8266 by esp8266 Community.

ESP + MQTT как основа умного дома

Выбираем последнюю версию и жмем Установить.

Esp прошивает на другой скорости чем чипы Atmega и по тому нам нужно в первую очередь изменить скорость uart. Инструменты - Upload Speed:-115200:

ESP + MQTT как основа умного дома

Не забываем задать тип платы: Инструменты - Generic ESP8266 Module.

ESP + MQTT как основа умного дома

Ну и все, наше IDE готово загружать скетч в ESP. Если вы счастливый обладатель ESP8266 ESP-12 - переключаем в режим программирования, тыкаем usb, выбираем COM порт и погнали. Если плата попроще (ESP8266-01), не беда. Подключаем GPIO0 на землю, USB-UART "свисток", подаем стабильные 3.2 вольт и наша дешевая плата тоже готова принять скетч. Распиновка подключения для 01:

ESP + MQTT как основа умного дома

Скетч для MQTT

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

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

const char *ssid = "xxxxxx"; // Имя роутера
const char *pass = "xxxxxx"; // Пароль роутера

const char *mqtt_server = "m13.cloudmqtt.com"; // Имя сервера MQTT
const int mqtt_port = 14483; // Порт для подключения к серверу MQTT
const char *mqtt_user = "xxxxxx"; // Логи для подключения к серверу MQTT
const char *mqtt_pass = "xxxxxx"; // Пароль для подключения к серверу MQTT

const int led = 5; // диод на плате

#define BUFFER_SIZE 100

int tm = 300;
float temp = 0;

WiFiClient wclient; 
PubSubClient client(wclient, mqtt_server, mqtt_port);

void setup() {
  Serial.begin(115200);
  delay(10);

  Serial.println();
  Serial.println();

  pinMode(led, OUTPUT);
}

// Функция отправки показаний
void refreshData() {
  if (tm == 0) {
    time = millis();
    client.publish("test/1", time);
    tm = 3000; // пауза меду отправками 3 секунды
  }
  tm--;
  
  delay(1); 
}

// Функция получения данных от сервера
void callback(const MQTT::Publish& pub)
{
  String payload = pub.payload_string();
  String topic = pub.topic();
  
  Serial.print(pub.topic()); // выводим в сериал порт название топика
  Serial.print(" => ");
  Serial.println(payload); // выводим в сериал порт значение полученных данных

  // проверяем из нужного ли нам топика пришли данные 
  if(topic == "test/2")
  {
     Serial.println("test/2 OK"); // выводим в сериал порт подтверждение, что мы получили топик test/2
  }
}

void loop() {
  // подключаемся к wi-fi
  if (WiFi.status() != WL_CONNECTED) {
    Serial.print("Connecting to ");
    Serial.print(ssid);
    Serial.println("...");
    WiFi.begin(ssid, pass);
    
    if (WiFi.waitForConnectResult() != WL_CONNECTED) return;
    Serial.println("WiFi connected");
  }
  
  // подключаемся к MQTT серверу
  if (WiFi.status() == WL_CONNECTED) {
    if (!client.connected()) {
      Serial.print("Connecting to MQTT server ");
      Serial.print(mqtt_server);
      Serial.println("...");
      if (client.connect(MQTT::Connect("arduinoClient2").set_auth(mqtt_user, mqtt_pass))) {
        Serial.println("Connected to MQTT server ");
        client.set_callback(callback);
        // подписываемся под топики
        client.subscribe("test/1");
        client.subscribe("test/2");
      } else {
        Serial.println("Could not connect to MQTT server"); 
      }
    }
    
    if (client.connected()){
      client.loop();
      refreshData();
    }
  
  }
}

Код выполняет соединение к Wi-Fi точке доступа в квартире, через интернет соединяется к брокер серверу. Подписывается на топики test/1 и test/2. Отсылает раз в 3 секунды значение системного счетчика. В общем, ничего лишнего.

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

Настройка клиента на телефоне

Скачиваем приложение в маркетплейсе Android/iPhone - IoT MQTT Dashboard или любое аналогичное. Они все работают одинаково.

В запущенном приложении нужно задать хост, логин, пароль, порт брокер-сервера.

ESP + MQTT как основа умного дома

Далее мы попадаем на страницу подписок. Задаем наши два топика "test/1" и "test/2" - теперь мы всегда будем видеть последние присланные значения этих топиков. Это может быть температура воздуха или влажность земли в теплице. Есть поддержка передачи изображения в base64, но это уже совсем другая история.

На втором экране мы можем создать управляемые контролы: кнопки, переключатели, выбор цвета, мультиселек, поле ввода текста. Добавляем переключатели и вбиваем в них наши топики "test/1" и "test/2". Запускаем и видим как переключение топиков сразу же вываливает в консоль UART микроконтроллера ответы. Колдунство!

ESP + MQTT как основа умного дома

Данная инструкция открывает простор перед фантазией разработчика. С ее помощью можно сделать компоненты умного дома, которые будут управлять RGB лентой, защищать квартиру от протечек, управлять пелетным/газовым котлом и многое другое.

* комментарии публикуются после модерации
03.10.2022 13:51




Over the years of independence, the institute has trained more than 13000 physicians (including 800 clinical interns, 1116 masters, 200 postgraduates and 20 doctoral students) in various directions.

870 staff work at the institute at present,] including 525 professorial-teaching staff in 55 departments, 34 of them are Doctors of science and 132 candidates of science. 4 staff members of the professorial-teaching staff of the institute are Honoured Workers of Science of the Republic of Uzbekistan, 3 – are members of New-York and 2 – members of Russian Academy of Pedagogical Science.

The institute has been training medical staff on the following faculties and directions: Therapeutic, Pediatric, Dentistry, Professional Education, Preventive Medicine, Pharmacy, High Nursing Affair and Physicians’ Advanced Training. At present] 3110 students have been studying at the institute (1331 at the Therapeutic faculty, 1009 at the Pediatric, 358 at the Dentistry, 175 students at the Professional Education Direction, 49 at the faculty of Pharmacy, 71 at the Direction of Preventive Medicine, 117 ones study at the Direction of High Nursing Affair).

Today graduates of the institute are trained in the following directions of master's degree: obstetrics and gynecology, therapy (with its directions), otorhinolaryngology, cardiology, ophthalmology, infectious diseases (with its directions), dermatovenereology, neurology, general oncology, morphology, surgery (with its directions), instrumental and functional diagnostic methods (with its directions), neurosurgery, public health and public health services (with its directions), urology, narcology, traumatology and orthopedics, forensic medical examination, pediatrics (with its directions), pediatric surgery, pediatric anesthesiology and intensive care, children's cardiology and rheumatology, pediatric neurology, neonatology, sports medicine.

The clinic of the institute numbers 700 seats and equipped with modern diagnostic and treating instrumentations: MRT, MSCT, Scanning USI, Laparoscopic Center and others.

There are all opportunities to carry out sophisticated educational process and research work at the institute.

Source:
https://adti.uz/oquv-uslubiy-ishlar/
Institute of Medical Education

Tags:
Institute of Medical Education
medical institute faculties
electronic library of a medical university
medical institute faculties
17.05.2022 19:48
Hello, I recently came to the CS Store.
They sell Discount BinaryNights software, prices are actually low, I read reviews and decided to Order Cheap Revit 2019, the price difference with the official shop is 35%!!! Tell us, do you think this is a good buy?
The CSShop Support Team is a pearl! Although they don't handle computers very well, they have made it one of the best experiences in recent years.
Buy OEM Premiere Pro CC
11.05.2022 12:23
https://aliexpress.ru/item/1005002968275091.html
https://aliexpress.ru/item/1005002968275091.html
01.05.2022 08:21
We have a casino on sale platform For online casinos and offline clubs

Our script is completely with source code.
Our casino script:
1) Not a limited number of domains and ip.
2) You will receive all the games upon purchase and their source code.
3) You'll get more than 1,100 games in the package.
4) All games work on your computer and phone
5) We can help you choose a server and install the script on your server.
If you still have questions or want to buy a casino, write to us. And we will show you a demo of our online casino or casino club
Contacts:
telegram: https://t.me/Goldsvet_su
mail: sapgolds@protonmail.com
website: http://goldsvet.su/
20.11.2020 00:35
Вот бы ещё библиотеку прикрепили которую используете...