Nodeでサーバ作ってPOSTデータ受け取ってLEDを遠隔チカチカさせる(仮想編)2016-02-18Nodeでサーバ作ってPOSTデータ受け取ってLEDを遠隔チカチカさせる(仮想編)Node.jsを使ってみるこんにちは、のすけです。最近は毎週朝に、カフェでもくもく作業しています。そんなもくもくの成果を一つ書いておきます。NodeでLEDを遠隔チカチカさせる(仮想編)やってみたいじゃないですか。IoTサービスの便利さを体感できないと思います。いうわけで、最近はまっているNodeを利用してサクッとサーバを立てて、それからLEDチカチカへ移りたいと思います。}}).listen(8080);基本的なサーバ機能を提供するhttp、クエリストリングをいい感じに読んでくれるquerystring、POSTデータを簡単に文字列に変えることができるutil、ファイルを読み込めるfsのライブラリを使っています。form用のHTMLは別ファイル./public/form.htmlに置いておいて。それをfsで読み込みます。type="submit"></form>単純にHTMLでform作ってmethodをpostにします。input要素を2つくらいとsubmitをつけただけ。サーバの方に戻ります。req.methodがGETの時はform.htmlを表示させ、POSTの時は処理を挟みます。入れているのは近年のブラウザはutf8で処理しているのですが、これの設定入れないと違うエンコーディングで読んだりして文字化ける可能性があるそうです。}リクエストのデータは複数回に分かれて細切れに飛んできます。dataイベントが複数回発生しますので、これを結合して一つのデータにしています。on('end',function()データの受信が終わったらendイベントが発生するため、ここから主処理を開始できます。querystring.parseでpostDataを扱いやすいようにオブジェクトに変換しています。util.inspect(postDataObject)でオブジェクトを文字列に変換しています。res.end(respose_data,"utf8");ではレスポンスに文字列response_dataを返却しています。ここでエンコーディングタイプutf8を指定しないと、日本語を返した場合にブラウザがどんなエンコーディングタイプで読めば良いかわからないため文字化けします。LED点灯できるコマンド実行できるようにするnodeではコンソールで実行するようなコマンドを発行することができます。具体的にはrequire('child_process').execを利用します。)};led_onoff(cmd_ledon);led_onoff(cmd_ledoff);最後の2行でLED点灯、LED消灯を実行しています。led_onoff関数を作成し、そこにコマンドを渡してあげると実行してくれます。OFF!!でLEDが点灯、消灯したということにします。}}).listen(8080);LEDの点灯、消灯はpostDataObject.userinput1のみを見て判断しています。1がPOSTされれば点灯、2がPOSTされれば消灯です。それ以外ならPOSTされた値が表示されるだけです。postDataObject.userinput2は何も意味がありません。やってみるまず、formに1を入力して送信すると・・・LEDが点灯!!と表示され、コンソールを見てみると次に、formに2を入力して送信すると・・・LEDが消灯!!と表示され、コンソールを見てみると実際にコマンドが発行されているのが確認出来ました。これでLEDを点灯させる準備が出来たとこになります。まとめNodeを利用してPOSTデータを受け取り、送信されるデータに従ってLEDを点灯・消灯させることが出来ました。pi上にNodeサーバを立ち上げて実際に遠隔からLEDをチカチカ制御してみたいと思います。Tumblr広告を非表示にする関連記事2016-03-25IoT的にJohnny-fiveでLED制御する!こんにちは、のすけです。間が空いてしましました。(2)リンクホックー!検索はてなブログをはじめよう!hollywisさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。