|
|
(4 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
| {{Project | | {{Project |
| + | |Featured=No |
| |State=Completed | | |State=Completed |
| |Members=Da Syntax, Prodigity | | |Members=Da Syntax, Prodigity |
− | |Description=Controll the gate using your cellphone | + | |Description=Control the gate using your cellphone |
| + | |GitHub=ACKgate |
| }} | | }} |
− | Setup done AT*ECAM=1
| + | Old source code: [[File:Phone relais RC181012a.tar]] (new source code is on github) |
− | | |
− | OK
| |
− | | |
− | RING
| |
− | | |
− | *ECAV: 1,6,1,,,"31642828732",145
| |
− | | |
− | RING
| |
− | | |
− | *ECAV: 1,0,1,08,222
| |
− | | |
− | <br>
| |
− | | |
− | ----
| |
− | | |
− | Code om PDU packed bitsequence om te zetten naar "Human readable" code
| |
− | | |
− | [http://code.google.com/p/smspdu-cpp/source/browse/trunk/smstools3/pdu.c?r=2 Hiero]
| |
− | | |
− | https://ackspace.nl/wiki/File:Sketchbook.tar
| |
− | | |
− | <br>
| |
− | | |
− | ----
| |
− | | |
− | <br>
| |
− | | |
− | #include <SoftwareSerial.h>
| |
− | | |
− | SoftwareSerial mobiel(9, 10); // RX, TX
| |
− | | |
− | unsigned long CID_Current;<br>unsigned long CID_Joshua = 642828732;<br>unsigned long CID_Michel = 655986620;
| |
− | | |
− | byte myChar;<br>int mobMSGi = 0;<br>char mobMSG[128];<br>char bingo[] = "*ECAV: 1,6,1,,,";
| |
− | | |
− | boolean compare(char stringone[], char stringtwo[]);
| |
− | | |
− | void setup() <br>{<br> pinMode(7, OUTPUT);<br> <br> Serial.begin(9600);<br> <br> mobiel.begin(9600);<br> delay(500);<br> <br> mobiel.println("AT*ECAM=1");<br> Serial.println("Setup done");<br>}
| |
− | | |
− | void loop()<br>{<br> if (mobiel.available()) {<br> mobMSG[mobMSGi] = mobiel.read();<br> Serial.write(mobMSG[mobMSGi]);<br> if ( mobMSG[mobMSGi] == '\n' ) {<br> if ( compare(mobMSG, bingo) == true ) {<br> Serial.println("JACKPOT!!!!!!!!!!!");<br> CID_Current = 0;<br> for (int i = sizeof(bingo)+2; mobMSG[i+1] != '"'; i++) {<br> CID_Current *= 10;<br> CID_Current += mobMSG[i+1] - 48;<br> }<br> Serial.print("Telefoonnummer: ");<br> Serial.print(CID_Current);<br> Serial.println("");<br> switch (CID_Current) {<br> case 642828732:<br> Serial.println("Joshua belt");<br> break;<br> case 655986620:<br> Serial.println("Michel belt");<br> break;<br> default:<br> Serial.println("Onbekend belt");<br> }<br> }<br> mobMSGi = 0;<br> }<br> mobMSGi++;<br> }<br> <br> if (Serial.available())<br> mobiel.write(Serial.read());<br>}
| |
− | | |
− | boolean compare(char stringone[], char stringtwo[]) {<br> boolean check = true;
| |
− | | |
− | for(int i = 0; i < 15; i++) {<br> if (stringone[i+1] != stringtwo[i]) {<br> check = false;<br> }<br> }
| |
− | | |
− | return check;<br>}<br>
| |
− | | |
− | <br>
| |
− | | |
− | ----
| |
− | | |
− | AT<br>OK<br>AT+CMGF=1<br>OK<br>AT+CMGL="ALL"<br>+CMGL: 1,"REC READ","+85291234567",,"06/11/11,00:30:29+32"<br>Hello, welcome to our SMS tutorial.<br>+CMGL: 2,"REC READ","+85291234567",,"06/11/11,00:32:20+32"<br>A simple demo of SMS text messaging.
| |
− | | |
− | OK<br>
| |
− | | |
− | ----
| |
− | https://ackspace.nl/wiki/File:Phone_relais_V2.tar
| |
− | ----
| |
− | #include <SoftwareSerial.h>
| |
− | #include <EEPROM.h>
| |
− | | |
− | SoftwareSerial mobiel(9, 10); // RX, TX
| |
− | unsigned long CID_Current;
| |
− | unsigned long CID_Sender;
| |
− | unsigned long CID_Add;
| |
− | unsigned long CID_Joshua = 642828732;
| |
− | unsigned long CID_Michel = 655986620;
| |
− | byte myChar;
| |
− | int mobMSGi = 0;
| |
− | char mobMSG[128];
| |
− | char incomingCall[] = "*ECAV: 1,6,1,,,";
| |
− | char readSMS[] = "+CMGL:";
| |
− | | |
− | void checknumber(long CID_call);
| |
− | void addnumber(long CID_Call, long CID_sms);
| |
− | boolean compare(char stringone[], char stringtwo[]);
| |
− | boolean timerflag = false;
| |
− | | |
− | boolean addNumber = false;
| |
− | | |
− | void setup()
| |
− | {
| |
− | pinMode(7, OUTPUT);
| |
− |
| |
− | Serial.begin(9600);
| |
− |
| |
− | mobiel.begin(9600);
| |
− | delay(500);
| |
− |
| |
− | mobiel.println("AT*ECAM=1");
| |
− | delay(500);
| |
− | mobiel.println("AT+CPMS=\"ME\"");
| |
− | delay(500);
| |
− | mobiel.println("AT+CMGF=1");
| |
− | Serial.println("Setup done");
| |
− | }
| |
− | | |
− | void loop()
| |
− | {
| |
− | if (mobiel.available()) {
| |
− | mobMSG[mobMSGi] = mobiel.read();
| |
− | Serial.write(mobMSG[mobMSGi]);
| |
− | if ( mobMSG[mobMSGi] == '\n' ) {
| |
− | if(addNumber == true){
| |
− |
| |
− | CID_Add = 0;
| |
− | for(int i = 1; i < 15; i++){
| |
− | if(mobMSG[i] == '\r'){
| |
− | i = i+15;
| |
− | }
| |
− | else{
| |
− | CID_Add *= 10;
| |
− | CID_Add += mobMSG[i] - 48;
| |
− | //Serial.print(mobMSG[i], DEC);
| |
− | }
| |
− | }
| |
− | Serial.print("Sender:");
| |
− | Serial.print(CID_Sender);
| |
− | Serial.print(" Add:");
| |
− | Serial.println(CID_Add);
| |
− | addnumber(CID_Sender, CID_Add);
| |
− | addNumber = false;
| |
− | }
| |
− | else if ( compare(mobMSG, incomingCall, 15) == true ) {
| |
− | Serial.println("JACKPOT!!!!!!!!!!!");
| |
− | CID_Current = 0;
| |
− | for (int i = sizeof(incomingCall)+2; mobMSG[i+1] != '"'; i++) {
| |
− | CID_Current *= 10;
| |
− | CID_Current += mobMSG[i+1] - 48;
| |
− | }
| |
− | Serial.print("Telefoonnummer: ");
| |
− | Serial.print(CID_Current);
| |
− | Serial.println("");
| |
− | checknumber(CID_Current);
| |
− | | |
− | }
| |
− | else if(compare(mobMSG, readSMS, 6) == true){
| |
− | for(int i = 0; i < 60; i++) {
| |
− | if(mobMSG[i] == '"'){
| |
− | if(mobMSG[i+1] == ','){
| |
− | if(mobMSG[i+2] == '"'){
| |
− | CID_Sender = 0;
| |
− | for(int c = i+6; c < (i+3+15); c++){
| |
− | if(mobMSG[c] == '"'){
| |
− | c = c+15;
| |
− | }
| |
− | else{
| |
− | CID_Sender *= 10;
| |
− | CID_Sender += mobMSG[c] - 48;
| |
− | }
| |
− | }
| |
− | addNumber = true;
| |
− |
| |
− | i=i+60;
| |
− | }
| |
− | }
| |
− | }
| |
− | }
| |
− | for(int i = 0; i < 60; i++) {
| |
− | if(mobMSG[i] == 'L'){
| |
− | if(mobMSG[i+1] == ':'){
| |
− | if(mobMSG[i+2] == ' '){
| |
− | delay(500);
| |
− | mobiel.print("AT+CMGD=");
| |
− | delay(500);
| |
− | mobiel.println(mobMSG[i+3]);
| |
− | Serial.print("delete for: ");
| |
− | Serial.println(mobMSG[i+3]);
| |
− | i=i+60;
| |
− | }
| |
− | }
| |
− | }
| |
− | }
| |
− | }
| |
− |
| |
− | mobMSGi = 0;
| |
− | }
| |
− | mobMSGi++;
| |
− | }
| |
− |
| |
− | if (Serial.available())
| |
− | mobiel.write(Serial.read());
| |
− | if (millis()%60000 < 5000 && timerflag == false) {
| |
− | mobiel.println("AT+CMGL=\"ALL\"");
| |
− | timerflag = true;
| |
− | }
| |
− | else if (millis()%60000 > 5000) {
| |
− | timerflag = false;
| |
− | }
| |
− | }
| |
− | | |
− | boolean compare(char stringone[], char stringtwo[], int length) {
| |
− | boolean check = true;
| |
− | for(int i = 0; i < length; i++) {
| |
− | if (stringone[i+1] != stringtwo[i]) {
| |
− | check = false;
| |
− | }
| |
− | }
| |
− | return check;
| |
− | }
| |
− | | |
− | void checknumber(long CID_call) {
| |
− | // Check if current CID is in our EEPROM, if so open door.
| |
− | | |
− | byte value;
| |
− | unsigned long CID_mem = 0;
| |
− | | |
− | for (int EEPROMloc = 0; EEPROMloc < 1024; EEPROMloc+=4) {
| |
− | for (int i = 0; i < 4; i++) {
| |
− | value = EEPROM.read(EEPROMloc+i);
| |
− | CID_mem = CID_mem << 8;
| |
− | CID_mem += value;
| |
− | }
| |
− | if (CID_mem == CID_call) {
| |
− | opendoor();
| |
− | Serial.println("Opening door");
| |
− | EEPROMloc = 1024;
| |
− | }
| |
− | }
| |
− | }
| |
− | | |
− | void addnumber(long CID_Call, long CID_sms) {
| |
− | // Add number to EEPROM if sender is admin
| |
− | | |
− | byte value;
| |
− | byte temp;
| |
− | unsigned long CID_mem = 0;
| |
− | | |
− | long CID_Josh = 642828732;
| |
− | long CID_Michel = 655986620;
| |
− |
| |
− | if (CID_Call == CID_Josh || CID_Call == CID_Michel) {
| |
− | Serial.println("Admin recognized");
| |
− | for (int EEPROMloc = 0; EEPROMloc < 1024; EEPROMloc+=4) {
| |
− | for (int i = 0; i < 4; i++) {
| |
− | value = EEPROM.read(EEPROMloc+i);
| |
− | CID_mem = CID_mem << 8;
| |
− | CID_mem += (unsigned long) value;
| |
− | Serial.println(value);
| |
− | }
| |
− | Serial.println(CID_mem);
| |
− | if (CID_mem == 0) {
| |
− | temp = (CID_sms << 0) >> 24;
| |
− | EEPROM.write(EEPROMloc, temp);
| |
− | temp = (CID_sms << 8) >> 24;
| |
− | EEPROM.write(EEPROMloc + 1, temp);
| |
− | temp = (CID_sms << 16) >> 24;
| |
− | EEPROM.write(EEPROMloc + 2, temp);
| |
− | temp = (CID_sms << 24) >> 24;
| |
− | EEPROM.write(EEPROMloc + 3, temp);
| |
− | Serial.print("Address: ");
| |
− | Serial.println(EEPROMloc);
| |
− | Serial.print("Number: ");
| |
− | Serial.println(CID_sms);
| |
− | EEPROMloc = 1024;
| |
− | }
| |
− | }
| |
− | }
| |
− | }
| |
− | | |
− | void opendoor() {
| |
− | digitalWrite(7, HIGH);
| |
− | delay(1000);
| |
− | digitalWrite(7, LOW);
| |
− | }
| |