banner image
Sedang Dalam Perbaikan

SIM800L : Filtering Authentication Number SMS Command ( Hanya Menerima Perintah SMS dari Nomor Tertentu )



Yang Dimaksud Filtering Authentication Number adalah Hanya menerima perintah SMS dari Nomor Hp yang sudah terdaftar/kita Set ke dalam sistem.

Apabila ada SMS masuk ke dalam GSM Module Sistem kita maka akan dicek terlebih dahulu oleh Program apakah Nomor Pengirim SMS sudah terdaftar pada sistem (diijinkan control sistem) atau tidak.

baca terlebih dulu : control led / relay dengan perintah SMS

Apabila Nomor Pengirim SMS terverifikasi maka Sistem akan melanjutkan Proses pembacaan perintah pada Content SMS dan meng-Eksekusi isi Perintah

Namun Jika Nomor Pengirim SMS gagal diferifikasi maka Sistem akan menolak perintah/membiarkan SMS / tidak meng-Eksekusi isi perintah pada SMS

Library menggunakan Standar GSM atau menggunakan Seeduino

Disini saya Mencoba Program Menggunakan SIM800L Module
Wiring sebagai berikut :

Wiring SIM800L <--> Arduino Uno
RXD <--> D8
TXD <--> D7
VCC <--> 3.7V melalui stepdown dari 5V Arduino
GND <--> GND

LED Merah (+) ==> D5
LED Biru (+) ==> D6
LED Merah & Biru (-) ==> GND

Berikut adalah Contoh Simple Sketch Filtering Authentication Number 
Silahkan dikembangkan lagi


  1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
// **** FILTERING AUTHENTICATION NUMBER BY DANI ****

#include <gprs.h>
#include <softwareserial.h>

#define TIMEOUT 5000
#define LED_PIN 13
#define ON 1
#define OFF 0

const int MERAH = 5;
const int BIRU = 6;

int StatusMerah;
int StatusBIRU;
int AuthNumber = 0;
GPRS gprs;

void setup() {
pinMode (MERAH , OUTPUT);
pinMode (BIRU , OUTPUT);
Serial.begin(9600);
while(!Serial);

Serial.println("Starting SIM800 Auto Read SMS");
gprs.preInit();
delay(1000);

while(0 != gprs.init()) {
delay(1000);
Serial.print("init error\r\n");
}

//Set SMS mode to ASCII
if(0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1\r\n", "OK", TIMEOUT)) {
ERROR("ERROR:CNMI");
return;
}

//Start listening to New SMS Message Indications
if(0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0\r\n", "OK", TIMEOUT)) {
ERROR("ERROR:CNMI");
return;
}

Serial.println("Init success");
}

//Variable to hold last line of serial output from SIM800
char currentLine[500] = "";
int currentLineIndex = 0;

//Boolean to be set to true if message notificaion was found and next
//line of serial output is the actual SMS message content
bool nextLineIsMessage = false;

void loop() {
//Write current status to LED pin
digitalWrite(MERAH, StatusMerah);
digitalWrite(BIRU, StatusBIRU);

//If there is serial output from SIM800
if(gprs.serialSIM800.available()){
char lastCharRead = gprs.serialSIM800.read();
//Read each character from serial output until \r or \n is reached (which denotes end of line)
if(lastCharRead == '\r' || lastCharRead == '\n'){
String lastLine = String(currentLine);

//If last line read +CMT, New SMS Message Indications was received.
//Hence, next line is the message content.
if(lastLine.startsWith("+CMT:")){

Serial.println(lastLine);
//Authentication Number
if(lastLine.indexOf("+6289XXXXXXXX") >= 0){ //Ganti pakai Nomor Hp kamu ya bro
AuthNumber = 1;
Serial.println("------------------------"); // Keterangan FAILED Authentication
Serial.println("Authentication Success..");
Serial.println("------------------------");
nextLineIsMessage = true; }

if(AuthNumber == 0){
Serial.println("xxxxxxxxxxxxxxxxxxxxxxx"); // Keterangan SUCCESS Authentication
Serial.println("Authentication Failed..");
Serial.println("xxxxxxxxxxxxxxxxxxxxxxx");
}
}

else if (lastLine.length() > 0) {

if(nextLineIsMessage) {
Serial.println(lastLine);


// ########## MEMBACA KONTEN SMS DAN MENCARI+MENGARTIKAN KONTEN SMS KE PROGRAM #########
//Kendali LED MERAH
if(lastLine.indexOf("MERAH ON") >= 0){
StatusMerah = 1;
Serial.println("LED MERAH DINYALAKAN");}
else if(lastLine.indexOf("MERAH OFF") >= 0) {
StatusMerah = 0;
Serial.println("LED MERAH DIMATIKAN");}
//Kendali LED BIRU
if(lastLine.indexOf("BIRU ON") >= 0){
StatusBIRU = 1;
Serial.println("LED BIRU DINYALAKAN");}
else if(lastLine.indexOf("BIRU OFF") >= 0) {
StatusBIRU = 0;
Serial.println("LED BIRU DIMATIKAN");}

nextLineIsMessage = false;
AuthNumber = 0; // Mengembalikan Status AuthNumber Untuk SMS berikutnya
}

}

//Clear char array for next line of read
for( int i = 0; i < sizeof(currentLine); ++i ) {
currentLine[i] = (char)0;
}
currentLineIndex = 0;
} else {
currentLine[currentLineIndex++] = lastCharRead;
}
}
}


Berikut Hasil Testing menggunakan Serial Monitor dengan 2 kali kirim SMS dengan Nomor yang berbeda (1 terdaftar dan 1 tidak terdaftar)


 Terimakasih Sudah Mampir......

Semoga Bermanfaat...........

 

SIM800L : Filtering Authentication Number SMS Command ( Hanya Menerima Perintah SMS dari Nomor Tertentu ) SIM800L : Filtering Authentication Number SMS Command ( Hanya Menerima Perintah SMS dari Nomor Tertentu ) Reviewed by MCH on June 02, 2016 Rating: 5

No comments:

Powered by Blogger.