iDigi XIGのデータアップロード機能を試してみる。

 XIGのアップロード機能を試してみました。
詳細説明がこちらに書かれています。

1)サーバ側のphpファイルを用意。
コピペしました。
ファイル名は、xig_upload_example.phpにしました。
   1 <?php
   2         // xig_upload_example.php
   3         // this code accepts any data uploaded as a GET variable and stores it
   4         //  into a text file called dataFile.txt on the server
   5         
   6         $value = $_GET['value'];
   7         $myFile = "dataFile.txt";
   8         $fh = fopen($myFile, 'a') or die("can't open file");
   9         fwrite($fh, $value);
  10         fwrite($fh, "¥n");
  11         fclose($fh);
  12 ?>
  13 
2)サーバにphpファイルをアップロード、テキストファイルの準備
・用意したサーバにphpファイルをアップロードします。実行権限を755にします。
・Xbeeが送ってきたデータをファイルとして書き込むためにdataFile.txtを用意します。実行権限を666にします。
3)動作確認のためにブラウザから、下記のように打ち込み、実行します。
http://(サーバ名)/xig_upload_example.php?value=72

4)実行後、dataFile.txtにvalue=**が書き込まれていたら、成功です。

http://(サーバ名)/dataFile.txt

iDigi経由でXBeeのGPIOピンを制御した。

 iDigi経由でXBeeのGPIOピンを制御してみました。

ConnectPort X4には、XIGアプリを実行しています。
XIGのWikiページに外部ネットワークから、XBeeのGPIOピンをRCIコマンド経由で制御する解説が書いてありました。


解説記事を参考にオペレーションをしていけば問題なく動作することが確認できます。
サンプルxmlからの修正点は、
・device idの変更
・xbeeのaddressを変更
・GPIOピンの割付けは以下のとおり
GPIO4    <dio4_config>
GPIO11 <dio11_config>
GPIO12 <dio12_config>
・LOW出力の場合4、HIGH出力の場合5を指定する。

1)LOW出力

2)HIGH出力の場合

Digi ConnectPort X4 XIGを試す。

オライリーのXBee本を買いました。P.231からXIGの紹介記事に目がとまりました。これは、有用なツールですので早速使ってみました。


0)XIGとは、 XIGは、X4上で動作するPythonプログラムです。X4に接続しているXBeeのシリアルポートから任意のURLを入力すると、そのURLから得られたページをシリアルポートに出力してくれる便利なプログラムです。
また、rciコマンドをサポートしており、外出先からXbeeにメッセージを送れます。

1)XIGのダウンロード、ファイルのupload
プログラムをダウンロードするためにXIG (XBee Internet Gateway)に接続します。

Downloadをクリックし、zipファイルをダウンロードします。

zipファイルを解凍し、xig.py, xig_config.py, _xig.zipをuploadします。


Auto-Start settingでxig.pyを自動起動に設定してから、X4をリブートします。


2)X-CTUでZigBee Series 2を設定する。 P.234にXIGのテストを参考に、買ってきたばかりのZigBee Series 2を設定します。 デフォルトでは、XBeeのATモードのZigBeeルーターに設定しています。 

書籍では、PAN IDなど設定変更していますが、今回はシリアルのボーレートを変更しただけです。 パラメータを変更後、Writeボタンで設定を反映させます。 

設定完了後、TeraTermでシリアル接続します。ローカルエコーおよび改行コードの設定を変更して接続します。

3)XBeeのMACアドレスの確認 X4のウェブ管理画面でXBeeがX4に接続しているか確認します。 またMACアドレスも控えておきます。

4)接続サーバ側のcgi
動作確認のためにcgiを用意しました。
現在時刻を表示するcgiと自ホストのIPアドレスを表示するcgiを用意しました。
http://emaken.com/currenttime.cgi
http://emaken.com/ipaddress.cgi
プログラムは、ここここのサイトを参考に作りました。

5)XIGの動作確認
UserDocumentationを参考に動作確認します。
5−1)シリアルポートからの動作確認
最後に動作確認します。helpとタイプするとXIGのhelp画面が出力されます。 また、4)で書いたURLをそのままタイプすると結果が出力されます。
5−2)iDigiからメッセージを送信する。
XIGでは、rciコマンドをサポートしており、XBeeにメッセージを送ることができますので外出先から自宅機器の制御が可能です。
テキストメッセージを送ったり、

バイナリデータを送ることができます。


XIGを利用することで、Pythonプログラムを作成しなくてもXBeeを簡単にインターネット接続できますね!
また、UserDocumentationを見るとサーバ側にデータを送信できるようです。


iDigiにアクセスするAndroidアプリを作ってみた。

iDigiにアクセスするAndroidアプリを作ってみました。
アクセス方法はArduinoと同じように、

1.developer.idigi.com、Port80にtcp接続。
2.basic認証で該当APIにリクエスト。
3.レスポンスデータを取得。
4.液晶画面に結果を表示。

です。

参考にしたサイトは、
https://luna.easyjp.net/projects/memo/wiki/android/%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E
8%AA%AD%E3%81%BF%E6%9B%B8%E3%81%8D%E3%81%A8%E9%80%9A%E4%BF%A1/HTTP%E9%80%
9A%E4%BF%A1
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/String.html
http://www.syboos.jp/java/doc/byte-string.html
http://www.yukun.info/blog/2011/02/java-tcp-socket-echo.html
です。

出力画面


Digi ConnectPort X4 iDigiからRCIコマンドでXBeeのLEDを制御した。

 iDigiからWeb Services Consolesサービスを利用して、RCIコマンドにてXBeeのLEDを制御できるようになりました。
サンプルアプリのiDigi_pro_devを使用しました。

Console画面にchannel_*** コマンドがあります。
このコマンドを使って、LED、スイッチの状態を取得したり、LEDを点灯したりすることができます。
引数のnameがポイントです。


RCIのコマンドのHelpを見てみると同様なコマンドがサポートされているのがわかりました。

あとは、RCIコマンドを引数にしてPOSTリクエストすればiDigiからでもLEDを制御できると推測しましたが、コマンドを受け付けてくれません。
そこで、Support Forumにて確認すると同じ悩みを抱えている人がいまして、<do_command target="idigi_dia">のパラメータが必要なのがわかりました。
なおidigi_diaは、RCI HandlerのTarget nameにあたります。

実行画面:
channel_dump

channel_get

channel_set


Digi ConnectPortX4 python.zipの復旧方法

 pythonファイルを整理していたら、間違えてpython.zipまで削除してしまいました。



Support Forumで、このスレッドを見つけました。
digi.comのsupportから該当ファイルを見つけ、ファイル名を変更し、X4にuploadしたところうまく復旧できました。あせりました。よかったよかった。