Raspberry Piの設定【Weaved - IoT Kit による外部ネットークからのSSH接続】

 最近Raspberry Piネタの連投となっていますが、これまた先日TechCrunchで記事になっていたWeavedwww.weaved.com)を試してみたいと思います。

 このWeavedはSSHやHTTP(Web)、WebIOPiといったRaspberry Piのサービスに外部ネットークから接続して利用できるというもので、Raspberry Piへ「Internet of Things」に必要な機能をのせて、便利に使おうという試みのようです(テクニカルにはポートを決めて真っ直ぐトンネル張ってるイメージでしょうか)。

 

f:id:yamaryu0508:20141213225229p:plain

(Weavedのホームページ

 

現在、次の5つのサービスが利用できますが、現バージョン(1.2.5)では同時インストールは安定性を確認していないとのことです。

  1. WebSSH(デフォルトポート3066)
  2. SSH(デフォルトポート22)
  3. Web/HTTP(デフォルトポート80)
  4. WebIOPi(デフォルトポート8000
  5. カスタム

今回は、こちらの公式YouTubeチャンネルの中にあった次の動画を参考に2番目のSSHを設定します。トップページにある通り、サービスセットアップには15分とかかりません。


Using Weaved for SSH with your Raspberry Pi ...

 

手順1 Weavedにサインアップして設定画面へ移動

 Weaved(www.weaved.com)にサインアップして、設定(説明)画面へ移動します。

f:id:yamaryu0508:20141213234034j:plain

サインアップには、「Email」、「Passwowd(確認含む)」を入力します。

f:id:yamaryu0508:20141213234059j:plain

サインアップできたら、Weavedの設定を開始するためのRaspberry PiのアイコンがWeavedホーム画面に現れますので、これをクリックします。

f:id:yamaryu0508:20141213234152j:plain

 

手順2 設定(説明)画面に沿ってRaspberry Piへのインストールと設定を行う

 この画面の説明に沿って、以下の作業を続けていきます。

f:id:yamaryu0508:20141213234515p:plain 

手順3 「Weaved for Raspberry Pi」をRaspberry Piにインストール

 ここからの作業はRaspberry PiでローカルネットワークからSSH接続してコマンドを入れていきます。ログインしたら、まずは「Weaved for Raspberry Pi」をダウンロードします。

wget https://github.com/weaved/installer/raw/master/binaries/weaved-nixinstaller_1.2.5.bin

f:id:yamaryu0508:20141213235025p:plain

 

ダウンロードしたら、権限を変えてインストールします。

$ chmod +x weaved-nixinstaller_1.2.5.bin
./weaved-nixinstaller_1.2.5.bin

f:id:yamaryu0508:20141213235209p:plain

f:id:yamaryu0508:20141213235231p:plain

インストーラが走り出すと、ユーザー名(メールアドレス)を聞いてきますので、サインアップした時のメールアドレスを入力します。

f:id:yamaryu0508:20141213235348p:plain

ユーザー名同様パスワードを入力します。

f:id:yamaryu0508:20141213235438p:plain

サービスを選択するように言われるので、今回はSSHしたいので、「2」を入力します。

f:id:yamaryu0508:20141213235706p:plain

ここで、初回インストールであれば聞いてきませんが、既に別のサービス等で1度インストールを行っていると、このようなメッセージが現れます。現行バージョン(1.2.5)では多重インストールは推奨されていないとのことですので、素直に「y」として進めます。

f:id:yamaryu0508:20141214000004p:plain

最後に、今回設定しているデバイスのエイリアス(ニックネーム)を入力するよう促されますので、入力します。

f:id:yamaryu0508:20141214000059p:plain

インストール・設定が終わると、このような画面が現れます。以上で、Raspberry Pi本体への設定は終了です。

 

手順3 Weavedページで設定状況の確認と接続情報の取得

 Weavedホーム画面(現状では「Beta Home」で移動できます)で新しく先ほど設定したRasbperry Piがデバイスリストに追加されていることを確認します。

f:id:yamaryu0508:20141214022254j:plain

該当するデバイスの「Connect」をクリックすると、接続しにいって接続情報が表示されます。

f:id:yamaryu0508:20141214001726p:plain

接続情報として「ホスト名」と「ポート番号」が上段に、そのままコピーして使えるLinux用のSSHコマンドフレーズが下段に現れますので、これらを使って接続確認します。私はMacintoshを使っていますので、下段のコマンドフレーズをコピーしてそのままターミナルに貼り付けて接続を試みます。

f:id:yamaryu0508:20141214002033p:plainf:id:yamaryu0508:20141214002057p:plain

ユーザーは「pi」でログインを試みており、途中いつものSSH接続のようにログインパスワードを聞いてきますので、入力すると無事ログインできました。

 

 これで、外出先からちょっと設定を変更したいといったことがあれば、SSHできますので、なかなか便利だなぁと思います。元ネットワーク技術者の私からすると、現在WiMAX配下でRaspberry Piを運用しているのですが、標準ではグローバルIPを付与しなくなったWiMAX配下ででも使えるのは非常にありがたく素晴らしいと言わざるを得ません。ネットワークの難しい設定が不要なので敷居が下がりますね。

 

 他のSSH以外のサービスも便利そうですし機会があれば試してみたいと思います。現在は複数のサービスを同時に使うことが推奨されていなかったりしますが、今後の拡張が楽しみなサービスです。

Raspberry PiによるIoT(M2M)【I2C温度センサー/xively/JavaScript(Node.js)】

 最近「kinoma Createミートアップ参加レポート)」や「Tessel」等ハードウェア制御にもJavaScriptを利用しているキットがチラホラ見受けられるようになりました。そこで、先日Raspberry PiにちょうどNode.jsも入れたばかりということで、前回Raspberry Piを用いてPythonで温度センサー(ADT7410)をxivelyに連携したものを今回JavaScript(Node.js)でトライしてみました。 

 以下、これまでやってきたI2C(関連リンク)やNode.js(関連リンク)までの設定が終わっている前提で進めていきたいと思います。結線図等もありますので、一読して確認頂ければと思います。

 

手順1 Node.js用のモジュールのインストール

 今回の実装のために次のモジュールをインストールします。なお、今回の作業ディレクトリを iotとしておきます。

  • requestHTTPS REST APIクライアント)

  • i2c(I2CのREAD/WRITE)

  • async(非同期、ループ処理)・・・【12/29追記】これをそのまま常駐化として利用するには適さないようです(よく止まります)

