128 json_log->mlt_sp, json_log->mlt_pv, json_log->mlt_power, json_log->mlt_tempreached, json_log->pump_run); |
128 json_log->mlt_sp, json_log->mlt_pv, json_log->mlt_power, json_log->mlt_tempreached, json_log->pump_run); |
129 if (json_log->hlt_sp > 0.0) { |
129 if (json_log->hlt_sp > 0.0) { |
130 fprintf(f, "\"HLT_sp\":\"%.3f\",\"HLT_pv\":\"%.3f\",\"HLT_pwm\":\"%d\",", json_log->hlt_sp, json_log->hlt_pv, json_log->hlt_power); |
130 fprintf(f, "\"HLT_sp\":\"%.3f\",\"HLT_pv\":\"%.3f\",\"HLT_pwm\":\"%d\",", json_log->hlt_sp, json_log->hlt_pv, json_log->hlt_power); |
131 } |
131 } |
132 fprintf(f, "\"Label\":\"%s\"}", json_log->time); |
132 fprintf(f, "\"Label\":\"%s\"}", json_log->time); |
133 // printf("{\"MLT_sp\":\"%.3f\",\"MLT_pv\":\"%.3f\",\"MLT_pwm\":\"%d\",\"MLT_tr\":\"%d\",\"Pump\":\"%d\",", |
|
134 // json_log->mlt_sp, json_log->mlt_pv, json_log->mlt_power, json_log->mlt_tempreached, json_log->pump_run); |
|
135 // if (json_log->hlt_sp > 0.0) { |
|
136 // printf("\"HLT_sp\":\"%.3f\",\"HLT_pv\":\"%.3f\",\"HLT_pwm\":\"%d\",", json_log->hlt_sp, json_log->hlt_pv, json_log->hlt_power); |
|
137 // } |
|
138 // printf("\"Label\":\"%s\"}\n", json_log->time); |
|
139 fclose(f); |
133 fclose(f); |
140 } |
134 } |
141 } |
135 } |
142 } |
136 } |
143 |
137 |
367 return 0; |
361 return 0; |
368 } |
362 } |
369 |
363 |
370 |
364 |
371 |
365 |
372 /** |
|
373 * @brief Sync directories. |
|
374 * @param fromdir Source directory |
|
375 * @param todir Destination directory |
|
376 */ |
|
377 #if 0 |
|
378 void SyncDirs(char *fromdir, char *todir) |
|
379 { |
|
380 char ff[64], tf[64]; |
|
381 struct stat fs, ts; |
|
382 int rc; |
|
383 |
|
384 ESP_LOGI(TAG, "SyncDirs(%s, %s)", fromdir, todir); |
|
385 |
|
386 DIR *dir = opendir(fromdir); |
|
387 struct dirent* de = readdir(dir); |
|
388 while (de) { |
|
389 if (de->d_type == DT_REG) { |
|
390 sprintf(ff, "%s/%s", fromdir, de->d_name); |
|
391 if (stat(ff, &fs) == ESP_OK) { |
|
392 |
|
393 sprintf(tf, "%s/%s", todir, de->d_name); |
|
394 if (stat(tf, &ts) != ESP_OK) { |
|
395 ts.st_size = 0; |
|
396 } |
|
397 |
|
398 if (fs.st_size && (fs.st_size != ts.st_size)) { |
|
399 rc = FileCopy(ff, tf); |
|
400 ESP_LOGI(TAG, "Copy %s to %s, %ld bytes, rc=%d", ff, todir, fs.st_size, rc); |
|
401 } |
|
402 } |
|
403 } |
|
404 de = readdir(dir); |
|
405 vTaskDelay(50 / portTICK_PERIOD_MS); |
|
406 } |
|
407 closedir(dir); |
|
408 |
|
409 /* |
|
410 * Now see if we need to remove files. |
|
411 */ |
|
412 dir = opendir(todir); |
|
413 de = readdir(dir); |
|
414 while (de) { |
|
415 sprintf(tf, "%s/%s", todir, de->d_name); |
|
416 sprintf(ff, "%s/%s", fromdir, de->d_name); |
|
417 |
|
418 if (stat(ff, &fs) != ESP_OK) { |
|
419 if (unlink(tf) == ESP_OK) { |
|
420 ESP_LOGI(TAG, "Removed %s", tf); |
|
421 } |
|
422 } |
|
423 |
|
424 de = readdir(dir); |
|
425 vTaskDelay(50 / portTICK_PERIOD_MS); |
|
426 } |
|
427 closedir(dir); |
|
428 } |
|
429 #endif |
|
430 |
|
431 |
|
432 |
|
433 void task_sdcard(void *pvParameter) |
366 void task_sdcard(void *pvParameter) |
434 { |
367 { |
435 sdmmc_card_t* card; |
368 sdmmc_card_t* card; |
436 esp_err_t ret; |
369 esp_err_t ret; |
437 EventBits_t uxBits; |
370 EventBits_t uxBits; |
502 if (dir == NULL) { |
435 if (dir == NULL) { |
503 ret = mkdir("/sdcard/w/log", 0755); |
436 ret = mkdir("/sdcard/w/log", 0755); |
504 } else { |
437 } else { |
505 closedir(dir); |
438 closedir(dir); |
506 } |
439 } |
507 |
|
508 |
|
509 // SyncDirs("/sdcard/w", "/spiffs/w"); |
|
510 // SyncDirs("/sdcard/w/js", "/spiffs/w/js"); |
|
511 // SyncDirs("/sdcard/w/css", "/spiffs/w/css"); |
|
512 // SyncDirs("/sdcard/w/js/modl" , "/spiffs/w/js/modl"); // |
|
513 // SyncDirs("/sdcard/w/js/utils", "/spiffs/w/js/utils"); |
|
514 // SyncDirs("/sdcard/w/js/zlib", "/spiffs/w/js/zlib"); |
|
515 // SyncDirs("/sdcard/w/core", "/spiffs/w/core"); |
|
516 // SyncDirs("/sdcard/w/core/input", "/spiffs/w/core/input"); |
|
517 // SyncDirs("/sdcard/w/core/util", "/spiffs/w/core/util"); |
|
518 // SyncDirs("/sdcard/w/app", "/spiffs/w/app"); |
|
519 // SyncDirs("/sdcard/w/app/images", "/spiffs/w/app/images"); |
|
520 // SyncDirs("/sdcard/w/app/locale", "/spiffs/w/app/locale"); |
|
521 // SyncDirs("/sdcard/w/app/sounds", "/spiffs/w/app/sounds"); // |
|
522 // SyncDirs("/sdcard/w/app/styles", "/spiffs/w/app/styles"); |
|
523 // SyncDirs("/sdcard/fonts", "/spiffs/fonts"); // |
|
524 |
|
525 } |
440 } |
526 } else { |
441 } else { |
527 /* |
442 /* |
528 * Check if the mounted card is still in the slot. |
443 * Check if the mounted card is still in the slot. |
529 */ |
444 */ |