Apache Camelを介したTI SensorTag、Eclipse kura、およびWebパーツの統合

写真



みなさんこんにちは。 この記事では、TI SensorTag、Raspberry PI、Apache CamelのバンドルをWebパーツへの出力とともに使用する例を示します。 その結果、センサーからのリアルタイムデータを表示し、Apache Camelアプリケーションの形式で中間接続ノードに読み取り値を保存するWebアプリケーションが存在します。







準備する



仕事のために使用された:



  1. ラズベリーPI 3
  2. TI SensorTag 2650(TI SensorTag 2541を使用できますが、センサーの数は少なくなります)


TI SensorTagをカスタマイズする





Raspberry PIを構成する



ここから Raspberry PIにRaspbianをインストールします







エクリプスくら



Eclipse Kuraは、Raspberry PIなどのプラットフォームでIoTアプリケーションを構築するためのフレームワークです。 WebインターフェイスまたはAPIを介してアプリケーションを構成できます。 アプリケーションはOSGiを介してデプロイされます。 また、mqttブローカーとの連携も行います。 [1]







Eclipse Kuraをインストールする



簡単にするために、ルートになり、パッケージのリストを更新しますsudo -i && apt-get update



。 Javaをインストールします(Oracle java、 apt-get install oracle-java8-jdk



を使用apt-get install oracle-java8-jdk



ます)。 Raspbian(モデル2)のKuraバージョンをダウンロード- ここから安定(記事の時点で最新バージョンをダウンロード: wget http://mirror.onet.pl/pub/mirrors/eclipse//kura/releases/3.0.0/kura_3.0.0_raspberry-pi-2-3_installer.deb



)およびインストール: dpkg -i kura_*_installer.deb && apt-get install -f



。 Raspberry PIを再起動します: shutdown -r now









http:// \ <rpi-device-ip>でユーザー名とパスワードadmin / adminを使用してKura WEB UIを開くことができます。 ここで、ネットワーク、Wi-Fiアクセスポイント、デバイス名、およびその他のパラメーターを構成できます。







SensorTagを使用したBLE通信用のBlueZセットアップ



パッケージマネージャーのバージョンは問題ないはずです。 したがって、以下を実行します。







 apt-get install -y libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev
      
      





 apt-get install bluez
      
      





bluetoothサービスを起動し、スタートアップに追加します: systemctl enable bluetooth && systemctl start bluetooth



。 ワイヤレスインターフェースhciconfig hci0 up



ます。 インターフェイスがオンになっていて、すべてが機能していることを確認します: hciconfig -a



。 bluezでエラーが発生した場合は、たとえば記事 [3] [4]で最新バージョンをダウンロードしてコンパイルしてみてください。







Mosquittoのインストール



Mosquittoは、オープンソースのMQTTメッセージブローカーです。 SensorTagからCamelバックエンドアプリケーションにデータを送信するために必要です。







Rasperry PIと別のマシンの両方にインストールするか、クラウドソリューション(IBM、Azure)を使用できます。 ただし、Webパーツを機能させるには、mosquittoがWebSocketでmqttを介して機能するように構成する必要があります(これは、ローカルブローカーではなく、ブローカーの別のインスタンスで実行できます)。







Raspberry PIへのインストール:



標準リポジトリのバージョン







 apt-get install mosquitto systemctl enable mosquitto
      
      





mosquittoでwebsocketを有効にするには、次の行を/etc/mosquitto/mosquitto.confに追加します







 # Websocket listener 1883 listener 9001 protocol websockets
      
      





そしてsystemctl start mosquitto



を実行します。 Websocketをサポートする最新のmosquttioバージョンをインストールするには。 [2]







 wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key apt-key add mosquitto-repo.gpg.key cd /etc/apt/sources.list.d/ wget http://repo.mosquitto.org/debian/mosquitto-jessie.list apt-get update apt-get install mosquitto
      
      





BLE TI SensorTagサンプルアプリケーションのビルドとデプロイ



Kuraには、TI SensorTagを操作するためのサンプルアプリケーションが含まれています。 n秒ごとに、BLEを介してデバイスに接続し、Generic Attribute Profile(GATT)を使用してデータを読み取り、ブローカーに送信します。 かなり遅いことがわかりますが、最初はそうです。







