153 */ |
153 */ |
154 xSemaphoreDS18B20 = xSemaphoreCreateMutex(); |
154 xSemaphoreDS18B20 = xSemaphoreCreateMutex(); |
155 xSemaphoreADC = xSemaphoreCreateMutex(); |
155 xSemaphoreADC = xSemaphoreCreateMutex(); |
156 xSemaphoreUnits = xSemaphoreCreateMutex(); |
156 xSemaphoreUnits = xSemaphoreCreateMutex(); |
157 |
157 |
158 xTaskCreate(&task_user, "task_user", 2048, NULL,10, &xTaskUser); |
158 xTaskCreate(&task_user, "task_user", 3072, NULL,10, &xTaskUser); |
159 xTaskCreate(&task_ds18b20, "task_ds18b20", 2560, NULL, 8, &xTaskDS18B20); |
159 xTaskCreate(&task_ds18b20, "task_ds18b20", 2560, NULL, 8, &xTaskDS18B20); |
160 xTaskCreate(&task_adc, "task_adc", 2560, NULL, 8, &xTaskADC); |
160 xTaskCreate(&task_adc, "task_adc", 2560, NULL, 8, &xTaskADC); |
161 esp_log_level_set("wifi", ESP_LOG_ERROR); |
161 esp_log_level_set("wifi", ESP_LOG_ERROR); |
162 xTaskCreate(&task_wifi, "task_wifi", 4096, NULL, 3, &xTaskWifi); |
162 xTaskCreate(&task_wifi, "task_wifi", 4096, NULL, 3, &xTaskWifi); |
163 vTaskDelay(10 / portTICK_PERIOD_MS); |
163 vTaskDelay(10 / portTICK_PERIOD_MS); |
209 } else { |
209 } else { |
210 ESP_LOGE(TAG, "ML1_MQTT_CONNECT DS18B20 lock error"); |
210 ESP_LOGE(TAG, "ML1_MQTT_CONNECT DS18B20 lock error"); |
211 } |
211 } |
212 |
212 |
213 /* Copy measured data and calculate results */ |
213 /* Copy measured data and calculate results */ |
214 if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) { |
214 for (int i = 0; i < 3; i++) { |
215 for (int i = 0; i < 3; i++) { |
215 if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) { |
216 units[i].temperature = temp; |
216 units[i].temperature = temp; |
217 units[i].temperature_state = state; |
217 units[i].temperature_state = state; |
218 units[i].alarm = 0; |
218 units[i].alarm = 0; |
219 if (state) |
219 if (state) |
220 units[i].alarm |= ALARM_SYS_TEMPERATURE & ALARM_UNIT_TEMPERATURE; |
220 units[i].alarm |= ALARM_SYS_TEMPERATURE & ALARM_UNIT_TEMPERATURE; |
221 strncpy(units[i].temperature_rom_code, rom_code, 17); |
221 strncpy(units[i].temperature_rom_code, rom_code, 17); |
|
222 |
222 if (xSemaphoreTake(xSemaphoreADC, 10) == pdTRUE) { |
223 if (xSemaphoreTake(xSemaphoreADC, 10) == pdTRUE) { |
223 units[i].pressure_state = adc_state->Pressure[i].error; |
224 units[i].pressure_state = adc_state->Pressure[i].error; |
224 units[i].pressure_channel = adc_state->Pressure[i].channel; |
225 units[i].pressure_channel = adc_state->Pressure[i].channel; |
225 units[i].pressure_voltage = adc_state->Pressure[i].voltage; |
226 units[i].pressure_voltage = adc_state->Pressure[i].voltage; |
226 if (units[i].pressure_state || units[i].pressure_voltage < 80) |
227 if (units[i].pressure_state || units[i].pressure_voltage < 80) |
234 // Moet die echt op 5 volt? |
235 // Moet die echt op 5 volt? |
235 // Verbruik 10 mA |
236 // Verbruik 10 mA |
236 // Setup tijd max 2 mS |
237 // Setup tijd max 2 mS |
237 xSemaphoreGive(xSemaphoreADC); |
238 xSemaphoreGive(xSemaphoreADC); |
238 } else { |
239 } else { |
239 ESP_LOGE(TAG, "ML1_MQTT_CONNECT ADC lock error"); |
240 ESP_LOGE(TAG, "ML1_MQTT_CONNECT ADC[%d] lock error", i); |
240 } |
241 } |
241 } |
242 xSemaphoreGive(xSemaphoreUnits); |
|
243 } else { |
|
244 ESP_LOGE(TAG, "ML1_MQTT_CONNECT units[%d] lock error", i); |
|
245 } |
|
246 } |
|
247 if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) { |
242 write_units(); |
248 write_units(); |
243 xSemaphoreGive(xSemaphoreUnits); |
249 xSemaphoreGive(xSemaphoreUnits); |
244 user_refresh(); |
|
245 } else { |
250 } else { |
246 ESP_LOGE(TAG, "ML1_MQTT_CONNECT units lock error"); |
251 ESP_LOGE(TAG, "ML1_MQTT_CONNECT write_units lock error"); |
247 } |
252 } |
|
253 user_refresh(); |
248 } |
254 } |
249 break; |
255 break; |
250 |
256 |
251 case ML1_WAITCON: |
257 case ML1_WAITCON: |
252 if (ready_mqtt()) |
258 if (ready_mqtt()) |