ff16e601fb364c8e21e7626998d412ed5d19f57d3078206597a3de640d418f50
				
			
			
		
	smart-oil-heating-control-system
Software
Design
classDiagram
Inputs <|-- Control
Outputs <|-- Control
Sntp <|-- Control
Inputs <|-- Safety
Outputs <|--|> Safety
Inputs <|-- Metrics
Outputs <|-- Metrics
Control <|-- Metrics
Safety <|-- Metrics
Sntp <|-- Metrics
    class Inputs{
        +initInputs()
        -taskInput()
        +getChamberTemperature()
        +getOutdoorTemperature()
        +getInletFlowTemperature()
        +getReturnFlowTemperature()
        +getBurnerError()
    }
    class Outputs{
        +initOutputs()
        +getCirculationPumpState()
        +setCirculationPumpState()
        +getBurnerState()
        +setBurnerState()
        +getSafetyControlState()
        +setSafetyControlState()
    }
    class Control{
        +taskControl()
        -controlTable
        +getControlState()
    }
    class Safety{
        +initSafety()
        -taskSafety()
        -setSafeState()
        -checkSensorSanity()
        +getSensorSanityStates()
        +getSafetyState()
    }
    class Wifi{
        +initWifi()
    }
    class Sntp{
        +initSntp()
        +getSntpState()
    }
    class Metrics{
        +initMetrics()
        -taskMetrics()
        -metrics
        +event_handler()
        +connect_wifi()
        +setMetrics()
    }
Prometheus Metrics
curl http://X.X.X.X:9100/metrics
Example
burner_fault_pending 1
circulation_pump_enabled 0
burner_enabled 1
safety_contact_enabled 1
chamber_temperature 21.812500
chamber_temperature_avg10 21.837500
chamber_temperature_avg60 21.825521
inlet_flow_temperature 22.437500
inlet_flow_temperature_avg10 22.437500
inlet_flow_temperature_avg60 22.434896
outdoor_temperature 21.937500
outdoor_temperature_avg10 21.937500
outdoor_temperature_avg60 21.933594
return_flow_temperature 22.375000
return_flow_temperature_avg10 22.375000
return_flow_temperature_avg60 22.375000
chamber_temperature_state 0
outdoor_temperature_state 0
inlet_flow_temperature_state 0
return_flow_temperature_state 0
safety_state 0
control_state 5
sntp_state 0
system_unixtime 1734814285
uptime_seconds 90
wifi_rssi -63
Status Encoding
Digital Themperatur Sensor DS10B20
- chamber_temperature_state
- outdoor_temperature_state
- inlet_flow_temperature_state
- return_flow_temperature_state
| Enum eSensorErrorState in safety.h | Value | Description | 
|---|---|---|
| SENSOR_NO_ERROR | 0 | |
| SENSOR_TOO_HIGH | 1 | Sanity check failed | 
| SENSOR_TOO_LOW | 2 | Sanity check failed | 
| SENSOR_UNCHANGED | 3 | Sanity check failed | 
| SENSOR_NOT_FOUND | 4 | No Communication | 
Safety Loop
- safety_state
| Enum eSafetyState in safety.h | Value | Description | 
|---|---|---|
| SAFETY_NO_ERROR | 0 | |
| SAFETY_SENSOR_ERROR | 1 | At least one sensor failed | 
| SAFETY_INTERNAL_ERROR | 2 | Internal error | 
Control Loop
- control_state
| Enum eControlState in control.h | Value | Description | 
|---|---|---|
| CONTROL_STARTING | 0 | |
| CONTROL_HEATING | 1 | Burner running | 
| CONTROL_OUTDOOR_TOO_WARM | 2 | Heating not needed | 
| CONTROL_RETURN_FLOW_TOO_WARM | 3 | Heating not needed | 
| CONTROL_BURNER_FAULT | 4 | Burner reported fault | 
| CONTROL_FAULT_SAFETY | 5 | Unable to control due safety fault | 
| CONTROL_FAULT_SNTP | 6 | Unable to control due SNTP fault | 
SNTP Client
- sntp_state
| Enum eSntpState in sntp.h | Value | Description | 
|---|---|---|
| SYNC_SUCCESSFUL | 0 | |
| SYNC_NOT_STARTED | 1 | |
| SYNC_FAILED | 2 | 
Hardware
| Function | ESP32 | PLC ES32C14 | 
|---|---|---|
| Output CirculationPump | IO27 | Relay 1 NC1 | 
| Output Burner Fire Signal | IO14 | Relay 2 NC2 | 
| Output Safety Contact (powers Burner) | IO12 | Relay 3 NC2 | 
| Input Burner Fault | IO19 | Digital Input IN1 | 
| Input Temperature DS10B20 | IO04 | 1-Wire | 
					Languages
				
				
								
								
									C
								
								98.9%
							
						
							
								
								
									CMake
								
								1.1%