Philips Hueスマートライトを制御するために、arduinoからPUT経由でJSON文字列を送信しようとしています。私はググって、POSTとGETについてたくさん見つけましたが、PUTについてはあまり知りませんでした。"{"on":false}" をローカルの Hue ブリッジ (/api/[key]/lights/3/state) に PUT しようとしていますが、フォーマットする方法がわかりません。誰でも助けることができますか?
Hue のデバッグ ツールを使用してリクエストを正常に送信したときのコンソール情報は次のとおりです。
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection keep-alive
Content-Length 12
Content-Type text/plain; charset=UTF-8
Host 192.168.1.8
Referer http://192.168.1.8/debug/clip.html
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:12.0) Gecko/20100101 Firefox/12.0
これが私が試みていたものですが、失敗しました:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x83, 0x9D };
byte ip[] = { 192, 168, 1, 199 };
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };
void setup()
{
Ethernet.begin(mac, ip);
Serial.begin(9600);
delay(1000);
}
void loop()
{
EthernetClient client;
IPAddress server(192,168,1,8);
if (client.connect(server,80))
{
client.println("PUT /api/[key]/lights/3/state HTTP/1.1");
client.println("Connection: keep-alive");
client.println("Content-Type: text/plain; charset=UTF-8");
client.println("Content-Length: 12");
client.println("\"on\":false");
}
else
{
Serial.println("Connection Failed.");
Serial.println();
}
delay(5000);
}
私も試してみました:
"Content-Type: application/x-www-form-urlencoded"
UTF-8 ではなく。
API によると、ライトのオン/オフは、{"on":true/false} を指定した PUT リクエストを Hue ブリッジに送信するだけであると想定されています。