$ mkdir iot && cd iot

$ sudo npm install request && sudo npm install i2c && sudo npm install async

f:id:yamaryu0508:20141212090319p:plain

手順2 JavaScript(Node.js)によるセンサーからクラウド連携

 今回も「xivelyAPIドキュメント)」への連携です。※Gistがうまく表示されない時にはこちらから直接ご覧ください。

 

 そして、プログラム実行時には、ここでもI2Cデバイスへのアクセスのため、 sudo node adt7410.jsのように sudoをつける必要があります。もしくは、 sudo adduser pi i2cI2Cグループにアクセスユーザーを追加していれば、 node adt7410.jsのような実行も可能になります(グループ追加時は sudo rebootで再起動しておきましょう)。

f:id:yamaryu0508:20141213212103p:plain

f:id:yamaryu0508:20141212094136p:plain

 

 考え方は前回と同様ですがNode.js on Raspberry Piということで、数少ないサンプルだったと思いますが、いかがだったでしょうか?

 今後更にハードとソフトのボーダレス化が進み色々なアイディアが出てくることでIoTの分野も面白みを増してくるのではないかと思います。

「kintone Café @ chiba みずいろ会館」に参加してきました

 さて、2014年も残り1ヶ月となるこの師走最初のkintone Caféは、Café初の女子会となった「kintone Café @ chiba みずいろ会館」でした。私男ですが、参加させて頂きましたので、レビューしたいと思います。(12/8追記)クラウドWatchにも記事が掲載されました。

 

