euvicc's sphere cycloalkanique

ダイアリーから移行して再始動。自転車とMETALとその他雑多な物欲記録。

何故か四十手前にして自転車趣味に目覚めてしまったある男の記録...のようなもの。

ライドの記録、買い物記録、超私的レビューみたいな駄文を書き連ねます。

とりあえずやりたいことが決まったらしいよ?

Euviccです。
とりあえずVNCMacからラズパイをいじれるようになったところで例のごとく作業が止まってしまっていました。はじめの一歩、いや半歩踏み出して何かやった気分になる。いつもの悪い癖ですね(苦笑) おいおい、こんなことじゃいかんだろ。一応壮大な構想があるんじゃなかったのか?(汗

壮大かどうかはともかく、Raspberry Piであればこそできることってのを念頭に置いて考えてみると、こんな感じかな?

・大きな目標
ラズパイをサーバにし、家の外(主にiPhone)からアクセスしてなんかする――手近に思いつくところではエアコンの制御とか(^^; あとは部屋の照明のスイッチON/OFFとかもできればいいなあ……
・目先の目標
↑はとりあえず色々設定したり開発したりせにゃならんのはわかる。具体的なことはわかんなくてもとりあえず大変そうなのはわかる。なので、このへんから試してみようと思う。
  1. 環境整備編
    1. Node.jsのインストール
    2. Nodeのパッケージjohnny-fiveとraspi-ioのインストール
    3. VScodeのインストールとカスタマイズ
  2. とにかく触ってみる編
    1. 諦めてパーツセットを仕入れ
    2. WiringPiライブラリをインストール→直接操作を試す
  3. 開発実践編
    1. Pythonをもう少し勉強する→ラズパイ上でも動かす
    2. GARMINのANT+ドングルを挿して認識/データ録ってみる

なんでNode.jsかっていうと、仕事でたまたま触る機会があって興味を抱いたのですよねNodeに。で、コレを使えばサーバサイドでjavascriptが動かせて、極小単機能のWebサーバとか作れちゃうって聞けば、そりゃあやってみたくなるじゃない?w さっき書いた「大きな目標」とやらにも近づくよ?(((o(*゚▽゚*)o))) さらに1.2に書いたパッケージを導入できればラズパイのH/Wも動かせるってんなら、もうやらなきゃダメだよね。
1.3のVScodeについては、ちったあ使いやすいコードエディタが欲しいなって思ったのがきっかけ。既にMacさんには入れてあるし、コード書くならソッチでやった方が明らかに効率いいじゃんとは思うけど、折角だから"MicrosoftVisual StudioLinux上で動く!!"をやってみたかったのさw
2は……つまるところ我慢できなかったってだけでw とにかくLEDをチカチカさせてみたかった。他にも
3の実践編については……また後で話そう(`・ω・′)キリッ

やれそうなところから手をつける:まずはNode.jsから

nvm+Node.js最新Ver.編

今回も例のごとくQiitaをガン見させてもらいましたw で、こちら↓を参考にしてみた。
qiita.com
いやもうちょっと正確に言うと、上記のエントリを見つけたからこそ直近目標の1.1と1.2が発生した、ということですね(^_^;)
Raspbianには既にNode.jsが入ってるらしいが、バージョンを確認してみるとあちこちのサイトで言われてる通り、旧い。現状最新の"Raspbian Jessie with PIXEL"であっても、この状況は同じ。そんなわけで、現状入ってるNodeを削除して記事通り/usr/local/nvmディレクトリを作り、chmodしてアクセス権限変えて、さてではインストール開始。以下のコマンドを連続で実行する。

pi@ras-pi_euvicc:~ $ git clone https://github.com/creationix/nvm.git /usr/local/nvm
pi@ras-pi_euvicc:~ $ source /usr/local/nvm/nvm.sh
pi@ras-pi_euvicc:~ $ nvm ls-remote
pi@ras-pi_euvicc:~ $ nvm install v5.4.0

たぶん、無事に入った……のかな?(^_^;) node -vしてみるとv5.4.0という表示が。一応、成功してるっぽい。

パッケージのインストール編

Nodeが無事に入ったんならこれでnpmが動くね。ではパッケージを入れてみよう。さっきも書いたjohnny-fiveってヤツと、raspi-ioだ。ちなみにこいつら何者かっつーと
johnny-five.io
本来Arduino向けらしい。これをラズパイに対応させるPlug-inが
github.com
コイツってわけだ(((o(^∇^)o)))
まあ、すぐには使わんけどね。寧ろWebサーバ立てるんならExpressの方が先かもしれん。Expressってなあ、コレだ。
Express - Node.js web application framework
github.com
まあ、コッチは後回しにしましょう。

ではインストール開始。

pi@ras-pi_euvicc:/usr/local/nvm $ npm install johnny-five
npm WARN checkPermissions Missing write access to /usr/local/nvm/node_modules
nvm@0.33.4 /usr/local/nvm
└── johnny-five@0.11.6  extraneous

npm ERR! Linux 4.9.35-v7+
npm ERR! argv "/usr/local/nvm/versions/node/v5.4.0/bin/node" "/usr/local/nvm/versions/node/v5.4.0/bin/npm" "install" "johnny-five"
npm ERR! node v5.4.0
npm ERR! npm  v3.3.12
npm ERR! path /usr/local/nvm/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/usr/local/nvm/node_modules'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, access '/usr/local/nvm/node_modules']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/nvm/node_modules' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /usr/local/nvm/npm-debug.log

なんですと?? インストール……失敗した?_| ̄|○ il||li コンソール出力を読み直してみる。あ、そりゃダメだ。permission deniedやもん。権限不足で/usr/local/nvmにアクセスできてへんやないか(汗 またやらかしたなオレは(´・ω・`) 慌ててchmod 777 /usr/local/nvmし、気を取り直してもう1回。

pi@ras-pi_euvicc:/usr/local/nvm $ npm install johnny-five

> serialport@4.0.7 install /usr/local/nvm/node_modules/serialport
> node-pre-gyp install --fallback-to-build

node-pre-gyp ERR! Tried to download(404): https://github.com/EmergingTechnologyAdvisors/node-serialport/releases/download/4.0.7/serialport-v4.0.7-node-v47-linux-arm.tar.gz 
node-pre-gyp ERR! Pre-built binaries not found for serialport@4.0.7 and node@5.4.0 (node-v47 ABI) (falling back to source compile with node-gyp) 
make: Entering directory '/usr/local/nvm/node_modules/serialport/build'
  CXX(target) Release/obj.target/serialport/src/serialport.o
  CXX(target) Release/obj.target/serialport/src/serialport_unix.o
  CXX(target) Release/obj.target/serialport/src/serialport_poller.o
  SOLINK_MODULE(target) Release/obj.target/serialport.node
  COPY Release/serialport.node
make: Leaving directory '/usr/local/nvm/node_modules/serialport/build'
nvm@0.33.4 /usr/local/nvm
└── johnny-five@0.11.6  extraneous

ん〜、またなんか警告らしきものが出てるけど、一応インストールには成功してるっぽい。
お次はraspi-io。こちらも、johnnyの時同様permissionの問題が解決できてればちゃんと入るようです(^_^;)

pi@ras-pi_euvicc:/usr/local/nvm $ npm install raspi-io

> raspi-gpio@5.0.0 preinstall /usr/local/nvm/node_modules/.staging/raspi-gpio-4bf6d7b0c035b9457346e860b9f9f7f7
> sh ./script/pigpio.sh

pigpio is already installed, skipping installation

> raspi-pwm@5.0.0 preinstall /usr/local/nvm/node_modules/.staging/raspi-pwm-5ff61ef2401444349103a99463455e92
> sh ./script/pigpio.sh

pigpio is already installed, skipping installation

> raspi-soft-pwm@4.0.1 preinstall /usr/local/nvm/node_modules/.staging/raspi-soft-pwm-f0d3e3fd9555971e4d3fcd77acb27090
> sh ./script/pigpio.sh

pigpio is already installed, skipping installation
npm WARN install:promirepl@1.0.1 EACCES: permission denied, symlink '../promirepl/bin/prominode.js' -> '/usr/local/nvm/node_modules/.bin/prominode'

> i2c-bus@1.2.2 install /usr/local/nvm/node_modules/i2c-bus
> node-gyp rebuild

make: Entering directory '/usr/local/nvm/node_modules/i2c-bus/build'
  CXX(target) Release/obj.target/i2c/src/i2c.o
  SOLINK_MODULE(target) Release/obj.target/i2c.node
  COPY Release/i2c.node
make: Leaving directory '/usr/local/nvm/node_modules/i2c-bus/build'

> pigpio@0.6.2 install /usr/local/nvm/node_modules/pigpio
> node-gyp rebuild

make: Entering directory '/usr/local/nvm/node_modules/pigpio/build'
  CXX(target) Release/obj.target/pigpio/src/pigpio.o
  SOLINK_MODULE(target) Release/obj.target/pigpio.node
  COPY Release/pigpio.node
make: Leaving directory '/usr/local/nvm/node_modules/pigpio/build'

> raspi-i2c@6.1.0 postinstall /usr/local/nvm/node_modules/raspi-i2c
> echo "Enabling I2C at boot time, you may be asked for your password" && sudo env "PATH=$PATH" script/enable_i2c.js

Enabling I2C at boot time, you may be asked for your password
Checking if I2C is enabled at boot time
Enabled I2C at boot time
YOU MUST REBOOT YOUR PI BEFORE USING I2C!
nvm@0.33.4 /usr/local/nvm
├── raspi@5.0.1  extraneous
├── raspi-gpio@5.0.0  extraneous
├── raspi-i2c@6.1.0  extraneous
├── raspi-io-core@2.0.1  extraneous
├── raspi-led@2.0.0  extraneous
├── raspi-pwm@5.0.0  extraneous
└── raspi-soft-pwm@4.0.1  extraneous

pi@ras-pi_euvicc:/usr/local/nvm $ 

ほらね、入った♪ なお、コレを使って実際に何かやってみた(組んで動かしてみた)レポートは次回以降のエントリに書こうと思います(テヘッ ←当然まだやってない&入れた時点で満足した人w

VScode入れてみちゃおう

つまるところコードエディタが欲しかったんです。ターミナルでvi(vim)使うとか、正直オレには無理です(^^; VScodeなら、WindowsでもMacでもLinuxでも入れられるはずだから問題ないよね? RaspbianのパッケージマネージャにはVScodeはいなかったので、じゃあここは本家からもらってくればいいよね!と公式サイトにアクセス。
code.visualstudio.com
"for Debian/Ubuntu"と書かれたペンギンアイコンのリンクから、無事パッケージのアーカイブ(.deb)を入手できました。
そのまま作業続行。普通にWindowsのノリでファイルをダブルタップしてインストールを開始するがーーん? なんか文句言われたぞ?
vscode-doc-jp.github.io
やはりLinuxだもん、きっとコマンドラインから入れなきゃダメなんだよ(´∀`*)とまあ短絡的に解釈して、Webを彷徨って別の方法を探したところ、見つけたのが↑コチラ。なるほど、ローカルに落としたdebファイルからはこうやるのか(°д°)

sudo dpkg -i <file>.deb
sudo apt-get install -f

やってみる……失敗(°д°;;)ガーン ええと、もうなんか根本的なレベルでダメでした。だってこう(意訳)言われたんだもん(´・ω・`)

CPUが違っとるんじゃボケm9(^Д^)プギャー

恥ずかしっ(//∇//) ホンっっま恥ずかしっ(汗 俺バカでしょ? DLしたのはAMD64向け、ラズパイのCPUはARMですよ、あーた!? 入るわけがない(恥 ……でもあれ? ARM向けのパッケージなんてM$の公式にはなかったよ? てことは、やはりラズパイにVScodeは無理なのかなあ?
当然ここでGoogle先生の出番。"VScode Raspberry Pi"で検索かけるだけ。速攻見つかったw

Visual Studio Code for Chromebooks and Raspberry Pi

おお(°д°) オープンソースで有志が出してるわけか! スバラシイムスカクン!!(;;*´Д`*)ハァハァ

Webサイトの中身をとりあえずざーっと流し読みし、インストールのためのコマンドを探す。ラズパイ向けのインストール手順は簡単に見つかりました。

. <( wget -O - https://code.headmelted.com/installers/apt.sh )

……やべえ、コマンドが解読できない(泣) えっなに? ". <"てどういう意味だっけ? あれ?リダイレクション?(O_O)ワケワカメ おっと、ここで止まっちゃっててもしょうがないのでコレはもはや呪文、ネットという亜空間からVScodeを呼び出して使役するための召喚呪文なんだ(`・ω・′)キリッと割り切るw 書いてあるとおり先にsudo -sして一時的にrootに昇格*1し、実行。

pi@ras-pi_euvicc:~ $ sudo -s
root@ras-pi_euvicc:/home/pi# . <( wget -O - https://code.headmelted.com/installers/apt.sh )
--2017-09-20 01:44:48--  https://code.headmelted.com/installers/apt.sh
code.headmelted.com (code.headmelted.com) をDNSに問いあわせています... 104.27.187.80, 104.27.186.80, 2400:cb00:2048:1::681b:bb50, ...
code.headmelted.com (code.headmelted.com)|104.27.187.80|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [application/x-sh]
`STDOUT' に保存中

 :
(中略)
 :

Installation complete!

You can start code at any time by calling "code-oss" within a terminal.

A shortcut should also now be available in your desktop menus (depending on your distribution).


root@ras-pi_euvicc:/home/pi# 

おおおおお(°∀°) 無事インストールに成功です! エビデンスを示しましょう。
f:id:Euvicc:20170922230949p:plain:w240
メニューを展開すると、確かにいる。Code - OSSなるものが! そして……
f:id:Euvicc:20170922231139p:plain
ほらね、VNCを通して見えるラズパイのデスクトップにVScodeのウィンドウが見えるでしょ?(°∀°)アヒャ とはいえ、Macに繋いでる間は殆ど使わないと思います(^_^;)


だいぶ長くなった(といってもリンクとコマンドとstdoutを切り貼りしただけだけど)ので、一旦ここで切ろうと思います。相変わらず環境整備までで終わって実作業にはな〜んも入れてないが、今回は「やりたいことが決まった」ことを書くのが目的だったんで、そこはよいのです(`・ω・′)キリッ
次回は迷走するEuviccの悪いクセがさらに発揮される予定ですw ではまたノシ

*1:最初はこれを忘れて見事に実行失敗しました