You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Play/esp327nrfSDWDT3/parsmsg.ino

352 lines
13 KiB

void parsmsg()
{
//int tkom1=0;//температура
//int hkom1=0;//влажность
//int batkom1=0;
//String timekom1;//время прихода данных комната1
//int tkom2=0;
//int hkom2=0;
//int batkom2=0;
//String timekom2;
//int tkor=0;
//int hkor=0;
//int batkor=0;
//String timekor;
//int tbal=0;
//int hbal=0;
//int batbal=0;
//String timebal;
//String timebal;
//t1+138c347v524h5 балкон
//t2+243c401v528h моя комната
// t3+230c357v469h зал
// t5+230c357v469h коридор
//9d+088h866s00v улица восток
//timeul1
//tul1
//hul1
//osv1
//char msg[16];принятое сообщение
int tdat;//температура
int hdat;//влажность
int vdat;//напряж батареи датчика
int zndat;
int osv;
char token9[] = "9d";//улица
char token11[] = "t1";//датчики
char token12[] = "t2";//датчики
char token13[] = "t3";//датчики
char token14[] = "t4";//датчики
char token15[] = "t5";//датчики
int n=0;
int p=0;
boolean chet=0;
char c ;
//***************************
for (int j=0 ; j<15 ;j++)
{ c=msg[j];//принятая с премника перемнная
if (p==9)
{ if (c==token9[1]){p=99;}//данные с ул датчика восток
else{
p=0;}
}
if (p==101)//cравнение второго символа на соответствие t 1
{ if (c==token11[1]){p=111;}
}
if (p==101)//cравнение второго символа на соответствие t 2
{ if (c==token12[1]){p=112;}
}
if (p==101)//cравнение второго символа на соответствие t 3
{ if (c==token13[1]){p=113;}
}
if (p==101)//cравнение второго символа на соответствие t 4
{ if (c==token14[1]){p=114;}
}
if (p==101)//cравнение второго символа на соответствие t 5
{ if (c==token15[1]){p=115;}
else{
p=0;}
}
//*************************************************
if (p==99)
{// myFile.print(c);//d+237h895s05v
nt=2;
timeul1=timeserv;//время получения данных
n++;
if (n==2){
if (c==45){zndat=1;//-
}//znak
else
{zndat=2;//+
}
}
if (n==3) {tdat=(c-48)*100;} //температура
if (n==4){tdat=(c-48)*10+tdat;}
if (n==5){
tdat=(c-48)+tdat;
if(zndat==1){tul1="-"+String (tdat/10)+"."+String (tdat%10); //температура знак -230 -23.0
}
else
{tul1=String (tdat/10)+"."+String (tdat%10); //температура без знака +230 +23.0
}
}
if (n==7){hdat=(c-48)*100;}//влажность
if (n==8){hdat=(c-48)*10+hdat;}
if (n==9){
hdat=(c-48)+hdat;
hul1=String (hdat/10)+"."+String (hdat%10); //влажность 866 86.6%
}
if (n==11){osv=10*(c-48);}//освещенность
if (n==12)
{osv=osv+(c-48);
if(osv>99){osv=99;}
osv1=String (osv)+"%";
}//sun
// hourdu=t.hour;//время прихода данных час
// mindu=t.min;//мин
}
//*****************************************
//*****************датчики температуры переносные***********************
//************************T1****************************************************
if (p==111) //выделение данных из принятой строки
{ timebal=timeserv;//время получения данных
nt=3;
//byte ntdat;номер датчика
//byte zndat;знак температуры 0+
//int tdat;температура
//int hdat;влажность
//int vdat;напряж батареи датчика
n++;
if (n==2){
if (c==45){zndat=1;//-
}//znak
else
{zndat=0;//+
}
}
if (n==3) {tdat=(c-48)*100;} //температура
if (n==4){tdat=(c-48)*10+tdat;}
if (n==5)
{tdat=(c-48)+tdat;
tbal=String (tdat/10)+"."+String (tdat%10); //температура без знака +230 +23.0
}
if (n==7){vdat=(c-48)*100;}//напряж батареи датчика
if (n==8){vdat=(c-48)*10+vdat;}
if (n==9)
{vdat=(c-48)+vdat;
batbal=String (vdat/100)+"."+String (vdat%100);//батарея 357v 3.75в
}
if (n==11){hdat=(c-48)*100;}//влажность
if (n==12)
{hdat=(c-48)*10+hdat;
}
if (n==13)
{hdat=(c-48)+hdat;
hbal=String (hdat/10)+"."+String (hdat%10); //влажность 866 86.6%
}
}
//**************************************** T2
if (p==112) //выделение данных из принятой строки
{timekom2=timeserv;//время получения данных
nt=4;
n++;
if (n==2){
if (c==45){zndat=1;//-
}//znak
else
{zndat=0;//+
}
}
if (n==3) {tdat=(c-48)*100;} //температура
if (n==4){tdat=(c-48)*10+tdat;}
if (n==5)
{tdat=(c-48)+tdat;
tkom2=String (tdat/10)+"."+String (tdat%10); //температура без знака +230 +23.0
}
if (n==7){vdat=(c-48)*100;}//напряж батареи датчика
if (n==8){vdat=(c-48)*10+vdat;}
if (n==9)
{vdat=(c-48)+vdat;
batkom2=String (vdat/100)+"."+String (vdat%100);//батарея 357v 3.75в
}
if (n==11){hdat=(c-48)*100;}//влажность
if (n==12)
{hdat=(c-48)*10+hdat;
}
if (n==13)
{hdat=(c-48)+hdat;
hkom2=String (hdat/10)+"."+String (hdat%10); //влажность 866 86.6%
}
}
//****************************************
//**************************************** T3
if (p==113) //выделение данных из принятой строки
{// myFile.print(c);//t2+103c375v299h9
nt=5;
timekom1=timeserv;//время получения данных
n++;
if (n==2){
if (c==45){zndat=1;//-
}//znak
else
{zndat=0;//+
}
}
if (n==3) {tdat=(c-48)*100;} //температура
if (n==4){tdat=(c-48)*10+tdat;}
if (n==5)
{tdat=(c-48)+tdat;
tkom1=String (tdat/10)+"."+String (tdat%10); //температура без знака +230 +23.0
}
if (n==7){vdat=(c-48)*100;}//напряж батареи датчика
if (n==8){vdat=(c-48)*10+vdat;}
if (n==9)
{vdat=(c-48)+vdat;
batkom1=String (vdat/100)+"."+String (vdat%100);//батарея 357v 3.75в
}
if (n==11){hdat=(c-48)*100;}//влажность
if (n==12)
{hdat=(c-48)*10+hdat;
}
if (n==13)
{hdat=(c-48)+hdat;
hkom1=String (hdat/10)+"."+String (hdat%10); //влажность 866 86.6%
}
}
//**************************************** T4 ****************************
/* if (p==114) //выделение данных из принятой строки
{// myFile.print(c);//t1+103c375v299h9
ntdat=4;
if(chet==0)
{ if( hourd4==t.hour)
{fh=1;
}
else
{fh=0;
}
chet=1;
}
hourd4=t.hour;
mind4=t.min;
//byte ntdat;номер датчика
//byte zndat;знак температуры 0+
//int tdat;температура
//int hdat;влажность
//int vdat;напряж батареи датчика
n++;
if (n==2){
if (c==45){zndat=1;//-
}//znak
else
{zndat=0;//+
}
}
if (n==3) {tdat=(c-48)*100;} //температура
if (n==4){tdat=(c-48)*10+tdat;}
if (n==5)
{tdat=(c-48)+tdat;
for (int u =22 ; u >= 0; u = u--)
{
t4[u+1]=t4[u];
}
if(zndat==1)//-
{t14=tdat+1000;
t4[0]=t14;
}
else
{t14=tdat;
t4[0]=t14;
}
}
if (n==7){vdat=(c-48)*100;}//напряж батареи датчика
if (n==8){vdat=(c-48)*10+vdat;}
if (n==9)
{vdat=(c-48)+vdat;
bat[3]=vdat;
}
if (n==11){hdat=(c-48)*100;}//влажность
if (n==12)
{hdat=(c-48)*10+hdat;
for (int u =22 ; u >= 0; u = u--)
{
h4[u+1]=h4[u];
}
h4[0]=hdat;
}
if (n==13)
{hdat=(c-48)+hdat;
h14=hdat;
}
}*/
//**************************************** T5
if (p==115) //выделение данных из принятой строки
{// myFile.print(c);//t2+103c375v299h9
timekor=timeserv;//время получения данных
nt=7;
n++;
if (n==2){
if (c==45){zndat=1;//-
}//znak
else
{zndat=0;//+
}
}
if (n==3) {tdat=(c-48)*100;} //температура
if (n==4){tdat=(c-48)*10+tdat;}
if (n==5)
{tdat=(c-48)+tdat;
tkor=String (tdat/10)+"."+String (tdat%10); //температура без знака +230 +23.0
}
if (n==7){vdat=(c-48)*100;}//напряж батареи датчика
if (n==8){vdat=(c-48)*10+vdat;}
if (n==9)
{vdat=(c-48)+vdat;
batkor=String (vdat/100)+"."+String (vdat%100);//батарея 357v 3.75в
}
if (n==11){hdat=(c-48)*100;}//влажность
if (n==12)
{hdat=(c-48)*10+hdat;
}
if (n==13)
{hdat=(c-48)+hdat;
hkor=String (hdat/10)+"."+String (hdat%10); //влажность 866 86.6%
}
}
//*******************************************************************************
if ((c==token9[0])&&(p==0)){p=9;}
if ((c==token11[0])&&(p==0)){p=101;}//cравнение первого символа на соответствие t
}//for
//*************************************************
}//void pars