ВВЕДЕНИЕ:
Я новичок, когда дело доходит до программирования Arduino и использования AT-команд. Я уже пытался обыскать весь интернет и спрашивал на форуме Arduino, но мне не повезло, и никто не дал мне четкого представления об этом.
ПРОБЛЕМА:
Итак, у меня есть этот код, где SMS-команда может включать и выключать свет, и он будет реагировать только на определенный номер телефона. Моя проблема в том, что программа отвечает, даже когда я использую разные номера телефонов. Я надеюсь, что есть способ внести в белый список только определенный номер, чтобы никто не мог разыграть программу без ведома владельца.
НАПРИМЕР:
- Телефон владельца +631234567890
- Какой-то случайный номер телефона: +63xxxxxxxxxx
Владелец может включать и выключать свет. [ДА]
Но предположительно случайный номер телефона НЕ МОЖЕТ и никогда не будет иметь права включать и выключать свет. Только хозяин может.
ВОТ МОЙ ТЕКУЩИЙ КОД: CCTO
#include <SoftwareSerial.h>
SoftwareSerial GPRS(10, 11);
String textMessage;
String lampState;
const int relay = 12;
void setup() {
pinMode(relay, OUTPUT);
digitalWrite(relay, HIGH);
Serial.begin(9600);
GPRS.begin(9600);
delay(5000);
Serial.print("GPRS ready...\r\n");
GPRS.print("AT+CMGF=1\r\n");
delay(1000);
GPRS.print("AT+CNMI=2,2,0,0,0\r\n");
delay(1000);
}
void loop(){
if(GPRS.available()>0){
textMessage = GPRS.readString();
Serial.print(textMessage);
delay(10);
}
if(textMessage.indexOf("ON")>=0){
// Turn on relay and save current state
digitalWrite(relay, HIGH);
lampState = "ON";
Serial.println("Lamp set to ON\r\n");
textMessage = "";
GPRS.println("AT+CMGS=\"+631234567890\"");
delay(500);
GPRS.print("Lamp was finally switched ON.\r");
GPRS.write( 0x1a );
delay(1000);
}
if(textMessage.indexOf("OFF")>=0){
// Turn off relay and save current state
digitalWrite(relay, LOW);
lampState = "OFF";
Serial.println("Lamp set to OFF\r\n");
textMessage = "";
GPRS.println("AT+CMGS=\"+631234567890\"");
delay(500);
GPRS.print("Lamp was finally switched OFF.\r");
GPRS.write( 0x1a );
delay(1000);
}
if(textMessage.indexOf("STATUS")>=0){
String message = "Lamp is " + lampState;
GPRS.print("AT+CMGF=1");
delay(1000);
Serial.println("Lamp state resquest");
textMessage = "";
GPRS.println("AT+CMGS=\"+631234567890\"");
delay(500);
GPRS.print("Lamp is currently ");
GPRS.println(lampState ? "ON" : "OFF");
GPRS.write( 0x1a );
delay(1000);
}
}
Как я могу это сделать?