まず、kuraを使用してリポジトリを複製します。 オリジナルのhttps://github.com/eclipse/kuraまたはフォークされたプロジェクトhttps://github.com/leadex/kuraのいずれかを使用できます。このプロジェクトには、気圧計からの温度メトリックの読み取り値が追加されます。







デフレート:







 git clone https://github.com/leadex/kura cd kura
      
      





Linuxでのみコードをコンパイルできました。 ビルドするには、. ./build-all.sh



ます。 後続のビルドのみのbleの例:







 cd kura/kura/examples/org.eclipse.kura.example.ble.tisensortag mvn clean install -Dmaven.test.skip=true
      
      





次に、結果のjarをRaspberry PIにコピーします。







 cd kura/examples/org.eclipse.kura.example.ble.tisensortag scp target/org.eclipse.kura.example.ble.tisensortag-*-SNAPSHOT.jar pi@<rpi-device-ip>:/tmp
      
      





展開



Raspberry PI telnet localhost 5002



またはリモートでtelnet <rpi-device-ip> 5002



からOSGiコンソールに接続します。 コンパイル済みアプリケーションのinstall file:///tmp/org.eclipse.kura.example.ble.tisensortag-1.0.3-SNAPSHOT.jar



をインストールするコマンドを入力し、それを入力してss



を確認します。 最後にインストール済みだが実行されていないバンドルが表示されます: 75 INSTALLED org.eclipse.kura.example.ble.tisensortag









コマンドstart 75



実行します。75は前のステップのアプリケーションIDです。 75 ACTIVE org.eclipse.kura.example.ble.tisensortag



を実行すると、Raspberry PIのログを表示できます: tail -f /var/log/kura.log



[5]。







Kura Web UIは、新しいBluetoohLeサービスを導入します。 開いて設定します。







クラウェブの例



Kuraを再起動すると、デプロイされたバンドルが表示されなくなるため、バンドルの永続的な操作に関する指示を使用できます。







Kuraを構成します。





CamelおよびWebパーツとの統合



MongoDB + Mosquitto + Webviewをすばやく起動するには、プロジェクトのルートでdocker docker-compose up -d



実行できます。 これにより、3つのコンテナーが作成され、mqtt、websocket、http(8081)ポートがローカルホストにバインドされます。 この直後、Webパーツはhttp:// localhost:8081で利用可能になります。 また、localhost:1883のmqttブローカー。したがって、Kura MqttDataTransportでIPを指定できます。







Webパーツの例:

Web UIの例







キャメルの統合



iot-backend-camelには、メッセージブローカーをサブスクライブしてKuraPayloadを受信するApache Camelプロジェクトが含まれています。







EclipseKuraメッセージは、 Google Protobufエンコード形式で送信されます。 したがって、 com.google.protobuf:protobuf-java



をデコードするためにGoogleのライブラリが必要です。







次に、メトリックはメッセージから取得され、jsonでシリアル化され、Webパーツのサブスクライバーにブローカーに送信され、MongoDBデータベースに保存されます。







Camelアプリケーションを起動するには、次を実行します: gradlew clean build



and java -jar ./build/libs/iot-backend-camel-1.0.0-SNAPSHOT.jar









Webパーツ



webviewには、htmlおよびjsを使用したnginxに基づいたdockerイメージが含まれています。 Webパーツは、websocket Pahoライブラリおよびハイチャート上でmqttを使用して、センサー値(IRセンサーと光レベルの温度)を動的に表示します。







このサイトは、データ更新のためにブローカーを購読しています。 おそらく仕事のために、webviewでmqttホストを変更する必要があります。 これはwebview/dist/view.js



webview/dist/view.js



できます。 インライン:







 // Create a client instance client = new Paho.MQTT.Client("localhost", Number(9001), "webview_" + parseInt(Math.random() * 1000000, 10));
      
      





docker docker-compose up -d --build



webviewを再起動できます。 これにより、Dockerイメージが再構築され、変更された場合は再起動されます。







参照資料



  1. http://eclipse.github.io/kura/doc/intro.html
  2. https://mosquitto.org/2013/01/mosquitto-debian-repository/
  3. http://blog.mrgibbs.io/bluez-5-39-ble-setup-on-the-raspberry-pi/
  4. http://wiki.beyondlogic.org/index.php?title=Cross_Compiling_BlueZ_Bluetooth_tools_for_ARM
  5. http://eclipse.github.io/kura/doc/deploying-bundles.html



All Articles