thingsboard-client-sdk icon indicating copy to clipboard operation
thingsboard-client-sdk copied to clipboard

Provision device example not compiling

Open gittimotap opened this issue 3 years ago • 1 comments

Hi

For some reason https://github.com/thingsboard/thingsboard-arduino-sdk/blob/master/examples/0008-esp8266_provision_device/0008-esp8266_provision_device.ino is not compiling on Windows Arduino IDE 1.8.19 for FireBeetle ESP32. Error as follows: Arduino: 1.8.19 (Windows 10), Board: "FireBeetle ESP32-E, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, Core 1, Core 1, None" C:\Users\Timo\Documents\Arduino\Provision_test\Provision_test.ino:7: warning: "WIFI_AP" redefined #define WIFI_AP "Lemmiku IoT"

In file included from C:\Users\Timo\AppData\Local\Arduino15\packages\DFRobot\hardware\esp32\0.2.1\libraries\WiFi\src/WiFi.h:31, from C:\Users\Timo\Documents\Arduino\Provision_test\Provision_test.ino:4: C:\Users\Timo\AppData\Local\Arduino15\packages\DFRobot\hardware\esp32\0.2.1\libraries\WiFi\src/WiFiType.h:32: note: this is the location of the previous definition #define WIFI_AP WIFI_MODE_AP Provision_test:86:46: error: conversion from 'void(Provision_Data&)' {aka 'void(const ArduinoJson6194_F1::ObjectConstRef&)'} to non-scalar type 'const Provision_Callback' requested const Provision_Callback provisionCallback = processProvisionResponse; ^~~~~~~~~~~~~~~~~~~~~~~~ In file included from C:\Users\Timo\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Array/ArrayIterator.hpp:8, from C:\Users\Timo\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Array/ArrayRef.hpp:8, from C:\Users\Timo\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.hpp:24, from C:\Users\Timo\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.h:9, from C:\Users\Timo\Documents\Arduino\libraries\ThingsBoard\src/ThingsBoard.h:16, from C:\Users\Timo\Documents\Arduino\Provision_test\Provision_test.ino:2: C:\Users\Timo\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Variant/VariantRef.hpp: In instantiation of 'typename ArduinoJson6194_F1::enable_if<((! ArduinoJson6194_F1::is_same<T, char*>::value) && (! ArduinoJson6194_F1::is_same<T, char>::value)), T>::type ArduinoJson6194_F1::VariantConstRef::as() const [with T = ArduinoJson6194_F1::ObjectRef; typename ArduinoJson6194_F1::enable_if<((! ArduinoJson6194_F1::is_same<T, char*>::value) && (! ArduinoJson6194_F1::is_same<T, char>::value)), T>::type = ArduinoJson6194_F1::ObjectRef]': C:\Users\Timo\Documents\Arduino\Provision_test\Provision_test.ino:75:76: required from here C:\Users\Timo\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Variant/VariantRef.hpp:253:34: error: invalid use of incomplete type 'class ArduinoJson6194_F1::InvalidConversion<ArduinoJson6194_F1::VariantConstRef, ArduinoJson6194_F1::ObjectRef>' return Converter<T>::fromJson(*this); ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ In file included from C:\Users\Timo\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Variant/VariantRef.hpp:14, from C:\Users\Timo\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Array/ArrayIterator.hpp:8, from C:\Users\Timo\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Array/ArrayRef.hpp:8, from C:\Users\Timo\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.hpp:24, from C:\Users\Timo\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.h:9, from C:\Users\Timo\Documents\Arduino\libraries\ThingsBoard\src/ThingsBoard.h:16, from C:\Users\Timo\Documents\Arduino\Provision_test\Provision_test.ino:2: C:\Users\Timo\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Variant/Converter.hpp:14:7: note: declaration of 'class ArduinoJson6194_F1::InvalidConversion<ArduinoJson6194_F1::VariantConstRef, ArduinoJson6194_F1::ObjectRef>' class InvalidConversion; // Error here? See https://arduinojson.org/v6/invalid-conversion/ ^~~~~~~~~~~~~~~~~ Multiple libraries were found for "WiFi.h" Used: C:\Users\Timo\AppData\Local\Arduino15\packages\DFRobot\hardware\esp32\0.2.1\libraries\WiFi Not used: C:\Users\Timo\Documents\Arduino\libraries\WiFiEspAT Not used: C:\Program Files (x86)\Arduino\libraries\WiFi exit status 1 conversion from 'void(Provision_Data&)' {aka 'void(const ArduinoJson6194_F1::ObjectConstRef&)'} to non-scalar type 'const Provision_Callback' requested This report would have more information with "Show verbose output during compilation" option enabled in File -> Preferences.

gittimotap avatar Sep 28 '22 10:09 gittimotap

@OekoSolveMG could you take a look? Or @ashvayka @forGGe @ikulikov @ferchinas?

gittimotap avatar Oct 15 '22 11:10 gittimotap

Trying my luck here, as there's not too much interest in my issue :) Has anyone else gotten this to work? @JfloresIoTF @imbeacon @AdrienAdB @farmerkz @NgocThinhNTP18 @camiloconcha @kmilokeepex

gittimotap avatar Nov 21 '22 09:11 gittimotap

@gittimotap The fix for the example code needs to be fixed in two places, but luckily both fixes are simple:

// ...

// FIX #1
//
// We're dealing with const data
//
//JsonObject credentials_value = data["credentialsValue"].as<JsonObject>();
JsonObjectConst credentials_value = data["credentialsValue"].as<JsonObjectConst>();

// ...

// FIX #2
//
// Provision_Callback is a class that takes the callback as a constructor parameter
//
//const Provision_Callback provisionCallback = processProvisionResponse;
const Provision_Callback provisionCallback(processProvisionResponse);

// ...

EDIT: While this allows it to compile, I've yet to get the actual provisioning to work, but I'll try to update here whether I get it working or not.

Dids avatar Dec 05 '22 13:12 Dids

@imbeacon I think this issue can be closed, all examples now compile successfully and work with their corresponding boards.

MathewHDYT avatar Mar 13 '23 12:03 MathewHDYT