質問: android非同期通信について 現在androidからネットワーク経由で通信し、自宅にあるセンサのON/OFFを切り替えるということを実現したいのですがどのようなシステム構成にすればいいか悩んでいます。 通信先のセンサはリアルタイムOSであるT-Kernelで制御しています。 なので構成としてはandroidからデータを送信し、なにかサーバーを通してそのサーバーから直接T-Kernelに信号を送りたいと考えているのですがこのようなことは実現可能ですか?
回答: 前提として、 * ご自宅がインタネットに常時接続されている * そしてそのグローバルIPが固定である、あるいはDynamicDNSなどで名前解決可能) * 自宅内でTCP/IP通信が使える(LANがある) として回答します。 中継するServerの条件としては、T-Kernelと何らかのプロトコルで通信できること、Androidと何らかのプロトコルで通信できることです。 T-Kernelには詳しくありませんが、ソケット通信は可能なようですから、RaspberryPi上で、ソケット通信可能な言語で扱えるHTTPデーモン(例:NanoHttpd on java)を動かして中継すれば良いかと思います。 * Android → 中継サーバ : http * 中継サーバ → T-Kernelデバイス : ソケット通信(javaだとjava.net.Socketクラスあたり) Androidからの通信手段としてHttpを選んだのは、ブラウザ等でテストしやすいからです。 WAN側に公開するポートが必要になるので、ファイアウォールとNATも設定する必要があると思います。機能にもよりますが、何らかのセキュリティ対策を講じておく必要があるでしょう。