フューチャー技術ブログ

Project Haystackに関する備忘録

最近、IoTに関するデータモデル標準化に用いられる Project Haystack について調べる機会があり、日本語でまとめられている文献が少なくて理解するのに若干苦労したため、備忘録も兼ねて調査した内容を簡単にまとめておきます。

Haystack の公式ドキュメントを読んだけどいまいち分からなかったという方がいれば参考にしていただけると幸いです。

Project Haystack 概要

Project Haystack は、ファシリティ・機器などの IoT に関するデータモデルを標準化する取り組みです。
ビルシステムとそれに関連するデバイスのモデルを様々なツールで解釈できるようにするため、メタデータ定義の方法論と共通語彙を提供することをミッションとしています。

We standardize semantic data models and web services with the goal of making it easier to unlock value from the vast quantity of data being generated by the smart devices that permeate our homes, buildings, factories, and cities.
Applications include automation, control, energy, HVAC, lighting, and other environmental systems.

(Project Haystack 公式ページから抜粋)

技術概要

Haystackの技術概要をざっくり箇条書でまとめてみました。
エンティティとタグを使ってデータやデータ間の関係性を表現することがキモなようです。

  • 各機器や建物ごとに、それぞれ適した「エンティティ」(※1)と「タグ」(※2)を用いてデータモデルを標準化する。
  • 建物は「site」、機器は「equip」、運転データは「point」エンティティを使用する。
  • エンティティ同士の関係性(どの機器がどの建物に設置されているかなど)も、タグによって表現する。
  • データモデルを標準化する際、site と equip エンティティではタグのみ付与されるが、point エンティティには実際の観測データが格納される。

※1 エンティティ…実世界の物理オブジェクトを抽象化したもの(例: 建物、ヒーター、センサーなど)。
※2 タグ…エンティティに付与する情報。名前と値によって構成されており、タグによって値の型が異なる(例: 文字列型、参照型、真偽値型など)。

エンティティごとの主なタグ

エンティティごとのお主なタグを表にまとめました。
全てのエンティティは一意な id と dis(表示名) のタグを持っており、エンティティごとに固有のタグも存在するようです。
また、カスタムタグとして Haystack が標準で用意していないタグを作成することも可能なようです。

タグ

エンティティ間の関係性の表現

データモデルの例を図に示します。
Haystack ではエンティティ内に作成したタグによって、自身のエンティティの特性と他のエンティティとの関係性を示します。
例)Sample Electricity Meter は、equip, elec, meter タグにより 自身が equip の派生である elec-meterであることを示し、 site タグの中に Sample Site の id を記載することで、 Sample Site の中に設置されていることを示す。

要素間の関連

Point へのデータの格納

エンティティのうち、Pointだけは実際の観測データを格納するなど、仕組みが複雑に感じたため Point へのデータの格納方法について箇条書きでまとめました。

  • point には派生として現在状態を表す cur-point と過去状態を表す his-point が存在する。
  • cur-point は、スカラー値が入るcurValタグを持つ。
  • his-point は、timestamp と curVal のセットをローカルストレージに記録することで履歴を管理することができる。
  • equip と point は1対多の関係であり、1つの point が1つの値(温度、速度など)を表す。
  • point は他のエンティティと結合し、用途に応じた働きをするための新たなエンティティを形成する。
    例)point に air, temp タグをつけることで、 point と air-temp が結合し、温度計が計測した温度を表すためのエンティティとなる。

最後に

本記事を読んでくださった方の Haystack への理解向上に少しでも役立っていれば幸いです。

参考文献