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)
mas, boleh bantu saya mas ?
BalasHapussaya lagi kebingungan buat tugas, saya buat projek kunci pintu sms dan alarm sensor,
untuk sms nya saya pakai modem wavecom, coding nya sama dengan sim900
untuk mikro nya saya pakek arduino uno,
sensor nya saya pakek pir,
saya udah coba buat projek hidup mati led dengan perintah dari sms, dan sukses,
saya juga dah coba alarm sensor pir dengan pengaplikasian sms(kalok pir ngebaca gerakan, maka uno akan kirim sms ke no yg terdaftar)
nah pas saya coba gabungin 2 source code ini, muncul trouble mas,
trouble sampe saat ini sih uno nya gak bisa kontrol led via sms (receiving sms)
tapi uno tetep kirim sms saat program jalan, dan saat alarm aktif,
mohon dibantu mas. trima kasih
mas saya mau tanya bagaimana cara menerima smsnya saya pakek yg versi 2
Hapuskalau nomor lebih dari satu gimana ?
BalasHapusinfonya bagus dan bermanfaat mas.
BalasHapusmau tanya, kalau setelah diperintah lampu ON kemudian ada delay 2 detik kemudian kembali ke OFF gmn ya mas? terima kasih
thanks gan.. Yup sukses gan.. ane dah terapkan sisipan authentikasinya dan bekerja.. nomor lain gak bisa ngakses meski isi SMS nya sama.. kemaren ane nyoba nggabungin kontrol relay ini sama sketch agar auto answer.. lumayan kan bisa sekalian nyadap tapi nggak hasil hasil.. akhirnya kepikiran nambahin AT command biar bisa auto answer dan sukses dengan nambahin seperti perintah SMS ASCII mode
BalasHapusSerial.begin(9600);
while (!Serial);
Serial.println("Starting SIM800 Auto Read SMS");
gprs.preInit();
delay(1000);
//Set to auto answer
if(0 != gprs.sendCmdAndWaitForResp("ATS0=1\r\n", "OK", TIMEOUT)) {
ERROR("ERROR:ATSO");
return;
}
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;
Mas, bisa tau flowchart programnya ga. Saya mau lebih memahami programnya
BalasHapusTerimakasih