Eclipse Vorto:シームレスなIoTデバイス統合を実現する
アレクサンダー・エーデルマン
こんにちは、私はアレクサンダー・エーデルマン。2006年からロバート・ボッシュのソフトウェアエンジニアとして、シンガポールを拠点に活動しています。私の情熱はIoTと、多様なプラットフォーム間でデバイス同士が会話できるようにするオープン標準にあります。Eclipse IoT Vortoプロジェクトに積極的に貢献しており、IoTデバイスの統一的な記述と、オープンIoT標準に準拠するあらゆるプラットフォームへの統合を実現するクラウドベースツールを提供しています。コーディング以外では、アジア料理、テニス、新しい場所の探索を楽しんでいます。
なぜデバイス統合が重要なのか
スマートファクトリーとコネクテッドホームは、コスト、効率、安全性、利便性に革命をもたらしています。しかし、膨大な数のデバイス・センサーメーカーが存在することで、重要な課題が生じます:ブランドや技術に関わらず、すべてのデバイスがクラウドプラットフォームとシームレスに通信できることをどう保証するか。従来、開発者は同じAPIを共有する限られたデバイスセット向けにカスタムソリューションを構築していました。デバイスタイプやベンダーを切り替えるには、苦痛を伴うリファクタリングが必要でした。
農業オペレーションでトラクター、プラウ、その他機器を追跡するケースを想像してください。位置だけでなく、温度、加速度、バッテリー状態も監視する必要があります。どうすればニーズに合うデバイスを選び、コストのかかる再設計を強制する硬直的な結合を避けられるでしょうか?
Eclipse Vortoの紹介
Eclipse Vortoは、Vorto情報モデルと呼ばれる抽象化レイヤーと、接続デバイスのすべてのメタ情報——プロパティ、機能、関係性——を取り込むドメイン固有言語(DSL)を提供します。デバイスをプラットフォーム非依存に定義することで、Vortoは類似機能を持つ異種ハードウェアを統一する一貫したインターフェースを作り出します。
プロジェクトは4つのコアコンポーネントで構成されます。
- Vorto DSL —— 抽象デバイスモデルを定義する読みやすく開発者フレンドリーな言語。非開発者でもアクセス可能。
- メタモデル —— 情報モデル、ファンクションブロック、データ型といったエンティティ間の関係を規定。
- コードジェネレーター —— DSLとメタモデル定義を、選択したIoTプラットフォーム向けの使用可能なソースコードへ変換。
- Vortoリポジトリ —— 情報モデルとファンクションブロックを管理、共有、配布するクラウドベースストア。再利用を促進。
Eclipse Vortoは完全オープンソースで、ボッシュの管轄下にあるEclipse IoTワーキンググループによって維持されています。
Eclipse Vortoの実践
大規模農場でハーベスター、トラクター、その他資産の使用状況を追跡するケースを考えます。位置、温度、湿度、バッテリーデータを統合することで、オペレーターは予知保全と盗難防止対策を実装できます。ボッシュ資産追跡ソリューション(TRACI)がこの能力を体現しています。
TRACIデバイスのデジタルツイン作成は、再利用可能なビルディングブロックから始まります。例えば、バッテリーファンクションブロックは、バッテリー状態を0〜100%のパーセンテージで記述します。このブロックは多くのデバイスで再利用可能です。
namespace org.eclipse.vorto version 1.0.0 displayname "Battery" description "Functionblock for Battery" category peripheral using org.eclipse.vorto.Voltage ; 1.0.0 functionblock Battery extends org.eclipse.vorto.Voltage { status { mandatory remainingCapacity as float } }
数値をさらに抽象化するため、パーセンテージ用のデータ型を作成します。
namespace org.eclipse.vorto.types version 1.0.0 displayname "Percentage" description "Datatype for Percentage" category units entity Percentage { mandatory value as float }
このデータ型をバッテリーブロックに組み込み、具体的な実装詳細を排除します。
namespace org.eclipse.vorto version 1.0.0 displayname "Battery" description "Functionblock for Battery" category peripheral using org.eclipse.vorto.types.Percentage ; 1.0.0 using org.eclipse.vorto.Voltage ; 1.0.0 functionblock Battery extends org.eclipse.vorto.Voltage { status { mandatory remainingCapacity as Percentage } }
温度、GPS、加速度、接続モジュールについても同様のパターンを繰り返すことで、Vortoのコードジェネレーターに投入可能な包括的な情報モデルが完成します。
namespace com.bosch.ps version 1.0.0 displayname "Traci" description "Information Model for Traci" using org.eclipse.vorto.Geolocation; 1.0.0 using org.eclipse.vorto.Acceleration; 1.0.0 using org.eclipse.vorto.MagneticStrength; 1.0.0 using org.eclipse.vorto.Temperature; 1.0.0 using org.eclipse.vorto.Battery; 1.0.0 using org.eclipse.vorto.Connectivity; 1.0.0 infomodel Traci { functionblocks { battery as Battery location as Geolocation acceleration as Acceleration temperature as Temperature magneticStrength as MagneticStrength bluetoothConnectivity as Connectivity lorawanConnectivity as Connectivity } }
別のメーカーが類似機能を持つデバイスをリリースしたとします。同じファンクションブロックとデータ型を再利用すれば、統合ロジックを書き直すことなく新しい情報モデルを定義できます。
namespace com.nimbelink.nl version 1.0.0 displayname "NLAT2VS" description "Information Model for NLAT2VS" using org.eclipse.vorto.Geolocation; 1.0.0 using org.eclipse.vorto.Battery; 1.0.0 using org.eclipse.vorto.Connectivity; 1.0.0 using org.eclipse.vorto.Temperature; 1.0.0 using org.eclipse.vorto.Humidity; 1.0.0 using org.eclipse.vorto.Acceleration; 1.0.0 infomodel NLAT2VS { functionblocks { battery as Battery acceleration as Acceleration location as Geolocation temperature as Temperature humidity as Humidity wifiConnectivity as Connectivity cellularConnectivity as Connectivity } }
共有ファンクションブロックにより、新デバイスを最小限の労力で統合できる——これがVortoの、デバイス進化とアプリケーションロジックを切り離す力です。
Eclipse Vortoの恩恵を受けるのは誰か?
デバイスメーカー
Vortoにより、メーカーはプラットフォーム非依存の情報モデルを公開でき、ターゲット固有の実装を複数用意する必要がなくなります。この柔軟性は時間とコストを節約し、エコシステム全体での相互運用性を保証します。プロトコルレイヤーとデバイスコントローラーの分離により、既存統合を壊さずにデバイスを継続的に進化させられます。
IoTプラットフォーム
プラットフォームは、Vortoのコードジェネレーターを部分的または完全なソースコード生成に使用することで、統合オーバーヘッドを大幅に削減できます。VortoリポジトリはJSONスキーマを通じてデバイス機能のランタイムソースとして機能し、動的な発見、検証、コネクターブートストラッピングを促進します。
ソリューション開発者
異種デバイスAPIに取り組む開発者は、Vortoの汎用コードスタブと再利用可能モデルを活用し、開発サイクルを短縮し、ベンダーロックインを回避できます。
Eclipse Vortoと共にあるIoTの未来
デバイスインターフェースを標準化し、相互運用性を保証することで、Eclipse Vortoはメーカー、プラットフォーム運営者、開発者の協働の在り方を再構築できます。開発工数を削減し、統合を容易にし、IoTエコシステム固有のスケーラビリティ課題に対処します。
プロジェクトをGitHubで探索——スターを付けて、デバイス作成、統合、可視化のチュートリアルに飛び込んでください。
モノのインターネットテクノロジー
- Eclipse HonoでのX.509証明書によるセキュアなデバイス認証
- スマート データ:IoTとビッグデータの次なるフロンティアをナビゲート
- Wi-Fi対応IoTデバイスがもたらす増大するセキュリティ脅威
- IoT導入が停滞:ハイプが的外れな理由
- 狭帯域技術がIoT革命をどう支えるか
- エンタープライズIoT成功の基盤構築
- IoTが直面する5つの主要課題:セキュリティ、規制、互換性、帯域幅、顧客期待
- COVID-19パンデミック中にIoTが医療をどう変革したか
- ダイレクト・デバイス接続が産業IoTの次のマイルストーンとなる理由
- ポストパンデミック世界におけるIoTのブラインドスポットを解消する
- 5G導入がIoTセキュリティを強化する仕組み:知っておくべきこと