From eb7f099ac8b5451ee92431c06800c0e34c21425a Mon Sep 17 00:00:00 2001 From: Vladyslav Heneraliuk Date: Thu, 21 Nov 2024 13:43:48 +0200 Subject: [PATCH 1/3] added test mode for JAAM 2 --- firmware/src/Definitions.h | 11 ++++++ firmware/src/JaamFirmware.cpp | 64 ++++++++++++++++++++++++++++++----- 2 files changed, 67 insertions(+), 8 deletions(-) diff --git a/firmware/src/Definitions.h b/firmware/src/Definitions.h index b0b347a9..0909b666 100644 --- a/firmware/src/Definitions.h +++ b/firmware/src/Definitions.h @@ -1,4 +1,5 @@ #define LITE 0 +#define TEST_MODE 0 #if LITE #define ARDUINO_OTA_ENABLED 0 #define FW_UPDATE_ENABLED 0 @@ -9,6 +10,16 @@ #define SHT3X_ENABLED 0 #define BH1750_ENABLED 0 #define BUZZER_ENABLED 0 +#elif TEST_MODE +#define ARDUINO_OTA_ENABLED 0 +#define FW_UPDATE_ENABLED 0 +#define HA_ENABLED 0 +#define DISPLAY_ENABLED 1 +#define BME280_ENABLED 1 +#define SHT2X_ENABLED 1 +#define SHT3X_ENABLED 1 +#define BH1750_ENABLED 1 +#define BUZZER_ENABLED 1 #else #define ARDUINO_OTA_ENABLED 0 #define FW_UPDATE_ENABLED 1 diff --git a/firmware/src/JaamFirmware.cpp b/firmware/src/JaamFirmware.cpp index 86f1141c..622ef6aa 100644 --- a/firmware/src/JaamFirmware.cpp +++ b/firmware/src/JaamFirmware.cpp @@ -50,7 +50,7 @@ struct Settings { int updateport = 8090; char bin_name[51] = ""; char identifier[51] = "github"; - int legacy = 1; + int legacy = 3; int pixelpin = 13; int bg_pixelpin = 0; int service_ledpin = 0; @@ -260,6 +260,7 @@ int currentDimDisplay = 0; #define SHORT_PRESS_TIME 500 // 500 milliseconds #define LONG_PRESS_TIME 500 // 500 milliseconds struct ButtonState { + char* name; int lastState = LOW; // the previous state from the input pin int currentState; // the current reading from the input pin unsigned long pressedTime = 0; @@ -1026,14 +1027,24 @@ void buttonUpdate(ButtonState &button, uint8_t pin, int mode, int modeLong) { long pressDuration = button.releasedTime - button.pressedTime; - if (pressDuration < SHORT_PRESS_TIME) singleClick(mode); + if (pressDuration < SHORT_PRESS_TIME) { +#if TEST_MODE + displayMessage("Single click!", button.name); +#else + singleClick(mode); +#endif + } } if (button.isPressing == true && button.isLongDetected == false) { long pressDuration = millis() - button.pressedTime; if (pressDuration > LONG_PRESS_TIME) { +#if TEST_MODE + displayMessage("Long click!", button.name); +#else longClick(modeLong); +#endif button.isLongDetected = true; } } @@ -1281,7 +1292,7 @@ void showLocalHum() { displayMessage(message, "Вологість"); } -void showLocalPresure() { +void showLocalPressure() { char message[12]; sprintf(message, "%.1fmmHg", climate.getPressure(settings.pressure_correction)); displayMessage(message, "Тиск"); @@ -1297,7 +1308,7 @@ void showLocalClimateInfo(int index) { return; } if (index <= 2 && climate.isPressureAvailable()) { - showLocalPresure(); + showLocalPressure(); return; } } @@ -3072,6 +3083,9 @@ void initSettings() { } void initLegacy() { +#if TEST_MODE + settings.legacy = 3; +#endif switch (settings.legacy) { case 0: Serial.println("Mode: jaam 1"); @@ -3130,8 +3144,10 @@ void initLegacy() { break; } pinMode(settings.buttonpin, INPUT_PULLUP); + button1.name = "Button 1"; if (isButton2Available()) { pinMode(settings.button2pin, INPUT_PULLUP); + button2.name = "Button 2"; } Serial.printf("Offset: %d\n", offset); } @@ -3422,6 +3438,31 @@ void initTime() { syncTime(7); } +void showLocalLightLevel() { + char message[10]; + sprintf(message, "%.1f lx", lightSensor.getLightLevel(settings.light_sensor_factor)); + displayMessage(message, "Освітлення"); +} + +void runSelfTests() { + mapFlag(); + playMelody(UA_ANTHEM); + servicePin(POWER, HIGH, true); + servicePin(WIFI, HIGH, true); + servicePin(DATA, HIGH, true); + servicePin(HA, HIGH, true); + servicePin(RESERVED, HIGH, true); + showLocalTemp(); + sleep(2); + showLocalHum(); + sleep(2); + showLocalPressure(); + sleep(2); + showLocalLightLevel(); + sleep(2); + displayMessage("Please test buttons"); +} + void setup() { Serial.begin(115200); @@ -3433,6 +3474,9 @@ void setup() { initStrip(); initDisplay(); initSensors(); +#if TEST_MODE + runSelfTests(); +#else initWifi(); initTime(); @@ -3451,22 +3495,26 @@ void setup() { asyncEngine.setInterval(lightSensorCycle, 2000); asyncEngine.setInterval(climateSensorCycle, 5000); asyncEngine.setInterval(calculateStates, 500); +#endif } void loop() { +#if TEST_MODE==0 wm.process(); asyncEngine.run(); #if ARDUINO_OTA_ENABLED ArduinoOTA.handle(); #endif - buttonUpdate(button1, settings.buttonpin, settings.button_mode, settings.button_mode_long); - if (isButton2Available()) { - buttonUpdate(button2, settings.button2pin, settings.button2_mode, settings.button2_mode_long); - } ha.loop(); client_websocket.poll(); syncTime(2); if (getCurrentMapMode() == 1 && settings.alarms_notify_mode == 2) { mapCycle(); } +#endif + + buttonUpdate(button1, settings.buttonpin, settings.button_mode, settings.button_mode_long); + if (isButton2Available()) { + buttonUpdate(button2, settings.button2pin, settings.button2_mode, settings.button2_mode_long); + } } From bb554f838c2a5e6fbb39e8dd4f089b9a5896bd5f Mon Sep 17 00:00:00 2001 From: Vladyslav Heneraliuk Date: Thu, 21 Nov 2024 14:11:38 +0200 Subject: [PATCH 2/3] fixed LITE build --- firmware/src/JaamFirmware.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/firmware/src/JaamFirmware.cpp b/firmware/src/JaamFirmware.cpp index 622ef6aa..d3615959 100644 --- a/firmware/src/JaamFirmware.cpp +++ b/firmware/src/JaamFirmware.cpp @@ -3444,6 +3444,7 @@ void showLocalLightLevel() { displayMessage(message, "Освітлення"); } +#if TEST_MODE void runSelfTests() { mapFlag(); playMelody(UA_ANTHEM); @@ -3462,6 +3463,7 @@ void runSelfTests() { sleep(2); displayMessage("Please test buttons"); } +#endif void setup() { Serial.begin(115200); From 8f199d34596573956054998eef053090ab6ccc5d Mon Sep 17 00:00:00 2001 From: Vladyslav Heneraliuk Date: Wed, 27 Nov 2024 12:46:50 +0200 Subject: [PATCH 3/3] added compile step for test_mode --- .github/workflows/compile.yml | 20 ++++++++++++++++++++ firmware/src/JaamFirmware.cpp | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index c6b3ccc5..bfd084fe 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -41,6 +41,26 @@ with: name: firmware-lite.bin path: ${{ github.workspace }}/firmware-lite.bin + compile_jaam2_test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Switch to TEST_MODE build + run: | + sed -i 's/#define LITE ./#define LITE 0/' ${{ github.workspace }}/firmware/src/Definitions.h + sed -i 's/#define TEST_MODE ./#define TEST_MODE 1/' ${{ github.workspace }}/firmware/src/Definitions.h + - name: Compile test firmware + uses: ./.github/workflows/firmware-compile + with: + project-folder: firmware + - name: Copy bin file + run: | + cp -f ${{ github.workspace }}/firmware/.pio/build/firmware/firmware.bin ${{ github.workspace }}/firmware-jaam2-test.bin + - name: Upload firmware lite + uses: actions/upload-artifact@v4 + with: + name: firmware-jaam2-test.bin + path: ${{ github.workspace }}/firmware-jaam2-test.bin # check_firmware: # runs-on: ubuntu-latest # steps: diff --git a/firmware/src/JaamFirmware.cpp b/firmware/src/JaamFirmware.cpp index d3615959..fd291c8c 100644 --- a/firmware/src/JaamFirmware.cpp +++ b/firmware/src/JaamFirmware.cpp @@ -50,7 +50,7 @@ struct Settings { int updateport = 8090; char bin_name[51] = ""; char identifier[51] = "github"; - int legacy = 3; + int legacy = 1; int pixelpin = 13; int bg_pixelpin = 0; int service_ledpin = 0;