1

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 ブリッジに送信するだけであると想定されています。

4

1 に答える 1

3

次のようにフォーマットされたjsonを送信してみてください:

client.println("{\"on\":false}");
于 2013-12-28T09:08:57.567 に答える