f:id:yamaryu0508:20141205000426j:plain

(写真にはありませんが、サロン用の設備も備えたシェアサロン「みずいろ会館」)

 

 会場となったみずいろ会館は、案内にもある通り「女性専用の会員制シェアサロン」で、

  • フリーランスとして活動中の方
  • 資格を活かして独立開業したい方
  • 練習の場が欲しい方
  • 店舗を持つ前のお試しをしたい方
  • 夜間だけ、土日だけ、活動したい方

といったような女性を応援するスペースを提供されています。

 今回の開催経緯はこちらのオーナーである永田さんからご説明がありましたが、「kintone Café 千葉」に参加された際に女性参加者が皆無で、「女性でもkintoneを学べる、参加しやすい場を設けたい」と、発起されたとのことでした。

  続いて、イントロパートですが、いつもならkintone Caféをサポートされているサイボウズ佐藤さんから「kinotneとは?」でスタートするのですが、今回は違います。kintoneリリース時からプロモーションを担当されている荒金さんの「kintone10分紹介」からのスタートです!プロモーション用メディア製作依頼時の調整・情報共有等、ご自身の業務での用途を交えながら、kintoneの概要をお話しされていました。今回は主にWeb製作に携わっていらっしゃる方々が対象となっていましたので、参加者の皆さんには馴染みやすい入口になったようでした。

 

