Edited at

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

More than 3 years have passed since last update.

社内にRaspberry Pi Model B+があったのでちょっと遊んでみました。

IMG_2126.JPG

OSは入っている状態でしたが、sshできなかったんでネットワーク周りの設定をちょいした感じの状態です。

trackrr.io-sdk-jsを用いて、位置情報をTrackrr.ioに表示できるようにしてみます。


Node.jsのインストール

注)ndenvではインストールしませんでした。

不要な方はすっ飛ばしてダウンロードしてインストールを参照してください。


ndenvインストール

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インストール

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を入れましょう。

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

ソースをダウンロードしてインストールする必要があるようですね。


ダウンロードしてインストール

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への位置情報送信するためには

アクセスキー、シークレットキーが必要になります。

取得していない場合はTrackrr.ioの利用方法を参照してください。


trackrr.io-sdk-jsのインストール

適当なディレクトリを掘ってそこにコードを書いていきます。

pi@raspberrypi:~$ mkdir trackrr.io-sdk-js-sample

pi@raspberrypi:~$ cd trackrr.io-sdk-js-sample


次にpackage.json作成(なくてもいいけど)

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のインストール

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を直接指定してください


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


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の箇所です。)

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

次回はGPSモジュールをつけて位置情報をモジュールから取得してみようと思います。