ラズパイでTrackrr.ioに位置情報を表示してみた

社内にRaspberry Pi Model B+があったのでちょっと遊んでみました。
![IMG_2126.JPG](https://qiita-image-store.s3.amazonaws.com/0/132516/db47b397-05e9-1ff7-0965-f4335ddb169f.jpeg)
OSは入っている状態でしたが、sshできなかったんでネットワーク周りの設定をちょいした感じの状態です。
trackrr.io-sdk-jsを用いて、位置情報を[Trackrr.io](https://trackrr.io)に表示できるようにしてみます。

#Node.jsのインストール
<font color="red">**注）ndenvではインストールしませんでした。**</font>
不要な方はすっ飛ばして[ダウンロードしてインストール](#ダウンロードしてインストール)を参照してください。

##ndenvインストール
```shell-session
pi@raspberrypi:~ $ git clone https://github.com/riywo/ndenv ~/.ndenv
Cloning into '/home/pi/.ndenv'...
remote: Counting objects: 63, done.
remote: Total 63 (delta 0), reused 0 (delta 0), pack-reused 63
Unpacking objects: 100% (63/63), done.
Checking connectivity... done.
pi@raspberrypi:~ $ echo 'export PATH="$HOME/.ndenv/bin:$PATH"' >> ~/.bash_profile
pi@raspberrypi:~ $ echo 'eval "$(ndenv init -)"' >> ~/.bash_profile
pi@raspberrypi:~ $ exec $SHELL -l
pi@raspberrypi:~$ ndenv -v
ndenv 0.4.0-4-ga339097
```
##node-buildインストール
```shell-session
pi@raspberrypi:~$ git clone https://github.com/riywo/node-build.git ~/.ndenv/plugins/node-build
Cloning into '/home/pi/.ndenv/plugins/node-build'...
remote: Counting objects: 68, done.
remote: Total 68 (delta 0), reused 0 (delta 0), pack-reused 68
Unpacking objects: 100% (68/68), done.
Checking connectivity... done.
pi@raspberrypi:~$
```

で、Node.jsのv4.4.7を入れましょう。

```shell-session
pi@raspberrypi:~$ ndenv install v4.4.7
Downloading node-v4.4.7-linux-arm-pi.tar.gz...
-> https://nodejs.org/dist/v4.4.7/node-v4.4.7-linux-arm-pi.tar.gz
/home/pi/.ndenv/plugins/node-build/bin/node-build: 144 行: pushd: node-v4.4.7-linux-arm-pi: そのようなファイルやディレクトリはありません

BUILD FAILED

pi@raspberrypi:~$
```

あれ?**BUILD FAILED**・・・確かにnode-v4.4.7-linux-arm-pi.tar.gzなんてないですね・・・。

で調べてみると
http://blog.wia.io/installing-node-js-v4-0-0-on-a-raspberry-pi
ソースをダウンロードしてインストールする必要があるようですね。

##ダウンロードしてインストール
```shell-session
pi@raspberrypi:~$ wget https://nodejs.org/dist/v4.4.7/node-v4.4.7-linux-armv6l.tar.gz
pi@raspberrypi:~$ tar -xvf node-v4.4.7-linux-armv6l.tar.gz
pi@raspberrypi:~$ cd node-v4.4.7-linux-armv6l/
pi@raspberrypi:~/node-v4.4.7-linux-armv6l$ sudo cp -R * /usr/local/
pi@raspberrypi:~/node-v4.4.7-linux-armv6l$ node -v
v4.4.7
pi@raspberrypi:~/node-v4.4.7-linux-armv6l$
```
めでたしめでたし:clap: 


#trackrr.io-sdk-js使って位置情報を送信してみる
[Trackrr.io](https://trackrr.io)への位置情報送信するためには
アクセスキー、シークレットキーが必要になります。
取得していない場合は[Trackrr.ioの利用方法](https://trackrr.io/start.html)を参照してください。

##trackrr.io-sdk-jsのインストール
適当なディレクトリを掘ってそこにコードを書いていきます。

```shell-session
pi@raspberrypi:~$ mkdir trackrr.io-sdk-js-sample
pi@raspberrypi:~$ cd trackrr.io-sdk-js-sample
```
###次にpackage.json作成（なくてもいいけど）

```shell-session
pi@raspberrypi:~/trackrr.io-sdk-js-sample$  npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: (trackrr.io-sdk-js-sample)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /home/pi/trackrr.io-sdk-js-sample/package.json:

{
  "name": "trackrr.io-sdk-js-sample",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "trackrr.io-sdk-js": "^0.0.1"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}


Is this ok? (yes) yes
```

###SDKのインストール

```shell-session
pi@raspberrypi:~/trackrr.io-sdk-js-sample$  npm install https://github.com/trackrr-io/trackrr.io-sdk-js.git --save
npm WARN package.json trackrr.io-sdk-js-sample@1.0.0 No description
npm WARN package.json trackrr.io-sdk-js-sample@1.0.0 No repository field.
npm WARN package.json trackrr.io-sdk-js-sample@1.0.0 No README data
trackrr.io-sdk-js@0.0.1 node_modules/trackrr.io-sdk-js
```
※まだnpmに公開していないのでgitのURLを直接指定してください

###コードを書いていきます。

```js:index.js
var trackrr = require('trackrr.io-sdk-js');
var gpsKey = 'Trackrr.ioで取得したGPSのキー';
var secret = 'Trackrr.ioで取得したアクセスキー';
var client = new trackrr.GpsClientManager(gpsKey, secret);

client.on('connect', () => {
  setInterval(() => {
    var gps = {};
    var coords = {};
    gps.coords = {};
    gps.coords.latitude = 33.79519271850586;
    gps.coords.longitude = -118.01104736328125;
    client.publish(gps);
    console.log(gps);

  }, 3 * 1000);
});
```
GPSモジュールがなかったので固定値を送信する形にしました。
(latitude、longitudeの箇所です。)

```shell-session
pi@raspberrypi:~/trackrr.io-sdk-js-sample$ node  index.js
{ coords: { latitude: 33.79519271850586, longitude: -118.01104736328125 },
  identity: 'ap-northeast-1:XXXXXXX',
  gpsKey: 'XXXXXXX',
  createdDate: 1469435658317 }
{ coords: { latitude: 33.79519271850586, longitude: -118.01104736328125 },
  identity: 'ap-northeast-1:XXXXXXX',
  gpsKey: 'XXXXXXX',
  createdDate: 1469435662403 }
{ coords: { latitude: 33.79519271850586, longitude: -118.01104736328125 },
  identity: 'ap-northeast-1:XXXXXXX',
  gpsKey: 'XXXXXXX',
  createdDate: 1469435665455 }
{ coords: { latitude: 33.79519271850586, longitude: -118.01104736328125 },
  identity: 'ap-northeast-1:XXXXXXX',
  gpsKey: 'XXXXXXX',
  createdDate: 1469435668486 }
{ coords: { latitude: 33.79519271850586, longitude: -118.01104736328125 },
  identity: 'ap-northeast-1:XXXXXXX',
  gpsKey: 'XXXXXXX',
  createdDate: 1469435671517 }
^C
pi@raspberrypi:~/trackrr.io-sdk-js-sample$
```

こんな感じになれば成功です。

でTrackrr.ioのコンソール画面を見てみると表示されてますね～。
![image](https://qiita-image-store.s3.amazonaws.com/0/132516/0945f3aa-ed71-4b9d-4c3b-d031729c051b.png)

[次回](http://qiita.com/YusukeHasegawa/items/994d109118770ca0d9db)はGPSモジュールをつけて位置情報をモジュールから取得してみようと思います。