Всем привет! У платформы МТС Exolve есть сообщество, которое часто делится полезными гайдами от прокачки серверов до создания своих приложений. Наиболее интересные и подробные продолжаем размещать в нашем хабе.
Напомним, ESP8266 — это популярный микроконтроллер с поддержкой Wi-Fi, который широко используется в проектах Интернета вещей (IoT). Продолжим изучение возможностей интеграции API Exolve для ESP8266 благодаря гайду нашего пользователя и дополнением про SIP-звонок.
Защита от протечек воды — важный аспект безопасности и комфорта в любом доме. Быстрая реакция на утечку может предотвратить серьезные повреждения и затраты на ремонт. В этом проекте мы создадим автономную систему уведомления о протечке воды с использованием микроконтроллера NodeMCU, которая будет отправлять SMS-сообщения при обнаружении утечки.
Для реализации проекта нам потребуются следующие компоненты:
-
NodeMCU (ESP8266) — микроконтроллер с поддержкой Wi-Fi.
-
Датчик протечки воды — для обнаружения утечек.
-
Питание — аккумулятор или блок питания для NodeMCU.
-
Проводка и разъемы — для соединения компонентов.
-
Бредборд и провода — для удобства сборки и тестирования.
Подключите датчик протечки воды к одному из цифровых пинов NodeMCU (например, D1):
-
Один вывод датчика соедините с пином D1 на NodeMCU.
-
Второй вывод датчика соедините с GND (землей).
Подключите NodeMCU к источнику питания. Вы можете использовать аккумулятор или блок питания. Убедитесь, что напряжение питания соответствует требованиям вашего NodeMCU.
Приведенный ниже код на языке C++ подключает NodeMCU к Wi-Fi сети, проверяет состояние датчика протечки и отправляет SMS через сервис МТС Exolve при обнаружении утечки.
#include <ESP8266WiFi.h> // Подключаем библиотеку для работы с Wi-Fi #include <ESP8266HTTPClient.h> // Подключаем библиотеку для HTTP-запросов #include <WiFiClientSecure.h> // Подключаем библиотеку для HTTPS-запросов // Замените эти строки на SSID и пароль вашей Wi-Fi сети const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; // Bearer токен для авторизации const char* bearerToken = "YOUR_BEARER_TOKEN"; // Настройки датчика протечки воды const int waterSensorPin = D1; bool sensorState = HIGH; // Состояние датчика void setup() { // Инициализируем последовательный порт для отладки Serial.begin(9600); delay(10); // Настраиваем пин датчика как вход pinMode(waterSensorPin, INPUT_PULLUP); // Подключаемся к Wi-Fi сети Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void loop() { int currentState = digitalRead(waterSensorPin); if (currentState == LOW && sensorState == HIGH) { sensorState = LOW; sendSMS(); } else if (currentState == HIGH) { sensorState = HIGH; } } void sendSMS() { if (WiFi.status() == WL_CONNECTED) { // Проверяем соединение с Wi-Fi WiFiClientSecure client; // Создаем объект WiFiClientSecure client.setInsecure(); // Отключаем проверку сертификата (для простоты, не рекомендуется для production) HTTPClient http; // Устанавливаем URL для POST-запроса http.begin(client, "https://api.exolve.ru/messaging/v1/SendSMS"); http.addHeader("Content-Type", "application/json"); http.addHeader("Authorization", String("Bearer ") + bearerToken); // Формируем JSON-данные String jsonPayload = "{\"number\":\"SENDER_NUMBER\",\"destination\":\"RECIPIENT_NUMBER\",\"text\":\"СМС отправленный из NodeMCU: Обнаружена протечка!\"}"; // Отправляем POST-запрос int httpResponseCode = http.POST(jsonPayload); if (httpResponseCode > 0) { String response = http.getString(); Serial.println(httpResponseCode); Serial.println(response); } else { Serial.print("Error on sending POST: "); Serial.println(httpResponseCode); } // Завершаем запрос http.end(); } else { Serial.println("Error in WiFi connection"); } }
Этот проект демонстрирует, как с использованием минимального набора компонентов и простого кода можно создать эффективное устройство для уведомления о протечке воды. С помощью NodeMCU и датчика протечки, а также сервиса отправки SMS через интернет, вы сможете своевременно обнаруживать утечки и предотвращать возможные повреждения имущества.
Пара слов о способах обнаружения протечек
Протечки приводят к значительным финансовым затратам, появлению плесени и выходу из строя различных систем. Их можно разделить на явные и неявные, однако это разделение условно, так как неявные протечки со временем становятся явными, но могут принести больший урон.
Явные протечки
Простейший способ их обнаружения — визуальный осмотр, например, при регулярной проверке сантехнических узлов. Из плюсов: легко и просто реализуется. Минусы: неэффективно для выявления скрытых протечек и постоянная трата личного времени. Для этого типа протечек есть автоматические системы обнаружения.
Автоматизированные системы защиты от протечек
Они снабжены датчиками, которые фиксируют утечки и могут автоматически перекрывать воду.
Преимущества: высокая точность, возможность удаленного мониторинга и управления, автоматизация защиты от утечек.
Недостатки: высокая стоимость оборудования и его установки, необходимость настройки и обслуживания.
Скрытые протечки
Для их выявления существуют простые методы косвенного определения через показания счетчиков:
-
Ручной — записывайте показания перед уходом и после возвращения. Если расход воды зафиксирован при отсутствии потребления (например, не использовались посудомоечная или стиральная машины), это может свидетельствовать о наличии скрытой протечки.
-
Автоматический с умными счетчиками. Аномальное потребление воды в режиме реального времени при отсутствии фактического расхода указывает на скрытую протечку.
Также есть специализированные методы диагностики, которые требуют квалификации и недоступны обычным пользователям. Для их применения необходимо привлекать профессионалов:
-
Тепловизионный метод. Применяется для поиска утечек горячей воды или пара. Тепловизор фиксирует разницу температур и выявляет потенциальные места протечек.
-
Акустический метод. Чувствительные микрофоны улавливают шум, создаваемый протечкой, и могут обнаружить место утечки даже в подземных трубопроводах или внутри стен.
-
Корреляционный метод. Использует анализаторы вибраций, которые определяют точное место протечки даже в сложных условиях.
-
Измеритель влажности. Позволяет обнаружить зоны повышенной влажности в стенах или других конструкциях, что помогает определить место протечки без повреждения отделочных материалов.
Уведомление через SIP-звонок
Ещё один вариант аварийного оповещения — звонок. Для реализации уведомления звонком о протечке понадобятся:
-
ESP8266 — микроконтроллер с поддержкой Wi-Fi.
-
Аккаунт на МТС Exolve — для получения данных доступа к SIP.
-
Знание программирования на C++.
Для разработки SIP-клиента на базе ESP8266 вам потребуется использовать библиотеку для работы с SIP-протоколом и библиотеку для взаимодействия с аудио. К сожалению, ESP8266 имеет ограниченные возможности по сравнению с более мощными микроконтроллерами или платформами, такими как ESP32, поэтому создать полноценный SIP-клиент с голосовой связью на ESP8266 может быть сложно из-за ограничений по памяти и мощности.
Тем не менее, можно попробовать реализовать базовый SIP-звонок, который будет отправлять SIP-запросы и управлять соединением. Рассмотрим базовый пример кода на языке C++ с использованием библиотеки ESP8266WiFi для подключения к Wi-Fi и библиотеки SIP для работы с SIP-протоколом.
Подключите библиотеки для работы с Wi-Fi и SIP.
#include <ESP8266WiFi.h> #include <SIP.h>
Задайте параметры подключения к Wi-Fi сети.
const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; void setup() { Serial.begin(115200); delay(10); // Подключение к Wi-Fi сети WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println(WiFi.localIP()); }
Создайте объект SIP и настройте параметры SIP-сервера и пользователя. Данные берем из вкладки SIP на dev.exolve.ru.
void makeCall(const char* destination) { if (sip.call(destination)) { Serial.println("Call initiated through exolve.ru"); } else { Serial.println("Call failed through exolve.ru"); } }
Добавьте код для выполнения исходящего звонка.
void makeCall(const char* destination) { if (sip.call(destination)) { Serial.println("Call initiated"); } else { Serial.println("Call failed"); } }
В основном цикле вы можете реализовать проверку входящих звонков или выполнение исходящих звонков.
void loop() { // Пример исходящего звонка makeCall("sip:destination_user@sip.exolve.ru"); // Вы можете добавить код для обработки входящих звонков или других SIP-событий delay(10000); // Задержка перед следующим звонком }
Замечания
-
Аудио: этот пример не включает поддержку аудио, так как у ESP8266 нет встроенной поддержки аудио. Для реализации голосового звонка потребуется внешний аудио-модуль, например, VS1053, и более сложная реализация.
-
Мощность: возможно, ESP8266 не справится с задачей полноценного SIP-клиента, особенно если потребуется обработка RTP потоков (реального времени). В этом случае лучше использовать ESP32, которая имеет больше ресурсов.
-
Библиотеки: Возможно, вам потребуется поискать или адаптировать существующие библиотеки для работы с SIP и аудио.
Этот пример представляет базовую структуру для работы с SIP на ESP8266. Реализация полнофункционального SIP-клиента потребует значительных усилий и использования других платформ или дополнительных модулей.
Применение SIP-звонков через ESP8266
Микроконтроллер ESP8266, несмотря на свои ограничения, можно использовать для реализации базовых SIP-звонков для уведомлений о протечках и в других областях. Рассмотрим основные из них:
Управление устройствами по звонку
ESP8266 позволяет удаленно управлять устройствами через SIP-звонки. Например, открывать шлагбаум или включать свет в гараже при звонке на определенный номер.
Оповещения и уведомления
ESP8266 может инициировать SIP-звонки для отправки голосовых уведомлений. Примеры использования:
-
охранные системы: при срабатывании датчика движения устройство автоматически звонит на указанный номер;
-
уведомления о завершении работы: например, станка или другого оборудования.
Базовая голосовая связь
С использованием внешних аудиомодулей (например, VS1053) на ESP8266 можно организовать простую голосовую связь. Это подходит для домофонов и систем связи с минимальными требованиями.
Реализация сложных процессов
С помощью API Exolve можно интегрировать ESP8266 с облачными сервисами для расширения функциональности. Например, управления через голосовые команды и интеграции с умным домом.
Кроме того, ESP8266 позволяет отправлять и принимать SMS.
Сравнение ESP8266 и ESP32 для реализации SIP-звонков
ESP8266, популярный микроконтроллер с поддержкой Wi-Fi, уже давно зарекомендовал себя как доступное и надежное решение для IoT-проектов. Однако с появлением его аналога — ESP32 — разработчики получили более мощную и функциональную альтернативу. ESP32 сохранил все преимущества ESP8266, такие как поддержка Wi-Fi и простота интеграции, но при этом добавил новые возможности.
Основные различия между ESP8266 и ESP32 можно описать следующим образом:
-
Производительность: ESP32 быстрее, чем ESP8266, благодаря более мощному процессору.
-
Оперативная память: ESP32 имеет больше оперативной памяти, что позволяет эффективнее обрабатывать SIP-протокол и RTP-потоки (голосовые данные).
-
Bluetooth: ESP32 поддерживает Bluetooth, а ESP8266 — нет.
-
Процессор: ESP32 двухъядерный, а ESP8266 — одноядерный. Двухъядерная архитектура позволяет разделять задачи: одно ядро может заниматься обработкой SIP-протокола, а второе — обработкой аудио, что повышает стабильность системы.
-
Встроенная поддержка аудио: ESP32 оснащен встроенным I2S-интерфейсом, что упрощает подключение аудиомодулей и обработку звука. ESP8266 требует внешних модулей для работы с аудио.
-
Стоимость: ESP8266 дешевле, чем ESP32.
-
Поддержка сообщества: У ESP8266 более широкая поддержка сообщества, хотя разрыв между ними сокращается.
-
Энергоэффективность: ESP32 более энергоэффективен.
Оба устройства предоставляют широкие возможности для реализации SIP-звонков и IoT-проектов. ESP8266 станет отличным выбором для базовых задач, в то время как ESP32 подойдет для более сложных. В зависимости от ваших требований и бюджета, вы можете выбрать оптимальное решение для автоматизации, связи и творческих проектов.
ссылка на оригинал статьи https://habr.com/ru/articles/898228/
Добавить комментарий