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.jswebview/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.imtqy.com/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.imtqy.com/kura/doc/deploying-bundles.html


Source: https://habr.com/ru/post/J332428/


All Articles