FAX 送信機能

センサーネットワークが設置される場所に、もしインターネットがなかったら?

DeviceServer では、WebAPI やクライアントアプリ、電子メール、Flashなど、様々な方法で外部からシステムにアクセスする手段を用意しています。また、反対にシステムで発生したイベントを外部のユーザーに知らせるために、ネットワーク経由のアラームデバイスや電子メール、シリアル通信、XBee などを利用して伝達することができます。ただ、インターネットが使えない環境にシステムを設置した場合に、遠くの人にメッセージを送信したい場合にどのようにしようか?… と考えると、やはり頼りになるのが電話回線(FAX)みたいです。

アナログ電話回線は殆どの場所で用意されていますので、FAX でメッセージを自動送信する機能を DeviceServer に追加する検討を行っています。簡単なテキストメッセージを FAX で送信するためのライブラリ関数(API) をスクリプト中からコールできるようにする予定です。FAX サーバーは Windows に付属する Microsoft FAX サービスを利用することで追加費用なしで実現できそうです。FAX 機能がつくと、センサーに反応したら FAX で知らせたり、複数の送信先に自動でメッセージを送ることもできます。

FAX 機能を追加した DeviceServer をリリースしましたら、ホームページで案内をしたいと思います。また、FAX を使用したセンサーネットワークの応用例などもこのブログで紹介していく予定です。

それでは。

 

 

 

ログ出力機能

アプリケーションプログラムやセンサーシステムを構築するときに、要求仕様などでもあまり明示的に指定されることもなく、分析・設計時点でもあまり表にはでない機能なのですが、運用中はもちろん、トラブル発生時、開発、テスト時など全てのフェーズにおいて、一番役に立つ機能がログ出力機能です。

下記はDeviceServer のログの出力例です。

2012/04/10 14:50:32 falcon     UIOUSB_EVENT_DATA    0 温度 18.6℃  明るさ 962
2012/04/10 14:52:44 falcon     SESSION              0 CreateDocument: new session created, token = ST03114ED2C61896 user =  terminal =  webpxyappsvr =
2012/04/10 14:52:44 falcon     PERIODIC_TIMER       0 renew public session [PUBLIC_SESSION_TOKEN]: ST03114EA6C6184A -> ST03114ED2C61896
2012/04/10 14:52:44 falcon     ALARMDEVICE_RESET    0 start..
2012/04/10 14:52:44 falcon     XBEE_TDCP_DATA       0 Device2[0B02,0013A200404AC397] TDCPData = $$$41038,1
2012/04/10 14:52:45 falcon     XBEE_TDCP_DATA       0 Device2[0B02,0013A200404AC397] TDCPData = $$$41168,1
2012/04/10 14:54:30 falcon     XBEE_TDCP_DATA       0 Device2[0B02,0013A200404AC397] TDCPData = $$$,LIVE,0B02,9
2012/04/10 14:59:40 falcon     XBEE_TDCP_DATA       0 Device4[0D04,0013A20040558026] TDCPData = $$$,SAMPLING,0D04,8,FF,168,0,0,0,50
2012/04/10 14:59:40 falcon     REGISTER_ACTIVITY    0 Device4 IR-count = 168 temperature = 12.5
2012/04/10 15:00:00 falcon     SESSION              0 CreateDocument: new session created, token = ST03114F0002EE18 user = guest terminal = falcon webpxyappsvr =
2012/04/10 15:00:00 falcon     USER                 0 LoginUser: login success, user = guest session = ST03114F0002EE18
2012/04/10 15:00:00 falcon     ALARMDEVICE_CLOCK    0 start..
2012/04/10 15:00:00 falcon     USER                 0 LogoutUser: logout success, user = guest session = ST03114F0002EE18
2012/04/10 15:00:32 falcon     UIOUSB_EVENT_DATA    0 COM9 EventData = $$$,SAMPLING,01,0,40,973,761,498
2012/04/10 15:00:32 falcon     UIOUSB_EVENT_DATA    0 温度 19.5℃  明るさ 973
2012/04/10 15:02:44 falcon     ALARMDEVICE_RESET    0 start..
2012/04/10 15:03:44 falcon     SESSION              0 CreateDocument: new session created, token = ST03114F0EC618B0 user =  terminal =  webpxyappsvr =
2012/04/10 15:03:44 falcon     PERIODIC_TIMER       0 renew public session [PUBLIC_SESSION_TOKEN]: ST03114ED2C61896 -> ST03114F0EC618B0
2012/04/10 15:03:44 falcon     XBEE_TDCP_DATA       0 Device2[0B02,0013A200404AC397] TDCPData = $$$35454,1
2012/04/10 15:03:45 falcon     XBEE_TDCP_DATA       0 Device2[0B02,0013A200404AC397] TDCPData = $$$53531,1
2012/04/10 15:04:59 falcon     WEBPROXY             0 command GET /command/json/session_login received from 192.168.100.51:61522
2012/04/10 15:04:59 falcon     SESSION              0 CreateDocument: new session created, token = ST03114F13B69537 user = user terminal = 192.168.100.51 webpxyappsvr =
2012/04/10 15:04:59 falcon     USER                 0 LoginUser: login success, user = user session = ST03114F13B69537
2012/04/10 15:05:00 falcon     WEBPROXY             0 command GET /command/json/script received from 192.168.100.51:61523
2012/04/10 15:05:00 falcon     GET_DEV_STATUS       0 start..
2012/04/10 15:05:07 falcon     WEBPROXY             0 command GET /command/json/script received from 192.168.100.51:61524
2012/04/10 15:05:07 falcon     SET_XBEE_DIO         0 start..

