NETMF : IFTTT Maker Channel にデータ送信するサンプルコード

IFTTTMaker Channel にセンサーデータを送信するサンプルコードを公開しました。

https://github.com/netmf-lib-grfamily/IftttTrial01

Japan SharePoint Group 勉強会 #20 のライトニングトーク 「SharePoint ユーザーのための IFTTT で IoT 体験」 の検証で使用したアプリです。
先日公開した、GR ファミリー用の .NET Micro Framework ライブラリを使っています。

簡単なアプリですが、.NET Micro Framework から JSON 形式のデータを送信するコードの参考としてどうぞ。

var content = "{ \"value1\" : \"" + temp.ToString() + "\" }";
var contentBytes = Encoding.UTF8.GetBytes(content);
using (var request = WebRequest.Create(new Uri(_iftttAddress)) as HttpWebRequest)
{
 request.Method = "POST";
 request.ContentType = "application/json";
 request.ContentLength = contentBytes.Length;

 using (var reqs = request.GetRequestStream())
 {
   reqs.Write(contentBytes, 0, contentBytes.Length);
 }

 using (var response = request.GetResponse() as HttpWebResponse)
 {
   if (response.StatusCode == HttpStatusCode.OK)
   {
     Debug.Print("Sent to IFTTT [" + content + "] at " + DateTime.Now);
     _peach.PulseDebugLed(100, 5);

     var resContentBytes = new byte[(int)response.ContentLength];
     using (var ress = response.GetResponseStream())
     {
       ress.Read(resContentBytes, 0, (int)response.ContentLength);
       var resContentChars = Encoding.UTF8.GetChars(resContentBytes);
       var resContent = new string(resContentChars);
       Debug.Print(resContent);
     }
   }
   else
   {
     Debug.Print(response.StatusCode.ToString() + " : " + response.StatusDescription);
   }
  }
}

特に難しいところはないですね。

  • ContentType を設定 (application/json)
  • ContentLength を設定
  • WebHttpRequest の RequestStream にデータを書き込み
  • GetResponse でデータ送信&応答受信

とします。

もう一点。
定石ですが、.NET Micro Framework でのネットワーク接続の方法もコードを載せます。
IoT ではほぼ必須のコードですが、PC やスマホアプリではこの部分のコードを書くことはないと思います。マイコンボードではこうやってネットワークに繋げるんだという参考にしてください。

private string InitNetwork()
{
  foreach (var ni in Microsoft.SPOT.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces())
  {
    if (ni.NetworkInterfaceType != Microsoft.SPOT.Net.NetworkInformation.NetworkInterfaceType.Ethernet)
      continue;
    if (!ni.IsDhcpEnabled)
    {
      ni.EnableDhcp();
      Thread.Sleep(1000);
    }

    var count = 0;
    var ipAddr = ni.IPAddress;
    while (ipAddr == "0.0.0.0" &amp;&amp; count++ < 5)
    {
      ni.RenewDhcpLease();
      Thread.Sleep(1000);
      ipAddr = ni.IPAddress;
      Debug.Print("Retring[" + count + "] - Check IP Address : " + ipAddr);
    }
    if (ipAddr == "0.0.0.0")
      return ipAddr;

    if (!ni.IsDynamicDnsEnabled)
    {
      ni.EnableDynamicDns();
      Thread.Sleep(1000);
    }

    return ipAddr;
  }

  return "0.0.0.0";
}
広告
カテゴリー: .NET Micro Framework, IoT タグ: , , パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中