Sonyから、MESHハブなるものがリリースされた。

https://meshprj.com/jp/hub/

MESHハブ

MESHハブを使うと、RaspberryPi上でMESHシナリオを実行できるようになる。 いいじゃん、これは嬉しい。

これまではiPhoneかAndroidのアプリでしかMESHシナリオを動かしておくことができなかった。さらに、iPhoneまたはAndroidのアプリが常にMESHタグと通信できる状態にある必要があった。

よって、これまでのMESHアプリの用途は、あくまでゲームのように、遊ぶときだけ一時的に起動するだけ、というレベルに制限されていた。

一方、私はMESHを生活のための用途、玄関に設置したPhilips HueをMESH人感センサータグから制御する、に用いていたため、これまではiPhoneをMESHアプリを開いた状態で部屋に安置し常時給電することで、MESHシナリオが常に動作するようにしていた。

だがせっかくのiPhoneなのに自宅に拘束されたままなのは勿体無い。 かといって家から持ち出したり、迂闊に給電し忘れたりすると玄関の人感ライトが点かなくなってしまう。どうしたものか。

そこでMESHハブである。 MESHハブを使えば、RassberryPiが常時待機してMESHタグの相手をしてくれる。 iPhoneはもう自由に使ってよくなる。しかもiPhoneよりも安定動作するだろう。

ついでに、買ったはいいものの箱に入れたままになっているRaspberryPiもようやく日の目を見ることができる。

そういうわけで、早速MESHハブのセットアップをしてみた。

用意したもの

以下を使った。

  • Raspberry Pi 3 Model B
  • SDスロットがあるPC
  • SD-MicroSD変換アダプタ
  • MicroSDカード 8GB
  • MicroUSBケーブル
  • HDMI
  • USBマウス

他に、PCからSSHを利用できるか、USBキーボードが必要である。

Raspbian Stretchのインストール

Raspbian Stretchというのは、RaspberryPiの本家OSである。

RaspberryPiの初期状態ではOSが入っていないため、はじめにインストールしてやる必要がある。ブートに使うのは基本的にMicroSDカードのようだ。初心者なので素直にMicroSDカードを使うことにした。

まず、RaspberryPiのOSイメージを公式のWebページからダウンロード。

ここから RASPBIAN STRETCH WITH DESKTOP を選び、ZIPをダウンロードした。 初心者なのであとで嵌ったときにリカバリしやすいようにデスクトップが入っているやつを選んだ。

ZIPを展開したところ、 2017-11-29-raspbian-stretch.img というイメージファイルが出てきた。

イメージの書き込みには、蔵から引っ張り出してきたWindowsを使う。 Windowsでは Win32 DiskImager というソフトウェアを利用し、起動イメージを作成した。

本当ならこの記事を書いているThinkPad/Fedoraを利用したいのだが、 残念なことにSDカードスロットが無かった。 外付けSDカードリーダー/ライターを買ってもいいが、早くセットアップしたいので11年前のDynabook/WindowsVistaに頑張ってもらった。

RaspberryPiの実機にMicroSDカードを挿入し、 LANケーブル、HDMIケーブル、USBマウスを、MicroUSBケーブル(給電用)を差し込む。 RasberryPiには起動スイッチみたいなものは無く、給電すると勝手に起動するようだ。

キーボードも繋ぐのが普通だが、今回は繋げなかった。 家にPS/2キーボードしか見付からなかったためだ。 USBキーボードもあったはずだが、全台出張中?

起動すると、眼科の視力測定器で見たことあるような背景を表示しつつ、 デスクトップが自動的に立ち上がった。

Bru-lay

なかなかいい画像だなあと思った。

手元のマウスを動かしてみると、マウスカーソルが動いた。優しい。

だがキーボードが無い。キーボードが無いと設定できる気がしない。 こういうときにはSSHだ。とにかくSSH接続しなければ。

RasberryPiの設定

適当にポチポチやっていたところ、左上から表示できるメニューより SSH サーバを有効化する設定を発見したのでONにした。