ABS-9000 DeviceServer をインストールすると2つの Windows サービスが登録されるのですが、1つがアプリケーションサービスプログラム本体で、もう一つが専用のログサービスプログラムになっています。

DeviceServer インストール時に登録されるサービス一覧

なぜ2つのサービスに分けてあるかといいますと、サーバーアプリ側が停止するような事態になったときでも、ログにメッセージを確実に残せるようにするためです。また、システムが一度に大量のログメッセージを出力するときに、アプリケーションサーバーの性能に影響を与えないように、ログを処理できるように2段構えで構成されています。

サーバーではない通常のアプリケーションでは、ログ出力はファイルの終端にアペンドしていくような簡単な仕組みで十分なのですが、サーバーシステムなどの複数スレッドから発生するログを、ファイル I/O のみで処理するとアプリケーションのパフォーマンスが低下して、最悪システムがハングしてしまいます。DeviceServer では UDP パケットを使用してログサービスプログラムのメモリ中にメッセージを保存して定期的にファイルに書き出す方法で構築しています。リアルタイムのログについても参照したいことが多いので、本来のログ保存とは別にコンソールにもメッセージを並行して出力できるようにしています。

ログを眺めていると、システムが設計通りに動作しているかが一目で分かりますので、ログ出力をフルに活用してシステムを構築してください。

それではまた。

便利な製品の機能をもっと使わせて

家の中の家電やセンサーを外出先からコントロールできるような製品がこのごろ多く出てきていますね。自宅に設置したWeb カメラの画像を携帯から確認できたり、外出先からの録画設定、エアコンの温度設定や監視など、大変便利になったと思います。ただ、ひとつ気になるのは、大抵の製品はそのメーカーが提供している専用アプリを使うか、 Web ページに予め登録してから、そのメーカーのページ経由でしかアクセスできなくなっているのが気に入りません。多分ユーザ宅のルータ経由で設置されたセンサーのアドレスをインターネット側からアクセスするための設定マニュアルや、サポートの手間を考慮しているのだと思いますが、自力でダイナミック DNS の設定やルータの設定ができるユーザー用に、なんらかの方法でアクセスする手段を用意していただけるとありがたいです。

また、HTTP プロトコルを使用したWeb APIコマンドを提供することで、製品を他のシステムと組み合わせてコントロールできるようになっていると、本来その製品が持っている能力をフルに活用できるようになると思います。

悪用された場合の責任などがあるため多分できないのだと思いますが、やれば出来る子(便利な製品)なのに、ユーザー自身が自分でセンサーネットワークを構築するときにそれらの製品をシステムに組み込めないのは大変残念です。なんとかいい方法がないですかね?

それではまた。

 

はじめまして

このページをご覧になっている皆様、オールブルーシステムの 木村知史です。

このページでは日々の作業中の出来事や、トピックなどを雑感を交えながらお知らせしていきたいと思っています。もしご意見などがございましたら kimura@allbluesystem.com までメールで遠慮なくお寄せ下さい、お待ちしております。

まずは、Arduino 関連の話題から。

数年前から巷で話題沸騰中(?)の Arduino ですが、私が使用し始めたのはつい2年ぐらい前からです。もっと前から Web ページなどでチェックしていて大体どのようなものかは分かっていたのですが、実際に使ってみると使い易さにびっくりしました。マイコンボードにプログラムするだけなのですが、ライターを別途セットアップして書き込むのと、Arduino IDE からコンパイル&アップロードがボタン1つでできるのとはとっつき易さに雲泥の差がありました。

オールブルーシステムではセンサーネットワーク構築の DIY ツールの提供を目指していますので、これを利用しない手はないと確信しています。センサーの接続や I/O の操作も簡単ですし、なによりも PC との接続環境が元から整っていますので、ネットワーク構築には好都合です。オールブルーシステムでは今後も、Arduino 関連の機能を追加して、使い易いツール(DeviceServer) を提供していきたいと思います。