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); |