マイコン工作実験日記

Microcontroller を用いての工作、実験記録

天気予報を文字情報で表示する

2008-10-26 19:57:10 | VoIP
前回はDTMFを使ってLCDに表示する情報を切り換えてみましたが、表示する情報はマイコンが持っている情報が主でした。日付/時刻についてはSNTPを使って取得したものを元にしていましたが、このようにネットワークから取得した情報を表示するデバイスとしてLCDを使い、情報の選択に電話番号やDTMFを使うことができます。今回は、この考え方をちょこっと発展させて、天気予報と地震情報をインターネットから取得して表示するデモを作成してみました。



まず、前回と同様にW-SIMへの発呼を伴わない特別な電話番号を用意します。前回は900番を使いましたので、900番代すべての番号はすべてVoIP GWで終端することにして、イベント通知をサーバに対して送出することとしました。実際に使用している番号は901と902のふたつです。

ダイアル番号サービス内容
901天気予報
902地震情報


それぞれの番号に接続すると簡単なメニューが表示されます。DTMFを入力するとメニューに応じて、情報が表示/変化します。天気予報の場合では "0" で今日の天気、"1" で明日、"2" で明後日の予報が表示されます。地震情報では、最新のものから番号順に従って表示されます。

情報源はlivedoorのRSSフィードです。RSSを直接読んできて、XMLを解釈するのはメモリ的に無理なので、発信者名の表示の時と同じように、サーバ側にいったん要求を出して、その応答として画面イメージをもらっています。そのため、SIP GW側の処理は発信者名の表示の場合と大差ありません。シーケンスは次のようになります。



サーバ側には、着信番号とイベント種別が渡されますので、着信番号によって提供するサービスを選択し、RSSフィードの取得と解析を行います。そして、結果の文字列をビットマップに変換してVoIP GWに応答として返します。VoIP GWは単に受け取ったビットマップをそのまま表示しているだけです。実際のサービスを提供しているのはLinux サーバであり、901とか902という番号もVoIP GWでは区別しておらず、901~999の番号であればVoIP GWのふるまいは全く同じです。たとえば、910がダイアルされた場合には、サーバ側に通知されるCALLEDの番号が910に変化するだけです。この場合、サーバ側では対応するサービスが用意されていないので、何の応答もなく、結果としてLCD画面は変化しないこととなります。



最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。