Skip to content

Commit

Permalink
chore(various): enable unittests in ci, pin library versions, adapt w…
Browse files Browse the repository at this point in the history
…atchdog, remove magic numbers
  • Loading branch information
tspopp committed Oct 20, 2024
1 parent 5f6bac2 commit 6bf13d4
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 18 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@ jobs:
python-version: '3.9'
- name: Install PlatformIO Core
run: pip install --upgrade platformio

- name: Build PlatformIO Project
working-directory: ./AquaMQTT
run: pio run -e arduino_nano_esp32
- name: Run Unittest
working-directory: ./AquaMQTT
run: pio test -e native
14 changes: 13 additions & 1 deletion AquaMQTT/include/config/Configuration.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,22 @@ constexpr float KALMAN_EST_E = 0.1;
*/
constexpr float KALMAN_Q = 0.01;

/**
* Maximum Water Temperature: This value is used by BOOST or PV Modes.
* Change at your own risk, 62°C is the default value on a Windhager Aquawin Air 3 heat pump
*/
constexpr float MAX_WATER_TEMPERATURE = 62.0;

/**
* Water Temperature set during mode absence.
* Change at your own risk, 20°C is the default value on a Windhager Aquawin Air 3 heat pump
*/
constexpr float ABSENCE_WATER_TEMPERATURE = 20.0;

/**
* Self explanatory internal settings: most probably you don't want to change them.
*/
constexpr uint8_t WATCHDOG_TIMEOUT_S = 60;
constexpr uint32_t WATCHDOG_TIMEOUT_MS = 60000;
constexpr uint16_t WIFI_RECONNECT_CYCLE_S = 10;
constexpr uint8_t MQTT_MAX_TOPIC_SIZE = 80;
constexpr uint8_t MQTT_MAX_PAYLOAD_SIZE = 255;
Expand Down
19 changes: 10 additions & 9 deletions AquaMQTT/platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,13 @@ build_flags = -std=c++11
#upload_protocol = espota
#upload_port = 192.168.188.62
lib_deps =
locoduino/RingBuffer
FrankBoesing/FastCRC
PaulStoffregen/Time
256dpi/MQTT
adafruit/Adafruit BusIO
adafruit/RTClib
Wire
SPI
https://github.com/denyssene/SimpleKalmanFilter.git
locoduino/[email protected]
FrankBoesing/[email protected]
PaulStoffregen/[email protected]
256dpi/[email protected]
adafruit/Adafruit [email protected]
adafruit/[email protected]
[email protected]
[email protected]
https://github.com/denyssene/SimpleKalmanFilter.git#v0.2
[email protected]
2 changes: 1 addition & 1 deletion AquaMQTT/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ RTCHandler rtcHandler;
WifiHandler wifiHandler;

esp_task_wdt_config_t twdt_config = {
.timeout_ms = WATCHDOG_TIMEOUT_S * 1000,
.timeout_ms = WATCHDOG_TIMEOUT_MS,
.idle_core_mask = (1 << configNUM_CORES) - 1,
.trigger_panic = true,
};
Expand Down
13 changes: 7 additions & 6 deletions AquaMQTT/src/state/HMIStateProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ void HMIStateProxy::applyHMIOverrides(uint8_t* buffer)
message.setInstallationMode(message::HMIInstallation::INST_HP_ONLY);
message.setOperationType(message::HMIOperationType::ALWAYS_ON);
message.setOperationMode(message::HMIOperationMode::OM_ECO_INACTIVE);
message.setWaterTempTarget(62.0);
message.setWaterTempTarget(config::MAX_WATER_TEMPERATURE);
// do not use heat element
message.setEmergencyMode(false);
message.enableHeatingElement(false);
Expand All @@ -63,7 +63,7 @@ void HMIStateProxy::applyHMIOverrides(uint8_t* buffer)
message.setInstallationMode(message::HMIInstallation::INST_HP_ONLY);
message.setOperationType(message::HMIOperationType::ALWAYS_ON);
message.setOperationMode(message::HMIOperationMode::OM_ECO_INACTIVE);
message.setWaterTempTarget(62.0);
message.setWaterTempTarget(config::MAX_WATER_TEMPERATURE);
// just use heat element
message.enableHeatingElement(true);
message.setEmergencyMode(true);
Expand All @@ -72,12 +72,13 @@ void HMIStateProxy::applyHMIOverrides(uint8_t* buffer)
message.setInstallationMode(message::HMIInstallation::INST_HP_ONLY);
message.setOperationType(message::HMIOperationType::ALWAYS_ON);
message.setOperationMode(message::HMIOperationMode::OM_BOOST);
message.setWaterTempTarget(62.0);
message.setWaterTempTarget(config::MAX_WATER_TEMPERATURE);
break;
case AM_MODE_STANDARD:
{
// TODO: this sanity should be handled within message
if (mTargetTemperature != nullptr && *mTargetTemperature <= 62.0f && *mTargetTemperature >= 20.0f)
if (mTargetTemperature != nullptr && *mTargetTemperature <= config::MAX_WATER_TEMPERATURE
&& *mTargetTemperature >= config::ABSENCE_WATER_TEMPERATURE)
{
message.setWaterTempTarget(*mTargetTemperature);
}
Expand All @@ -94,11 +95,11 @@ void HMIStateProxy::applyHMIOverrides(uint8_t* buffer)
// Operation Mode BOOST overrides target temperature
if (*mOperationMode == message::HMIOperationMode::OM_BOOST)
{
message.setWaterTempTarget(62.0);
message.setWaterTempTarget(config::MAX_WATER_TEMPERATURE);
}
else if (*mOperationMode == message::HMIOperationMode::OM_ABSENCE)
{
message.setWaterTempTarget(20.0);
message.setWaterTempTarget(config::ABSENCE_WATER_TEMPERATURE);
}
}

Expand Down

0 comments on commit 6bf13d4

Please sign in to comment.