2013年2月14日木曜日

入れ子になったmultipartメールのデコード

Google App Engineで受信したメールから添付ファイル(画像)を取り出して
それを登録する、というアプリケーションを作っているのだけれど
メーラによって、また送信条件に形式がかわり注意深くデコードしないといけない件。

もちろん、添付されてるメールはmultipartなのだけれど条件により下記になる場合があるみたい。

1. 普通に添付
 multipart/mixedでbodyのどれかに置かれているとき。
 これは普通にGoogleで引っかかる方法でやればいい。
 ポピュラーだと思うので略。
 
2. html形式でtext形式の本文と一緒に送られてきた時。
 multipart/relatedでbodyのどれかに置かれているとき。
 これは1.と同じにやればよい。
 
3. 上記の1,2,が転送されてきたとき
 これはmultipartの入れ子になっている。
 multipartのbodypartにまたmultipartが入っている。
 これはbodypartのContentTypeを調べてそれがmultipartだったら再帰的に処理していけば良い。
 下記みたいにしてMultipartにキャストして処理してやる。

  BodyPart bp = multipart.getBodyPart(i);
 Multipart subMultipart=(Multipart)bp.getContent();

2013年2月11日月曜日

QNAP x86ベースのNASにffmpegをインストールする

TS-469のtwonkymediaでちゃんと設定(mp4)していてもトランスコードできないなぁ、と調べてみたらffmpegがx264対応していなかった件。

※ipkgのffmpegもx264対応してなかった。

自分メモなので最低限。ヌケモレあります、多分。

1. OPTWARE Ipkgのインストール  QNAP設定画面のApplicationsから。

2. 必要なgccやらなんやらを ipkg install hoge でインストール
    ipkg install gcc
  ipkg install make
  ipkg install autoconf
   ipkg install coreutils
    ipkg install lame
   ipkg install libtheora
   ipkg install libvorbis
   ipkg install pkgconfig
  

3. x264をコンパイル
  http://www.videolan.org/developers/x264.html
  からもらう。
 ipkg install x264でインストールできるが、”旧い”と後述のffmpegのconfigure時にエラーがでる。

 
 しかも、configureは下記でやる必要がある。どうもipkgでインストールされるgccのコンパイルのされ方がi386をターゲットにしている模様。

  ./configure  --host=i386-pc-linux --disable-asm --prefix=/opt

 またyasmが旧いと文句を言われるがソースからインストールがしんどいので--disable-asmでパス。
 prefixはお好み、だがoptwareのインストールベースパスが/optなのでこれを指定。

  で、make install-lib-dev

4. libfaccをコンパイル

 http://www.audiocoding.com/ からソースをもらう。
 

5.  ffmpgをコンパイル
 下記オプションで。 faadは不要となったらしい。また途中で何かない、とかいわれたら順次ipkgで。
   ./configure --prefix=/opt/ --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libvorbis --enable-libtheora --disable-shared --enable-static --enable-libfaac --enable-nonfree

 
  あとはmake,make install

faacをリンクすると再配布してはいけない、らしい。

2013年2月7日木曜日

【その2】GR-SAKURAを使った独立系太陽光発電コントローラについて

ひとまずバッテリーの充放電状況を調べるため、双方向の電流を計測出来る方法を模索。
すでに太陽電池が発電している電流は計測できているので、その反対方向を測れば良いはず。
ということで逆方向にも差動増幅を入れればよいはず。


だけど、うまく行かなかった。
テストで負荷側の電圧を低くしている時は問題ないんだけど、電圧をあげていって本来の電圧付近、16V程度ではなぜかオペアンプの電源電圧が上がってしまう。

なんでだろ。両方向につけると絶縁しきれないのかな。

2013年2月5日火曜日

GR-SAKURAを使った独立系太陽光発電コントローラについて

今、GR-SAKURAを使って現在稼働させている独立系太陽光発電のコントローラを作ることを計画中。

企画としては以下
1.MPPT充電に対応
2. 鉛バッテリーへの充電
3.過放電防止のための負荷切断
4.twitterによる発電およびバッテリー状態の”つぶやき”
5.上記4.をグラフ化(Google App Engine)


GR-SAKURAを選んだのには下記の理由があります。
1.Ethernetがついてる(Full)
2.ライブラリでPWMが簡単(ArduinoライクなRXduinoってやつ)
3.小さい
4.そこそこの値段(4,980円)

当初はPIC+Ethernetを考えてましたが構想が動くかのフィージビリティ・スタディをさっさとやってそれからにしようと。

現在稼働しているシステムの状況を下記へ記す。

太陽電池は50Wx2枚ですが設置の関係で東向きになっているため全然その性能を出せず。
これは致し方ない・・・

 
 

ここで点線で囲ったところをGR-SAKURAに置き換えよう、という算段。