Google Home Mini を買った
droneを買わずに勢いでGoogle Home miniとChrimecastを購入。使ってみないと利便性は分からない。まだまだアプリが少ないようなのでまだまだくだらないものでも公開できそう。
説明書もなく、スマホのアプリからサクッと設定。ブルートゥースのリンクでしているのでしょうかこのあたりとても便利です。
子供達のはしゃぎ声のなか、「Ok Google」がきちんと反応して感動。
droneを買わずに勢いでGoogle Home miniとChrimecastを購入。使ってみないと利便性は分からない。まだまだアプリが少ないようなのでまだまだくだらないものでも公開できそう。
説明書もなく、スマホのアプリからサクッと設定。ブルートゥースのリンクでしているのでしょうかこのあたりとても便利です。
子供達のはしゃぎ声のなか、「Ok Google」がきちんと反応して感動。
Node-RED のプロセス管理ツールとして PM2 を利用しています。
少し時間が立ったので pm2 自体をアップデートしたので方法をメモしておきます。
現在の状態を保管
pm2 save
sudo npm install pm2 -g
利用しているユーザ(pi) で pm2 update
を実行します。
この際、登録していたアプリケーションが消えてしまったので再起動しておきます。
Raspberry pi の場合には systemd を利用していますので pm2 startup コマンドでシステム起動時の自動起動が設定できます。
もし自動起動をしていない場合には次のコマンドで登録できます。こんかい場合には ndenv を入れているので次のコマンドに成ります。
sudo env PATH=$PATH:/usr/local/ndenv/versions/v6.12.2/bin /usr/local/ndenv/versions/v6.12.2/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi
これで /etc/systemd/system/pm2-pi.service が生成されます。
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target
[Service]
Type=forking
User=pi
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/local/ndenv/versions/v6.12.2/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/pi/.pm2
PIDFile=/home/pi/.pm2/pm2.pid
ExecStart=/usr/local/ndenv/versions/v6.12.2/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/local/ndenv/versions/v6.12.2/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/local/ndenv/versions/v6.12.2/lib/node_modules/pm2/bin/pm2 kill
[Install]
WantedBy=multi-user.target
これでsystemdに登録されれています。ランレベルは multi-user レベル(昔のランレベル3,4,5に相当)となっていますね。
$ systemctl status pm2-pi
● pm2-pi.service - PM2 process manager
Loaded: loaded (/etc/systemd/system/pm2-pi.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2018-02-04 11:54:39 JST; 8min ago
Docs: https://pm2.keymetrics.io/
Main PID: 16500 (PM2 v2.9.3: God)
CGroup: /system.slice/pm2-pi.service
‣ 16500 PM2 v2.9.3: God Daemon (/home/pi/.pm2)
Feb 04 11:54:37 homepi pm2[6414]: [PM2] Process /usr/local/bin/homebridge restored
Feb 04 11:54:38 homepi pm2[6414]: [PM2] Process /home/pi/local/node-red/node_modules/node-red/red.js restored
Feb 04 11:54:39 homepi pm2[6414]: ┌────────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────┬───────────┬───────────┬─────
Feb 04 11:54:39 homepi pm2[6414]: │ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watc
Feb 04 11:54:39 homepi pm2[6414]: ├────────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────┼───────────┼───────────┼─────
Feb 04 11:54:39 homepi pm2[6414]: │ homebridge │ 0 │ fork │ 6511 │ online │ 0 │ 2s │ 49% │ 17.2 MB │ undefined │ disa
Feb 04 11:54:39 homepi pm2[6414]: │ red │ 1 │ fork │ 6517 │ online │ 0 │ 2s │ 26% │ 16.7 MB │ undefined │ disa
Feb 04 11:54:39 homepi pm2[6414]: └────────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────┴───────────┴───────────┴─────
Feb 04 11:54:39 homepi pm2[6414]: Use `pm2 show <id|name>` to get more details about an app
Feb 04 11:54:39 homepi systemd[1]: Started PM2 process manager.
最後、いちおうRaspberryPiを再起動して確認しておきます
ちょっと秋葉原による時間があったので 128×64のELディスプレイを買ってきました。価格は580円でした。ネットでこの辺の情報を調べていたら「コンソール」として使えるというのを見かけたので試してみました。
とても小さいです。既にピンがついているのでブレッドボードだったら簡単に使えますね?
既にi2cを配線してしまっているので横からポリウレタン導線をつかってパッチしていきます。正直久しぶりすぎて疲れた。1時間くらいかけてようやく4本を配線した感じです。今回は、vccは3.3Vの方に接続しました。裏は汚いのでお見せできません。
マニュアルにも書いて有りましたが配線が間違ってなかったら 0x3c として接続されることがわかります。
i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --
ドライバはいつもお世話になっている Adafruit 社が出してくれているので利用します。
sudo apt-get install git
cd /home/pi/local
git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
cd Adafruit_Python_SSD1306
sudo python setup.py install
サンプルコードもついていますので起動してみます。
cd ~/local/Adafruit_Python_SSD1306/examples
python stats.py
縦が64ドットあるので 8×8フォントだと4行表示できるのでいい感じです。 stats.py の中に解像度を指定している箇所があるので変更しておきましょう。ディフォルトだと32ドットで起動してきます
次にやってみたかったコンソール表示をしてみます。
やり方は上記のサイトのままで動きます。
rootユーザで実施します。
cp oled /bin/oled
chmod a+x /bin/oled
export DEBIAN_FRONTEND=noninteractive
apt-get install console-data
次に /etc/fb.modes の最後についきます。
mode "128x64-60"
# D: 25.175 MHz, H: 31.469 kHz, V: 59.94 Hz
geometry 128 64 128 64 8
timings 39722 48 16 33 10 96 2
endmode
サービスとして今回道入した oled を動かすために /etc/systemd/system/oled.service を作成します。
[Unit]
Description = oled daemon
After = multi-user.target
# After=display-manager.service
[Service]
ExecStartPre=/bin/bash -c "/bin/sleep 10; /bin/chvt 1; /bin/fbset '128x64-60'; /bin/setfont 'alt-8x8'"
ExecStopPost=/bin/bash -c "/bin/fbset '800x600-60'; /bin/setfont 'default8x16'"
ExecStart = /bin/oled
Restart = always
Type = simple
[Install]
WantedBy = multi-user.target
自動起動を登録します
systemctl enable oled
この状態で再起動ししばらくすると下のように表示されます。
これは便利だと思います。仮にネットワークアドレスが不明な場合など小さいながらもコンソールが使えるので気合で頑張れる(乗り切れる)はずです。USB接続のキーボードを使えば普通に動きます。(キーボードが日本語キーボードの場合には raspi-configで設定をしておくと良いです)、また先のリンク先にも書いていますが画面が狭いのでプロンプトを export PS1=">"
にしておくと良いですね。
最後に日本語フォントを利用するためにフォントを道入しておきます。
こちらのフォントを指定すればプログラム(python)内で指定すれば利用できるようになります。極小ですが読めます。
考えも特になくディスプレイ付けてしまったのでボタン取り付けて表示される内容を切り替えれるなどしておきたいです。
ブレッドボードでケーブル出しっぱなしだったので整理がてらユニバーサル基板に温度センサーを貼り付けてみました。老眼ぽくなり始めていて半田がツライ。部品があんまり家になかったので無理やり繋げた感がありますがとりあえず動いたので良かった。
ユニバーサル基板は、以前秋月電子に行った時に2枚買ってきていた物を使いました。
無理矢理感がありますが。
本当はリモコン様にRFモジュールを付けたいところ。後は普通に使うようにOLEDモジュールを付けておこうかな
便利な世の中でなんでもモジュールがありますね。
利用しているのは Raspberry pi zero に BME280 を接続して温度を取得してみました。HomeKit(HomeBridge)経由で接続することで iPhoneの「HOME」アプリから簡単に見れるのがいいですね。
$ npm install -g homebridge-bme280
"accessories": [
{
"accessory": "BME280",
"name": "Sensor",
"name_temperature": "Temperature",
"name_humidity": "Humidity",
"options": {
"i2cBusNo": 1,
"i2cAddress": "0x76"
}
}
]
実際に使ってみると表示の部分は TemperatureFile
と HumidityFile
プラグインと同じ感じですね。このプラグインを使うと特にCronで定期的に取得しなくても良いのは楽です。