f:id:yamaryu0508:20141205000944j:plain

 

 そして、kintone Café定番のハンズオンは、WordPressとの連携をテーマとした内容でした。このパートはサイボウズ西尾さんの担当です。資料のホッチドメが右上(左上でなく)であったこと等突っ込みが入りながら、進んでいきます(^^; 対応するアプリの作成とWordPressの設定を多少のサポートは必要とされながらも、皆さん手際よく進めていかれていました。

 また、ハンズオン中に上がっていたた「もっと可愛いアイコンも欲しいよねぇ」といった声は、他のいつものCaféでは聞かれない女子会ならではだと思います。新鮮です!

 

f:id:yamaryu0508:20141205001325j:plain

 

 ハンズオンが終わると、スイーツタイムです。シフォンケーキやフルーツ、ハーブティー等が振る舞われます。自分主催のCaféでもスイーツに多少気を遣っているつもりなのですが、レベルが違います(^^; そして、私男なのに出張ったのは、この「女子×スイーツ」という強力、もとい緩そうに見えて緊迫感のある、これも違う・・・、そんな雰囲気の中でのLTすべく行って参りました(私が勝手に緊張していただけです)。

 

f:id:yamaryu0508:20141205001352j:plain

 

 いつもはお堅い太陽光発電等の事例やテックなトピックですが、今回は見た目重視です!「StoryMap JS」という地図上にYouTubeや画像イメージ等をプロットできるライブラリを当てたUIカスタマイズデモ(公開サンプル)と、今日12月4日情報解禁となった「kintone × direct連携」のデモを1日先取りでお届けしました。

 後者の「direct」はL is Bさんが提供されるビジネスメッセンジャー、つまりオフィス/フィールドワーカー向けに作られたLINEのようなチャットツールです。今回のリリースで「daab SDKと呼ばれるbot SDKが提供され、これでkintoneとの連携を行いました(ちょっとテックな話)。具体的には、チャット感覚でkintoneとのデータの登録・参照をより簡単に、楽しく行えるものです。当日のデモと同じ動画がありますので、ご覧頂ければと思います。

 


kintone × direct連携【顧客リスト編】BGM有 - YouTube

 

 皆さん熱心にお聞き頂き嬉しかったです(^^) ありがとうございました。私も自分で終えてみて実感したのは、10名弱という少数での開催も要因だったのか、いつもと比べて進行中のご意見・ご質問が活発だったところです。手を挙げてというよりは、自然な対話形式に近い感じだったと思います。

 

 あっという間の2時間で、最後に皆さんからの感想発表と歓談時間がありましたが、「kintoneって名前は知ってて、どんなものか分からなかったけど、なんとなく分かった」、「kintone使ってみようと思う」というような感想をお聞きすることができました。一方で、「自分だけで使いこなしていくにはちょっと難しい部分もありそう」という声もあり、今回のCafé開催の意義はこういった点からも大きかったのではないかと思います。

 

Raspberry Piの設定【Node.jsのインストール】

 今回は最新版のNode.jsのインストールを行いたいと思います。最新版はaptではインストールできず、最新版インストールには色々な方法が紹介されていますが、今回は確実な方法としてビルドから行いたいと思います。本来は、LinuxMac向けの方法だと言えますので、Raspberry Piの性能ゆえ時間を要します。片手間でやるようにしましょう。

 

手順1 最新版のダウンロードと解凍

 最初にsudo suで管理者になって以下の操作を行っていきます。

$ sudo su

# cd

# wget http://nodejs.org/dist/node-latest.tar.gz

# tar zxvf node-latest.tar.gz

ちなみに、ファイルのダウンロードはcurl -O -L http://nodejs.org/dist/node-latest.tar.gzcurlコマンドでやるのもいいですね。

f:id:yamaryu0508:20141206224748p:plain

 

手順2 「Node.js」のビルド

 解凍後のディレクトリに移動して、コマンドを入れていきます。現時点ではv0.10.33が最新版ですので、以下のようになります。

# cd node-v0.10.33

# ./configure

f:id:yamaryu0508:20141206225437p:plain

 更に、コマンドを入れていきます。

# make

f:id:yamaryu0508:20141206225637p:plain

 インストール最後のコマンドを入れます。

# make install

f:id:yamaryu0508:20141206225755p:plain

以上で、Node.jsのインストール終了です。続いて、同時にインストールされているnpm(Node Package Module)をアップデートします。

 

手順3 「npm」のアップデート

 npmでnpm自身をアップデートする感じですね。

# npm install -g npm

f:id:yamaryu0508:20141206230034p:plain

 

 

手順4 「Node.js」と「npm」のバージョン確認

 Node.jsとnpmがインストールされたことの確認を兼ねて、以下のコマンドを入れてみましょう。

# node -v

# npm -v

f:id:yamaryu0508:20141206230537p:plain

 これから、Node.jsで色々遊んでいきたいと思います。なお、片手間でこなしても時間がかかる作業ですので、以前こちらでご紹介したようにここまでの設定のイメージを取っておくことをお勧めします(^^;

 

 

Raspberry Piのイメージバックアップ

 この辺で、Raspberry Piのイメージバックアップの方法を押さえておきたいと思います。色々とプロトタイピングしていると初期化したくなるものですが、途中までは同じ作業を繰り返すことになりますので、ここまでの設定を終えたところでSDカードの内容のバックアップ(イメージ作成)を行いたいと思います。

 なお、引き続き作業はMacBook Airで行っていきます。なお、ディストリビューションのインストール時の作業と似通っていますので、こちらも参考にされてください。

 

【イメージの作成方法】

$ diskutil umountDisk /dev/rdisk1
sudo dd if=/dev/rdisk1 of=20141202-ftp.dmg bs=1m
diskutil eject /dev/disk1

ここで、デバイス名については必ずしも(r)disk1ではありませんので、読み替えについてはこちらの手順4を参考にしてください。

f:id:yamaryu0508:20141203013943p:plain

サイトで配布したりするようにするためには、圧縮かけておきましょう。

$ tar zcvf 20141202-ftp.tar.gz 20141202-ftp.dmg

 

 次に、取り出し方法については、ディストリビューションインストール時と同様です。

 

 

【イメージの適用方法】

 イメージをtar.gz形式に圧縮している場合には、tar zxvfで解答してから次のように進めていきます。

$ diskutil umountDisk /dev/rdisk1
sudo dd if=20141202-ftp.dmg of=/dev/rdisk1 bs=1m
diskutil eject /dev/disk1

ここでもやはりデバイス名に注意してください。

f:id:yamaryu0508:20141203014932p:plain

これで、プロトタイピングを繰り返しやすくなると思います。

 

 

Raspberry Piの設定【FTPサーバ(vsftpd)の設定】

 久々のRaspberry Piネタとなりますが、データの受け渡しにFTPを使いたくなったので、設定方法を書いておきたいと思います。Raspberry PiらしくPythonにこだわりたく色々試したい時には、pyftpdlibも良いと思いますが、aptでインストールできるvsftpdを入れることにします。

 

手順1 FTPサーバのインストール

$ sudo apt-get upgrade && sudo apt-get update

$ sudo apt-get install vsftpd

f:id:yamaryu0508:20141202090749p:plain

 

手順2 「/etc/vsftpd.conf」の設定

 NTPデーモンの設定ファイルである/etc/vsftpd.confを編集していきます。今回はユーザpi使えるようになる最小限の設定を行います。

$ sudo vi /etc/vsftpd.conf

# (変更箇所のみ記載)
# anonymousでのFTPログイン
anonymous_enable=NO #anonymousユーザを禁止(デフォルトはYES)

# ユーザ権限設定
local_enable=YES #ローカルユーザを有効に(デフォルトはコメントアウト)
write_enable=YES #書き込み可能に(デフォルトではコメントアウト)
local_umask=022   #書き込んだ際のパーミッションのマスク(デフォルトではコメントアウト)

# ASCIIモードの設定
ascii_upload_enable=YES #アスキーでアップロードを有効(デフォルトではコメントアウト)
ascii_download_enable=YES #アスキーでダウンロードの有効(デフォルトではコメントアウト)

# ユーザ権限
chroot_local_user=YES #ローカルユーザの制限(デフォルトではコメントアウト)
chroot_list_enable=YES  #リストにより制限を行う(デフォルトではコメントアウト)
chroot_list_file=/etc/vsftpd.chroot_list #リストのパス

f:id:yamaryu0508:20141202102431p:plain

f:id:yamaryu0508:20141202102443p:plain

f:id:yamaryu0508:20141202102501p:plain

 

手順3 「/etc/vsftpd.chroot_list」の設定

 ユーザ権限の設定ファイルである/etc/vsftpd.chroot_listを編集していきます。今回はユーザpiを追加します

$ sudo vi /etc/vsftpd.chroot_list

pi

f:id:yamaryu0508:20141202101913p:plain

 

手順4 vsftpdをリスタート

 ここまで設定したらサービスをリスタートします。

$ sudo service vsftpd restart

f:id:yamaryu0508:20141202102030p:plain

ここでsudo reboot再起動しておきます。

 

手順5 vsftpd起動状態の確認

 vsftpd起動状況を確認します。

$ ps agx | grep vsftpd

f:id:yamaryu0508:20141202102038p:plain

vsftpdのプロセスが常駐し、無事設定完了です。
 

「Kinoma Create ミートアップ」に参加してきました

 昨日11月26日に催された「Kinoma Create ミートアップ」に参加してきました。

 

 「Kinoma Create」はアメリカMarvel Technology GroupがリリースしたJavaScriptで作れるInternet of Thing( IoT)キット」です。クラウドファウンディングIndiegogo資金調達し、アメリカでは支援者へ出荷されているとのことです。日本ではSWITCHSCIENCEさんから発売されることが先日発表されていました。

 このKinoma Create、日経コンピュータ下北沢でのミートアップ等、日本でも度々取り上げられていたようで、日本での発売を前に、11月23、24日で開催された「Maker Faire Tokyo 2014」への出展、そして今回のミートアップとイベントが続いたようです。

 

 前置きはこの辺にして、今回の中身に入っていきましょう。会場は外神田の「アーツ千代田 3331」です。このアートセンターに関する詳しい説明はこちらをご覧ください。

f:id:yamaryu0508:20141126082424j:plain

今回の会場はその一番奥のラウンジ。落ち着いた空間です。

f:id:yamaryu0508:20141126082837j:plain

テーブルの上には「Kinoma Create」とセンサーキットが置いてあります。

f:id:yamaryu0508:20141126082941j:plain

 「Kinoma Studio」と呼ばれる開発ツールをインストールしながら、開始時間を待ちます。続々と集まってくる参加者の皆さんですが、今回は定員50人で満員でした。おおよそ3人で1台を触る感じです。

 

 時間になると、Marvell Technology Group Kinoma Vice PresidentのPeter Hoddieさんのイントロダクションからスタートしました。なぜ、JavaScriptなのかというお話です。ちなみに、この方AppleQuickTimeを作られたことで有名な方だそうです(比較的Apple好きの私ですが、恥ずかしながら存じておりませんでした)。

f:id:yamaryu0508:20141126083518j:plain

(以下、私の拙いリスニングと通訳の方を介したことによる若干のズレがあるかもしれませんが、悪しからずお読み頂ければと思います)どんなPCでもプログラミング言語を考えるものだということで、ベストではないと思うが、Kinoma Createにはパワフルで広く使われるようになってきたJavaScriptを選択したとのことでした(昔のJavaScriptは酷かったけど、今日ではNodo.js等で使われるところまで来たと)。更に、ポイントを4点挙げられていました。

  • Manage the hardware(JSによるハードウェア制御)
  • Operate the user interface(HTML5レスのJSによるUI制御)
  • Coordinate communication(JSによるデバイスやクラウドの間の接続)
  • Digital media(JSによるマルチメディア制御)

通常であれば、異なるレイヤを結合するのに様々な言語を使い分けながら最終的にはCをリコンパイルしたりするところを、全てJavaScriptでやってしまおうという訳です。またそれ故に簡単だと。「Node.jsがソフトウェアを作るフレームワークなら、Kinoma JSはハードウェアを作るフレームワークだ。」「WebだけでなくIoTにもJavaScriptが必要になってくる。」と仰っていました。なるほど、Webの方々がハードを難なくさわれるところまでの親和性をいきなりもたらせるかはこれからだと思いますが、楽しみな試みだと思います。

 

 そして、ハンズオンなのですが、最初は入れたばかりの開発ツールは使わずにディスプレイのタッチ操作で設定していきます。

f:id:yamaryu0508:20141126091719j:plain

なんと、ピンアサインをタッチで決めていくんですね。しかも種別ごとに色が決まっていて、アサインすると四角の番号の所が色づき、Nullの部分が割り当てられた種別の名前に変わります。これだけで3色LEDを点灯させられます。結構な衝撃です。ここまでは一切プログラムレスな訳ですから。プログラミングせずに視覚的にハードをコントロール出来るというのは確かにモノづくりの敷居が下がります。まさに、スマホやリモコン感覚です。

 

 次に、サンプルコードをダウンロードして開発ツールからコードを流し込んでいきます。今度はRGBのスライダーが現れ、色合いをコントロールできるようになったではありませんか。サンプルを見ると厳密にはプログラミングとしてJavaScriptXMLでの記述が必要のようです。ここからUIを鍛えようとすると本末転倒な感じもしましたが、そういったUIセットは一通り準備されているとのことでした。

f:id:yamaryu0508:20141126092102j:plain

 そして、ピザやビールが振る舞われながら、最後になってしまったのがカメラです。シリアル通信するカメラとボタンをアタッチして、先程と同様サンプルコードを流し込みます。ディスプレイが緑色でスタンバイ状態になり、ボタンを押すと白くなった次の瞬間ディスプレイに静止画が現れます(70ミリ秒でボタンを押すイベントを監視している作りでした)。なかなか面白いです。

 

 今回は2時間であっという間でしたが、他にもサンプルが公式サイトGitHubにもありますので、色々と試せそうです。WAN側は無線LAN経由での接続を基本にしながら、センサー側はデジタルのI/O、アナログ入力、I2C、PWM等豊富なインターフェースを備えているので、組み合わせも様々いけそうです。今回はクラウドとの接続がなかったので、サンプルを眺めてみたいところです。

 

 ハードとソフトとどちらもかじっている私としては、なかなか楽しみな試みですので、今後もフォローしていきたいと思います。