我通过Arduino Uno v3和Sparkfun WiFly屏蔽将传感器数据传送到xively API时出现问题。问题不在于硬件或WiFly屏蔽库中,因为我可以将数据传送到Paraimpu服务器。Arduino + WiFly屏蔽层未能与xively进行通信
最根本的问题是xively库不能与sparkfun WiFly库一起使用。有关声明(文档中通过xively建议)是:
WiFlyClient client;
XivelyClient xivelyclient(client);
这不会起作用,因为WiFlyClient声明需要一个服务器和端口,所以我修改这:
byte server[] = {173,203,98,29}; //api.xively.com IP address
WiFlyClient client(server,80);
XivelyClient xivelyclient(client);
这给了我
Xively_sketch2_aug20a:上的编译错误60:错误:用于调用 'XivelyClient :: XivelyClient(WiFlyClient &)' /用户/ paultravers /文档/阿尔杜伊诺/库/ xively /僖没有匹配的功能velyClient.h:11:注意:考生:XivelyClient :: XivelyClient(客户&) /Users/paultravers/Documents/Arduino/libraries/xively/XivelyClient.h:9:注意:XivelyClient :: XivelyClient(常量XivelyClient &)
在这一点上,我被卡住了,我试图修改各种图书馆,试图调和这个问题已经无济于事 - 主要是因为它高于我的技能水平,我真的不知道我在做什么。
为了解决这个问题,我编写了代码来构建put请求,并使用成功运行的代码模板将数据发送到API,并将其发送到API。
我打开一个连接(到api.xively.com或173.203.98.29;它使得在此阶段没有区别)和发送以下内容:
PUT /v2/feeds/<feed ID redacted>.json
Host: api.xively.com
Content-Type: application/json
User-Agent : Xively-Arduino-Lib/1.0
X-ApiKey: < API key redacted >
Content-Length: 197
{"version":"1.0.0","datastreams" : [{"id":"TEMPERATURE_CHANNEL" , "current_value" : "29.00"},{"id":"LIGHT_SENSOR_CHANNEL","current_value":"541.00"},{"id":"ALARM_CHANNEL","current_value":"0.00"}]}
以一个空行终止。
不用说,我已经用这些名字在xively中设置了频道。但是这不起作用 - 我没有得到预期的回报,并且渠道不更新。如果我读到连接上的返回输入,它只是一串很长的数字。任何人都可以在请求的格式中看到任何错误?
我也走了发送我自己的请求的路线,而不是试图将与客户端库一起工作的堆栈绑在一起。我用curl构建我的请求的好运气,确认它的工作,然后让我的arduino草图发送相同的标题作为卷曲。 –