maxakuru / WBlinds

WiFi smart blinds controller for ESP32
MIT License
20 stars 1 forks source link

Build failing in VSCode with PlatformIO #26

Open xStatts opened 2 years ago

xStatts commented 2 years ago

Hi there,

This project is very impressive! What you've put together seems very powerful and easy to use, once the ESP32 is flashed. I'm very excited to have a go at putting this together, with the aim instead of having the stepper motor have a sprocket on it that turns the ball-cord for the roller blinds to be a bit more friendly to renters, whilst having HomeKit support!

However, I'm currently having some issues building the project in VSCode. First, I had to change the version number of the MQTT client to 0.9.0, as it seems that 0.8.2 doesn't exist any more. But now, when trying to build I get the following output, and my understanding of the dependencies/libraries here isn't deep enough to make a whole lot of sense. Any ides would be very appreciated! Apologies for console dump - happy to clean anything up if that makes it any easier.

*  Executing task: platformio run 

Processing esp32dev (platform: espressif32; board: esp32dev; framework: arduino)
------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (5.1.1) > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-arduinoespressif32 @ 3.20004.220825 (2.0.4) 
 - tool-esptoolpy @ 1.30300.0 (3.3.0) 
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch3
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ deep+, Compatibility ~ soft
Found 39 compatible libraries
Scanning dependencies...
Dependency Graph
|-- FastAccelStepper @ 0.23.5
|-- ArduinoJson @ 6.19.4
|-- AsyncTCP @ 1.1.1
|-- LittleFS_esp32 @ 1.0.6+sha.f0817ca
|   |-- FS @ 2.0.0
|-- ESP Async WebServer @ 1.2.3
|   |-- AsyncTCP @ 1.1.1
|   |-- FS @ 2.0.0
|   |-- WiFi @ 2.0.0
|-- AsyncMqttClient @ 0.9.0+sha.89bf464
|   |-- AsyncTCP @ 1.1.1
|-- FS @ 2.0.0
|-- WiFi @ 2.0.0
|-- homekit
|-- DNSServer @ 2.0.0
|   |-- WiFi @ 2.0.0
|-- ArduinoOTA @ 2.0.0
|   |-- WiFi @ 2.0.0
|   |-- Update @ 2.0.0
|   |-- ESPmDNS @ 2.0.0
|   |   |-- WiFi @ 2.0.0
|-- Update @ 2.0.0
Building in release mode
Compiling .pio/build/esp32dev/libaaf/FastAccelStepper/StepperISR_esp32.cpp.o
<command-line>: warning: ISO C++11 requires whitespace after the macro name
Compiling .pio/build/esp32dev/lib3fe/LittleFS_esp32/LITTLEFS.cpp.o
<command-line>: warning: ISO C++11 requires whitespace after the macro name
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp: In function 'void apply_command(StepperQueue*, const queue_entry*)':
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:110:27: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'status'; did you mean 'timer_status'?
   if (mcpwm->timer[timer].status.value <= 1) {  // mcpwm Timer is stopped ?
                           ^~~~~~
                           timer_status
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:111:25: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'period'
     mcpwm->timer[timer].period.upmethod = 0;    // 0 = immediate update, 1 = TEZ
                         ^~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:113:25: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'period'
     mcpwm->timer[timer].period.upmethod = 1;  // 0 = immediate update, 1 = TEZ
                         ^~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:115:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'period'
   mcpwm->timer[timer].period.period = ticks;
                       ^~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:118:12: error: 'struct mcpwm_dev_t' has no member named 'channel'
     mcpwm->channel[timer].generator[0].utea = 1;
            ^~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:170:12: error: 'struct mcpwm_dev_t' has no member named 'channel'
     mcpwm->channel[timer].generator[0].utea = 2;
            ^~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp: In function 'void init_stop(StepperQueue*)':
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:182:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'mode'
   mcpwm->timer[timer].mode.start = 0;  // 0: stop at TEZ
                       ^~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp: In function 'void mcpwm0_isr_service(void*)':
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:223:20: error: 'volatile union mcpwm_int_st_reg_t' has no member named 'cmpr0_tea_int_st'
   if (mcpwm.int_st.cmpr##TIMER##_tea_int_st != 0) {   \
                    ^~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:233:3: note: in expansion of macro 'MCPWM_SERVICE'
   MCPWM_SERVICE(MCPWM0, 0, 0);
   ^~~~~~~~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:223:20: error: 'volatile union mcpwm_int_st_reg_t' has no member named 'cmpr1_tea_int_st'
   if (mcpwm.int_st.cmpr##TIMER##_tea_int_st != 0) {   \
                    ^~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:234:3: note: in expansion of macro 'MCPWM_SERVICE'
   MCPWM_SERVICE(MCPWM0, 1, 1);
   ^~~~~~~~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:223:20: error: 'volatile union mcpwm_int_st_reg_t' has no member named 'cmpr2_tea_int_st'
   if (mcpwm.int_st.cmpr##TIMER##_tea_int_st != 0) {   \
                    ^~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:235:3: note: in expansion of macro 'MCPWM_SERVICE'
   MCPWM_SERVICE(MCPWM0, 2, 2);
   ^~~~~~~~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp: In function 'void mcpwm1_isr_service(void*)':
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:223:20: error: 'volatile union mcpwm_int_st_reg_t' has no member named 'cmpr0_tea_int_st'
   if (mcpwm.int_st.cmpr##TIMER##_tea_int_st != 0) {   \
                    ^~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:238:3: note: in expansion of macro 'MCPWM_SERVICE'
   MCPWM_SERVICE(MCPWM1, 0, 3);
   ^~~~~~~~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:223:20: error: 'volatile union mcpwm_int_st_reg_t' has no member named 'cmpr1_tea_int_st'
   if (mcpwm.int_st.cmpr##TIMER##_tea_int_st != 0) {   \
                    ^~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:239:3: note: in expansion of macro 'MCPWM_SERVICE'
   MCPWM_SERVICE(MCPWM1, 1, 4);
   ^~~~~~~~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:223:20: error: 'volatile union mcpwm_int_st_reg_t' has no member named 'cmpr2_tea_int_st'
   if (mcpwm.int_st.cmpr##TIMER##_tea_int_st != 0) {   \
                    ^~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:240:3: note: in expansion of macro 'MCPWM_SERVICE'
   MCPWM_SERVICE(MCPWM1, 2, 5);
   ^~~~~~~~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp: In member function 'void StepperQueue::init(uint8_t, uint8_t)':
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:288:55: error: 'PERIPH_PWM0_MODULE' was not declared in this scope
     periph_module_enable(mcpwm_unit == MCPWM_UNIT_0 ? PERIPH_PWM0_MODULE
                                                       ^~~~~~~~~~~~~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:288:55: note: suggested alternative: 'PERIPHS_IO_MUX_MTDO_U'
     periph_module_enable(mcpwm_unit == MCPWM_UNIT_0 ? PERIPH_PWM0_MODULE
                                                       ^~~~~~~~~~~~~~~~~~
                                                       PERIPHS_IO_MUX_MTDO_U
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:289:55: error: 'PERIPH_PWM1_MODULE' was not declared in this scope
                                                     : PERIPH_PWM1_MODULE);
                                                       ^~~~~~~~~~~~~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:289:55: note: suggested alternative: 'PERIPHS_IO_MUX_MTDO_U'
                                                     : PERIPH_PWM1_MODULE);
                                                       ^~~~~~~~~~~~~~~~~~
                                                       PERIPHS_IO_MUX_MTDO_U
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:288:5: error: 'periph_module_enable' was not declared in this scope
     periph_module_enable(mcpwm_unit == MCPWM_UNIT_0 ? PERIPH_PWM0_MODULE
     ^~~~~~~~~~~~~~~~~~~~
Compiling .pio/build/esp32dev/libfc2/WiFi/WiFiClient.cpp.o
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:288:5: note: suggested alternative: 'esp_intr_enable'
     periph_module_enable(mcpwm_unit == MCPWM_UNIT_0 ? PERIPH_PWM0_MODULE
     ^~~~~~~~~~~~~~~~~~~~
     esp_intr_enable
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:297:20: error: 'volatile union mcpwm_clk_cfg_reg_t' has no member named 'prescale'
     mcpwm->clk_cfg.prescale = 5 - 1;
                    ^~~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:299:12: error: 'struct mcpwm_dev_t' has no member named 'timer_sel'; did you mean 'timer'?
     mcpwm->timer_sel.operator0_sel = 0;  // timer 0 is input for operator 0
            ^~~~~~~~~
            timer
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:300:12: error: 'struct mcpwm_dev_t' has no member named 'timer_sel'; did you mean 'timer'?
     mcpwm->timer_sel.operator1_sel = 1;  // timer 1 is input for operator 1
            ^~~~~~~~~
            timer
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:301:12: error: 'struct mcpwm_dev_t' has no member named 'timer_sel'; did you mean 'timer'?
     mcpwm->timer_sel.operator2_sel = 2;  // timer 2 is input for operator 2
            ^~~~~~~~~
            timer
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:303:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'period'
   mcpwm->timer[timer].period.upmethod = 1;  // 0 = immediate update, 1 = TEZ
                       ^~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:304:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'period'
   mcpwm->timer[timer].period.prescale = TIMER_PRESCALER;
                       ^~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:305:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'period'
   mcpwm->timer[timer].period.period = 400;  // Random value
                       ^~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:306:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'mode'
   mcpwm->timer[timer].mode.mode = 3;        // 3=up/down counting
                       ^~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:307:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'mode'
   mcpwm->timer[timer].mode.start = 0;       // 0: stop at TEZ
                       ^~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:310:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'sync'
   mcpwm->timer[timer].sync.timer_phase = 0;  // prepare value of 0
                       ^~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:311:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'sync'
   mcpwm->timer[timer].sync.in_en = 1;        // enable sync
                       ^~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:312:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'sync'
   mcpwm->timer[timer].sync.sync_sw ^= 1;     // force a sync
                       ^~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:313:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'sync'
   mcpwm->timer[timer].sync.in_en = 0;        // disable sync
                       ^~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:315:10: error: 'struct mcpwm_dev_t' has no member named 'channel'
   mcpwm->channel[timer].cmpr_cfg.a_upmethod = 0;     // 0 = immediate update
          ^~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:316:10: error: 'struct mcpwm_dev_t' has no member named 'channel'
   mcpwm->channel[timer].cmpr_value[0].cmpr_val = 1;  // set compare value A
          ^~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:317:10: error: 'struct mcpwm_dev_t' has no member named 'channel'
   mcpwm->channel[timer].generator[0].val = 0;   // clear all trigger actions
          ^~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:318:10: error: 'struct mcpwm_dev_t' has no member named 'channel'
   mcpwm->channel[timer].generator[1].val = 0;   // clear all trigger actions
          ^~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:319:10: error: 'struct mcpwm_dev_t' has no member named 'channel'
   mcpwm->channel[timer].generator[0].dtep = 1;  // low at period
          ^~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:320:10: error: 'struct mcpwm_dev_t' has no member named 'channel'
   mcpwm->channel[timer].db_cfg.val = 0;         // edge delay disabled
          ^~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:321:10: error: 'struct mcpwm_dev_t' has no member named 'channel'
   mcpwm->channel[timer].carrier_cfg.val = 0;    // carrier disabled
          ^~~~~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp: In member function 'bool StepperQueue::isRunning()':
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:367:27: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'status'; did you mean 'timer_status'?
   if (mcpwm->timer[timer].status.value > 1) {
                           ^~~~~~
                           timer_status
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:370:31: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'mode'
   return (mcpwm->timer[timer].mode.start == 2);  // 2=run continuous
                               ^~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp: In member function 'void StepperQueue::commandAddedToQueue(bool)':
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:408:25: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'mode'
     mcpwm->timer[timer].mode.start = 2;  // 2=run continuous
                         ^~~~
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp: In member function 'int8_t StepperQueue::startPreparedQueue()':
.pio/libdeps/esp32dev/FastAccelStepper/src/StepperISR_esp32.cpp:418:23: error: 'volatile struct mcpwm_timer_regs_t' has no member named 'mode'
   mcpwm->timer[timer].mode.start = 2;  // 2=run continuous
                       ^~~~
Compiling .pio/build/esp32dev/libfc2/WiFi/WiFiGeneric.cpp.o
Compiling .pio/build/esp32dev/libfc2/WiFi/WiFiMulti.cpp.o
Compiling .pio/build/esp32dev/libfc2/WiFi/WiFiSTA.cpp.o
<command-line>: warning: ISO C++11 requires whitespace after the macro name
<command-line>: warning: ISO C++11 requires whitespace after the macro name
*** [.pio/build/esp32dev/libaaf/FastAccelStepper/StepperISR_esp32.cpp.o] Error 1
Compiling .pio/build/esp32dev/libfc2/WiFi/WiFiScan.cpp.o
Compiling .pio/build/esp32dev/libfc2/WiFi/WiFiServer.cpp.o
<command-line>: warning: ISO C++11 requires whitespace after the macro name
<command-line>: warning: ISO C++11 requires whitespace after the macro name
<command-line>: warning: ISO C++11 requires whitespace after the macro name
<command-line>: warning: ISO C++11 requires whitespace after the macro name
.pio/libdeps/esp32dev/LittleFS_esp32/src/LITTLEFS.cpp: In member function 'virtual bool LITTLEFSImpl::exists(const char*)':
.pio/libdeps/esp32dev/LittleFS_esp32/src/LITTLEFS.cpp:44:28: error: no matching function for call to 'LITTLEFSImpl::open(const char*&, const char [2])'
     File f = open(path, "r");
                            ^
In file included from .pio/libdeps/esp32dev/LittleFS_esp32/src/LITTLEFS.cpp:17:
/Users/myUser/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/vfs_api.h:38:17: note: candidate: 'virtual fs::FileImplPtr VFSImpl::open(const char*, const char*, bool)'
     FileImplPtr open(const char* path, const char* mode, const bool create) override;
                 ^~~~
/Users/myUser/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/vfs_api.h:38:17: note:   candidate expects 3 arguments, 2 provided
*** [.pio/build/esp32dev/lib3fe/LittleFS_esp32/LITTLEFS.cpp.o] Error 1
================================================================ [FAILED] Took 3.14 seconds ================================================================

Environment    Status    Duration
-------------  --------  ------------
esp32dev       FAILED    00:00:03.140
========================================================== 1 failed, 0 succeeded in 00:00:03.140 ==========================================================

 *  The terminal process "platformio 'run'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it. 
maxakuru commented 2 years ago

Hey @xStatts - glad something looks helpful here!

Could you try replacing lib_deps with pinned versions to start?

lib_deps = 
    gin66/FastAccelStepper@0.23.2
    bblanchon/ArduinoJson@6.18.0
    me-no-dev/AsyncTCP@1.0.3
    https://github.com/lorol/LITTLEFS.git
    me-no-dev/ESP Async WebServer@1.2.3
    https://github.com/marvinroger/async-mqtt-client.git @0.9.0

I'll have the machine with my previous build next week, I can check what versions I had pinned then & see how upgrading goes

xStatts commented 1 year ago

Thanks for your response! Apologies for the delay - have had a big house move.

Pinning lib_deps with those versions unfortunately gives the same output as before for me, where many errors are found within the FastAccelStepper src still, failing the build. Using different versions of FastAccelStepper released at around the same time gives some differing errors which is interesting, but never builds successfully. Let me know if I can send through any more info to assist!