将Sparkfun ESP8266连接到Azure IoT中心

时间:2018-07-27 09:54:16

标签: azure arduino esp8266 azure-iot-hub arduino-ide

我当前正在尝试将Sparkfun ESP8266东西连接到我的Azure IoT中心。我已经成功设置了集线器,并且正在按照有关如何将Thing连接到我的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,80 MHz,512K(无SPIFFS),v2较低内存,禁用,无,仅草图,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'

StaticJsonBuffer类:public Internals :: StaticJsonBufferBase {

   ^

消息:46:错误:未在此范围内声明“ jsonBuffer”

 StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;

                                   ^

消息:74:错误:“类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'

StaticJsonBuffer类:public Internals :: StaticJsonBufferBase {

   ^

消息:80:错误:未在此范围内声明“ jsonBuffer”

 StaticJsonBuffer<MESSAGE_MAX_LEN> jsonBuffer;

                                   ^

消息:82:错误:“类ArduinoJson :: JsonObject”没有名为“成功”的成员

 if (!root.success())

           ^

消息:88:错误:'ArduinoJson :: Internals :: enable_if> :: type'没有名为'success'的成员

 if (root["desired"]["interval"].success())

                                 ^

退出状态1 未在此范围内声明“ StaticJsonBuffer”

此报告将包含更多信息 “在编译期间显示详细输出” 文件->首选项中启用了此选项。

我已将DEVICE_ID从“ SparkFun ESP8266 Thing Dev”更改为“ SparkFun ESP8266 Thing”,并且正在使用模拟数据。

对此将提供任何帮助!

1 个答案:

答案 0 :(得分:1)

此错误的原因是您安装了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:   注意:建议的替代方法

     

包含在以下文件中   C:\ Users \ L.FULL \ Documents \ Arduino \ libraries \ arduino_172002 \ src / ArduinoJson / StaticJsonDocument .hpp:8:0

要解决此问题,您可以回滚到以前的版本。版本5.13.2适用于我。

参考issue on ArduinoJson repoissue on iot-hub-feather-huzzah-client-app repo