0

Arduino Uno v3 と Sparkfun WiFly シールドを介して xively API にセンサー データを送信する際に問題があります。問題はハードウェアや WiFly シールド ライブラリではありません。データを Paraimpu サーバーに問題なく配信できるからです。

最も根本的な問題は、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&)' への呼び出しに一致する関数はありませんClient&) /Users/paultravers/Documents/Arduino/libraries/xively/XivelyClient.h:9: 注: XivelyClient::XivelyClient(const XivelyClient&)

この時点で私は立ち往生しており、この問題を調整するためにさまざまなライブラリを変更しようとしましたが、役に立ちませんでした.

これを回避するために、正常に実行されてデータを Paraimpu に送信するコードのテンプレートを使用して、put リクエストを作成し、それを 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"}]}

空白行で終了します。

言うまでもなく、これらの名前で xily にチャンネルを設定しました。しかし、これは機能しません。期待したリターンが得られず、チャネルが更新されません。接続で返された入力を読み取ると、それは単なる長い数字の文字列です。このリクエストの形式に何か問題があると思いますか?

4

3 に答える 3