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 SMSApabila 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
SeeduinoDisini saya Mencoba Program Menggunakan
SIM800L ModuleWiring sebagai berikut :
Wiring SIM800L <--> Arduino UnoRXD <--> D8TXD <--> D7VCC <--> 3.7V melalui stepdown dari 5V ArduinoGND <--> GNDLED Merah (+) ==> D5LED Biru (+) ==> D6LED Merah & Biru (-) ==> GNDBerikut 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...........
No comments: