読者です 読者をやめる 読者になる 読者になる

技術めいた何か

1人の大学生によるIT系の記事群

サバフェス2016で改造したnecomimiをつかったお話(ラズパイ/サーバー編)

今年始めて?の投稿。

先日、IDCフロンティアさん主催(03/28 21:17修正:協賛でした…ごめんなさい)のサバフェス2016に同期2人と先輩1人の計4人で参加してきました。
先に先輩がnecomimi改造のハード周りについて記事を書いていました。

dwight.hatenablog.jp

自分の担当した範囲で発表したプロダクトのサーバー周りについてを書いておきます。

※necomimiについてと、necomimi→ラズパイまでのデータの流れについてはここでは省略するので、上記記事を読んでおくことをおすすめします。

 

先輩の記事ではラズパイにシリアルで改造したnecomimiからデータを送信するところまでの説明がありました。

自分の担当範囲はラズパイでの受信データのパースとidcfクラウドで立てたサーバーへの送信及び、サーバー上でsqliteへの保存です。

以下のような流れになりました。

f:id:atofaer:20160328194111p:plain

パーサはOSSのパーサであるpythinkgearを用いました。
本当は自分でパーサを書きたかったのですが、10日間の開発期間では成し遂げられず…。 

パーサの仕様はthinkgear_communications_protocol [NeuroSky Developer - Docs]に詳しくのっているので後ほどパーサ作成にチャレンジしたいところです。

ラズパイからIDCFのサーバーへの転送はweb socketをつかいました。
実装はこちらを参考にサーバー側はtornado、ラズパイ(クライアント)側はwebsocket-clientをつかいました。

本番はnecomimiの機嫌が悪くなかなか思ったようにデータが取れなかった時があったりしましたが、無事に終えることができて嬉しく思っています。

具体的なコードはGitHub上のプライベートレポジトリにあるので、後ほどメンバと整理整頓をしてから公開できたらと思います。

実は上の図の処理のあとにRuby on Railsでページに表示したりetc…といった機能があるのですが、それは@hotu_taの担当なのでバトン投げます〜