Eclipse Vorto:IoTデバイス統合の次のステップ
Alexander Edelmann
你好(中国語で「こんにちは」)、私はシンガポールを拠点とし、2006年からRobert Boschのソフトウェアエンジニアとして働いています。私はIoTに情熱を注いでおり、さまざまなIoTプラットフォーム間でデバイス間の相互作用を成功させるオープンスタンダードを信じています。 。そのため、私はEclipse IoT Vortoプロジェクトに積極的に貢献しています。このプロジェクトは、クラウドベースのツールを提供してIoTデバイスを均一に記述し、オープンIoT標準に基づいてさまざまなIoTプラットフォームに統合することを目的としています。 IoTのオタクな面は別として、箸のスキルを練習できるアジア料理を楽しんでいます。コートで友達とテニスボールを打っている私を見つけることもできます。
スマートファクトリーや住宅などの例を見ると、接続されたデバイスは、企業のコストとリソースの効率を向上させるだけでなく、生活の安全性と利便性も向上させています。デバイスとセンサーのメーカーの数が非常に多いため、メーカー、プラットフォーム、インテグレーターにとって新たな課題が浮上しています。
主な問題は、接続されたデバイスがシームレスに通信できるようにする方法です。 さまざまなメーカー、テクノロジー、システムに関係なく、クラウドプラットフォームを使用します。これまで、開発者は、同じAPIを持つ限られたデバイスセット用に特別に設計されたIoTソリューションを構築してきました。デバイスタイプを変更したり、デバイスメーカーを切り替えたりする場合、デバイスの統合には、新しいデバイスを使用するために時間のかかるリファクタリングが必要でした。
大規模な作物農場で資産追跡のためのIoTソリューションを統合することを計画していると想像してください。現在の場所だけでなく、トラクター、プラウ、その他の農業用機器の温度と加速度も追跡する必要があります。
適切なIoTデバイスの選択を検討する際に、2つの疑問が浮かび上がります。
- 必要なタイプの機能を備えたデバイスを見つけるにはどうすればよいですか?
- 特定のデバイス間の密結合を回避して、リファクタリングをあまり行わずに同様のデバイスに簡単に切り替えるにはどうすればよいですか?
これは、オープンソースのEclipseVortoが介入する場所です。
EclipseVortoの紹介
出典:Eclipse Vorto
Eclipse Vortoは、Vorto Information Modelと呼ばれる抽象化レイヤーと、接続されたデバイスのプロパティや機能などのすべてのメタ情報を記述するドメイン固有言語(DSL)を提供します。
抽象化レイヤーを追加することで、同様の機能を持つさまざまなタイプのデバイスを使用できる一貫したインターフェースを作成します。
Eclipse Vortoプロジェクトは、次の4つの主要コンポーネントに基づいて構築されています。
- Vorto DSL: Vorto DSLは、開発者以外でも使用できるように特別に設計された、読みやすく理解しやすいドメイン固有言語です。さまざまなデバイスの抽象モデルを作成するために使用されます。
- メタモデル: メタモデルは、情報モデル、機能ブロック、データ型などのさまざまなエンティティ間の関係を定義するために使用されます。
- コードジェネレーター: DSLとメタモデルに基づいて、コードジェネレーターは、定義されたIoTデバイスとIoTソリューションプラットフォームを便利に統合するためのソースコードを作成するための洗練されたシンプルな方法を提供します。
- Vortoリポジトリ: リポジトリは、作成された情報モデルと機能ブロックを保存、管理、および配布して再利用するために使用されます。
Eclipse Vortoは完全にオープンソースであり、Boschの管理下にあるEclipseIoTワーキンググループ内で開発されています。
Tim Grossmann
ドイツのコンピュータサイエンスの学生として、私は過去1年半にわたって、ボッシュの3つの異なる部門で宿題を引き受けてきました。私は特にオープンソースとEduTechテクノロジーに興味があります。 IoTと自動化は、人々の生活、仕事、楽しみ方を変え、改善する大きな可能性を秘めていると思います。情熱的な学習者であり開発者でもある私は、常に新しいスキルとツールを学びたいと思っています。私は通常の仕事に加えて、Instagram用の世界最大の無料のオープンソース自動化ボットを構築して維持しています。余暇には、友達と一緒に登山を楽しんだり、海外旅行を楽しんだりしています。
実際のEclipseVorto
この抽象化をよりよく理解するために、より具体的な例を見てみましょう。小麦の収穫に使用される車両と資産を追跡したい農業ビジネスを想像してみてください。複数の収穫機、トラクター、その他の資産がある大規模な農場では、各車両が使用された時間とその場所の履歴を知りたいです。
このような情報を温度や湿度の値と組み合わせると、すべての車両と資産のスマートなメンテナンス計画を実現できます。各車両と資産の場所も盗難防止機能を提供します。
この種の機能を提供するソリューションの1つは、BoschのAsset Tracing Solution(TRACI)です。

