WebからLチカを試してみよう
Electric Impでは、Agentを使って簡単にデバイスの遠隔制御を行うことができます。公式サイトの図のように、ブラウザからデバイスのLEDをオンオフできるようにしてみましょう。
IDE上で、「Device」のタブには以下のコードを貼り付けます。
// Import Electric Imp’s WS2812 library #require "WS2812.class.nut:3.0.0" // Set up global variables spi <- null; led <- null; // Define the loop flash function function setLedState(state) { local color = state ? [255,0,0] : [0,0,0]; led.set(0, color).draw(); } // Set up the SPI bus the RGB LED connects to spi = hardware.spiAHSR; spi.configure(MSB_FIRST, 6000); // Set up the RGB LED led = WS2812(spi, 1); hardware.pinH.configure(DIGITAL_OUT, 1); // Register a handler function for incoming "set.led" messages from the agent agent.on("set.led", setLedState);
「Agent」側には以下のコードを貼り付けます。
// Log the URLs we need server.log("Turn LED On: " + http.agenturl() + "?led=1"); server.log("Turn LED Off: " + http.agenturl() + "?led=0"); function requestHandler(request, response) { try { // Check if the user sent led as a query parameter if ("led" in request.query) { // If they did, and led = 1 or 0, set our variable to 1 if (request.query.led == "1" || request.query.led == "0") { // Convert the led query parameter to a Boolean local ledState = (request.query.led == "0") ? false : true; // Send "set.led" message to device, and send ledState as the data device.send("set.led", ledState); } } // Send a response back to the browser saying everything was OK. response.send(200, "OK"); } catch (ex) { response.send(500, "Internal Server Error: " + ex); } } // Register the HTTP handler to begin watching for HTTP requests from your browser http.onrequest(requestHandler);
「Build and Run」で実行すると、ログの部分にLEDをオンオフするURLが表示されます。
「Turn LED On:
」に続く~?led=1
のURLにアクセスするとLEDが点灯し、「Turn LED Off:
」以降の~?led=0
というURLにアクセスするとLEDが消えるようになります。
現在はデバイスの近くで実行しているのであまり実感がありませんが、このURLを使えばどこからでもデバイスのLEDを制御することができます。
おわりに
ImpExplorer Developer Kitを使って、ウェブからのデバイス制御をかなり簡単に試すことができました。温度、湿度、気圧、3軸加速度の4つのセンサーや刺すだけで使えるGroveセンサーのコネクタも搭載されており、センシングや取得したデータのウェブ連携も容易に行うことができます。
通常の開発ではハードルの高いWi-Fi接続や開発環境の用意、モジュール拡張などをElectric Impを使うと一挙に解決することができるため、IoTプロダクト開発にはかなりオススメのデバイスです。
Imp API ReferenceやSquirrel Language Reference、Code Librariesの開発ツール群などを参考に様々なウェブサービスとの連携なども実現できるので、ぜひ試してみてください。