0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EspruinoAdvent Calendar 2014

Day 16

EspruinoをWiFiに繋ぐ - POSTリクエストを送る

Last updated at Posted at 2014-12-17

以前の記事で CC3000 wifiモジュールでgetリクエストを投げることに成功したので、今度はPOSTリクエストを投げてみます。GETリクエストの場合はHttp#getというラッパーメソッドが用意されていたので楽でしたが、POSTリクエストを投げるにはHttp#requestメソッドを直接たたく必要があります。
イメージはnode.js的な感じなので、触った事ある方には馴染みある書き方かもしれません。

目標

Espruino&CC3000にてPOSTリクエストを投げる!

結線

以前の記事と全く同じです。

プログラム

POSTリクエストを試せるサーバを立てたので、そこにリクエストを投げます。POSTリクエストをなげると、レスポンスとして送ったデータをエコーしてくれるので、今回はそれをコンソールに出せれば成功とします。


// wifi接続情報
var accessPointName = "######"; //SSID
var WPA2Key = "#######"; //PASSWORD

function postSample(){

  // オプションを設定
  var payload = {
    sample_arg: "1",
    sample_arg2: "2"
  };
  var queryString = 
      "sample_arg=" + payload.sample_arg +
      "&sample_arg2=" + payload.sample_arg2;

  var host = "node-test-rocky.herokuapp.com";
  var port = 80;
  var path = "/post_sample";
  var options = {
    host: host,
    port: port,
    path: path,
    method: "POST",
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
      'Content-Length': queryString.length
    }
  };

  var http = require("http");
  var dataAsString = "";
  var req = http.request( options, function(res) {
    res.on('data', function(data){ 
        // data chunkを繋ぎ込む
        dataAsString += data;
    });
    res.on('close', function(){ 
      console.log( 'from server' ); 
      console.log( dataAsString ); 
    });
  });  
  req.write( queryString );
  req.end();
}

// wifi繋ぎます
LED3.write(true);
var wlan = require("CC3000").connect();
LED2.write(true);
wlan.connect( accessPointName , WPA2Key , function (s) { 
  LED1.write(true);
  console.log('connected');
  if (s=="dhcp") {
    postSample();
  }
});

実行

GETリクエスト同様、完了まで時間がかかります。おまけにサーバもherokuを使っているので、30秒くらいかかるかもしれません。(こいつ、アクセスが一定時間無いとサーバが寝てしまうので立ち上がるのに時間がかかるんです)

下のように送ったデータがコンソールに出力されれば成功です。

image

まとめ

これでEspruino、wifi経由でセンサーの情報をWEBにPOSTすることができるようになりました。ちなみに毎回これ書くのは大変なので、ちょっとしたラッパーメソッドを作り、Gistに上げてあります。
sample_usage.jsにあるような使い方でPOSTリクエストを投げられます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?