この特定のデバイスのデジタルモデルを作成するには、TRACI情報モデルを組み立てるために使用されるいくつかの基本的な構成要素が必要です。
追跡装置の最も重要なコンポーネントの1つはバッテリーです。各デバイスのバッテリーの状態を監視できるようにするために、機能ブロックと呼ばれる状態を説明できます。
機能ブロックは、他のデバイス情報モデルで後で再利用できる汎用モデルです。
次のように定義できます:
名前空間org.eclipse.vorto バージョン1.0.0 表示名「バッテリー」 説明「バッテリーの機能ブロック」 カテゴリ周辺機器 org.eclipse.vorto.Voltageを使用する; 1.0.0 functionblockバッテリーはorg.eclipse.vorto.Voltageを拡張します{ 状態 { floatとしての必須のremainingCapacityここでは、機能ブロックについて説明します。 これは、0から100までの必須の数値を含むエンティティを抽象的に記述しています。
ステータスはパーセンテージ値であるため、これをさらに抽象化して、個別のコンポーネントを再利用可能にすることができます。したがって、データ型と呼ばれるものを作成します 。ここで、0〜100の数値であるという同じ制限を持つエンティティ(この場合はパーセンテージ)を定義できます。
名前空間org.eclipse.vorto.types バージョン1.0.0 表示名「パーセンテージ」 説明「パーセンテージのデータ型」 カテゴリ単位 エンティティパーセンテージ{ floatとしての必須値このデータ型を作成すると、Battery Function Block内にインポートして使用でき、具体的な実装を置き換えることができます。
名前空間org.eclipse.vorto バージョン1.0.0 表示名「バッテリー」 説明「バッテリーの機能ブロック」 カテゴリ周辺機器 org.eclipse.vorto.types.Percentageを使用します; 1.0.0 org.eclipse.vorto.Voltageを使用する; 1.0.0 functionblockバッテリーはorg.eclipse.vorto.Voltageを拡張します{ 状態 { パーセンテージとしての必須のremainingCapacity } }温度センサーなど、TRACIデバイスに統合されているすべてのセンサーに対してこのプロセスを繰り返すことができます。 、 GPS 、加速 、および接続モジュール 。これらの機能ブロックはすべて、 Vorto情報モデルにまとめることができます。 これは、コードジェネレーターがデバイス統合コードスタブを生成するための開始点として使用できます。
名前空間com.bosch.ps バージョン1.0.0 表示名「Traci」 説明「Traciの情報モデル」 org.eclipse.vorto.Geolocationを使用します。 1.0.0 org.eclipse.vorto.Accelerationを使用します。 1.0.0 org.eclipse.vorto.MagneticStrengthを使用します。 1.0.0 org.eclipse.vorto.Temperatureを使用します。 1.0.0 org.eclipse.vorto.Batteryを使用します。 1.0.0 org.eclipse.vorto.Connectivityを使用します。 1.0.0 infomodel Traci { functionblocks { バッテリーとしてのバッテリー ジオロケーションとしての場所 加速としての加速 温度としての温度 MagneticStrengthとしてのMagneticStrength 接続性としてのbluetoothConnectivity 接続性としてのlorawanConnectivity } }さて、これをすべて何のために行うのですか?
TRACIデバイスと同様の機能を備えた他のメーカーのデバイスを使用したいとします。 TRACIデバイスを統合したIoTソリューションはすでに作成されており、さまざまなメーカーのデバイスと連携するようにシステムをリファクタリングするのは非常に困難です。
すでにファンクションブロックとデータ型が定義されているので、TRACIモデルと同じファンクションブロックを使用する新しいデバイスの新しい情報モデルを定義できます。
TRACIモデルを、同等の機能を備えた製品であるNimbeLinkのNL-AT2VSと比較してみましょう。
名前空間com.nimbelink.nl バージョン1.0.0 表示名「NLAT2VS」 説明「NLAT2VSの情報モデル」 org.eclipse.vorto.Geolocationを使用します。 1.0.0 org.eclipse.vorto.Batteryを使用します。 1.0.0 org.eclipse.vorto.Connectivityを使用します。 1.0.0 org.eclipse.vorto.Temperatureを使用します。 1.0.0 org.eclipse.vorto.Humidityを使用します。 1.0.0 org.eclipse.vorto.Accelerationを使用します。 1.0.0 infomodel NLAT2VS { functionblocks { バッテリーとしてのバッテリー 加速としての加速 ジオロケーションとしての場所 温度としての温度 湿度としての湿度 接続性としてのwifiConnectivity 接続性としてのcellalConnectivity } }このモデルでは接続モジュールでさえ異なりますが、抽象接続機能ブロックを使用していることがわかります。抽象化により、統合のオーバーヘッドをあまりかけずに、さまざまなデバイスを同様の機能で置き換えたり組み合わせたりすることができます。
Eclipse Vortoを使用する必要があるのは誰ですか?
IoTソリューションの製造、統合、開発に関与するエンティティの多様性を考えると、EclipseVortoから最も恩恵を受けるエンティティは次のとおりです。
デバイスメーカー
Eclipse Vortoは、デバイスメーカーが既存のインフラストラクチャ内の他のデバイスとの相互運用性を実現するのに役立ちます。統合するデバイスを選択する場合、柔軟性は顧客にとって大きな利点です。
テクノロジーに依存しない情報モデルを使用することにより、デバイスメーカーは、あらゆる種類のターゲットプラットフォームの実装方法を生成するオーバーヘッドを回避します。これにより、コードジェネレーターを使用して具体的な統合に変換できる情報モデルを公開することで、費用と時間を節約できます。
Eclipse Vortoを使用することの大きな利点は、デバイスプロトコルレイヤーのさらなる進化がデバイスコントローラーロジックから切り離されることです。

IoTプラットフォーム
IoTプラットフォームは、さまざまなメーカーの多種多様なIoTデバイスを接続し、さまざまなプロトコルとフォーマットをすべてサポートする必要があります。 Eclipse Vortoのコードジェネレーターを使用することで、この労力を部分的または完全なソースコード生成によって大幅に削減できます。
さらに、Vortoリポジトリは、プラットフォームがデバイス機能をJSONスキーマとして取得できるようにするランタイムリポジトリとして機能します。これらのスキーマは、デジタルツインで解釈および検証したり、通信用のコネクタをブートストラップするために使用したりできます。
これは初期の開発作業の増加を意味しますが、膨大な量のデバイスとIoTの成長を考慮すると、時間の経過とともに成果が得られます。
ソリューション開発者
接続されたデバイスとスマートセンサーをIoTソリューションに統合する場合、開発者はさまざまなデバイスAPIをカバーする必要があり、その結果、コーディングのオーバーヘッドが大幅に増加します。 Eclipse Vortoは、デバイスの統合を簡素化する汎用コードスタブを提供するコードジェネレーターを提供することにより、関連する開発作業の量を減らすことができます。

IoTの未来を垣間見る
Eclipse Vortoは、相互運用性を保証し、デバイスのインターフェイスを調和させることで、デバイスメーカー、IoTプラットフォームオペレーター、およびアプリケーション開発者がIoTデバイスを操作する方法を変える可能性があります。
IoT開発の前述の課題の多くに取り組みながら、メーカーの開発作業を削減し、プラットフォームプロバイダーとインテグレーターのデバイス統合を容易にすることができます。
プロジェクトについて詳しく知りたい場合は、GitHubリポジトリをチェックして、スターを付けてください。
試してみることもできます Vortoリポジトリで提供されるデバイスの作成、統合、視覚化のための洗練されたチュートリアルを使用してください。
モノのインターネットテクノロジー