homieiot / homie-esp8266

💡 ESP8266 framework for Homie, a lightweight MQTT convention for the IoT
http://homieiot.github.io/homie-esp8266
MIT License
1.36k stars 308 forks source link

ArduinoJSON >= 5.11.0 not working #361

Closed dnns19 closed 7 years ago

dnns19 commented 7 years ago

The latest version of ArduinoJSON (5.11.0) is not compatible with Homie version v2.0.0-beta.1.

claybar commented 7 years ago

I am getting this too. Build output below.

Explicitly setting the ArduinoJson dependancy version to v5.10.1 complies happily.

.piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp: In member function 'void HomieInternals::BootConfig::_generateNetworksJson()':
.piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp:156:147: error: use of deleted function 'ArduinoJson::DynamicJsonBufferBase<ArduinoJson::DefaultAllocator>::DynamicJsonBufferBase(const ArduinoJson::DynamicJsonBufferBase<ArduinoJson::DefaultAllocator>&)'
DynamicJsonBuffer generatedJsonBuffer = DynamicJsonBuffer(JSON_OBJECT_SIZE(1) + JSON_ARRAY_SIZE(_ssidCount) + (_ssidCount * JSON_OBJECT_SIZE(3)));  // 1 at root, 3 in childrend
^
In file included from .piolibdeps/ArduinoJson/src/ArduinoJson.hpp:10:0,
from .piolibdeps/ArduinoJson/src/ArduinoJson.h:10,
from .piolibdeps/Homie/src/Homie/Boot/BootConfig.hpp:10,
from .piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp:1:
.piolibdeps/ArduinoJson/src/ArduinoJson/DynamicJsonBuffer.hpp:36:7: note: 'ArduinoJson::DynamicJsonBufferBase<ArduinoJson::DefaultAllocator>::DynamicJsonBufferBase(const ArduinoJson::DynamicJsonBufferBase<ArduinoJson::DefaultAllocator>&)' is implicitly deleted because the default definition would be ill-formed:
class DynamicJsonBufferBase
^
.piolibdeps/ArduinoJson/src/ArduinoJson/DynamicJsonBuffer.hpp:36:7: error: use of deleted function 'ArduinoJson::JsonBufferBase<ArduinoJson::DynamicJsonBufferBase<ArduinoJson::DefaultAllocator> >::JsonBufferBase(const ArduinoJson::JsonBufferBase<ArduinoJson::DynamicJsonBufferBase<ArduinoJson::DefaultAllocator> >&)'
In file included from .piolibdeps/ArduinoJson/src/ArduinoJson/DynamicJsonBuffer.hpp:10:0,
from .piolibdeps/ArduinoJson/src/ArduinoJson.hpp:10,
from .piolibdeps/ArduinoJson/src/ArduinoJson.h:10,
from .piolibdeps/Homie/src/Homie/Boot/BootConfig.hpp:10,
from .piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp:1:
.piolibdeps/ArduinoJson/src/ArduinoJson/JsonBufferBase.hpp:24:7: note: 'ArduinoJson::JsonBufferBase<ArduinoJson::DynamicJsonBufferBase<ArduinoJson::DefaultAllocator> >::JsonBufferBase(const ArduinoJson::JsonBufferBase<ArduinoJson::DynamicJsonBufferBase<ArduinoJson::DefaultAllocator> >&)' is implicitly deleted because the default definition would be ill-formed:
class JsonBufferBase : public JsonBuffer {
^
.piolibdeps/ArduinoJson/src/ArduinoJson/JsonBufferBase.hpp:24:7: error: use of deleted function 'ArduinoJson::JsonBuffer::JsonBuffer(const ArduinoJson::JsonBuffer&)'
In file included from .piolibdeps/ArduinoJson/src/ArduinoJson/Deserialization/JsonParser.hpp:10:0,
from .piolibdeps/ArduinoJson/src/ArduinoJson/JsonBufferBase.hpp:10,
from .piolibdeps/ArduinoJson/src/ArduinoJson/DynamicJsonBuffer.hpp:10,
from .piolibdeps/ArduinoJson/src/ArduinoJson.hpp:10,
from .piolibdeps/ArduinoJson/src/ArduinoJson.h:10,
from .piolibdeps/Homie/src/Homie/Boot/BootConfig.hpp:10,
from .piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp:1:
.piolibdeps/ArduinoJson/src/ArduinoJson/Deserialization/../JsonBuffer.hpp:38:7: note: 'ArduinoJson::JsonBuffer::JsonBuffer(const ArduinoJson::JsonBuffer&)' is implicitly deleted because the default definition would be ill-formed:
class JsonBuffer : Internals::NonCopyable {
^
In file included from .piolibdeps/ArduinoJson/src/ArduinoJson/Deserialization/../JsonBuffer.hpp:14:0,
from .piolibdeps/ArduinoJson/src/ArduinoJson/Deserialization/JsonParser.hpp:10,
from .piolibdeps/ArduinoJson/src/ArduinoJson/JsonBufferBase.hpp:10,
from .piolibdeps/ArduinoJson/src/ArduinoJson/DynamicJsonBuffer.hpp:10,
from .piolibdeps/ArduinoJson/src/ArduinoJson.hpp:10,
from .piolibdeps/ArduinoJson/src/ArduinoJson.h:10,
from .piolibdeps/Homie/src/Homie/Boot/BootConfig.hpp:10,
from .piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp:1:
.piolibdeps/ArduinoJson/src/ArduinoJson/Deserialization/../Data/NonCopyable.hpp:20:3: error: 'ArduinoJson::Internals::NonCopyable::NonCopyable(const ArduinoJson::Internals::NonCopyable&)' is private
NonCopyable(const NonCopyable&);
^
In file included from .piolibdeps/ArduinoJson/src/ArduinoJson/Deserialization/JsonParser.hpp:10:0,
from .piolibdeps/ArduinoJson/src/ArduinoJson/JsonBufferBase.hpp:10,
from .piolibdeps/ArduinoJson/src/ArduinoJson/DynamicJsonBuffer.hpp:10,
from .piolibdeps/ArduinoJson/src/ArduinoJson.hpp:10,
from .piolibdeps/ArduinoJson/src/ArduinoJson.h:10,
from .piolibdeps/Homie/src/Homie/Boot/BootConfig.hpp:10,
from .piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp:1:
.piolibdeps/ArduinoJson/src/ArduinoJson/Deserialization/../JsonBuffer.hpp:38:7: error: within this context
class JsonBuffer : Internals::NonCopyable {
^
.piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp: In member function 'void HomieInternals::BootConfig::_onDeviceInfoRequest()':
.piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp:262:225: error: use of deleted function 'ArduinoJson::DynamicJsonBufferBase<ArduinoJson::DefaultAllocator>::DynamicJsonBufferBase(const ArduinoJson::DynamicJsonBufferBase<ArduinoJson::DefaultAllocator>&)'
DynamicJsonBuffer jsonBuffer = DynamicJsonBuffer(JSON_OBJECT_SIZE(5) + JSON_OBJECT_SIZE(2) + JSON_ARRAY_SIZE(numNodes) + (numNodes * JSON_OBJECT_SIZE(2)) + JSON_ARRAY_SIZE(numSettings) + (numSettings * JSON_OBJECT_SIZE(5)));
^
*** [.pioenvs/wemos_d1_mini/lib/Homie/Homie/Boot/BootConfig.o] Error 1
marvinroger commented 7 years ago

ArduinoJson is following semver, it should not break on minor version bump. Can you please open an issue on the ArduinoJson issue tracker and link it to this one?

Le 27 juin 2017 12:22 PM, "Philip Barclay" notifications@github.com a écrit :

I am getting this too. Build output below.

Explicitly setting the ArduinoJson dependancy version to v5.10.1 complies happily.

.piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp: In member function 'void HomieInternals::BootConfig::_generateNetworksJson()': .piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp:156:147: error: use of deleted function 'ArduinoJson::DynamicJsonBufferBase::DynamicJsonBufferBase(const ArduinoJson::DynamicJsonBufferBase&)' DynamicJsonBuffer generatedJsonBuffer = DynamicJsonBuffer(JSON_OBJECT_SIZE(1) + JSON_ARRAY_SIZE(_ssidCount) + (_ssidCount JSON_OBJECT_SIZE(3))); // 1 at root, 3 in childrend ^ In file included from .piolibdeps/ArduinoJson/src/ArduinoJson.hpp:10:0, from .piolibdeps/ArduinoJson/src/ArduinoJson.h:10, from .piolibdeps/Homie/src/Homie/Boot/BootConfig.hpp:10, from .piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp:1: .piolibdeps/ArduinoJson/src/ArduinoJson/DynamicJsonBuffer.hpp:36:7: note: 'ArduinoJson::DynamicJsonBufferBase::DynamicJsonBufferBase(const ArduinoJson::DynamicJsonBufferBase&)' is implicitly deleted because the default definition would be ill-formed: class DynamicJsonBufferBase ^ .piolibdeps/ArduinoJson/src/ArduinoJson/DynamicJsonBuffer.hpp:36:7: error: use of deleted function 'ArduinoJson::JsonBufferBase<ArduinoJson::DynamicJsonBufferBase >::JsonBufferBase(const ArduinoJson::JsonBufferBase<ArduinoJson::DynamicJsonBufferBase >&)' In file included from .piolibdeps/ArduinoJson/src/ArduinoJson/DynamicJsonBuffer.hpp:10:0, from .piolibdeps/ArduinoJson/src/ArduinoJson.hpp:10, from .piolibdeps/ArduinoJson/src/ArduinoJson.h:10, from .piolibdeps/Homie/src/Homie/Boot/BootConfig.hpp:10, from .piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp:1: .piolibdeps/ArduinoJson/src/ArduinoJson/JsonBufferBase.hpp:24:7: note: 'ArduinoJson::JsonBufferBase<ArduinoJson::DynamicJsonBufferBase >::JsonBufferBase(const ArduinoJson::JsonBufferBase<ArduinoJson::DynamicJsonBufferBase >&)' is implicitly deleted because the default definition would be ill-formed: class JsonBufferBase : public JsonBuffer { ^ .piolibdeps/ArduinoJson/src/ArduinoJson/JsonBufferBase.hpp:24:7: error: use of deleted function 'ArduinoJson::JsonBuffer::JsonBuffer(const ArduinoJson::JsonBuffer&)' In file included from .piolibdeps/ArduinoJson/src/ArduinoJson/Deserialization/JsonParser.hpp:10:0, from .piolibdeps/ArduinoJson/src/ArduinoJson/JsonBufferBase.hpp:10, from .piolibdeps/ArduinoJson/src/ArduinoJson/DynamicJsonBuffer.hpp:10, from .piolibdeps/ArduinoJson/src/ArduinoJson.hpp:10, from .piolibdeps/ArduinoJson/src/ArduinoJson.h:10, from .piolibdeps/Homie/src/Homie/Boot/BootConfig.hpp:10, from .piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp:1: .piolibdeps/ArduinoJson/src/ArduinoJson/Deserialization/../JsonBuffer.hpp:38:7: note: 'ArduinoJson::JsonBuffer::JsonBuffer(const ArduinoJson::JsonBuffer&)' is implicitly deleted because the default definition would be ill-formed: class JsonBuffer : Internals::NonCopyable { ^ In file included from .piolibdeps/ArduinoJson/src/ArduinoJson/Deserialization/../JsonBuffer.hpp:14:0, from .piolibdeps/ArduinoJson/src/ArduinoJson/Deserialization/JsonParser.hpp:10, from .piolibdeps/ArduinoJson/src/ArduinoJson/JsonBufferBase.hpp:10, from .piolibdeps/ArduinoJson/src/ArduinoJson/DynamicJsonBuffer.hpp:10, from .piolibdeps/ArduinoJson/src/ArduinoJson.hpp:10, from .piolibdeps/ArduinoJson/src/ArduinoJson.h:10, from .piolibdeps/Homie/src/Homie/Boot/BootConfig.hpp:10, from .piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp:1: .piolibdeps/ArduinoJson/src/ArduinoJson/Deserialization/../Data/NonCopyable.hpp:20:3: error: 'ArduinoJson::Internals::NonCopyable::NonCopyable(const ArduinoJson::Internals::NonCopyable&)' is private NonCopyable(const NonCopyable&); ^ In file included from .piolibdeps/ArduinoJson/src/ArduinoJson/Deserialization/JsonParser.hpp:10:0, from .piolibdeps/ArduinoJson/src/ArduinoJson/JsonBufferBase.hpp:10, from .piolibdeps/ArduinoJson/src/ArduinoJson/DynamicJsonBuffer.hpp:10, from .piolibdeps/ArduinoJson/src/ArduinoJson.hpp:10, from .piolibdeps/ArduinoJson/src/ArduinoJson.h:10, from .piolibdeps/Homie/src/Homie/Boot/BootConfig.hpp:10, from .piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp:1: .piolibdeps/ArduinoJson/src/ArduinoJson/Deserialization/../JsonBuffer.hpp:38:7: error: within this context class JsonBuffer : Internals::NonCopyable { ^ .piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp: In member function 'void HomieInternals::BootConfig::_onDeviceInfoRequest()': .piolibdeps/Homie/src/Homie/Boot/BootConfig.cpp:262:225: error: use of deleted function 'ArduinoJson::DynamicJsonBufferBase::DynamicJsonBufferBase(const ArduinoJson::DynamicJsonBufferBase&)' DynamicJsonBuffer jsonBuffer = DynamicJsonBuffer(JSON_OBJECT_SIZE(5) + JSON_OBJECT_SIZE(2) + JSON_ARRAY_SIZE(numNodes) + (numNodes JSON_OBJECT_SIZE(2)) + JSON_ARRAY_SIZE(numSettings) + (numSettings * JSON_OBJECT_SIZE(5))); ^ *** [.pioenvs/wemos_d1_mini/lib/Homie/Homie/Boot/BootConfig.o] Error 1

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/marvinroger/homie-esp8266/issues/361#issuecomment-311317342, or mute the thread https://github.com/notifications/unsubscribe-auth/AA8eNbgA1NXQRjnjwibtqvP_ejV4Su6Gks5sINfugaJpZM4OFTy0 .

kylegordon commented 7 years ago

Done. See above. This also affects stable/v1.5

marvinroger commented 7 years ago

Fixed by #362, thanks a lot to @bblanchon!

philbarclay commented 7 years ago

Can this fix be applied against develop rather than master? The master branch seems to be well behind develop.

tigert commented 6 years ago

I got hit by this issue when I followed the getting started instructions for Platformio. Maybe there should be a maintenance release that fixes the issue as everything fails to build.

"pio lib install 555" pulls 1.5.0 that is missing the fix.

(I got it to work by installing the lib from the git repo: pio lib install git@github.com:marvinroger/homie-esp8266.git - it pulls the develop branch)