15 static SoftwareSerial mySerial(10, 11);
16 static char outword[1000];
17 static const char hexdigit[] =
"0123456789ABCDEF";
18 static char hexnum[7];
20 void(* Reset)(void) = 0;
23 char* int2hex(
int number){
24 hexnum[0]=hexdigit[(number>>4)&0xF];
25 hexnum[1]=hexdigit[number&0xF];
34 mySerial.setTimeout(1000);
37 len=mySerial.readBytes(buffer,100);
42 bool getIMEI(
char* imei)
48 mySerial.setTimeout(1000);
51 len=mySerial.readBytesUntil(
'\n', buffer,
sizeof(buffer));
54 for(i=0; i<len; i++) if((buffer[i] >=
'0') && (buffer[i] <=
'9')) imei[j++]=buffer[i];
55 if(strstr(buffer,
"OK") != NULL)
69 mySerial.setTimeout(1000);
72 len=mySerial.readBytesUntil(
'\n', buffer, 100);
73 if(len == 0)
return false;
74 if(strstr(buffer,
"OK") != NULL)
return true;
75 if(strstr(buffer,
"ERROR") != NULL)
return false;
79 void sendCommand(
char* command)
85 mySerial.println(command);
91 void sendCommand(
char* command,
char* imei)
97 mySerial.println(command);
98 if(getIMEI(imei))
return;
122 NBduino::NBduino(
const char * mqttServer,
const int mqttPort,
const char * mqttUser,
const char * mqttPassword)
124 _mqttServer=mqttServer;
127 _mqttPassword=mqttPassword;
141 NBduino::NBduino(
const char * mqttServer,
const int mqttPort,
const char * mqttUser,
const char * mqttPassword,
unsigned long timeToConn)
143 _mqttServer=mqttServer;
146 _mqttPassword=mqttPassword;
147 _timeToConn=timeToConn;
158 mySerial.print(
"AT*MCGDEFCONT=");
159 mySerial.print(
"\"");
160 mySerial.print(
"IP");
161 mySerial.print(
"\"");
163 mySerial.print(
"\"");
165 mySerial.println(
"\"");
167 mySerial.print(
"AT+CGDCONT=1,");
168 mySerial.print(
"\"");
169 mySerial.print(
"IP");
170 mySerial.print(
"\"");
172 mySerial.print(
"\"");
174 mySerial.print(
"\"");
176 mySerial.print(
"\"");
177 mySerial.print(
"\"");
178 mySerial.println(
",0,0,0,,,,,,0,,0");
180 mySerial.println(
"AT+CEREG=5");
182 mySerial.println(
"AT+COPS=?");
193 mySerial.begin(4800);
196 sendCommand(
"AT+CPIN?");
197 sendCommand(
"AT+CSQ");
198 sendCommand(
"AT+CGREG?");
199 sendCommand(
"AT+CGACT?");
200 sendCommand(
"AT+COPS?");
201 sendCommand(
"AT+CGCONTRDP");
211 digitalWrite(_reset, LOW);
212 digitalWrite(_pwrkey, HIGH);
214 digitalWrite(_pwrkey, LOW);
224 digitalWrite(_pwrkey, HIGH);
226 digitalWrite(_pwrkey, LOW);
242 sprintf(command,
"AT+CMQPUB=0,\"%s\",1,0,0,%d,\"",topic, len*2);
244 mySerial.print(command);
245 for(i = 0; i<len; i++) {
246 mySerial.print(int2hex(value[i]));
248 mySerial.println(
"\"");
261 sprintf(command,
"AT+CMQNEW=\"%s\",\"%d\",12000,1024",_mqttServer,_mqttPort);
262 sendCommand(command);
263 sprintf(command,
"AT+CMQCON=0,3,\"%s\",20000,0,0,\"%s\",\"%s\"", clientname, _mqttUser, _mqttPassword);
264 sendCommand(command);
265 sendCommand(
"AT+CREVHEX=1");
266 digitalWrite(_led, HIGH);
276 sendCommand(
"AT+CMQDISCON=0");
277 digitalWrite(_led, LOW);
288 sendCommand(
"AT+GSN", imei);
connect(const char *clientname)
contains the NBduino class definition and the include file that the class implementation needs...
publish(const char *topic, const char *value)