RSS表示装置のソフトウェア解説(1)
トランジスタ技術7月号に書いたNucleo試用レポートの記事中で作成したRSS表示装置のソフトウェアについて解説する。
この装置のソフトウェアを開発することで確かめたかったのは以下の2点。
1.XBee WiFiでRSSの取得ができるのか? 2.stm32+XBee WiFiでRSSの表示ができるか? RSSの解釈やバッファリングなどで問題は発生しないか
今回は1について解説する。
XBee WiFiはネットで話題になっているのは読んでいて、買ってもいたのだが、使うのは今回が初めてだ。ネットでの話題は、電源投入時(リセット時)に瞬間的に大電流が流れるので電源ラインにある程度のコンデンサを入れて置かないとマイコンがリセットされ、無限リセットループから抜け出せない、というような話だったが、その後XBee WiFiも改良されて現在のものは大丈夫らしい。
今回、改めてネットでXBee WiFiを使用しましたというような記事を探してみたが、pythonで作ったプログラムとUDPで通信しました、というような記事しか見つからず、本当に普通のWebサーバにTCPで接続して通信できるのか不安になった。
どのみち試さなければ仕方ないので、XBee WiFiのマニュアルを読むと XBeeと同じくトランスペアレントモードとAPIモードがあるそうだ。APIモードを使用するといろいろ複雑なこともできそうだが、今回は締切もあるし、何とか行けそうなのでトランスペアレントモードを使用する。このモードでは、XBee WiFiとやりとりするデータは基本的に、そのまま通信相手とのやりとりとなる。エスケープシーケンスでコマンドモードに遷移すれば、ATコマンドで設定の変更などができる。マニュアルから使いそうなATコマンドを抜き出したのが右上の表。
LAコマンドでDNSを引き、DLコマンドでIPアドレスを設定、AIコマンドで接続状態を確認してやれば通信できそうだ。変更する必要のないパラメータは、XBee Wifiをパソコンに接続し、事前に設定しておくことにする。製品ではないので、この辺は楽だ。
で、プログラムを組み、試してみるとLAコマンドが動かなくてDNSが引けない。仕方が無いので、自分でDNSを引き、各RSSのサイトのIPアドレスをプログラム中に書き込んでおくことにする。 これで問題無いと思ったが、メジャーなサイトのIPアドレスはロードバランシング等の理由で結構変更されているようで1ヶ月もすると読めないサイトが多数発生、IPアドレスを更新することで読めるようになった。ちなみに、この問題をネットで調べてみるとファームウェアを更新すると解決するらしい。近く試してみたい。
接続は、できたのでGETコマンドを送ればRSSが取得できるはず、と試してみるがデータが何も返ってこない。linux上でwgetコマンドで試すと、RSSのデータが取得できる。パケットアナライザでwgetコマンドが送っているデータを見て原因が判明。 以下のようなデータを送ることでRSSデータを取得できるようになった。
GET %s HTTP/1.0 Host: %s Accept: */* Connection: Keep-Alive
次は、受信したRSSデータから表示すべき部分を抜き出す処理が必要なのだが、その話は … RSS表示装置のソフトウェア解説(2)へ続く …予定
最近のコメント