Files
smart-oil-heating-control-s…/main/control.h
2026-01-10 12:50:06 +01:00

71 lines
2.0 KiB
C

#pragma once
#include "sdkconfig.h"
#include <time.h>
#define MAX_TEMPERATURE_ENTRIES_PER_DAY 24U
#define RETURN_FLOW_TEMPERATURE_LOWER_LIMIT_DAY (CONFIG_TEMP_RETURN_FLOW_LOWER_LIMIT_DAY / 10.0f)
#define RETURN_FLOW_TEMPERATURE_LOWER_LIMIT_NIGHT (CONFIG_TEMP_RETURN_FLOW_LOWER_LIMIT_NIGHT / 10.0f)
#define CHAMBER_TEMPERATURE_TARGET (CONFIG_TEMP_CHAMBER_TARGET / 10.0f)
#define CHAMBER_TEMPERATURE_THRESHOLD (CONFIG_TEMP_CHAMBER_THRESHOLD / 10.0f)
#define SUMMER_MODE_TEMPERATURE_THRESHOLD_HIGH (CONFIG_TEMP_SUMMER_MODE_HIGH / 10.0f)
#define SUMMER_MODE_TEMPERATURE_THRESHOLD_LOW (CONFIG_TEMP_SUMMER_MODE_LOW / 10.0f)
#define CIRCULATION_PUMP_TEMPERATURE_THRESHOLD (CONFIG_TEMP_CIRCULATION_PUMP_THRESHOLD / 10.0f)
#define BURNER_FAULT_DETECTION_THRESHOLD CONFIG_BURNER_FAULT_DETECTION_SECONDS
typedef enum _ControlState
{
CONTROL_STARTING,
CONTROL_HEATING,
CONTROL_OUTDOOR_TOO_WARM,
CONTROL_RETURN_FLOW_TOO_WARM,
CONTROL_FAULT_BURNER,
CONTROL_FAULT_SAFETY,
CONTROL_FAULT_SNTP,
} eControlState;
typedef enum _BurnerState
{
BURNER_UNKNOWN, // Burner is disabled or state after enabling is still unkown
BURNER_FIRED, // Burner fired successfully
BURNER_FAULT // Burner was unable to fire successfully
} eBurnerState;
typedef enum _ControlWeekday
{
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY,
} eControlWeekday;
typedef struct _ControlTimestamp
{
uint8_t hour;
uint8_t minute;
} sControlTimestamp;
typedef struct _ControlTemperatureEntry
{
sControlTimestamp timestamp;
float fReturnFlowTemperature;
float fChamberTemperature;
} sControlTemperatureEntry;
typedef struct _ControlDay
{
eControlWeekday day;
size_t entryCount; // number of entries for each day
sControlTemperatureEntry aTemperatureEntries[MAX_TEMPERATURE_ENTRIES_PER_DAY];
} sControlDay;
void initControl(void);
eControlState getControlState(void);
eControlWeekday getControlCurrentWeekday(void);
sControlTemperatureEntry getControlCurrentTemperatureEntry(void);