2018-04-18版のRaspbianではGUIから設定してもSSH接続できなくなった。 GUIからいけたのは2017-11-29版以前の話だ。 2018-04-18版でもGUIからうまく設定する方法があるか、今の私はわからない。

また、右上の上下に矢印が書いてあるアイコンをクリックしたところ、 RaspberryPiのIPアドレスが表示された。 192.168.0.18 らしい。

普段使いのPC(Fedora)からSSHでRaspberryPiへ接続。

% ssh pi@192.168.0.18

デフォルトのpiユーザがあり、パスワードは raspberry である。

Linux raspberrypi 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Jan 19 14:35:55 2018

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.
pi@raspberrypi:~ $ 

オッケー。

pi@raspberry:~ $ uname -a
Linux raspberry 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l GNU/Linux

ARMで、

pi@raspberry:~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

Raspbian。

設定は設定ツールを使って行った。楽そうだからだ。

% sudo raspi-config

以下の変更を適当にやったはず。

  • pi ユーザのログインパスワード変更
  • ホスト名を変更 -> fg-rasp1
  • WiFi設定
  • BootをCUI(Console) に変更
  • Configuring locales で en_US.UTF-8 UTF-8ja_JP.UTF-8 UTF-8 を選択
  • Default local for the system environment は en_US.UTF-8 UTF-8 にした
  • TimeZone は Asia/Tokyo
  • Wi-fi Country を Japan に変更。
  • SSHサーバを有効化。

以上のあと、Finish を選択。 再起動しろといわれるので素直に再起動した。

Raspbian

再起動してからSSH接続できたら、 あとは給電用MicroUSB以外全て外してしまってよい。

ちなみに初回だけSSH接続できるようになるまでに少し時間がかかった気がする。

ここまで来たら、あとはMESHハブを入れていくだけだ。

MESHハブのインストール

公式マニュアルに書いてある通りにやって、特に考えるところは無かった。

はじめに依存ライブラリをインストールする。

$ sudo apt-get update
$ sudo apt-get install bluez dnsutils sqlite3 libcrypto++-dev libcrypto++-utils libcurl4-openssl-dev

次にMESHハブのバイナリパッケージをダウンロードする。

ダウンロード元のURLを取得するには、WebブラウザでMESHのWebページを開き、ログインしてMESHハブソフトウェアの配布ページで使用許諾に同意する。

適当にやっていると、wget でバイナリパッケージをダウンロードするコマンドが表示されている。このコマンドをSSH接続したRaspberryPi上で実行。

$ mkdir ~/Download/bin
$ cd ~/Download/bin
$ wget ... # MESH Webページで表示されたコマンド
$ sudo dpkg -i -D11 mesh_1.0.0_armhf.deb

Mesh起動。

$ mesh start
● mesh.service - MESH Server script
   Loaded: loaded (/etc/systemd/system/mesh.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-01-20 01:07:37 JST; 38ms ago
 Main PID: 17991 (node)
   CGroup: /system.slice/mesh.service
           └─17991 /opt/mesh/node/bin/node /opt/mesh/current/index.js

 1月 20 01:07:37 fg-rasp1 systemd[1]: Started MESH Server script.

systemd ですね、わかります。

Meshのセットアップ

公式マニュアルに従ってセットアップしただけ。

https://support.meshprj.com/hc/ja/articles/115003882094

MESHハブと化したRaspberryPi

シナリオ作成

過去に作ったiPhone上のシナリオをそのままRasberryPiへ移行したかったが、 パっと見できなそうだったので作り直した。

注意としては、MeshタグをRasberryPiと新たにペアリングするには、 事前にMeshタグとiPhoneのペアリングを解除しておく必要がある。

IPアドレスの固定

しばらくして、IPアドレスが固定されていないとやっぱり不便に感じたため、固定の設定を行うことにした。

RaspberryPiは DHCPCD でその辺の設定ができるらしい。

とりあえずこんな風にした。

# tail -4 /etc/dhcpcd.conf 
interface wlan0
static ip_address=192.168.0.101/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

あとは再起動しておけばよい。

# shutdown -r now