main/co2meter.c

changeset 34
495b7eafbf5a
parent 33
331e7f700971
child 37
358bbd5b608e
equal deleted inserted replaced
33:331e7f700971 34:495b7eafbf5a
12 int Main_Loop1 = ML1_INIT; ///< Loop 1 init 12 int Main_Loop1 = ML1_INIT; ///< Loop 1 init
13 bool System_TimeOk = false; ///< System time status 13 bool System_TimeOk = false; ///< System time status
14 time_t now; ///< Current time 14 time_t now; ///< Current time
15 struct tm timeinfo; ///< Current time structure 15 struct tm timeinfo; ///< Current time structure
16 char strftime_buf[64]; ///< Time buffer 16 char strftime_buf[64]; ///< Time buffer
17 int num_sensors = 0; ///< Detected DS18B20 sensors
17 static RTC_DATA_ATTR struct timeval sleep_enter_time; 18 static RTC_DATA_ATTR struct timeval sleep_enter_time;
18 static TaskHandle_t xTaskDS18B20 = NULL; 19 static TaskHandle_t xTaskDS18B20 = NULL;
19 static TaskHandle_t xTaskADC = NULL; 20 static TaskHandle_t xTaskADC = NULL;
20 static TaskHandle_t xTaskWifi = NULL; 21 static TaskHandle_t xTaskWifi = NULL;
21 static TaskHandle_t xTaskMQTT = NULL; 22 static TaskHandle_t xTaskMQTT = NULL;
187 connect_mqtt(true); 188 connect_mqtt(true);
188 Main_Loop1 = ML1_WAITCON; 189 Main_Loop1 = ML1_WAITCON;
189 ESP_LOGI(TAG, "Loop timer: Wait MQTT"); 190 ESP_LOGI(TAG, "Loop timer: Wait MQTT");
190 191
191 uint32_t temp[DS18B20_MAX]; 192 uint32_t temp[DS18B20_MAX];
192 int state[DS18B20_MAX], i, num_sensors = 0; 193 int state[DS18B20_MAX], i;
193 char rom_code[DS18B20_MAX][17]; 194 char rom_code[DS18B20_MAX][17];
194 for (i = 0; i < DS18B20_MAX; i++) { 195 for (i = 0; i < DS18B20_MAX; i++) {
195 temp[i] = 0; 196 temp[i] = 0;
196 state[i] = 0; 197 state[i] = 0;
197 rom_code[i][0] = '\0'; 198 rom_code[i][0] = '\0';
198 } 199 }
199 /* Copy results from all connected DS18B20 sensors */ 200 /* Copy results from all connected DS18B20 sensors */
201 num_sensors = 0;
200 if (xSemaphoreTake(xSemaphoreDS18B20, 10) == pdTRUE) { 202 if (xSemaphoreTake(xSemaphoreDS18B20, 10) == pdTRUE) {
201 num_sensors = ds18b20_state->num_sensors; 203 num_sensors = ds18b20_state->num_sensors;
202 for (i = 0; i < num_sensors; i++) { 204 for (i = 0; i < num_sensors; i++) {
203 temp[i] = (ds18b20_state->sensor[i].temperature * 1000); 205 temp[i] = (ds18b20_state->sensor[i].temperature * 1000);
204 state[i] = (ds18b20_state->sensor[i].error == 0) ? 0:1; 206 state[i] = (ds18b20_state->sensor[i].error == 0) ? 0:1;
234 units[i].alarm |= ALARM_UNIT_PRESSURE; 236 units[i].alarm |= ALARM_UNIT_PRESSURE;
235 int P = (units[i].pressure_voltage / (adc_state->Batt_voltage / 1000) - units[i].pressure_zero) * 14; // in bar 237 int P = (units[i].pressure_voltage / (adc_state->Batt_voltage / 1000) - units[i].pressure_zero) * 14; // in bar
236 if (P < 0) 238 if (P < 0)
237 P = 0; 239 P = 0;
238 units[i].pressure = P; 240 units[i].pressure = P;
239 printf("%d volt: %d batt: %d scale: %d mbar: %d\n", i, units[i].pressure_voltage, adc_state->Batt_voltage, 241 ESP_LOGI(TAG, "%d vb:%.3f vp:%.3f zero:%d scale:%3d mbar:%4d t:%6.3f %s",
240 units[i].pressure_voltage / (adc_state->Batt_voltage / 1000) - units[i].pressure_zero, P); 242 i, adc_state->Batt_voltage / 1000.0, units[i].pressure_voltage / 1000.0, units[i].pressure_zero,
241 // Verbruik 10 mA 243 units[i].pressure_voltage / (adc_state->Batt_voltage / 1000) - units[i].pressure_zero, P,
242 // Setup tijd max 2 mS 244 units[i].temperature / 1000.0, units[i].temperature_rom_code);
243 xSemaphoreGive(xSemaphoreADC); 245 xSemaphoreGive(xSemaphoreADC);
244 } else { 246 } else {
245 ESP_LOGE(TAG, "ML1_MQTT_CONNECT ADC[%d] lock error", i); 247 ESP_LOGE(TAG, "ML1_MQTT_CONNECT ADC[%d] lock error", i);
246 } 248 }
247 xSemaphoreGive(xSemaphoreUnits); 249 xSemaphoreGive(xSemaphoreUnits);

mercurial