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

почему скетч отправляет 2 смс?

привет. помогите пожалуйста. почему скетч отправляет 2 смс? использую программный и аппаратный (резистор+конденсатор) антизвон из этой статьи https://arduinomaster.ru/datchiki-arduino/ustranenie-drebezg-kontaktov-knopki/#i-5 и всё равно esp отправляет 2 смс. с промежутком 20с. алгоритм отправки смс взят отсюда https://esp8266.ru/forum/threads/otpravka-sms-s-servisa-sms-ru.3869/page-2 платка esp-01

Код:
    #include <Bounce2.h>;
    #include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClientSecureBearSSL.h>
    #define PIN_BUTTON 2
  
    
    // Создаем объект
    Bounce debouncer = Bounce();

    
    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!"));

      // Устаовили тип пина
      pinMode(PIN_BUTTON, INPUT_PULLUP);
      // Даем бибилотеке знать, к какому пину мы подключили кнопку
      debouncer.attach(PIN_BUTTON);
      debouncer.interval(5); // Интервал, в течение которого мы не буем получать значения с пина
      //Setup the LED :
      //pinMode(PIN_LED, OUTPUT);
    }

    
    void loop() {
      // Даем объекту бибилотеки знать, что надо обновить состояние - мы вошли в новый цкил loop
      debouncer.update();
      // Получаем значение кнопки
      int value = debouncer.read();
      // Теперь мы точно знаем, в каком состоянии находится наша кнопка
      if ( value == LOW ) {
        sendsms();
      }
      else {
        delay(200);
      }
    }



    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=1111&to=7111&msg=111&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 sendsms() {
getpr24h();
Serial.println("Wait 20s before next round to not get banned on API server...");
delay(20000);
}
 

gregvel

New member
не силен в библиотеке
#include <Bounce2.h>;
но здается мне лажа с переменной value
Можно попробовать выкинуть в порт состояние value и посмотреть что происходит.
 

nikolz

Well-known member
привет. помогите пожалуйста. почему скетч отправляет 2 смс? использую программный и аппаратный (резистор+конденсатор) антизвон из этой статьи https://arduinomaster.ru/datchiki-arduino/ustranenie-drebezg-kontaktov-knopki/#i-5 и всё равно esp отправляет 2 смс. с промежутком 20с. алгоритм отправки смс взят отсюда https://esp8266.ru/forum/threads/otpravka-sms-s-servisa-sms-ru.3869/page-2 платка esp-01

Код:
    #include <Bounce2.h>;
    #include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClientSecureBearSSL.h>
    #define PIN_BUTTON 2
 
   
    // Создаем объект
    Bounce debouncer = Bounce();

   
    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!"));

      // Устаовили тип пина
      pinMode(PIN_BUTTON, INPUT_PULLUP);
      // Даем бибилотеке знать, к какому пину мы подключили кнопку
      debouncer.attach(PIN_BUTTON);
      debouncer.interval(5); // Интервал, в течение которого мы не буем получать значения с пина
      //Setup the LED :
      //pinMode(PIN_LED, OUTPUT);
    }

   
    void loop() {
      // Даем объекту бибилотеки знать, что надо обновить состояние - мы вошли в новый цкил loop
      debouncer.update();
      // Получаем значение кнопки
      int value = debouncer.read();
      // Теперь мы точно знаем, в каком состоянии находится наша кнопка
      if ( value == LOW ) {
        sendsms();
      }
      else {
        delay(200);
      }
    }



    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=1111&to=7111&msg=111&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 sendsms() {
getpr24h();
Serial.println("Wait 20s before next round to not get banned on API server...");
delay(20000);
}
предположу, что неправильно обрабатывается нажатие кнопки
надо обнаруживать один фронт, а у вас возможно оба, либо уровень
 
Сверху Снизу