smart-oil-heating-control-s.../main/main.c

85 lines
2.0 KiB
C

#include <stdio.h>
#include "esp_log.h"
#include "driver/i2c.h"
#include <esp_system.h>
#include <bmp280.h>
#include <dht.h>
#include <aht.h>
#include <veml7700.h>
#include <string.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include "freertos/timers.h"
#include "nvs_flash.h"
#include <time.h>
#include <sys/time.h>
#include <esp_sntp.h>
#include "safety.h"
#include "metrics.h"
#include "outputs.h"
#include "inputs.h"
#include "control.h"
#define I2C_MASTER_SCL 19
#define I2C_MASTER_SDA 18
static const char *TAG = "smart-oil-heater-control-system";
// Function to print the current time
void print_current_time()
{
time_t now;
struct tm timeinfo;
time(&now);
localtime_r(&now, &timeinfo);
char strftime_buf[64];
strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo);
ESP_LOGI(TAG, "Current time: %s", strftime_buf);
}
// SNTP Callback function
void time_sync_notification_cb(struct timeval *tv)
{
ESP_LOGI(TAG, "SNTP synchronization completed! Unix Time: %lld", tv->tv_sec);
ESP_LOGI(TAG, "Time synchronization callback called.");
}
void app_main(void)
{
ESP_LOGI(TAG, "starting ...");
// Initialize NVS
esp_err_t ret = nvs_flash_init();
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND)
{
ESP_ERROR_CHECK(nvs_flash_erase());
ret = nvs_flash_init();
}
ESP_ERROR_CHECK(ret);
// TODO: Error handling!
// initOutputs();
// initInputs();
// initSafety();
// initControl();
initMetrics();
esp_sntp_setoperatingmode(SNTP_OPMODE_POLL);
esp_sntp_setservername(0, "10.1.0.1"); // Set first NTP server local router
sntp_set_time_sync_notification_cb(time_sync_notification_cb); // Register the SNTP time sync callback
esp_sntp_init();
while (1)
{
vTaskDelay(pdMS_TO_TICKS(1000));
// Print the current time
print_current_time();
ESP_LOGI(TAG, "SNTP Server 0 reachability: %i", esp_sntp_getreachability(0));
}
}