将 Sparkfun ESP8266 Thing 连接到 Azure IoT 中心
Connecting Sparkfun ESP8266 Thing to Azure IoT Hub
我目前正在尝试将我的 Sparkfun ESP8266 Thing 连接到我的 Azure IoT 中心。我已成功设置我的集线器,并按照本教程学习如何将事物连接到我的 Azure IoT 集线器:https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-sparkfun-esp8266-thing-dev-get-started
不幸的是,我不断收到错误消息:
'StaticJsonBuffer' 未在此范围内声明
Arduino:1.8.5 (Windows 10),主板:"SparkFun ESP8266 Thing, 80 MHz, 512K (no SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"
构建选项已更改,正在重建所有
C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino: 在函数中 'bool readMessage(int, char*)':
消息:46:错误:'StaticJsonBuffer' 未在此范围内声明
StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;
^
C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino:46:5: 注意:建议替代:
在 C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson/StaticJsonDocument.hpp:8:0,
包含的文件中
from C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson.hpp:10,
from C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson.h:9,
from C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino:2:
C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson/Memory/StaticJsonBuffer.hpp:110:7: 注:'ArduinoJson::Internals::StaticJsonBuffer'
class StaticJsonBuffer : public Internals::StaticJsonBufferBase {
^
消息:46:错误:'jsonBuffer' 未在此范围内声明
StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;
^
消息:74:错误:'class ArduinoJson::JsonObject' 没有名为 'printTo'
的成员
root.printTo(payload, MESSAGE_MAX_LEN);
^
C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino: 在函数中'void parseTwinMessage(char*)':
消息:80:错误:'StaticJsonBuffer' 未在此范围内声明
StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;
^
C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino:80:5: 注意:建议替代:
在 C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson/StaticJsonDocument.hpp:8:0,
包含的文件中
from C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson.hpp:10,
from C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson.h:9,
from C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino:2:
C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson/Memory/StaticJsonBuffer.hpp:110:7: 注:'ArduinoJson::Internals::StaticJsonBuffer'
class StaticJsonBuffer : public Internals::StaticJsonBufferBase {
^
消息:80:错误:'jsonBuffer' 未在此范围内声明
StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;
^
消息:82:错误:'class ArduinoJson::JsonObject' 没有名为 'success'
的成员
if (!root.success())
^
消息:88:错误:'ArduinoJson::Internals::enable_if >::type' 没有名为 'success'
的成员
if (root["desired"]["interval"].success())
^
退出状态 1
'StaticJsonBuffer' 未在此范围内声明
这份报告将包含更多信息
"Show verbose output during compilation"
在文件 -> 首选项中启用选项。
我已将 DEVICE_ID 从 "SparkFun ESP8266 Thing Dev" 更改为 "SparkFun ESP8266 Thing",并且正在使用模拟数据。
如有任何帮助,我们将不胜感激!
出现此错误的原因是您安装的 ArduinoJson 版本 >= 6。将安装默认版本 6.2.3-beta,但从版本 6 及更高版本开始,JsonBuffer 已替换为 JsonDocument.错误消息中也指出:
C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino:46:5:
note: suggested alternative:
In file included from
C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson/StaticJsonDocument.hpp:8:0
要解决此问题,您可以回滚到以前的版本。版本 5.13.2 适合我。
引用issue on ArduinoJson repo and issue on iot-hub-feather-huzzah-client-app repo.
我目前正在尝试将我的 Sparkfun ESP8266 Thing 连接到我的 Azure IoT 中心。我已成功设置我的集线器,并按照本教程学习如何将事物连接到我的 Azure IoT 集线器:https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-sparkfun-esp8266-thing-dev-get-started
不幸的是,我不断收到错误消息:
'StaticJsonBuffer' 未在此范围内声明
Arduino:1.8.5 (Windows 10),主板:"SparkFun ESP8266 Thing, 80 MHz, 512K (no SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"
构建选项已更改,正在重建所有 C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino: 在函数中 'bool readMessage(int, char*)':
消息:46:错误:'StaticJsonBuffer' 未在此范围内声明
StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;
^
C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino:46:5: 注意:建议替代:
在 C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson/StaticJsonDocument.hpp:8:0,
包含的文件中 from C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson.hpp:10,
from C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson.h:9,
from C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino:2:
C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson/Memory/StaticJsonBuffer.hpp:110:7: 注:'ArduinoJson::Internals::StaticJsonBuffer'
class StaticJsonBuffer : public Internals::StaticJsonBufferBase {
^
消息:46:错误:'jsonBuffer' 未在此范围内声明
StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;
^
消息:74:错误:'class ArduinoJson::JsonObject' 没有名为 'printTo'
的成员 root.printTo(payload, MESSAGE_MAX_LEN);
^
C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino: 在函数中'void parseTwinMessage(char*)':
消息:80:错误:'StaticJsonBuffer' 未在此范围内声明
StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;
^
C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino:80:5: 注意:建议替代:
在 C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson/StaticJsonDocument.hpp:8:0,
包含的文件中 from C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson.hpp:10,
from C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson.h:9,
from C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino:2:
C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson/Memory/StaticJsonBuffer.hpp:110:7: 注:'ArduinoJson::Internals::StaticJsonBuffer'
class StaticJsonBuffer : public Internals::StaticJsonBufferBase {
^
消息:80:错误:'jsonBuffer' 未在此范围内声明
StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;
^
消息:82:错误:'class ArduinoJson::JsonObject' 没有名为 'success'
的成员 if (!root.success())
^
消息:88:错误:'ArduinoJson::Internals::enable_if >::type' 没有名为 'success'
的成员 if (root["desired"]["interval"].success())
^
退出状态 1 'StaticJsonBuffer' 未在此范围内声明
这份报告将包含更多信息 "Show verbose output during compilation" 在文件 -> 首选项中启用选项。
我已将 DEVICE_ID 从 "SparkFun ESP8266 Thing Dev" 更改为 "SparkFun ESP8266 Thing",并且正在使用模拟数据。
如有任何帮助,我们将不胜感激!
出现此错误的原因是您安装的 ArduinoJson 版本 >= 6。将安装默认版本 6.2.3-beta,但从版本 6 及更高版本开始,JsonBuffer 已替换为 JsonDocument.错误消息中也指出:
C:\Users\L.FULL\Documents\Arduino\iot-hub-SparkFun-ThingDev-client-app\app\message.ino:46:5: note: suggested alternative:
In file included from C:\Users\L.FULL\Documents\Arduino\libraries\arduino_172002\src/ArduinoJson/StaticJsonDocument.hpp:8:0
要解决此问题,您可以回滚到以前的版本。版本 5.13.2 适合我。
引用issue on ArduinoJson repo and issue on iot-hub-feather-huzzah-client-app repo.