main/iotbalkon.c

changeset 12
bb72d448e282
parent 9
1659bd3c7a2b
child 14
2a9f67ecbc72
equal deleted inserted replaced
11:bdc123ae7b49 12:bb72d448e282
17 #define State_GoSleep 7 17 #define State_GoSleep 7
18 18
19 19
20 static TaskHandle_t xTaskBMP280 = NULL; 20 static TaskHandle_t xTaskBMP280 = NULL;
21 static TaskHandle_t xTaskINA219 = NULL; 21 static TaskHandle_t xTaskINA219 = NULL;
22 static TaskHandle_t xTaskAPDS9930 = NULL;
22 static TaskHandle_t xTaskMQTT = NULL; 23 static TaskHandle_t xTaskMQTT = NULL;
23 static TaskHandle_t xTaskWifi = NULL; 24 static TaskHandle_t xTaskWifi = NULL;
24 static TaskHandle_t xTaskOUT = NULL; 25 static TaskHandle_t xTaskOUT = NULL;
25 26
26 #define MAX_LOOPS 32 27 #define MAX_LOOPS 32
53 extern bmp280_t bmp280_dev; 54 extern bmp280_t bmp280_dev;
54 extern SemaphoreHandle_t xSemaphoreINA219; 55 extern SemaphoreHandle_t xSemaphoreINA219;
55 extern ina219_t ina219_b_dev; 56 extern ina219_t ina219_b_dev;
56 extern ina219_t ina219_s_dev; 57 extern ina219_t ina219_s_dev;
57 extern INA219_State *ina219_state; 58 extern INA219_State *ina219_state;
59 extern SemaphoreHandle_t xSemaphoreAPDS9930;
60 extern apds9930_t apds9930_dev;
61 extern APDS9930_State *apds9930_state;
58 extern SemaphoreHandle_t xSemaphoreWiFi; 62 extern SemaphoreHandle_t xSemaphoreWiFi;
59 extern WIFI_State *wifi_state; ///< WiFi state 63 extern WIFI_State *wifi_state; ///< WiFi state
60 64
61 uint32_t Alarm = 0; 65 uint32_t Alarm = 0;
62 66
270 loopno++; 274 loopno++;
271 } 275 }
272 276
273 277
274 278
279 void getLightValues() {
280
281 request_apds9930();
282
283 while (! ready_apds9930()) {
284 vTaskDelay(10 / portTICK_PERIOD_MS);
285 }
286 }
287
288
275 void app_main(void) 289 void app_main(void)
276 { 290 {
277 uint64_t totalTime, gTimeInMillis; 291 uint64_t totalTime, gTimeInMillis;
278 nvs_handle_t my_handle; 292 nvs_handle_t my_handle;
279 293
343 357
344 bmp280_init_default_params(&bmp280_params); 358 bmp280_init_default_params(&bmp280_params);
345 memset(&bmp280_dev, 0, sizeof(bmp280_t)); 359 memset(&bmp280_dev, 0, sizeof(bmp280_t));
346 memset(&ina219_b_dev, 0, sizeof(ina219_t)); 360 memset(&ina219_b_dev, 0, sizeof(ina219_t));
347 memset(&ina219_s_dev, 0, sizeof(ina219_t)); 361 memset(&ina219_s_dev, 0, sizeof(ina219_t));
362 memset(&apds9930_dev, 0, sizeof(i2c_dev_t));
348 363
349 i2c_dev_t dev = { 0 }; 364 i2c_dev_t dev = { 0 };
350 dev.cfg.sda_io_num = CONFIG_I2C_MASTER_SDA; 365 dev.cfg.sda_io_num = CONFIG_I2C_MASTER_SDA;
351 dev.cfg.scl_io_num = CONFIG_I2C_MASTER_SCL; 366 dev.cfg.scl_io_num = CONFIG_I2C_MASTER_SCL;
352 dev.cfg.master.clk_speed = 1000000; 367 dev.cfg.master.clk_speed = 1000000;
353 368
354 dev.addr = 0x39; 369 dev.addr = 0x39;
355 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) { 370 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) {
356 ESP_LOGI(TAG, "Found ADPS-9930"); 371 ESP_LOGI(TAG, "Found ADPS-9930");
372 ESP_ERROR_CHECK(apds9930_init_desc(&apds9930_dev, 0x39, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL));
373 ESP_ERROR_CHECK(apds9930_init(&apds9930_dev));
374 ESP_LOGI(TAG, "Found APDS-9930 id: 0x%02x", apds9930_dev.id);
357 } 375 }
358 dev.addr = 0x40; 376 dev.addr = 0x40;
359 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) { 377 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) {
360 ESP_ERROR_CHECK(ina219_init_desc(&ina219_b_dev, 0x40, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL)); 378 ESP_ERROR_CHECK(ina219_init_desc(&ina219_b_dev, 0x40, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL));
361 ESP_ERROR_CHECK(ina219_init(&ina219_b_dev)); 379 ESP_ERROR_CHECK(ina219_init(&ina219_b_dev));
384 /* 402 /*
385 * Create FreeRTOS tasks 403 * Create FreeRTOS tasks
386 */ 404 */
387 xSemaphoreBMP280 = xSemaphoreCreateMutex(); 405 xSemaphoreBMP280 = xSemaphoreCreateMutex();
388 xSemaphoreINA219 = xSemaphoreCreateMutex(); 406 xSemaphoreINA219 = xSemaphoreCreateMutex();
389 407 xSemaphoreAPDS9930 = xSemaphoreCreateMutex();
390 408
391 xTaskCreate(&task_bmp280, "task_bmp280", 2560, NULL, 8, &xTaskBMP280); 409
392 xTaskCreate(&task_ina219, "task_ina219", 2560, NULL, 8, &xTaskINA219); 410 xTaskCreate(&task_bmp280, "task_bmp280", 2560, NULL, 8, &xTaskBMP280);
393 xTaskCreate(&task_out, "task_out", 2560, NULL, 9, &xTaskOUT); 411 xTaskCreate(&task_ina219, "task_ina219", 2560, NULL, 8, &xTaskINA219);
412 xTaskCreate(&task_apds9930, "task_apds9930", 2560, NULL, 8, &xTaskAPDS9930);
413 xTaskCreate(&task_out, "task_out", 2560, NULL, 9, &xTaskOUT);
394 // esp_log_level_set("MQTT_CLIENT", ESP_LOG_ERROR); 414 // esp_log_level_set("MQTT_CLIENT", ESP_LOG_ERROR);
395 xTaskCreate(&task_mqtt, "task_mqtt", 4096, NULL, 5, &xTaskMQTT); 415 xTaskCreate(&task_mqtt, "task_mqtt", 4096, NULL, 5, &xTaskMQTT);
396 // esp_log_level_set("wifi", ESP_LOG_ERROR); 416 // esp_log_level_set("wifi", ESP_LOG_ERROR);
397 xTaskCreate(&task_wifi, "task_wifi", 4096, NULL, 3, &xTaskWifi); 417 xTaskCreate(&task_wifi, "task_wifi", 4096, NULL, 3, &xTaskWifi);
398 418
399 vTaskDelay(10 / portTICK_PERIOD_MS); 419 vTaskDelay(10 / portTICK_PERIOD_MS);
400 420
401 /* 421 /*
402 * Main application loop. 422 * Main application loop.
412 432
413 gTimeInMillis = millis(); 433 gTimeInMillis = millis();
414 434
415 switch (State) { 435 switch (State) {
416 case State_Init: getTempBaro(); 436 case State_Init: getTempBaro();
417 // getLightValues(); 437 getLightValues();
418 getVoltsCurrent(); 438 getVoltsCurrent();
419 State = State_Connect; 439 State = State_Connect;
420 DisCounter = 0; 440 DisCounter = 0;
421 request_WiFi(true); 441 request_WiFi(true);
422 break; 442 break;
585 // getTempHumi(); 605 // getTempHumi();
586 // } 606 // }
587 gTimeNext = millis() + ST_INTERVAL; 607 gTimeNext = millis() + ST_INTERVAL;
588 if (loopno >= ST_LOOPS) { 608 if (loopno >= ST_LOOPS) {
589 ESP_LOGI(TAG, "Enough loops, do connect"); 609 ESP_LOGI(TAG, "Enough loops, do connect");
590 // getLightValues(); 610 getLightValues();
591 State = State_Connect; 611 State = State_Connect;
592 DisCounter = 0; 612 DisCounter = 0;
593 request_WiFi(true); 613 request_WiFi(true);
594 } else { 614 } else {
595 State = State_Wait; 615 State = State_Wait;

mercurial