Передача сообщений WhatsApp с помощью ESP8266 NodeMCU


Из данной статьи вы узнаете как отправлять сообщения в свою учетную запись приложения WhatsApp с помощью платы ESP8266 NodeMCU. Это может быть полезно для получения уведомлений от ESP8266 с показаниями датчиков, предупреждающих сообщений, когда показания датчика превышают или ниже определенного порога, при обнаружении движения и во многих других случаях. Программировать модуль ESP8266 мы будем с помощью Arduino IDE, а для отправки сообщений будем использовать бесплатное API под названием CallMeBot.

Проект для передачи сообщений WhatsApp с помощью модуля ESP8266 NodeMCU

Что такое WhatsApp

Мессенджер WhatsApp - это американская бесплатная кроссплатформенная централизованная служба обмена мгновенными сообщениями и передачи голоса с помощью технологии IP . Это позволяет отправлять сообщения и совершать голосовые и видеозвонки, используя подключение вашего телефона к Интернету, что позволяет существенно экономить на услугах традиционной телефонной связи.

Приложение WhatsApp полностью бесплатное и доступно для установки на Android и iOS.

API CallMeBot

Чтобы отправлять сообщения в свою учетную запись WhatsApp с помощью ESP8266, мы будем использовать бесплатный API-сервис под названием CallMeBot. Вы можете узнать больше о нем по следующей ссылке:

По сути, он работает как шлюз, который позволяет вам отправлять сообщения самому себе. Это может быть полезно для отправки предупреждающих сообщений с ESP8266.

Всю информацию о том, как отправлять сообщения с помощью API CallMeBot, можно найти здесь.

Получение ключа API CallMeBot

Прежде чем начать использовать API CallMeBot, вам необходимо получить ключ API CallmeBot WhatsApp. Для этого выполните следующую последовательность шагов (проверьте эту ссылку для получения инструкций на официальном веб-сайте):

  1. Добавьте в свои контакты на телефоне номер +34 644 44 21 48 (Можете дать имя этому контакту на свое усмотрение);
  2. Отправьте новому созданному контакту (разумеется, с использованием WhatsApp) следующее сообщение: “I allow callmebot to send me messages”;
  3. Подождите, пока не получите от бота сообщение “API Activated for your phone number. Your APIKEY is XXXXXX”.

Получение ключа API CallMeBot для WhatsApp

Примечание: Если вы не получите ключ API в течение 2 минут то повторите попытку через 24 часа. Сообщение WhatsApp от бота будет содержать ключ API, необходимый для отправки сообщений с использованием данного API.

Использование API CallMeBot

Чтобы отправить сообщение с помощью CallMeBot API, вам нужно отправить POST-запрос на следующий URL (но с использованием вашей информации):

  • [phone number]: номер телефона, связанный с вашей учетной записью WhatsApp в международном формате;
  • [message]: отправляемое сообщение должно содержать URL-кодировку;
  • [your_apikey]: ключ API, который вы получили в процессе активации в предыдущем разделе.

Официальную документацию по данному вопросу вы можете посмотреть по следующей ссылке: https://www.callmebot.com/blog/free-api-whatsapp-messages

Установка библиотеки URLEncode

Как мы видели ранее, отправляемое сообщение должно быть закодировано по URL. Кодировка URL преобразует символы в формат, который можно передавать через Интернет. URL-адреса можно отправлять только через Интернет, используя набор символов ASCII.

Это позволит нам включать в наши сообщения такие символы, как ç, ª, º, à, ü. Вы можете узнать больше о кодировке URL здесь.

Вы можете закодировать передаваемое сообщение самостоятельно или воспользоваться библиотекой, что намного проще. Мы будем использовать библиотеку UrlEncode, которую можно установить в Arduino IDE. Для этого в менеджере библиотек Arduino IDE (Sketch > Include Library > Manage Libraries) выполните поиск библиотеки URLEncode,затем в результатах поиска выберите библиотеку от Masayuki Sugahara, как показано на следующем рисунке.

Установка в Arduino IDE библиотеки URLEncode

Объяснение кода программы

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты. Отправить сообщение в WhatsApp с помощью API CallMeBot достаточно просто. Вам просто нужно сделать соответствующий HTTP-запрос POST.

Первым делом в коде программы подключим необходимые библиотеки.

Затем укажите параметры для доступа к своей сети WiFi.

Введите свой номер телефона и ключ API. Номер телефона должен быть в международном формате (включая знак +).

Отправка сообщений

Для отправки сообщений мы запрограммируем функцию под названием SendMessage(), которую вы можете вызвать позже для отправки сообщений в WhatsApp. Эта функция принимает в качестве аргумента сообщение, которое вы хотите отправить.

Внутри данной функции мы конструируем URL-адрес для запроса с вашей информацией, номером телефона, ключом API и передаваемым сообщением. Для перекодировки сообщений в URL формат мы будем использовать библиотеку UrlEncode, установленную нами ранее. В ней содержится функция под названием urlEncode(), которая кодирует любое сообщение, которое мы передаем в качестве аргумента (urlEncode(message)).

Затем создадим и запустим HttpClient по данному URL:

Укажите тип контента:

И, наконец, отправьте HTTP-запрос post. Следующая строка отправляет запрос и сохраняет код ответа:

Если код ответа равен 200, это означает, что запрос post прошел успешно. В противном случае что-то пошло не так.

Наконец, освободите ресурсы:

Установка

В функции setup() мы инициализируем последовательный порт для целей отладки.

Затем подключимся к своей локальной WiFi сети и выведем на экран IP-адрес нашего модуля ESP8266.

После этого мы сможем отправлять сообщения в WhatsApp просто вызывая функцию SendMessage(). В качестве примера мы отправим сообщение "Hello from ESP8266!"

Демонстрация работы проекта

После того как вы добавите в программу проекта, приведенную ниже, свои данные для доступа к сети WiFi, свой номера телефона и свой ключ API, вы можете загружать ее в свой модуль ESP8266.

После загрузки программы откройте монитор последовательного порта со скоростью передачи 115200 бод и нажмите на модуле ESP8266 кнопку сброса (RST). После этого он должен успешно подключиться к вашей WiFi сети и отправить вам сообщение в WhatsApp.

Результаты работы программы в мониторе последовательного порта

После этого зайдите в свою учетную запись WhatsApp. Через несколько секунд вы должны получить сообщение, переданное модулем ESP8266.

Получение сообщения WhatsApp, переданного модулем ESP8266

Исходный код программы (скетча)

Источник статьи

(Проголосуй первым!)
Загрузка...
1 041 просмотров

Комментарии

Передача сообщений WhatsApp с помощью ESP8266 NodeMCU — 4 комментария

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

    • Да, телеграм во многом его уже обгоняет, но многие до сих еще пользуются ватсаппом.

      • Продолжают им пользоваться те, кто пока еще не заметил, как стремительно уменьшается свободная память в их устройстве. И кто еще не столкнулся с потерей данных.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *