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/WebSocket3Aqva/timerconvert.ino

195 lines
8.0 KiB

void timerconvert()
{ //timerout= {"id":"tout","t1":"100","t2":"010","t3":"001"} подкл таймеров по выходов
//String timerdata
//{"timer1":["01:00","09:00","10:00","11:00","","","","","",""],"timer2":[
// String timerweek={"id":"week","timer1_week":"0111100","timer2_week":"1000011","timer3_week":"0101010"};
//(str[1] = 't')
//uint16_t BTimer1 [11] = {3, 390, 450, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440}; // массивы всех таймеров для суточных каналов (1 - 4) 0-й элемент отвечает за состояние канала (1 - вкл/ 0 - выкл/ 2 - авто))
if (timerdata.startsWith("{\"timer1"))//парсим "timer1":["01
{tdat=0;
int timer=0;//номер таймера
//int index =1;// индекс массива таймера
// Serial.println("timer");
// Serial.println(timerdata.length());
// Serial.println(timerdata[12]);
for (int i = 0; i < timerdata.length() ; i++) {//перебираем строку данных
if (timerdata[i]=='[')
{timer++;
//********************************************************************
if (timer==1)
{i=i+2;
for (int j = 1; j < 11 ; j++){
if (timerdata[i]!='\"')
{
BTimer1 [j]=((int(timerdata[i] - '0')*10+int(timerdata[i+1] - '0'))*60+(int(timerdata[i+3] - '0')*10+int(timerdata[i+4] - '0')));
i=i+8;
//Serial.println(BTimer1 [j]);
}
else
{i=i+3;
BTimer1 [j]=1440;//время неустановлено
}
// Serial.println(timerdata[i]);
}
}
//******************************************************************************
if (timer==2)
{i=i+2;
for (int j = 1; j < 11 ; j++){
if (timerdata[i]!='\"')
{
BTimer2 [j]=((int(timerdata[i] - '0')*10+int(timerdata[i+1] - '0'))*60+(int(timerdata[i+3] - '0')*10+int(timerdata[i+4] - '0')));
i=i+8;
//Serial.println(BTimer1 [j]);
}
else
{i=i+3;
BTimer2 [j]=1440;
}
// Serial.println(timerdata[i]);
}
}
if (timer==3)
{i=i+2;
for (int j = 1; j < 11 ; j++){
if (timerdata[i]!='\"')
{
BTimer3 [j]=((int(timerdata[i] - '0')*10+int(timerdata[i+1] - '0'))*60+(int(timerdata[i+3] - '0')*10+int(timerdata[i+4] - '0')));
i=i+8;
//Serial.println(BTimer1 [j]);
}
else
{i=i+3;
BTimer3 [j]=1440;
}
// Serial.println(timerdata[i]);
}
// Serial.println(" ");
// for(int a = 0; a < 11; a++)
// { Serial.print(BTimer3[a]);
// }
// Serial.println(" ");
}
}
}
}
//******************************************************************************************
if (timerweek.startsWith("{\"id\":\"week"))//парсим {"id":"week","timer1_week":"0111100"
{tweek=0;
int timer=0;//номер таймера
// Serial.println("week");
// Serial.println(timerweek.length());
for (int i = 0; i < timerweek.length() ; i++) {//перебираем строку данных
if (timerweek[i]==':')
{timer++;
if (timer==2)//данные таймера1 идут после вторых двоеточий
{i=i+2;
for (int j = 0; j < 7 ; j++){
weekTimer1 [j]=int(timerweek[i+j] - '0');//пребразуем строку "0111100" в массив чисел weekTimer1 [7]=
}
}
if (timer==3)
{i=i+2;
for (int j = 0; j < 7 ; j++){
weekTimer2 [j]=int(timerweek[i+j] - '0');//пребразуем строку "0111100" в массив чисел weekTimer1 [7]=
}
}
if (timer==4)
{i=i+2;
for (int j = 0; j < 7 ; j++){
weekTimer3 [j]=int(timerweek[i+j] - '0');//пребразуем строку "0111100" в массив чисел weekTimer1 [7]=
}
Serial.print("weekTimer3");
for(int a = 0; a < 7; a++)
{ Serial.print(weekTimer3[a]);
}
Serial.println("");
//Serial.println("");
// Serial.print("tweekday");
//Serial.println(tweekday);
}
}
}
}
// weekTimer1 [7]={0,0,0,0,0,0,0};//недельные установки t1
if(weekTimer1 [tweekday-1]==1)
{BTimer1 [0]=2;//управляем таймером
}else
{
BTimer1 [0]=3;//управляем кнопками
}
if(weekTimer2 [tweekday-1]==1)
{BTimer2 [0]=2;//управляем таймером
}else
{
BTimer2 [0]=3;//управляем кнопками
}
if(weekTimer3 [tweekday-1]==1)
{BTimer3 [0]=2;//управляем таймером
}else
{
BTimer3 [0]=3;//управляем кнопками
}
Serial.print("BTimer1 [0]:");
Serial.println(BTimer1 [0]);
Serial.print("BTimer2 [0]:");
Serial.println(BTimer2 [0]);
Serial.print("BTimer3 [0]:");
Serial.println(BTimer3 [0]);
//******************************************************************************************
if (timerout.startsWith("{\"id\":\"tout"))//парсим timerout= {"id":"tout","t1":"100","t2":"010","t3":"001"} подкл таймеров по выходов
{//tuot=0;
int timer=0;//номер таймера
// Serial.println("timerout");
// Serial.println(timerout.length());
for (int i = 0; i < timerout.length() ; i++) {//перебираем строку данных
if (timerout[i]==':')
{timer++;
if (timer==2)//данные таймера1 идут после вторых двоеточий
{i=i+2;
for (int j = 0; j < 3 ; j++){
gpioTimer1[j]=int(timerout[i+j] - '0');//пребразуем строку "011" в массив чисел gpioTimer1 [3]={1,0,0};
}
}
if (timer==3)
{i=i+2;
for (int j = 0; j < 3 ; j++){
gpioTimer2[j]=int(timerout[i+j] - '0');//пребразуем строку "011" в массив чисел gpioTimer2 [3]={1,1,0};
}
}
if (timer==4)
{i=i+2;
for (int j = 0; j < 3 ; j++){
gpioTimer3[j]=int(timerout[i+j] - '0');//пребразуем строку "011" в массив чисел gpioTimer3 [3]={1,1,0};
}
Serial.println("");
Serial.print("gpioTimer1");
for(int a = 0; a < 3; a++)
{ Serial.print(gpioTimer1[a]);
}
Serial.println("");
}
}
}
}
current_time = hour1 * 60 + min1;//настройка выходов в соот с таймерами
for (int i = 0; i <= 1439; i++) {
if (current_time > 1439) current_time = 0;
state1 = main_log(BTimer1, state1);
state2 = main_log(BTimer2, state2);
state3 = main_log(BTimer3, state3);
current_time++;
}
btime();
}