25: 都元と学ぶIoTアドベントカレンダーだった2014【まとめ】

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

よく訓練されたアップル信者、都元です。やっと辿り着いたメリークリスマス。12/1から毎日お送りしてきました「都元と学ぶIoTアドベントカレンダーかもしれない2014」ですが、本日何とか走りきったということで「都元と学ぶIoTアドベントカレンダーだった2014」に改めさせて頂きます。昨日のエントリーはこちらです。

「筆速いくせに予防線とかセコいww」と煽ってくれた同僚各位には感謝を禁じえません覚えてろ。

まとめ

エントリーの一覧としては、シリーズ都元と学ぶIoTアドベントカレンダーだった2014をご覧下さい。

今日は連載としては最後ですので、ボツネタ等、蛇足を列挙しようと思います。

コピペ用コマンド集

一連のエントリーを書くにあたって常にコピペして使っていたコマンドをご紹介します。

【セットアップ系】

アドベントカレンダー期間中、何度と無くreboot otaをしました。その後、最低限のオレオレ環境に戻すためのコマンド集です。

journalログがディスクを食いつくすバグ対策

ファームウェア初期化した直後にログインしたらこのコマンドを流します。ディスクの余裕があるところに格納実体を作って、シンボリックリンクを貼ってるだけです。

mkdir -p /home/.storage/var/log/journal ; systemctl stop systemd-journald ; mv /var/log/journal/* /home/.storage/var/log/journal/ ; rm -fr /var/log/journal ; ln -s /home/.storage/var/log/journal /var/log/journal ; systemctl start systemd-journald
適当なshell設定

最低このくらいはあるといいなぁ、っていうalias設定をして現状に反映。ここはただの好みですが。

tee ~/.profile << _EOF_ >/dev/null
alias ll='ls -la --color=auto'
alias rm='rm -i'
alias systemctl='systemctl --no-pager'
_EOF_

source .profile
初期設定

これはコピペするまでもないですが。手順の備忘として。

configure_edison --setup
opkgのリポジトリ設定とアップデート

これは少々時間が掛かりますが。毎回やっておくべきでしょう。

tee /etc/opkg/base-feeds.conf << _EOF_ >/dev/null
src/gz all        http://repo.opkg.net/edison/repo/all
src/gz edison     http://repo.opkg.net/edison/repo/edison
src/gz core2-32   http://repo.opkg.net/edison/repo/core2-32
_EOF_

tee /etc/opkg/intel-iotdk.conf << _EOF_ >/dev/null
src intel-all     http://iotdk.intel.com/repos/1.1/iotdk/all
src intel-iotdk   http://iotdk.intel.com/repos/1.1/intelgalactic
src intel-quark   http://iotdk.intel.com/repos/1.1/iotdk/quark
src intel-i586    http://iotdk.intel.com/repos/1.1/iotdk/i586
src intel-x86     http://iotdk.intel.com/repos/1.1/iotdk/x86
_EOF_

opkg update; opkg upgrade
bashとlessの導入

欲しかったから入れただけです。好みです。bashがないとhistory検索も使えないので辛いです。

opkg install bash less; chsh -s /bin/bash
XDKのIPホワイトリスト登録

XDK使うのであれば必須ですね。

xdk-whitelist --add xx.xx.xx.xx
systemctl restart xdk-daemon
AWS CLIの導入
wget https://bootstrap.pypa.io/ez_setup.py --no-check-certificate -O - | python; easy_install pip; pip install awscli

【WiFi設定】

環境を変える際、WiFiの再設定が必要になることがあります。configure_edison --setupでは、マシン名から何から全て再設定してしまいますので、WiFiの設定だけを書き換えたい時、このコマンドを使います。ちなみに、オプション無しで実行すれば、利用できるオプションが一覧できます。

configure_edison --wifi

WiFi接続を行っているデーモンの再起動はsystemctl restart wpa_supplicantで出来ます。

WiFiの接続先等の設定ファイルは/etc/wpa_supplicant/wpa_supplicant.confなので、何か異常を感じたら、このファイルを見てみるといいかもしれません。このファイルに複数の接続先エントリが自動的に追加されてしまい、上手く接続できないという経験がありました。

【ログ閲覧】

journalログを流す時はjournalctl -fでいいのですが、mDNS (bonjour) *1のログが結構ウルサイので、フィルターしています。

journalctl -f | grep -v "mdnsd"

また、特定のユニットのログだけを見たければ、こんな指定も可能です。

journalctl -u xdk-daemon

さらに、プロセスIDが特定できていれば、こんな指定もできます。

journalctl _PID=1

昨日のCloudWatch結果のもうちょっと長い結果

昨日のCloudWatchネタは急遽変更だったため、結果のグラフ期間が短いものしかご紹介できませんでした。半日分以上溜まったデータがこちらです。正常ですね。

2014-12-25_1027

本日の東京の日の出は6:48。日の出すぐから明るくなるわけもなく、だいたい7時くらいから光が差し込むんですね。

EdisonをWiFiのアクセスポイントにする

EdisonはWiFiのアクセスポイントにつながるクライアントとしてセットアップされていますが、逆に、WiFiのアクセスポイントになることもできます。しかし残念ながら、両方の役割を同時に担うことはできません。別途WiFiインターフェイスを追加すれば可能かな?

やり方は、デフォルトで動いているwpa_supplicantを止めて、hostapdを動かすだけです。

systemctl stop wpa_supplicant
systemctl start hostapd

こうすると、Edisonのホスト名と同名のSSIDが見えるようになり、rootパスワードと同じパスワードで接続できます。パスワードはhostapdの設定ファイル/etc/hostapd/hostapd.confに平文で記述されています。configure_edison時に書かれたものでしょう。なんとなく、嫌な感じがしますので、気になる方は変更しましょう。

というわけで、このアクセスポイントにMacから接続を試みましたが、上手く繋がりませんでした。というわけでボツネタに。

一応参考資料はこちら → https://communities.intel.com/docs/DOC-23137

Intel EdisonのArduinoボードにSDカードを挿してマウントしてみる

というのも考えましたが、手元にマイクロSDが無かったのでボツりましたw まぁ、挿して認識されてマウントできて、っていう単純なものだと思います。多分。

編集後記

さて、12/1にボスが「いくぜハードウェア」と打ち上げ、その日のうちに「乗るしかない、このビッグウェーブに」と心に決め、寒風吹きすさぶ中、秋月電子通商様、千石電商様、島山無線商会様等を駆けまわった25日間でありました。12/1時点ではハードウェアに関して全くのド素人であった都元ですが、お陰様できちんとブートアップが出来た感があります。弊社の後進もこのエントリー群を順に追って、間もなく追い付いてくると思います。そんなチームで、ワクワクするようなIoTのお仕事ができるといいなぁ、と願って止みません。

また、こんな技術を使ってお仕事をしたい、という方も絶賛募集しております。是非弊社採用ページをご覧の上、ご検討頂ければと思います。

そして、都元によるEdison / IoT系のエントリーは、これで終わりじゃありません。さすがに頻度は落ちますが、今後も新しい発見があり次第、本ブログを通して情報発信を行っていくつもりです。というわけで、今後ともよろしくお願いします。

脚注

  1. edisonのホスト名をローカルネットワーク内に通知するプロトコル。PCからssh root@edison.localで名前解決できるのはこれのおかげ。