IIoTエッジ開発–WebSocketの使用
編集者注:産業用モノのインターネット(IIoT)は、産業運営に関する深い洞察を提供し、接続されたマシンとシステムの効率を高めることを約束します。大規模なIIoTアプリケーションは、階層化されたアーキテクチャに依存して、さまざまなセンサーからデータを収集し、データを確実かつ安全にクラウドに移動し、その洞察と効率を提供するために必要な分析を実行します。インダストリアルインターネットアプリケーション開発では、著者はIIoTアーキテクチャの詳細な調査を提供し、これらのシステムに関連する幅広い要件を満たすためのアプローチについて説明します。
産業用インターネットアプリケーション開発から改作、Alena Traukina、Jayant Thomas、Prashant Tyagi、KishoreReddipalliによる。
第3章IIoTエッジ開発(続き)
by Alena Traukina、Jayant Thomas、Prashant Tyagi、Kishore Reddipalli
アプリケーションレベルのプロトコル– WebSocket
このセクションでは、Raspberry PiハブとWebSocketプロトコルを使用して、XD-80光センサーモジュールからレシーバーデバイスにデータを送信するためのシンプルなIoTアプリの構築を試みます。
XD-80センサーからレシーバーデバイスへのデータフロー
WebSocketは、リアルタイムデータの高速転送を有効にする必要がある場合に最も広く使用されています。このプロトコルにより、クライアントとサーバー間の双方向の対話が可能になり、同じTCP接続を使用して複数のメッセージをストリーミングできるため、通信のオーバーヘッドが削減されます。
次の表に、プロトコルの詳細な説明を示し、ニーズに適しているかどうかを理解します。
キー 価値 オープンソースはいOSIレイヤーアプリケーションデータタイプ文字列制限大量のバイナリデータには適していません可能な操作データの送受信レイテンシ非常に低い使用法リアルタイム通信セキュリティはい圧縮はい表3:WebSocketプロトコルの仕様
アプリケーションを構築するには、次のものが必要です。
必要なソフトウェア:
- Node.js 6 +( https:/ /nodejs.org/en/download/ )
- RPIO( https://www.npmjs.com/package/rpio )
- WebSocket( https://www.npmjs.com/package/ws )
- Docker( https://docs.docker.com/engine/installation/ )
必要なハードウェア:
- Raspberry Pi 3(モデルB)
- 電源アダプター(2A / 5V)
- microSDカード(8 GB以上)とSDアダプター
- XD-80光センサーモジュール
- ブレッドボードとデュポンケーブルのセット
- 有線ネットワーク接続用のイーサネットケーブル
デバイスの組み立て
アプリケーションを構築する前に、ブレッドボードを介してXD-80センサーをRaspberryPiに接続する必要があります。
SDカードの準備
SDカードを準備するには、説明されている一連のアクションに従います。
- 最新のRaspbianLITE画像をダウンロードします( https://raspberrypi.org/downloads/raspbian/ で入手できます。 。
- SDカードをコンピューターに接続し、Etcherを使用します( https:// io / )Raspbianをフラッシュする .img SDカードにファイルします。
- 次のコマンドを使用してSSHを有効にします:
cd / Volumes / boot
touch ssh
- Wi-Fiを有効にするには、 conf 次の内容で:
network ={
ssid =” YOUR_SSID”
psk =” YOUR_WIFI_PASSWORD”
}
- / home / pi / Sensor
- /home/pi/sensor/package.json 次の内容のファイル:
{
"name": "sensor"、
"version": "1.0.0"、
"description": ""、
“ main”:“ index.js”、
“ scripts”:{
“ start”:“ node index.js”、
“ test”:“ echo“ Error:テストが指定されていません」&&exit 1″
}、
「作成者」:「」、
「ライセンス」:「ISC」、
「依存関係」:{「rpio」: “ ^ 0.9.16”、
“ ws”:“ ^ 2.3.1”
}
}
- /home/pi/sensor/index.js REMOTE-SERVER-ADDRESS.com 実際の値で:
var WebSocket =require( 'ws');
var rpio =require( 'rpio');
var ws;
var Receiver ='ws://REMOTE-SERVER-ADDRESS.com:8080';
rpio.open(11、rpio.INPUT);
varestablishConnection =function(){
ws =new WebSocket(receiver);
ws.on( 'close'、establishConnection);
ws.on( 'error'、establishConnection);
};
establishConnection();
var sendStatus =function(){
var status =rpio.read(11)===0;
console.log( 'light status: '+ status);
var data =JSON.stringify({
device:' raspberry '、
timestamp:Date.now()、
light:status
try {ws.send(data); }
catch(e){console.log( 'データを' +受信者に送信できませんでした);}
setTimeout(sendStatus、1000);
};
sendStatus();
- / home / pi / Sensor / Dockerfile 次の内容のファイル:
FROM hypriot / rpi-node:boron-onbuild
モノのインターネットテクノロジー