cleanup README
This commit is contained in:
101
README.md
101
README.md
@ -1,84 +1,13 @@
|
|||||||
# smart-oil-heating-control-system
|
# Smart Oil Heating Control System
|
||||||
|
|
||||||
## Software
|
ESP32-based control system for oil-fired central heating with schedule-based temperature management, safety monitoring, and Prometheus metrics export.
|
||||||
### Design
|
|
||||||
|
|
||||||
```mermaid
|
## Features
|
||||||
classDiagram
|
|
||||||
Inputs <|-- Control
|
|
||||||
Outputs <|-- Control
|
|
||||||
Sntp <|-- Control
|
|
||||||
Inputs <|-- Safety
|
|
||||||
Outputs <|--|> Safety
|
|
||||||
|
|
||||||
Inputs <|-- Metrics
|
- **Schedule Control**: Day/night temperature targets per weekday
|
||||||
Outputs <|-- Metrics
|
- **Summer Mode**: Automatic heating disable based on outdoor temperature
|
||||||
Control <|-- Metrics
|
- **Safety Monitoring**: Sensor sanity checks with automatic safe-state fallback
|
||||||
Safety <|-- Metrics
|
- **Prometheus Metrics**: HTTP endpoint at port 9100
|
||||||
Sntp <|-- Metrics
|
|
||||||
|
|
||||||
class Inputs{
|
|
||||||
+initInputs()
|
|
||||||
-initMeasurement()
|
|
||||||
-updateAverage()
|
|
||||||
-updatePrediction()
|
|
||||||
-taskInput()
|
|
||||||
-linearRegressionPredict()
|
|
||||||
+getChamberTemperature()
|
|
||||||
+getOutdoorTemperature()
|
|
||||||
+getInletFlowTemperature()
|
|
||||||
+getReturnFlowTemperature()
|
|
||||||
+getBurnerError()
|
|
||||||
}
|
|
||||||
|
|
||||||
class Outputs{
|
|
||||||
+initOutputs()
|
|
||||||
+getCirculationPumpState()
|
|
||||||
+setCirculationPumpState()
|
|
||||||
+getBurnerState()
|
|
||||||
+setBurnerState()
|
|
||||||
+getSafetyControlState()
|
|
||||||
+setSafetyControlState()
|
|
||||||
}
|
|
||||||
|
|
||||||
class Control{
|
|
||||||
initControl()
|
|
||||||
+taskControl()
|
|
||||||
+getControlCurrentWeekday()
|
|
||||||
-findControlCurrentTemperatureEntry()
|
|
||||||
+getControlCurrentTemperatureEntry()
|
|
||||||
-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
|
### Prometheus Metrics
|
||||||
`curl http://X.X.X.X:9100/metrics`
|
`curl http://X.X.X.X:9100/metrics`
|
||||||
@ -180,4 +109,20 @@ wifi_rssi -72
|
|||||||
| Input Burner Fault | IO19 | Digital Input IN1 |
|
| Input Burner Fault | IO19 | Digital Input IN1 |
|
||||||
| Input Temperature DS10B20 | IO04 | 1-Wire |
|
| Input Temperature DS10B20 | IO04 | 1-Wire |
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
All parameters configurable via `idf.py menuconfig`:
|
||||||
|
- WiFi credentials and static IP
|
||||||
|
- GPIO pin assignments
|
||||||
|
- 1-Wire sensor addresses
|
||||||
|
- Temperature thresholds and limits
|
||||||
|
- Heating schedule (day/night per weekday)
|
||||||
|
- Damping factors
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
```bash
|
||||||
|
idf.py set-target esp32
|
||||||
|
idf.py menuconfig # Configure settings
|
||||||
|
idf.py build flash monitor
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user