ArduinoIOTCloud - Update error?

I have been successfully using PlatformIO and coding for ArduinoIOTCloud for about 18 months withuout issue. Thank you - it is great!

However, I have now run into a problem whereby build fails, due to

.pio/libdeps/az-delivery-devkit-v4/ArduinoIoTCloud/src/utility/ota/OTA.h:65:36: error: ‘NetworkAdapter’ has not been declared

This problem was happening with my project but I have since used the ArduinoIoTCloud-Basic example sketch to prove it is not my code!

In the following output:

  • Executing task in folder AIoTC Test: C:\Users\mick.platformio\penv\Scripts\platformio.exe run

Processing az-delivery-devkit-v4 (platform: espressif32; board: az-delivery-devkit-v4; framework: arduino)
--------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via -v, --verbose option
CONFIGURATION: Redirecting...
PLATFORM: Espressif 32 (6.1.0) > AZ-Delivery ESP-32 Dev Kit C V4
HARDWARE: ESP32 240MHz, 520KB 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.20007.0 (2.0.7)
  • tool-esptoolpy @ 1.40500.0 (4.5.0)
  • toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
    LDF: Library Dependency Finder → Library Dependency Finder (LDF) — PlatformIO latest documentation
    LDF Modes: Finder ~ chain, Compatibility ~ strict
    Found 43 compatible libraries
    Scanning dependencies…
    Dependency Graph
    |-- ArduinoIoTCloud @ 1.11.0
    | |-- Arduino_ConnectionHandler @ 0.6.6
    | | |-- WiFi @ 2.0.0
    | | |-- Arduino_DebugUtils @ 1.4.0
    | |-- WiFi @ 2.0.0
    | |-- Arduino_DebugUtils @ 1.4.0
    | |-- WiFiClientSecure @ 2.0.0
    | | |-- WiFi @ 2.0.0
    | |-- ArduinoMqttClient @ 0.1.7
    |-- Arduino_ConnectionHandler @ 0.6.6
    | |-- WiFi @ 2.0.0
    | |-- Arduino_DebugUtils @ 1.4.0
    Building in release mode
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\ArduinoIoTCloudTCP.cpp.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i31_modpow.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i31_modpow2.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i31_montmul.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i31_mulacc.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i31_muladd.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i31_ninv31.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i31_reduce.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i31_rshift.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i31_sub.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i31_tmont.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_add.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_bitlen.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_decmod.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_decode.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_decred.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_div32.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_encode.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_fmont.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_iszero.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_modpow.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_montmul.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_mulacc.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_muladd.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_ninv32.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_reduce.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_sub.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i32_tmont.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\i62_modpow2.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\md5.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\md5sha1.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\mgf1.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\multihash.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\pemdec.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\pemenc.c.o
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\poly1305_ctmul.c.o
    In file included from .pio/libdeps/az-delivery-devkit-v4/ArduinoIoTCloud/src/ArduinoIoTCloudTCP.cpp:43:
    .pio/libdeps/az-delivery-devkit-v4/ArduinoIoTCloud/src/utility/ota/OTA.h:65:36: error: ‘NetworkAdapter’ has not been declared
    static int onRequest(String url, NetworkAdapter iface);
    ^~~~~~~~~~~~~~
    .pio/libdeps/az-delivery-devkit-v4/ArduinoIoTCloud/src/ArduinoIoTCloudTCP.cpp: In member function ‘ArduinoIoTCloudTCP::State ArduinoIoTCloudTCP::handle_Connected()’:
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\poly1305_ctmul32.c.o
    .pio/libdeps/az-delivery-devkit-v4/ArduinoIoTCloud/src/ArduinoIoTCloudTCP.cpp:582:60: error: ‘class ConnectionHandler’ has no member named ‘getInterface’
    _ota_error = OTA::onRequest(_ota_url, _connection->getInterface());
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\poly1305_ctmulq.c.o
    ^~~~~~~~~~~~
    Compiling .pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\tls\bearssl\poly1305_i15.c.o
    *** [.pio\build\az-delivery-devkit-v4\libb4e\ArduinoIoTCloud\ArduinoIoTCloudTCP.cpp.o] Error 1
    ==================================================== [FAILED] Took 26.60 seconds ====================================================
  • The terminal process “C:\Users\mick.platformio\penv\Scripts\platformio.exe ‘run’” terminated with exit code: 1.
  • Terminal will be reused by tasks, press any key to close it.

My platform.ini

[env:az-delivery-devkit-v4]
platform = espressif32
board = az-delivery-devkit-v4
framework = arduino

lib_ignore =
WiFiNINA

lib_compat_mode = strict
lib_deps =
arduino-libraries/ArduinoIoTCloud@^1.1.1
arduino-libraries/Arduino_ConnectionHandler@^0.6.4

upload_speed = 115200
monitor_speed = 115200
upload_port = COM25
monitor_port = COM25
monitor_filters =
esp32_exception_decoder

You will see it is loading the latest release of ArduinoIoTCloud @ 1.11.0
Reverting the ArduinoIoTCloud @ 1.10.0 gives an error for missing OTA.h. I recall this was a problem which was worked around by downloading a separate version of OTA.h and I found the solution to this problem in this forum - Thank you!

However, now reverting to ArduinoIoTCloud @ 1.9.0 now builds without error.

I would like to see if I can reproduce the same issue in Arduino IDE (V2.0), however I find that IDE unhelpful in fault analysis!

I’ll try to report it on the Arduino.cc site!

I raised the issue with Arduino Version 1.10.0 - Error in OTA.h · Issue #357 · arduino-libraries/ArduinoIoTCloud · GitHub

I was missing an update to Arduino_ConnectionHandler which was at 0.6.4 and should have been at 0.7.4

My bad! I thought PIO was doing updates automatically for me but Dependency Management — PlatformIO latest documentation corrected me!