Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: F7_Ethernet WebSocketClient mbed mcp3008
Fork of Nucleo_F746ZG_Ethernet by
main.cpp
00001 #include "mbed.h" 00002 #include "rtos.h" 00003 #include "EthernetInterface.h" 00004 #include "NTPClient.h" 00005 #include "Websocket.h" 00006 #include <stdio.h> 00007 #include "SimpleSMTPClient.h" 00008 00009 #define SERIAL 4 00010 #define SIGNAL_LEN 256 00011 00012 #define DOMAIN "smtp2go.com" 00013 #define SERVER "mail.smtp2go.com"//"aspmx.l.google.com" 00014 #define PORT "2525" // Port 25 doesn't require TSL 00015 #define USER "arlindonm" 00016 #define PWD "SmartMeter" 00017 #define FROM_ADDRESS "arlindonm@smtp2go.com" 00018 // less than 128 characters. 00019 #define TO_ADDRESS "arlindonm@gmail.com" 00020 #define SUBJECT "EnergySmartMeter msg" 00021 00022 IWDG_HandleTypeDef hiwdg; 00023 00024 const char* SERVER_ADDRESS = "200.133.229.238"; 00025 //const char* SERVER_ADDRESS = "192.168.1.110"; 00026 const int SERVER_PORT = 1080; 00027 00028 bool STOPEMAIL = true,flagSendNoBreak=0; 00029 00030 Ticker tickerTensaoCorrente; 00031 00032 //8 pinos da placa 00033 AnalogIn correnteA(PC_2); 00034 AnalogIn correnteB(PC_3); 00035 //- 00036 //tx 00037 //rx 00038 DigitalOut scale(PD_7); 00039 DigitalOut getVoltagem(PE_3); 00040 //gnd 00041 00042 //4pinos da placa 00043 DigitalOut picWatchDog(PC_11); 00044 AnalogIn tensaoA(PC_0); 00045 DigitalIn noBreak(PD_3); 00046 //DigitalIn xxx(PG_2); 00047 00048 00049 DigitalOut led1(LED1); 00050 DigitalOut led2(LED2); 00051 DigitalOut led3(LED3); 00052 int cntTick=0; 00053 int cntTickHora=0; 00054 int cntSinal=0; 00055 int cntBK=0; 00056 bool flagHorVerao=true,scaleIA=0,scaleIB=0,scaleIC=0; 00057 unsigned int energiaA = 0,energiaB=0,energiaC=0; 00058 //int vetorTensaoA[62]; 00059 //int vetorTensaoB[62]; 00060 //int vetorTensaoC[62]; 00061 int vetorCorrenteA[62]; 00062 int vetorCorrenteB[62]; 00063 int vetorCorrenteC[62]; 00064 00065 00066 int sinalVA[SIGNAL_LEN]; 00067 int sinalVB[SIGNAL_LEN]; 00068 int sinalVC[SIGNAL_LEN]; 00069 int sinalIA[SIGNAL_LEN]; 00070 int sinalIB[SIGNAL_LEN]; 00071 int sinalIC[SIGNAL_LEN]; 00072 00073 //int rmsVA,rmsVB,rmsVC; 00074 int rmsIA,rmsIB,rmsIC; 00075 char serBuf[50],strTimeInterrupt[50],strTimeReturn[50],str485[300]; 00076 char picCmd; 00077 00078 bool EthernetOK=false,flagNoBreak=false; 00079 time_t seconds; 00080 bool flagSend=false; 00081 00082 EthernetInterface eth; 00083 00084 TCPSocketServer server; 00085 TCPSocketConnection client; 00086 bool serverIsListening = false; 00087 00088 DigitalOut sw(LED2); 00089 00090 RawSerial serial(USBTX,USBRX);//(USBTX,USBRX); //tx,rx 00091 RawSerial serialPic(PD_5,PD_6); 00092 RawSerial serialRS485(PE_8,PE_7); 00093 00094 int cnt=0; 00095 00096 string httpHeader; // HTTP header 00097 string httpContent; // HTTP content 00098 const string HTTP_OK = "HTTP/1.0 200 OK"; 00099 00100 NTPClient ntp; 00101 00102 00103 void setClock() 00104 { 00105 00106 int res =ntp.setTime("0.uk.pool.ntp.org"); 00107 if ( res == 0) 00108 { 00109 time_t ctTime; 00110 ctTime = time(NULL); 00111 //serial.printf("Time is set to : %s \r\n", ctime(&ctTime)); 00112 int fusoBR= -10800;//-3*3600 00113 if(flagHorVerao) fusoBR= -7200; 00114 set_time(ctTime+ fusoBR); 00115 char strtime[80]; 00116 time_t seconds; 00117 seconds = time(NULL); 00118 strftime(strtime, 20, "%D %H:%M:%S\n", localtime(&seconds)); 00119 //serial.printf("Hora:%s", strtime); 00120 } 00121 else 00122 { 00123 serial.printf("Error getting time \r\n"); 00124 } 00125 } 00126 00127 00128 void getSinal() 00129 { 00130 00131 for(int j=0;j<SIGNAL_LEN;j++) 00132 { 00133 getVoltagem=1; 00134 sinalVA[j]=(int)1000*tensaoA.read(); 00135 sinalVB[j]=(int)1000*tensaoA.read(); 00136 sinalVC[j]=(int)1000*tensaoA.read(); 00137 getVoltagem=0; 00138 sinalIA[j]=(int)1000*correnteA.read(); 00139 sinalIB[j]=(int)1000*correnteB.read(); 00140 sinalIC[j]=(int)1000*tensaoA.read(); 00141 wait_us(240); //4ciclos 00142 } 00143 } 00144 void Rms() 00145 { 00146 00147 getSinal(); 00148 float somaVA=0,somaVB=0,somaVC=0,somaIA=0,somaIB=0,somaIC=0; 00149 float dcVA,dcVB,dcVC,dcIA,dcIB,dcIC; 00150 //DC 00151 for(int j=0;j<SIGNAL_LEN;j++) 00152 { 00153 //somaVA = somaVA + sinalVA[j]; 00154 //somaVB = somaVB + sinalVB[j]; 00155 //somaVC = somaVC + sinalVC[j]; 00156 somaIA = somaIA + sinalIA[j]; 00157 somaIB = somaIB + sinalIB[j]; 00158 somaIC = somaIC + sinalIC[j]; 00159 } 00160 //dcVA = somaVA/SIGNAL_LEN; 00161 //dcVB = somaVB/SIGNAL_LEN; 00162 //dcVC = somaVC/SIGNAL_LEN; 00163 dcIA = somaIA/SIGNAL_LEN; 00164 dcIB = somaIB/SIGNAL_LEN; 00165 dcIC = somaIC/SIGNAL_LEN; 00166 //serial.printf("\ndcIA = %f dcIB = %f",dcIA,dcIB); 00167 somaVA=somaVB=somaVC=somaIA=somaIB=somaIC=0; 00168 for(int j=0;j<SIGNAL_LEN;j++) 00169 { 00170 //somaVA = somaVA + ((sinalVA[j]-dcVA) * (sinalVA[j]-dcVA)); 00171 //somaVB = somaVB + ((sinalVB[j]-dcVB) * (sinalVB[j]-dcVB)); 00172 //somaVC = somaVC + ((sinalVC[j]-dcVC) * (sinalVC[j]-dcVC)); 00173 somaIA = somaIA + ((sinalIA[j]-dcIA) * (sinalIA[j]-dcIA)); 00174 somaIB = somaIB + ((sinalIB[j]-dcIB) * (sinalIB[j]-dcIB)); 00175 somaIC = somaIC + ((sinalIC[j]-dcIC) * (sinalIC[j]-dcIC)); 00176 } 00177 //serial.printf("\nsomaIA = %f somaIB = %f",somaIA,somaIB); 00178 //rmsVA = (int)sqrt(somaVA / SIGNAL_LEN); 00179 //rmsVB = (int)sqrt(somaVB / SIGNAL_LEN); 00180 //rmsVC = (int)sqrt(somaVC / SIGNAL_LEN); 00181 scaleIA=scaleIB=scaleIC=0; 00182 rmsIA = (int)sqrt(somaIA / SIGNAL_LEN); 00183 if(rmsIA> 50) 00184 scaleIA=1; 00185 rmsIB = (int)sqrt(somaIB / SIGNAL_LEN); 00186 if(rmsIB> 50) 00187 scaleIB=1; 00188 rmsIC = (int)sqrt(somaIC / SIGNAL_LEN); 00189 if(rmsIC> 50) 00190 scaleIC=1; 00191 //serial.printf("\nrmsIA = %d rmsIB = %d",rmsIA,rmsIB); 00192 00193 } 00194 void TickTensaoCorrente() 00195 { 00196 led2=!led2; 00197 00198 Rms(); 00199 //if(scaleIA||scaleIB||scaleIC) 00200 // Rms(); 00201 if(rmsIA-4<2)rmsIA=4; 00202 if(rmsIB-4<2)rmsIB=4; 00203 if(rmsIC-4<2)rmsIC=4; 00204 energiaA += rmsIA-4; 00205 energiaB += rmsIB-4; 00206 energiaC += rmsIC-4; 00207 00208 //vetorTensaoA[cntTick]=rmsVA; 00209 //vetorTensaoB[cntTick]=rmsVB; 00210 //vetorTensaoC[cntTick]=rmsVC; 00211 vetorCorrenteA[cntTick]=rmsIA-4; 00212 vetorCorrenteB[cntTick]=rmsIB-4; 00213 vetorCorrenteC[cntTick]=rmsIC-4; 00214 00215 cntTick++; 00216 cntTickHora++; 00217 if(cntTick>61) cntTick=0; //ERRO 00218 00219 00220 00221 } 00222 00223 int sendData() 00224 { 00225 char str[7000]=""; //A conta tem que ser certa!!! 00226 TCPSocketConnection socket; 00227 while (socket.connect(SERVER_ADDRESS, SERVER_PORT) < 0) 00228 { 00229 serial.printf("Unable to connect to (%s) on port (%d)\n", SERVER_ADDRESS, SERVER_PORT); 00230 wait(1); 00231 return -1; 00232 } 00233 time_t ctTime; 00234 ctTime = time(NULL); 00235 sprintf(str,"%d;%s;",SERIAL,ctime(&ctTime)); 00236 00237 /*strcat(str,"VA;"); //Nao precisa enviar a tensao pois e' quase cte a cada 5s 00238 for(int i=0;i<60;i++) 00239 sprintf(str,"%s%03d;",str,vetorTensaoA[i]);//tensao cada 5s 00240 00241 strcat(str,"VB;"); 00242 for(int i=0;i<60;i++) 00243 sprintf(str,"%s%03d;",str,vetorTensaoB[i]);//tensao cada 5s 00244 00245 strcat(str,"VC;"); 00246 for(int i=0;i<60;i++) 00247 sprintf(str,"%s%03d;",str,vetorTensaoC[i]);//tensao cada 5s 00248 */ 00249 // strcat(str,"E"); 00250 00251 sprintf(str,"%s%10d%10d%10d",str,energiaA,energiaB,energiaC); 00252 00253 00254 strcat(str,"IA"); 00255 for(int i=0;i<60;i++) 00256 sprintf(str,"%s%03d",str,vetorCorrenteA[i]);//correntecada 10s 00257 00258 strcat(str,"IB"); 00259 for(int i=0;i<60;i++) 00260 sprintf(str,"%s%03d",str,vetorCorrenteB[i]);//correntecada 10s 00261 00262 strcat(str,"IC"); 00263 for(int i=0;i<60;i++) 00264 sprintf(str,"%s%03d",str,vetorCorrenteC[i]);//correntecada 10s 00265 00266 //-------------- 00267 00268 getSinal(); 00269 sprintf(str,"%sSVA",str); 00270 for(int j=0;j<SIGNAL_LEN;j++) 00271 sprintf(str,"%s%03d",str,sinalVA[j]);//sinal tensao 00272 00273 sprintf(str,"%sSVB",str); 00274 for(int j=0;j<SIGNAL_LEN;j++) 00275 sprintf(str,"%s%03d",str,sinalVB[j]);//sinal tensao 00276 00277 sprintf(str,"%sSVC",str); 00278 for(int j=0;j<SIGNAL_LEN;j++) 00279 sprintf(str,"%s%03d",str,sinalVC[j]);//sinal tensao 00280 00281 //----------------- 00282 sprintf(str,"%sSIA",str); 00283 for(int j=0;j<SIGNAL_LEN;j++) 00284 sprintf(str,"%s%03d",str,sinalIA[j]); 00285 00286 sprintf(str,"%sSIB",str); 00287 for(int j=0;j<SIGNAL_LEN;j++) 00288 sprintf(str,"%s%03d",str,sinalIB[j]); 00289 00290 sprintf(str,"%sSIC",str); 00291 for(int j=0;j<SIGNAL_LEN;j++) 00292 sprintf(str,"%s%03d",str,sinalIC[j]); 00293 00294 00295 sprintf(str,"%sRS485%s$\0",str,str485); 00296 00297 int ret = socket.send(str, sizeof(str) - 1); 00298 serial.printf("Socket send n: %d\n",ret); 00299 char buf[256]; 00300 int n = socket.receive(buf, 256); 00301 buf[n] = '\0'; 00302 serial.printf("Received % d message from server: '%s'\n",n, buf); 00303 socket.close(); 00304 if(buf[0]=='1') 00305 STOPEMAIL=false; 00306 else 00307 STOPEMAIL = true; 00308 00309 if(n>=1) 00310 return 0; 00311 else 00312 return -1; 00313 00314 } 00315 int sendNoBreak() 00316 { 00317 TCPSocketConnection socket; 00318 while (socket.connect(SERVER_ADDRESS, SERVER_PORT) < 0) 00319 { 00320 serial.printf("Unable to connect to (%s) on port (%d)\n", SERVER_ADDRESS, SERVER_PORT); 00321 wait(1); 00322 return -1; 00323 } 00324 char str[256]; 00325 00326 sprintf(str,"%d;\nQueda de Energia: %s\nRetorno de Energia: %s$",SERIAL,strTimeInterrupt,strTimeReturn); 00327 socket.send(str, sizeof(str) - 1); 00328 00329 char buf[256]; 00330 int n = socket.receive(buf, 256); 00331 buf[n] = '\0'; 00332 serial.printf("Received % d message from server: '%s'\n",n, buf); 00333 socket.close(); 00334 if(buf[0]=='1') 00335 STOPEMAIL=false; 00336 else 00337 STOPEMAIL = true; 00338 00339 if(n>=1) 00340 { 00341 flagSendNoBreak = true; 00342 return 0; 00343 } 00344 else 00345 return -1; 00346 00347 } 00348 int sendEmail() 00349 { 00350 /*SimpleSMTPClient smtp; 00351 int ret; 00352 char str[36560]; 00353 smtp.setFromAddress(FROM_ADDRESS); 00354 smtp.setToAddress(TO_ADDRESS); 00355 00356 smtp.setMessage(SUBJECT,"Mensagen enviada por e-mail\n"); 00357 00358 time_t ctTime; 00359 ctTime = time(NULL); 00360 sprintf(str,"Energy Smart Meter - Serial A1%04d.\nHora da placa: %s",SERIAL,ctime(&ctTime)); 00361 smtp.addMessage(str); 00362 ret = smtp.sendmail(SERVER, USER, PWD, DOMAIN,PORT,SMTP_AUTH_LOGIN); 00363 strcpy(str,"VA;"); 00364 for(int i=0;i<60;i++) 00365 sprintf(str,"%s%03d;",str,vetorTensaoA[i]);//tensao cada 5s 00366 smtp.appendMessage(str); 00367 strcpy(str,"VB;"); 00368 for(int i=0;i<60;i++) 00369 sprintf(str,"%s%03d;",str,vetorTensaoB[i]);//tensao cada 5s 00370 smtp.appendMessage(str); 00371 strcpy(str,"VC;"); 00372 for(int i=0;i<60;i++) 00373 sprintf(str,"%s%03d;",str,vetorTensaoC[i]);//tensao cada 5s 00374 smtp.appendMessage(str); 00375 00376 strcpy(str,"IA;"); 00377 for(int i=0;i<60;i++) 00378 sprintf(str,"%s%03d;",str,vetorCorrenteA[i]);//corrente cada 5s 00379 smtp.appendMessage(str); 00380 00381 strcpy(str,"IB;"); 00382 for(int i=0;i<60;i++) 00383 sprintf(str,"%s%03d;",str,vetorCorrenteB[i]);//corrente cada 5s 00384 smtp.appendMessage(str); 00385 00386 strcpy(str,"IC;"); 00387 for(int i=0;i<60;i++) 00388 sprintf(str,"%s%03d;",str,vetorCorrenteC[i]);//corrente cada 5s 00389 smtp.appendMessage(str); 00390 00391 00392 00393 for(int i=0;i<5;i++) 00394 { 00395 sprintf(str,"SVA%d;",i); 00396 for(int j=0;j<SIGNAL_LEN;j++) 00397 { 00398 sprintf(str,"%s%03d;",str,sinalVA[i][j]);//sinal tensao 00399 00400 } 00401 smtp.appendMessage(str); 00402 } 00403 for(int i=0;i<5;i++) 00404 { 00405 sprintf(str,"SVB%d;",i); 00406 for(int j=0;j<SIGNAL_LEN;j++) 00407 { 00408 sprintf(str,"%s%03d;",str,sinalVB[i][j]);//sinal tensao 00409 00410 } 00411 smtp.appendMessage(str); 00412 } 00413 for(int i=0;i<5;i++) 00414 { 00415 sprintf(str,"SVC%d;",i); 00416 for(int j=0;j<SIGNAL_LEN;j++) 00417 { 00418 sprintf(str,"%s%03d;",str,sinalVC[i][j]);//sinal tensao 00419 00420 } 00421 smtp.appendMessage(str); 00422 } 00423 //----------------- 00424 for(int i=0;i<5;i++) 00425 { 00426 sprintf(str,"SIA%d;",i); 00427 for(int j=0;j<SIGNAL_LEN;j++) 00428 { 00429 sprintf(str,"%s%03d;",str,sinalIA[i][j]);//sinal corrente 00430 00431 } 00432 smtp.appendMessage(str); 00433 } 00434 for(int i=0;i<5;i++) 00435 { 00436 sprintf(str,"SIB%d;",i); 00437 for(int j=0;j<SIGNAL_LEN;j++) 00438 { 00439 sprintf(str,"%s%03d;",str,sinalIB[i][j]);//sinal corrente 00440 00441 } 00442 smtp.appendMessage(str); 00443 } 00444 for(int i=0;i<5;i++) 00445 { 00446 sprintf(str,"SIC%d;",i); 00447 for(int j=0;j<SIGNAL_LEN;j++) 00448 { 00449 sprintf(str,"%s%03d;",str,sinalIC[i][j]);//sinal corrente 00450 00451 } 00452 smtp.appendMessage(str); 00453 } 00454 00455 00456 smtp.endMessage(); 00457 if (ret) 00458 { 00459 serial.printf("E-mail Transmission Error\r\n"); 00460 return -1; 00461 } 00462 else 00463 { 00464 serial.printf("E-mail Transmission OK\r\n"); 00465 return 0; 00466 }*/ 00467 } 00468 00469 void SerialPicReceiver() 00470 { 00471 int i=0; 00472 char c; 00473 led1=!led1; 00474 while(1) 00475 { 00476 //if(!serialPic.readable()) 00477 // break; 00478 c=serialPic.getc(); 00479 serBuf[i++] = c; 00480 if(c=='\n'||i>49) break; 00481 00482 } 00483 00484 00485 } 00486 void SerialRS485Receiver() 00487 { 00488 int i=0; 00489 char c; 00490 led1=!led1; 00491 while(1) 00492 { 00493 //if(!serialPic.readable()) 00494 // break; 00495 c=serialRS485.getc(); 00496 str485[i++] = c; 00497 if(c=='\n'||i>258) break; 00498 00499 } 00500 00501 00502 } 00503 void BackUpRam() 00504 { 00505 serial.printf("BackUpRam:%d",++cntBK); 00506 } 00507 int main() 00508 { 00509 serial.baud(115200); 00510 serialPic.baud(9600); 00511 00512 led2=1; 00513 00514 00515 00516 00517 serial.printf("*** ENERGY SMART METER ***\r\n"); 00518 serial.printf("Serial: %04d\n",SERIAL); 00519 00520 if(eth.init()!=0) //for DHCP Server 00521 { 00522 //if(eth.init(IP,MASK,GATEWAY)!=0) { //for Static IP Address 00523 serial.printf("EthernetInterface Initialize Error \r\n"); 00524 led3=1; 00525 wait(2); 00526 NVIC_SystemReset(); 00527 00528 } 00529 00530 if(eth.connect()!=0) 00531 { 00532 serial.printf("EthernetInterface Connect Error \r\n"); 00533 led3=1; 00534 wait(2); 00535 NVIC_SystemReset(); 00536 00537 00538 } 00539 tickerTensaoCorrente.attach(&TickTensaoCorrente,10);//cada 10s 00540 00541 00542 serial.printf("IP Address is %s\n", eth.getIPAddress()); 00543 // serial.printf("NetMask is %s\n", eth.getNetworkMask()); 00544 // serial.printf("Gateway Address is %s\n", eth.getGateway()); 00545 //serial.printf("Ethernet Setup OK\n"); 00546 //serial.printf("Getting time, 10s timeout. \r\n"); 00547 setClock(); 00548 int flagE=false,flagD=false; 00549 00550 00551 //---------- 00552 serialPic.attach(&SerialPicReceiver); 00553 serialPic.printf("*");//ler eeprom 00554 wait_ms(500); 00555 //serial.printf("SB: %s\n",serBuf); 00556 char aux[11]; 00557 aux[10]=0; 00558 for(int i=0;i<10;i++) 00559 aux[i] = serBuf[i]; 00560 energiaA = atoi(aux); 00561 serial.printf("EnergiaA: %d\n",energiaA); 00562 for(int i=0;i<10;i++) 00563 aux[i] = serBuf[i+10]; 00564 energiaB = atoi(aux); 00565 serial.printf("EnergiaB: %d\n",energiaB); 00566 for(int i=0;i<10;i++) 00567 aux[i] = serBuf[i+20]; 00568 energiaC = atoi(aux); 00569 serial.printf("EnergiaC: %d\n",energiaC); 00570 00571 00572 for(int i=0;i<8;i++) 00573 aux[i] = serBuf[i+30]; 00574 aux[8]=0; 00575 sprintf(strTimeInterrupt,"%s ",aux); 00576 00577 for(int i=0;i<2;i++) 00578 aux[i] = serBuf[i+38]; 00579 aux[2] =0; 00580 sprintf(strTimeInterrupt,"%s%s:",strTimeInterrupt,aux); 00581 for(int i=0;i<2;i++) 00582 aux[i] = serBuf[i+40]; 00583 aux[2] =0; 00584 sprintf(strTimeInterrupt,"%s%s",strTimeInterrupt,aux); 00585 serial.printf("Data Interrupcao de energia:\t%s\n",strTimeInterrupt); 00586 //char strtime[30]; 00587 time_t seconds; 00588 seconds = time(NULL); 00589 strftime(strTimeReturn, 20, "%D %H:%M\n", localtime(&seconds)); 00590 serial.printf("Data Retorno de energia:\t%s\n", strTimeReturn); 00591 flagSendNoBreak=false; 00592 sendNoBreak(); 00593 //------ 00594 serialRS485.attach(&SerialRS485Receiver); 00595 00596 sprintf(str485,"%s","12345678901234567890123456789012345678901234567890"); 00597 while(1) 00598 { 00599 if(noBreak==0 &&flagNoBreak==false) 00600 { 00601 serial.printf("Tensao Baixa\n"); 00602 char strtime[14]; 00603 time_t seconds; 00604 seconds = time(NULL); 00605 strftime(strtime, 14, "%D%H%M", localtime(&seconds)); 00606 00607 serialPic.printf("%10d%10d%10d%s#",energiaA,energiaB,energiaC,strtime); 00608 flagNoBreak=true; 00609 led3= 1; 00610 } 00611 00612 00613 if(cntTick>=60) //60 = 10minutos 00614 { 00615 00616 tickerTensaoCorrente.detach();//?????????????????? 00617 cntTick=0; 00618 00619 serial.printf("Send data\n"); 00620 //WatchdogRefresh(); 00621 picWatchDog =0; 00622 flagD = sendData(); 00623 picWatchDog =1; 00624 if(flagD!=0) //0 = OK 00625 { 00626 wait(0.1); 00627 00628 picWatchDog =0; 00629 flagD = sendData(); 00630 picWatchDog =1; 00631 if(flagD!=0) 00632 { 00633 00634 if(!STOPEMAIL)//debug 00635 { 00636 picWatchDog =0; 00637 flagE = sendEmail(); 00638 picWatchDog =1; 00639 if(flagE!=0) 00640 { 00641 00642 picWatchDog =0; 00643 flagE = sendEmail(); 00644 picWatchDog =1; 00645 } 00646 } 00647 } 00648 } 00649 if(flagD !=0 && flagE!=0) 00650 BackUpRam(); 00651 tickerTensaoCorrente.attach(&TickTensaoCorrente,10);//cada 5s 00652 00653 00654 } 00655 if(cntTickHora>720)//1hora 00656 { 00657 cntTickHora=0; 00658 if(flagSendNoBreak==false) 00659 sendNoBreak(); 00660 setClock(); 00661 } 00662 // if(flagD==0) 00663 // led1=!led1; 00664 wait_ms(50); 00665 } 00666 00667 00668 }
Generated on Wed Jul 13 2022 21:58:02 by
