Скетч Sim 800l

Virusmc
Offline
Зарегистрирован: 22.11.2020

Всем привет, что нужно дописать в этом скетче ,что бы модуль реагировал только на один номер телефона?

 

/* 
 Тестировалось на Arduino IDE 1.8.5
 Дата тестирования 14.06.2019г.
 */ 
 #include <SoftwareSerial.h>
 SoftwareSerial mySerial(3, 2);              // Выводы SIM800L Tx &amp; Rx подключены к выводам Arduino 3 и 2
 char incomingByte; 
 String inputString;
 int relay_1 = A0;                           // Вывод управления реле 1
 int relay_2 = A1;                           // Вывод управления реле 2
 void setup() 
 {
   pinMode(relay_1, OUTPUT);                 // Установим вывод как выход
   digitalWrite(relay_1, HIGH);              // Устанавливаем высокий уровень
   pinMode(relay_2, OUTPUT);                 // Установим вывод как выход
   digitalWrite(relay_2, HIGH);              // Устанавливаем высокий уровень
   Serial.begin(9600);                   
   mySerial.begin(9600); 
 while(!mySerial.available()){             // Зацикливаем и ждем инициализацию SIM800L
    mySerial.println("AT");                  // Отправка команды AT
    delay(1000);                             // Пауза
    Serial.println("Connecting…");         // Печатаем текст
    }
    Serial.println("Connected!");            // Печатаем текст
    mySerial.println("AT+CMGF=1");           // Отправка команды AT+CMGF=1
    delay(1000);                             // Пауза
    mySerial.println("AT+CNMI=1,2,0,0,0");   // Отправка команды AT+CNMI=1,2,0,0,0
    delay(1000);                             // Пауза
    mySerial.println("AT+CMGL=\"REC UNREAD\"");
 }
 void loop()
 {  
   if(mySerial.available()){                  // Проверяем, если есть доступные данные
       delay(100);                            // Пауза
      while(mySerial.available()){            // Проверяем, есть ли еще данные.   
      incomingByte = mySerial.read();         // Считываем байт и записываем в переменную incomingByte   
      inputString += incomingByte;            // Записываем считанный байт в массив inputString   
}   
       delay(10);                             // Пауза        
       Serial.println(inputString);           // Отправка в "Мониторинг порта" считанные данные
       inputString.toUpperCase();             // Меняем все буквы на заглавные   
       if (inputString.indexOf("ON_1") > -1){ // Проверяем полученные данные, если ON_1 включаем реле 1 
        digitalWrite(relay_1, LOW);       
        sms(String("Relay 1 - ON"), String("+7xxxxxxxxxx"));} // Отправка SMS      
       if (inputString.indexOf("OFF_1") > -1){ // Проверяем полученные данные, если OFF_1 выклюем реле 1  
        digitalWrite(relay_1, HIGH);       
        sms(String("Relay 1 - OFF"), String("+7xxxxxxxxxx"));}// Отправка SMS      
       if (inputString.indexOf("ON_2") > -1){ // Проверяем полученные данные, если ON_2 включаем реле 2 
        digitalWrite(relay_2, LOW);       
        sms(String("Relay 2 - ON"), String("+7xxxxxxxxxx"));}  // Отправка SMS    
       if (inputString.indexOf("OFF_2") > -1){     // Проверяем </code> <code>полученные</code> <code> данные, если OFF_2 выключаем реле 2 
        digitalWrite(relay_2, HIGH);       
        sms(String("Relay 2 - OFF"), String("+"));} // Отправка SMS    
        delay(50); 
       if (inputString.indexOf("OK") == -1){    
        mySerial.println("AT+CMGDA=\"DEL ALL\"");      
        delay(1000);}     
        inputString = "";}
 }
 void sms(String text, String phone)  // Процедура Отправка SMS
 {
   Serial.println("SMS send started");
   mySerial.println("AT+CMGS=\"" + phone + "\"");
   delay(500);
   mySerial.print(text);
   delay(500);
   mySerial.print((char)26);
   delay(500);
   Serial.println("SMS send complete");
   delay(2000);
 }

 

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Virusmc пишет:

что нужно дописать в этом скетче ,что бы модуль реагировал только на один номер телефона?

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