main/iotbalkon.c

changeset 23
2cc30d828d6e
parent 22
9c0bcc91fe1a
child 24
74609f70411e
equal deleted inserted replaced
22:9c0bcc91fe1a 23:2cc30d828d6e
393 vTaskDelay(10 / portTICK_PERIOD_MS); 393 vTaskDelay(10 / portTICK_PERIOD_MS);
394 394
395 /* 395 /*
396 * Main application loop. 396 * Main application loop.
397 */ 397 */
398 int State = State_Init; 398 int State = State_Init;
399 int OldState = State_Init + 1; 399 int OldState = State_Init + 1;
400 uint8_t ds_time = DS_Time; 400 uint8_t ds_time = DS_Time;
401 401
402 402
403 while (0) { 403 while (0) {
404 // request_ina219(); 404 // request_ina219();
433 Alarm &= ~AL_NOWIFI; 433 Alarm &= ~AL_NOWIFI;
434 ESP_LOGI(TAG, "Connected counter WiFi %d", DisCounter); 434 ESP_LOGI(TAG, "Connected counter WiFi %d", DisCounter);
435 DisCounter = 0; 435 DisCounter = 0;
436 } else { 436 } else {
437 /* 437 /*
438 * 30 seconds connection try. 438 * 15 seconds connection try.
439 */ 439 */
440 DisCounter++; 440 DisCounter++;
441 vTaskDelay(1000 / portTICK_PERIOD_MS); 441 vTaskDelay(500 / portTICK_PERIOD_MS);
442 ESP_LOGI(TAG, "* Counter WiFi %d", DisCounter); 442 ESP_LOGI(TAG, "* Counter WiFi %d", DisCounter);
443 if (DisCounter > 30) { 443 if (DisCounter > 30) {
444 Alarm |= AL_NOWIFI; 444 Alarm |= AL_NOWIFI;
445 request_WiFi(false); 445 request_WiFi(false);
446 State = State_Init; 446 State = State_Init;
541 * the broker and the subscriptions are really here. 541 * the broker and the subscriptions are really here.
542 */ 542 */
543 gTimeNext = millis() + 1000; 543 gTimeNext = millis() + 1000;
544 break; 544 break;
545 545
546 case State_WorkDone: if (gTimeInMillis > gTimeNext) { 546 case State_WorkDone: if (gTimeInMillis >= gTimeNext) {
547 State = State_Disconnect_MQTT; 547 State = State_Disconnect_MQTT;
548 request_mqtt(false); 548 request_mqtt(false);
549 } 549 }
550 vTaskDelay(50 / portTICK_PERIOD_MS); 550 vTaskDelay(50 / portTICK_PERIOD_MS);
551 break; 551 break;
554 State = State_Disconnect_Wifi; 554 State = State_Disconnect_Wifi;
555 break; 555 break;
556 556
557 case State_Disconnect_Wifi: request_WiFi(false); 557 case State_Disconnect_Wifi: request_WiFi(false);
558 // // Reset values for average current measurement. 558 // // Reset values for average current measurement.
559 // HaveIP = false;
560 loopno = 0; 559 loopno = 0;
561 gLastTime = millis(); 560 gLastTime = millis();
562 //vTaskDelay(10 / portTICK_PERIOD_MS);
563 561
564 /* 562 /*
565 * If any output is on, use 6 10 seconds loops. 563 * If any output is on, use 6 10 seconds loops.
566 * If nothing on, do a deep sleep. 564 * If nothing on, do a deep sleep.
567 */ 565 */
568 if (Relay1 || Relay2 || Dimmer3 || Dimmer4) { 566 if (Relay1 || Relay2 || Dimmer3 || Dimmer4) {
569 if (DS_Active != 0) { 567 DS_Active = 0;
570 DS_Active = 0; 568 nvsio_write_u8((char *)"ds_active", 0);
571 nvsio_write_u8((char *)"ds_active", 0);
572 }
573 569
574 // Active mode, 60 seconds loop 570 // Active mode, 60 seconds loop
575 ST_LOOPS = 6; 571 ST_LOOPS = 6;
576 gTimeNext = millis() + ST_INTERVAL; 572 gTimeNext = millis() + ST_INTERVAL;
577 ESP_LOGI(TAG, "Start sleeploops"); 573 ESP_LOGI(TAG, "Start sleeploops");
578 State = State_Wait; 574 State = State_Wait;
579 } else { 575 } else {
580 ds_time = DS_TIME; 576 ds_time = DS_TIME;
581 // if (solarVolts < 6) { 577 if (solarVolts < 6) {
582 // // At night, increase the deep-sleep time. 578 // At night, increase the deep-sleep time.
583 // ds_time *= 4; 579 ds_time *= 4;
584 // } 580 }
585 nvsio_write_u8((char *)"ds_active", 1); 581 nvsio_write_u8((char *)"ds_active", 1);
586 DS_Active = 1; 582 DS_Active = 1;
587 nvsio_write_u32((char *)"ds_time", ds_time); 583 nvsio_write_u32((char *)"ds_time", ds_time);
588 DS_Time = ds_time; 584 DS_Time = ds_time;
589 State = State_GoSleep; 585 State = State_GoSleep;
590 } 586 }
591 break; 587 break;
592 588
593 case State_Wait: if (gTimeInMillis > gTimeNext) { 589 case State_Wait: if (gTimeInMillis >= gTimeNext) {
594 State = State_Measure; 590 State = State_Measure;
595 } 591 }
596 vTaskDelay(10 / portTICK_PERIOD_MS); 592 vTaskDelay(50 / portTICK_PERIOD_MS);
597 break; 593 break;
598 594
599 case State_Measure: getVoltsCurrent(); 595 case State_Measure: gTimeNext = millis() + ST_INTERVAL;
600 gTimeNext = millis() + ST_INTERVAL; 596 getVoltsCurrent();
601 if (loopno >= ST_LOOPS) { 597 if (loopno >= ST_LOOPS) {
602 ESP_LOGI(TAG, "Enough loops, do connect"); 598 ESP_LOGI(TAG, "Enough loops, do connect");
603 getLightValues(); 599 getLightValues();
604 State = State_Connect_Wifi; 600 State = State_Connect_Wifi;
605 DisCounter = 0; 601 DisCounter = 0;
612 case State_GoSleep: ESP_LOGI(TAG, "Going to deep-sleep for %ld seconds", DS_Time); 608 case State_GoSleep: ESP_LOGI(TAG, "Going to deep-sleep for %ld seconds", DS_Time);
613 ESP_ERROR_CHECK(esp_sleep_enable_timer_wakeup(DS_Time * 1e6)); 609 ESP_ERROR_CHECK(esp_sleep_enable_timer_wakeup(DS_Time * 1e6));
614 esp_deep_sleep_start(); 610 esp_deep_sleep_start();
615 break; 611 break;
616 } 612 }
617 vTaskDelay(10 / portTICK_PERIOD_MS);
618 } 613 }
619 // Not reached. 614 // Not reached.
620 } 615 }

mercurial