Skip to content
Branch: master
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
README.md
ws.js
wss.js

README.md

Qoosky IoT BaaS APIs / Cloud Controller / JavaScript

本ページは Qoosky Cloud Controller を Raspberry Pi から利用するための情報をまとめたものです。ここでは特に JavaScript (Node.js) を利用した接続方法をまとめます。

必要なもの

  • インターネット接続設定が完了した Raspberry Pi

Node.js / npm のインストール

OS によっては既にインストール済みの場合があります。以下のコマンドで確認します。

pi@raspberrypi:~ $ which npm

インストールされていない場合は以下のコマンドでインストールします。

pi@raspberrypi:~ $ sudo apt-get update
pi@raspberrypi:~ $ sudo apt-get install npm

ライブラリのインストール

websockets/ws ライブラリを利用します。以下のコマンドでインストールします。

pi@raspberrypi:~ $ npm install ws
pi@raspberrypi:~ $ npm install ssl-root-cas

サンプルコードのダウンロード

以下のコマンドで本レポジトリのサンプルコードおよび SSL 通信用の証明書をダウンロードします。

pi@raspberrypi:~ $ wget https://raw.githubusercontent.com/qoosky/websocket_clients/master/javascript/ws.js
pi@raspberrypi:~ $ wget https://raw.githubusercontent.com/qoosky/websocket_clients/master/javascript/wss.js
pi@raspberrypi:~ $ wget https://raw.githubusercontent.com/qoosky/websocket_clients/master/qoosky-io-ca-root.crt

平文通信を行う場合 (ws.js)

var ws = new require('ws')('ws://api.qoosky.io/v1/controller/actuator/ws');

ws.on('open', function(){
  console.log("Successfully connected to the API server.")
  ws.send('{"token":"XXXX-XXXX-XXXX-XXXX"}');
});

ws.on('error', function(err){
  console.log("An unexpected error has occurred: " + err);
});

ws.on('message', function(data){
  console.log("received: " + data);
});

ws.on('close', function(){
  console.log("Connection closed.");
});

SSL 通信を行う場合 (wss.js)

require('ssl-root-cas').addFile(__dirname + '/qoosky-io-ca-root.crt'); // Trust Qoosky Root CA
// process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; // Trust any server certificates.

var ws = new require('ws')('wss://api.qoosky.io/v1/controller/actuator/ws');

ws.on('open', function(){
  console.log("Successfully connected to the API server.")
  ws.send('{"token":"XXXX-XXXX-XXXX-XXXX"}');
});

ws.on('error', function(err){
  console.log("An unexpected error has occurred: " + err);
});

ws.on('message', function(data){
  console.log("received: " + data);
});

ws.on('close', function(){
  console.log("Connection closed.");
});

それぞれ以下の部分を Qoosky Cloud Controller で発行した API トークンで書き換えてください。

ws.send('{"token":"XXXX-XXXX-XXXX-XXXX"}');

実行および結果の確認

以下のコマンドで起動します。

pi@raspberrypi:~ $ node ws.js
pi@raspberrypi:~ $ node wss.js

以下のように出力されれば成功です。ゲームパッド状の Cloud Controller を起動すれば相互接続できる状態になりました。

ws.js

pi@raspberrypi:~ $ node ws.js
Successfully connected to the API server.
received: {"notification":"Authentication success."}
received: {"notification":"Searching for your cloud controller device..."}
received: {"notification":"Searching for your cloud controller device..."}
received: {"notification":"Searching for your cloud controller device..."}
received: {"notification":"Searching for your cloud controller device..."}

wss.js

pi@raspberrypi:~ $ node wss.js
Successfully connected to the API server.
received: {"notification":"Authentication success."}
received: {"notification":"Searching for your cloud controller device..."}
received: {"notification":"Searching for your cloud controller device..."}
received: {"notification":"Searching for your cloud controller device..."}
received: {"notification":"Searching for your cloud controller device..."}
You can’t perform that action at this time.