• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Отправка смс с сервиса SMS.RU

Alexey1

New member
Кто сталкивался с задачей отправки СМС модулем ESP8266NodeMCU. Помогите!!! Зарегистрировался на SMS.RU. Там можно отправить смс сообщение HTTP запросом в таком виде:
https://sms.ru/sms/send?api_id=4B378CF7-9789-EFA6-DDCF-5DDAD1E73E1B&to=79086899809,74993221627&msg=hello+world&json=1

Как этот запрос прописать в скетче?
Или может кто знает другой способ.
 
Последнее редактирование:

NeoroN

Member
http - NodeMCU Documentation
Код:
http.get("https://sms.ru/sms/send?api_id=4B378CF7-9789-EFA6-DDCF-5DDAD1E73E1B&to=79086899809,74993221627&msg=hello+world&json=1", nil, function(code, data)
    if (code < 0) then
      print("HTTP request failed")
    else
      print(code, data)
    end
  end)
 

NeoroN

Member
Сам значит код не дает, а ты ему весь дай.
А нету его - прото запрос в пример вставил.

Хотя для LUA прошивки собранной с нужными библиотеками(модулями) на NodeMCU custom builds этого кода достаточно.

На C++ код будет другой и его будет больше, намного а мне лень писать много.
 

Сергей_Ф

Moderator
Команда форума
@Alexey1 кто вам мешает его посмотреть по ссылке? Вам же дали готовый пример. Работающий.
 

NeoroN

Member
Для начала всегда делают структурную схему программы а потом уже подгоняют код под языки и API библиотек.
Если ты понимаешь как должна работать программа - то язык вообще не важен и сводится к чтению документации по синтаксису языка.
В этой отправке смс думаю что нужна функция фоматирования и urlencode для конвертации текста сообщения(а то не все может отправиться) или вообще использовать метод post с JSON содержимым в utf-8.
 

gregvel

New member
void peredachasms(){

Serial.println("GoTo Funktion peredachasms...");
Serial.print("peredacha na otpravky v SMS: "); Serial.println(massage);

const char* host = "sms.ru";
String IDkey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
String phone = "380xxxxxxxxxxxxx";

if(WiFi.status() == WL_CONNECTED){

if (client.connect(host, 80))
{
Serial.println("connect sms server");
client.print( "GET /sms/send?");
client.print("api_id="+IDkey+"&to="+phone+"&msg="+massage+"&json=1");
client.println( " HTTP/1.1");
client.print( "Host:" );
client.println(host);
client.println( "Connection: close" );
client.println();
client.println();
Serial.println("send sms");

//----- Ответ сервера
Serial.println("[Response:]");
while (client.connected())
{
if (client.available())
{
String line = client.readStringUntil('\n');
Serial.println(line);
}
}
client.stop();
Serial.println("\n[Disconnected]"); // "Отключено"
//-----------------
Serial.println("___________________________TABLE status_code__________________________");
Serial.println("Smotri na https://sms.ru/api/send");
Serial.println("______________________________________________________________________");


} else Serial.println("Error connect sms.ru");
} else Serial.println("Error connect WiFi");


}


Добрый день сообщество :)
Алексей, лови кусок кода....раньше работал без проблем.
Вроде все понятно, забей переменную massage, свой ID и телефон.
Пробуй, удачи.
 

Rovki

New member
Не будет работать ,сейчас защищенное соединение https , порт 443
 

gregvel

New member
Возможно не будет, я годик назад писал...тогда работало.
Решил поделится....для старта человеку так сказать :)
 

Rovki

New member
Так в видео есть ссылка на проект ,провер ,работает сейчас
 

Rovki

New member
В любом случае спасибо ,что откликнулись ,а ТС что то молчит ...
 

gregvel

New member
Добрый день, сообщество :)
Не знаю актуально или нет, но скину пример проверенного кода для отправки смс
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClientSecureBearSSL.h>

void setup() {
Serial.begin(115200);
Serial.println(F("\n\r* * * ESP BOOT * * *"));
Serial.println(F("WiFi begin!"));
WiFi.mode(WIFI_STA);
WiFi.begin("сеть??????", "пароль??????");

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}

Serial.println(F("\n\rWiFi connected!"));
}

void getpr24h() {
std::unique_ptr<BearSSL::WiFiClientSecure>client(new BearSSL::WiFiClientSecure);
client->setInsecure();
HTTPClient https;

if (https.begin(*client, "https://sms.ru/sms/send?api_id=????...????&to=???телефон????&msg=hello+world&json=1")) { // HTTPS
Serial.println("[HTTPS] GET...");
int httpCode = https.GET();

// httpCode will be negative on error
if (httpCode > 0) {
// HTTP header has been send and Server response header has been handled
Serial.printf("[HTTPS] GET... code: %d\n", httpCode);
// file found at server?
if (httpCode == HTTP_CODE_OK) {
String payload = https.getString();
Serial.println(payload);

}
} else {
Serial.printf("[HTTPS] GET... failed, error: %s\n\r", https.errorToString(httpCode).c_str());
}

https.end();
} else {
Serial.printf("[HTTPS] Unable to connect\n\r");
}
}

void loop() {
getpr24h();
Serial.println("Wait 20s before next round to not get banned on API server...");
delay(20000);
}


Подставляйте свои значения сети, ID и телефона и все будет :)
может кому поможет, удачи
 
Сверху Снизу