放送大学【進化する宇宙('11) #3】 んー
教科書との対応がふわっとする瞬間があって、
頭にすっと入らない。
最後にまとめた部分だけ押さえればいいんだろうか
放送大学 【進化する宇宙 ('11) #2】 27:00 ころに出てくるスライド
絶対等級の求め方のスライドの意味が理解できなかった
普通に数式を展開してくれればわかるものを
満足した
openHAB on Raspberry Pi: Appendix A
Raspberry Piの無線WiFi利用
今回はopenHABの動作とは本質的には関係ないのでおまけです。さらに手順が長くなるので2つに分けようと思います。
概略としてはこう分けようと思います。
- WiFiドングルをデバイスとして認識
- WPA2でアクセスポイントに接続
今回はWiFiドングルの認識をやります。
WiFiドングルをデバイスとして認識
Raspberry PiでWiFiを使っている人がいて、家にも1個使っていないのがあったので試そうと思いました。
デバイス認識などでとても参考になったのは以下のサイトです。
今回使ったのはWiFiドングルはこちらです。
(1) WiFiドングルを認識
制御のためのモジュールを入れたい。まずlsusbで現況確認します。
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0789:0168 Logitec Corp. LAN-W150N/U2 Wireless LAN Adapter
Bus 001 Device 005: ID 413c:2105 Dell Computer Corp. Model L100 Keyboard
ここで分かったこと
- デバイスの名前がLAN-W150N/U2
- IDが0789:0168
(2) rt2800usbをmodprobeする
(i) モジュールをつっこむ
lsmodの出力がうまくHTML化できてないけど、とりあえずmodprobeで適切なモジュールが入ったことを確認してください。
$ sudo modprobe rt2800usb
$ lsmod
Module Size Used by
aes_generic 32497 0
arc4 1387 2
rt2800usb 12481 0
rt2800lib 48137 1 rt2800usb
crc_ccitt 1553 1 rt2800lib
rt2x00usb 11851 1 rt2800usb
rt2x00lib 43907 3 rt2x00usb,rt2800lib,rt2800usb
mac80211 251866 3 rt2x00lib,rt2x00usb,rt2800lib
cfg80211 180452 2 mac80211,rt2x00lib
snd_bcm2835 21505 0
snd_pcm 80650 1 snd_bcm2835
snd_page_alloc 5347 1 snd_pcm
snd_seq 59372 0
snd_seq_device 6916 1 snd_seq
snd_timer 21638 2 snd_seq,snd_pcm
snd 57253 5 snd_timer,snd_seq_device,snd_seq,snd_pcm,snd_bcm2835
evdev 9470 0
(ii) /etc/modules を編集
毎回起動時に読み込まれるようにします。私の設定ファイルはこんな感じです。
----
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.
snd-bcm2835
rt2800usb
----
これで起動時には読み出されるはず。ここまではよかったのですが、再起動後に指定のモジュールは入るけどネットワークのデバイスがiwconfig, ifconfigでもまったく見えなくて途方にくれました。
これをなんとかするには/etc/modprobe.d/に設定を追加する必要があります。
(iii) /etc/modprobe.d/usb-lan.conf の作成
実はmodprobe.d以下はよくわかっておりません。でもusbのIDを見てデバイスを認識しているっぽいということで以下のようにしました。usb-lan.confの中身は以下のようになります
install rt2800usb /sbin/modprobe --ignore-install rt2800usb; /bin/echo "0789 0168" > /sys/bus/usb/drivers/rt2800usb/new_id
(iV) /etc/udev/rules.d/70-persistent-net.rules を修正?確認?
修正内容を失念したのですが、以下のようなものになってます。
----
# USB device 0x2019:0xed14 (usb) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:01:8E:DC:C9:9B", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"
# USB device 0x:0x (rt2800usb) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:01:8e:dc:c9:9b", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan1"
----
2行とも同じような内容に見えますね。1行消してしまってもいいかもしれません
(V) 再起動。
iwconfigには無事にwlan1が出現
lo no wireless extensions.
eth0 no wireless extensions.
wlan1 IEEE 802.11bgn
ESSID:off/any Mode:Managed Frequency:2.452 GHz Access Point: Not-Associated
Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off Power Management:on
まとめ
これでデバイスが認識できました。次回はwpa_supplicantとの合わせ技です
openHAB on Raspberry Pi: Vol.3
OpenHABを動かす
やっと目的のもののインストールを行います。とりあえずデモサーバーを動かしましょう。
1. 必要なものを揃える
公式のサイトにリリースがありますが、Nightly Build的なサーバーを私は利用しています。runtimeとdemoをまず用意しましょう。addonsは使ってみたいのですが、エラーが増えたりRaspberry Pi自体の動作が重たくなるような気がしたので別の機会に回します。
(1) 公式からダウンロード http://code.google.com/p/openhab/
- openhab-runtime-1.1.0.zip
- openhab-demo-1.1.0.zip
(2) Nightly Build をダウンロード https://openhab.ci.cloudbees.com/job/openHAB/
- distribution-runtime-1.2.0.zip
- distribution-demo-1.2.0.zip
Raspberry Pi がインターネットに接続できていれば、Raspberry Pi上で必要なアーカイブを引っ張ってきてもいいかもしれません。
2. 配置する
Raspberry Piのルートファイルシステムに置きます。サーバーアプリとしてどう置けばメンテナンスしやすいとかは今回は考えないことにします。
(1) /srv/openhab を作り配置します。
# mkdir -p /srv/openhab
(2) アーカイブを解凍します
demoのアーカイブも上書きしてしまいます。
# cd /srv/openhab
# unzip <runtimeのアーカイブ>.zip
# unzip <demoのアーカイブ>.zip
(3) 簡易な設定をします。と言ってもopenhab.cfgを作るだけです。
# cd /srv/openhab
# cp openhab_default.cfg openhab.cfg
(4) 動作を確認する
このopenHABのRuntimeサーバーは起動までに若干時間がかかります。
起動時の負荷は大きめですがすこし待てば安定します。
# cd /srv/openhab
# sudo ./start.sh
※ 確認だけなので実行権限等はあまり考えていません。
※ 起動時の負荷はかなり大きくて startx して使っていたりするとまったくGUIが動かないと感じることもあるかもしれません。
まとめ
とりあえずDemoサーバーを動かすことはできました。startx はしないほうがいいと思います。端末用にRasberry Piをもう1台買った方がいいはずです。
openHAB on Raspberry Pi : Vol.2
前の記事で Oracle JVM のために Soft-float Debian “wheezy” をあえて選択しました。今回はOracle JVMを導入します。
以下のサイトがすごく参考になりますからご覧ください。
http://www.oracle.com/technetwork/articles/java/raspberrypi-1704896.html
1. Oracle から必要なものをとる。
Java Embeddedはこちらです。
http://www.oracle.com/technetwork/java/embedded/overview/getstarted/index.html
ここから以下のものを落とします。2つ用意したのはバグ・性能・openHABのアドオンの要求などがあったためです。
とにかく使ってみたい場合は片方で充分です。ただ "ARMv6/7 Linux - Headless EABI, VFP, SoftFP ABI, Little Endian" という種類のtarballを落としましょう。
2. Javaの設置
私は /opt 以下にtarballを解凍して、このよう配置しています。
- /opt/ejre1.6.0_38
- /opt/ejre1.7.0_10
このままだとパスが面倒なのでupdate-alternativesで選びやすくしておきます。
# update-alternatives --install /usr/bin/java java /opt/ejre1.6.0_38/bin/java 1600
# update-alternatives --install /usr/bin/keytool keytool /opt/ejre1.6.0_38/bin/keytool 1600
# update-alternatives --install /usr/bin/java java /opt/ejre1.7.0_10/bin/java 1700
# update-alternatives --install /usr/bin/keytool keytool /opt/ejre1.7.0_10/bin/keytool 1700
これでひとまずOK
$ update-alternatives --display java
と実行するとこんな出力がでます。
java - manual mode
/opt/ejre1.6.0_38/bin/java - priority 1600
Current 'best' version is '/opt/ejre1.7.0_10/bin/java'.
私は諸般の事情で1.6の方を使用しています。
3. Javaの動作確認
これを実行します
$ java -version
こんな感じになります。
java version "1.6.0_38"
Java SE Embedded Runtime Environment (build 1.6.0_38-b05, headless)
Java HotSpot(TM) Embedded Client VM (build 20.13-b02, mixed mode)
まとめ
難しい点はなかったと思います。
openHAB on Raspberry Pi : Vol.1
Section 1: Raspberry PiでLinuxが動くようにする
特に難しいことはないです。ただ次のステップでOracle JVMを使いたいことを忘れずに。
ここに書いてあることは以下のサイトをリライトしているに過ぎません。
- http://elinux.org/RPi_Easy_SD_Card_Setup#Copying_an_image_to_the_SD_card_in_Linux_.28command_line.29
1. Raspberry Piの公式にLinuxをダウンロード
Oracle JVMを使うときは、性能はあまり出ないけどSoft-float Debian “wheezy”を使いましょうということです。
いちおう、以下のコマンドでファイルがぶっ壊れていないかを確認します。
# sha1sum 2012-08-08-wheezy-armel.zip
この出力を上記のウェブサイトのハッシュと確認してください。問題ないような解凍します。
# unzip 2012-08-08-wheezy-armel.zip
得られるのはddイメージです。2012-08-08-wheezy-armel.img だと思います。
2.SDカードを用意
Class4の4GBがおすすめらしいです。インストールに成功して最初のLinux起動時に「ルートファイルシステムが入っているパーティションを広げる処理をするか?」と聞かれたりもします。
# df -h
を実行して何がどこマウントされちゃってるのかを確認します。私の場合は/dev/sdb〜でしたので、以降そのように仮定します。もしもカードリーダーに挿した段階でmountされていたらumountしてください。
3.イメージの焼き込み
こんなコマンドを実行し待ちます。ただ起動するSDカードはこれでできます。
# dd bs=4M if=~/2012-08-08-wheezy-armel.img of=/dev/sdb
最近は4GB以上のSDカードも増えています。その場合はrootfsのパーティションをgpartedなどで拡げてください。以下のURLが参考になるはずです。
さらに次のOracle JVMをインストールする時にも参考にします。
4.まとめ
今回の作業は特に問題ないと思います。ただ最後に少しだけふれた、rootfsの入ったパーティションを拡げるとLinuxが起動しなくなることもあるので、そうしたらやり直しましょう。
気が向いたら起動する様子を動画でアップしたいと思います。
openHAB on Raspberry Pi : Preface
端緒
以前から気になっていたRaspberry Piを購入しました。
そして以前から気になっていたopenHABをこいつの上で動かそうと思います。
戦略
次のような感じでいきます。
- Section 1. Raspberry PiでLinuxが動くようにする
- Section 3. Section 1,2.のもとでopenHABが動くようにする。
- Appendix B. openHABで制御される側を考える・作る
- Appendix C. 次のことを考える
今回のまとめ
とりあえずここまでは忘れないうちにまとめる。今週中かなぁ。
詳しいことは次回から