図1は、本開示の態様に係るスマートシティ環境複合体1内の感知環境10の例示的な図である。一態様において、感知環境10は、都会(例えば、都市の景観)、郊外、または田舎の環境にかかわらず、インテリジェント居住を提供するものであり、この感知環境10においては、生活の質を向上させ、スマートシティ環境複合体1の運用における効率を向上させるために、スマートシティ環境複合体1のエッジデバイス情報ストリームが全体論的に配置される。例えば、感知環境10は、スマートシティ環境複合体1内の状況またはインフラストラクチャを管理および監視するために必要な時間および労働力に関連する費用を削減することによって都市に必要な支出を削減するために採用され得る。一態様において、感知環境10は、エネルギーの使用、メンテナンスの必要性の減少、および交換のためのより良好な監視に関連する費用も削減する。スマートシティ環境複合体1の感知環境10は、一態様において、住人(例えば、来訪者および居住者)に対する効率を向上させ、ならびにスマートシティ環境複合体1のメンテナンス、運用、および管理に対する効率も向上させ得る。さらに、一態様において、スマートシティ環境複合体1の感知環境10は、駐車管理、街路灯管理、公共安全管理、公共施設管理、環境監視、および下水道監視についての垂直ソリューションを提供する。
一態様において、図1に示すように、感知環境10は、スマートシティ環境複合体1内に分散される多様な種類のセンサ11−28を含む。一態様において、複数種類のセンサ11−28の各々は、異なる感知特性を検出するように構成された異なるセンサ性能を有する。例えば、一態様において、多様なセンサ11−28の種類は、例えば、天候センサ11(降水、気温、および地温を検出するように構成される)、公共安全センサ12(騒音、動き、または群衆を検出するように構成される)、廃棄物管理センサ13(廃棄物コンテナの状態を検出するように構成される)、ガス漏洩センサ14、下水道監視センサ15(下水道流体レベルを追跡するように構成される)、水漏洩センサ16(水道本管を監視するように構成される)、駐車アクセスセンサ17、スマート駐車センサ18(例えば、利用可能な駐車スポットを検出する)、水質センサ19、構造的健全性センサ20(建物、橋、または道路の振動を検出するように構成される)、および土壌水分センサ21(農業、園芸、または地面保持の目的のために構成される)を含み得る。他の態様において、センサ11−28の種類は、例えば、電子放射センサ22(基地局および無線通信を監視するように構成される)、スマート照明センサ23(例えば、エネルギー消費を減少させるための動きセンサまたは周囲照明センサを有する街路灯)、街路安全センサ24(例えば、消火栓または駐車禁止区域の近くの障害物を検出するように構成されることで、これらの区域が緊急車両用に空く)、空気質センサ25(例えば、汚染、オゾン、または花粉を検出するように構成される)、アイテム位置センサ26(例えば、地方自治体のアセット、ツール、車両、または商品を追跡するように構成される)、水位センサ27(例えば、雨水管の雨水または貯水器/給水塔の水位を検出するように構成される)、または公共衛生センサ28(例えば、原子力的、生物的な科学的な汚染物質を検出するように構成される)も含み得る。さらに他の態様において、多様なセンサ11−28の種類は、環境またはインフラストラクチャの状態を検出するように構成される任意のセンサ特性を有する任意の適当なセンサを含み得る。
一態様において、スマートシティ環境複合体1内の感知環境10は、スマートシティ環境複合体1の全体に分散した数千のセンサ11−28を含み得る。概して、複数のセンサ11−28からの多様な感知データは、全体論的な解決および流布のために、システムによって整理、分析、分解、および統合される(以下でより詳細に説明する)。複数のセンサ11−28からの多様な感知データの整理、分析、および統合なしでは、実質的に無秩序で感知の騒音が存在するであろう。一態様において、感知環境10はまた、関連するセンサのデータおよび情報についての分析および解決策/決定が最適化されるように、複数のレベル(例えば、以下でより詳細に説明するような、エッジデバイスレベル、ゲートウェイレベル、およびプラットフォームエンジンレベル)でシステムの全体に亘って分散される別個のロジックモジュールまたはロジック層も含む。分散されたロジックモジュールは、リアルタイムまたは緊急の情報が最適なレベルで扱われるようにするとともに、センサ11−28からの多様な感知データを最適に決定する性能を有する。
図1Aは、本開示の態様に係る、インターネット・オブ・シングス(IoT)プラットフォームシステム100の一部の概略図である。IoTプラットフォームシステム100は、以下でより詳細に説明するように、インターネット・オブ・シングス(IoT)ネットワークシステム100Sに含まれ得る。インターネット・オブ・シングス(IoT)プラットフォームシステム100は、スマートシティ環境複合体1内の感知環境10において動作するとともにこれを利用し、車両検出、交通パターン、車両案内、または車両位置などの感知特性を感知するためのエッジデバイス120A−C、121A−C、および122A−Cを有する(本明細書中においては、概して「エッジデバイス120」という)。他の態様において、エッジデバイス120はまた、上記の多様なセンサ11−28に接続し、またはこれらに統合され、例えば、天候、公共安全、廃棄物管理、ガス漏洩、下水道感知、水漏洩、駐車感知、スマート駐車感知、水質、構造的健全性、土壌水分、電磁放射、スマート照明、安全かつ整然とした街路感知、空気質、アイテム追跡および位置、水位、公共衛生ハザード等の特性、または上記のような多様なセンサ11−28に関する任意で適当な所定の感知特性を感知するように構成される。図面を参照して本開示の態様について説明するが、本開示の態様は多くの形態で具現化され得ることを理解すべきである。加えて、構成要素および材料については、任意の大きさ、形状、または種類のものが使用され得る。
一態様において、インターネット・オブ・シングス(IoT)プラットフォームシステム100は、プラットフォームエンジン101、1つまたは複数のIoTゲートウェイ110A−110C(本明細書中においては、概してゲートウェイ/ノード110、IoTプラットフォーム通信ネットワークノード110、またはネットワークノードデバイス110という)、1つまたは複数のIoTエッジデバイス群120GP−122GP(エッジデバイス120A−C、121A−C、および122A−Cを含む)、および1つまたは複数の周辺デバイス130−132を含み得る。一態様において、1つまたは複数のエッジデバイス群120GP−122GPの各々は、実質的に同じ種類の感知特性を検出または測定するように構成される、実質的に同じ種類のエッジデバイス120A−C、121A−C、および122A−Cを含む群であり、1つまたは複数のエッジデバイス群120GP−122GPの各々は、共通のゲートウェイ110A−Cに関連づけられる。他の態様において、1つまたは複数のエッジデバイス群120GP−122GPは、任意の感知特性を測定または検出するように構成される多様な種類のエッジデバイス120A−C、121A−C、および122A−Cを含み得て、1つまたは複数のエッジデバイス群120GP−122GPの各々はさらに、共通のゲートウェイ110A−Cに関連づけられる。他の態様において、インターネット・オブ・シングス(IoT)プラットフォームシステム100は、例えば、インターネット・オブ・シングス(IoT)プラットフォームシステム100に関連する車両駐車スペースまたは環境状況またはインフラストラクチャ状況の監視を容易にするための任意の数および種類の構成要素を含む。
プラットフォームエンジン101は、1つまたは複数のゲートウェイ110A−110C(および1つまたは複数のゲートウェイ110A−110Cと通信するエッジデバイス群120GP−122GPのエッジデバイス120A−C、121A−C、および122A−C)および1つまたは複数の周辺デバイス130−132と通信し、およびこれらを制御することが可能な任意の適当なコントローラを有する。一態様において、プラットフォームエンジン101は、エッジデバイス群120GP−122GP(および、それらのそれぞれのエッジデバイス120A−C、121A−C、および122A−C)およびゲートウェイ110A−110Cからプラットフォームエンジン101に、ならびにプラットフォームエンジン101から周辺デバイス130−132に延在する、任意の適当な無線または有線の通信インターフェースリンクを使用するように構成される。ここで、一態様において、インターフェースリンクは、単一の通信プロトコルまたは異なる通信プロトコルの組合せを含み得る。一態様において、エッジデバイス群120GP−122GP、ゲートウェイ110A−110C、およびプラットフォームエンジン101の間の無線または有線の通信インターフェースリンクは、暗号化され、第三者に対して閉じられており、これによってエッジデバイス120A−C、121A−C、および122A−C、ゲートウェイ110A−C、プラットフォームエンジン101、ならびに周辺デバイス130−132間の通信をハッキングするか、または傍受する可能性が最小化される。
一態様において、少なくともプラットフォームエンジン101およびゲートウェイ110A−110C(ならびに感知デバイス)のうちの1つまたは複数、および/または周辺デバイス130−132の間の通信は、モバイル通信リンク141、衛星通信リンク142、公共交換電話ネットワーク145、インターネット/ワールド・ワイド・ウェブ143、イーサネット144、ローカルエリアネットワーク、または他の適当な無線または有線プロトコルまたは接続であり得る。一態様において、エッジデバイス群120GP−122GP中でのエッジデバイスからの通信は、実質的にリアルタイムでプラットフォームエンジン101および/または周辺デバイス130−132に対して提供され得る。
プラットフォームエンジン101は、一態様において、監視されている各駐車スペースについて、駐車スペースのユーザ、駐車スペースの指定/割当、到着の時間、出発の時間、取引レート、ユーザアカウント金銭残高、請求取引、駐車違反、駐車スペース利用可能性、またはインターネット・オブ・シングス(IoT)プラットフォームシステム100によって監視される各駐車スペースの使用および請求に関係する他の任意の情報を追跡および報告するように構成された、1つまたは複数のプロセッサ、メモリ、および他の任意の適当なハードウェア/ソフトウェアを含み得る。同様に、一態様において、1つまたは複数のプロセッサおよびメモリは、本明細書中において説明されるセンサ11−28によって監視される、異なる監視されているシステムの各々についての解決策を対して追跡し、応答し、処理し、および決定するようにも構成される。プラットフォームエンジン101は、1つまたは複数のユーザインターフェースによって構成され得て、プラットフォームエンジン101の管理および運用に対するユーザまたは受信者のアクセスを可能とする。一態様において、プラットフォームエンジン101は、モニタ、キーボード、および/または他の適当なユーザインターフェースを有する、任意の適当な計算装置であり得る。他の態様において、プラットフォームエンジン101は、計算装置のクラスタ、分散型計算装置、またはクラウドベースのシステムバックエンドである。他の態様において、周辺デバイス130−132のうちの1つまたは複数は、任意の適当な長範囲または短範囲の無線通信リンクを通じて、および/または、上記のような有線接続を通じて、プラットフォームエンジン101にアクセスし、これを操作するためのユーザインターフェースを提供し得る。プラットフォームエンジン101は、エッジデバイス120A−C、121A−C、および122A−Cから任意の適当なデータを受信するように構成され得る。エッジデバイス120A−C、121A−C、および122A−Cから送信されるデータは、例えば、監視されている駐車スペース、車両検出、および/または感知デバイスの健全性および正常(welfare)/メンテナンス状態に関連する任意のデータを含み得るか、または実現し得る。他の態様において、エッジデバイス120A−C、121A−C、および122A−Cから送信されるデータは、センサ11−28に関して上で説明した任意の適当な感知特性を測定する任意の感知データを含み得る、または実現し得る。一態様において、プラットフォームエンジン101は、エッジデバイス120A−C、121A−C、および122A−Cからのデータへの任意の適当な処理を行うように構成され得て、他の態様において、エッジデバイス120A−C、121A−C、および122A−Cからのデータは、例えばプラットフォームエンジン101による処理なくして、周辺デバイス130−132のうちの1つまたは複数上に表示するように構成され得る。
一態様において、周辺デバイス130−132のうちの1つまたは複数は、例えば、駐車/法執行人員によって使用される携帯ユニットであり得る執行ユニットであり得る。執行ユニットは、電子チケット発行およびデータ取得が分散型遠隔感知システムに統合されるように、駐車違反および/または駐車チケットの発行をプラットフォームエンジン101に報告するように構成され得る。例えば、周辺デバイス130−132を使用する法執行官は、法に違反している車両があるかを確認するために、違反が報知された後に駐車スペースに到着し、駐車スペースの目視調査を行い得る。違反は、周辺デバイス130−132に入力され、選択的に、違反中の車両の写真が周辺デバイスにより撮影され得る、または周辺デバイスに読み込まれ得る。このようなことから、周辺デバイス130−132に入力された違反データは、実質的にリアルタイムで、自動的に取得され、プラットフォームエンジン101等のメモリに保管される。認識されるように、インターネット・オブ・シングス(IoT)プラットフォームシステム内に違反情報を保管することは、他の違反閾値が満たされるか、または新たな車両がそのスペースに駐車するまで、そのスペースに関して執行官へシステムが警告することを停止させる。別の態様において、感知デバイスは、消火栓の前、消防車専用車線、横断歩道、および交差点等の非駐車スペースにおいても使用され得る。インターネット・オブ・シングス(IoT)プラットフォームシステム100は、例えば周辺デバイス130−132を通じて執行官に警告が送信されるように、これらの非駐車スペースのうちの1つに車両が駐車された時毎に、任意の適当な所定期間後に違反を作成するように構成され得る。
他の態様において、周辺デバイス130−132のうちの1つまたは複数は、感知特性(例えば、本明細書中において説明されるセンサ11−28に関連するもの)を監視するように構成され得る、他のデバイスまたは受信者端末を含み得る。例えば、周辺デバイス130−132のうちの1つまたは複数は、ガス漏洩モニタ、水漏洩モニタ、下水道モニタ、および廃棄物管理モニタを、地方自治体の司令センタに含み得る。他の態様において、1つまたは複数の周辺デバイス130−132は、例えば、私的に所有または操作されるモニタ、例えば、農家によって操作される土壌水分モニタ、電気通信会社によって操作される電磁放射、私的に所有される地方自治体の水源に所有される水センサ、または原子力発電所によって操作される放射モニタも含み得る。さらに他の態様において、1つまたは複数の周辺デバイス130−132は、本明細書中において説明されるセンサ11−28からの多様な感知データを表示または監視するように構成される任意のユーザ端末を含み得る。
認識され得るように、インターネット・オブ・シングス(IoT)プラットフォームシステム100は、エッジデバイス群120GP−122GPのエッジデバイスと連動して使用され得る、例えば、熱電対、湿度センサ、放射または化学センサ、光センサ、磁力計、レーダ、振動センサ、加速度計、空気質センサ、電磁放射センサ、動きセンサ、容量センサ、カメラ、および赤外線センサ等の任意の種類のエッジデバイスを組み込み得る。センサからの情報は、エッジデバイス群120GP−122GPに関連する他の感知デバイスによって提供されるデータと連動して使用され得て、環境またはインフラストラクチャ状況が追跡され、センサ11−28からのデータの全体論的な(例えば、相互接続および統合された)管理が提供される。
周辺デバイス130−132のうちの1つまたは複数は、例えば、インターネット・オブ・シングス(IoT)プラットフォームシステム100によって監視される駐車スペースにアクセスする受信者によって使用されるユニットも含み得る。一態様において、ユニットは、専用の車両駐車システム携帯ユニットであり得て、他の態様において、ユニットは、無線電話、GPSユニット、または他の計算装置上で実行することが可能なアプリケーションプログラムを通じて等、ユーザの無線電話、車両GPSユニット、または他のユーザ計算装置に統合され得る。さらにまた他の態様において、携帯ユニットは、例えば、街路の安全、空気質、天候、公共安全、ガス漏洩、下水道、水漏洩、駐車アクセス、駐車スポット、水質、構造的健全性、土壌水分、電磁放射、スマート照明、空気質、アセット位置および追跡、水位、および公共衛生のセンサを受信者が監視できる任意の適当な態様で実施され得る。ユニットは、例えば、分散型遠隔感知システムの展開領域の全体に亘る駐車の利用可能性(およびそこへの経路)についての実質的なリアルタイムの図を含む、エッジデバイス群120GP−122GPのエッジデバイスによって提供されたデータに基づく経路探索情報を受信者に提供し得る。ユニットは、受信者が場所を選択し、例えば、色コードまたは他の適した表示を用いて、領域内の駐車スペースがどれくらい満たされているかを見ることができるように構成され得る。各駐車スペースに駐車するための料金設定も提供され得る。ユニットによって提供される経路探索情報は、受信者がどこに駐車するのかを追跡し続けることができるように提供され得る。一態様において、ユニットは、例えば分散型遠隔感知システムによって監視される駐車スペースを離れる車両により混雑していない駐車場の出口または街路を受信者が選択できるように、全地球測位システム、または、駐車スペースに関連する交通情報を受信者に提供する他のマッピングデータを含み得るか、またはこれと連動し得る。
前述のように、一態様において、プラットフォームエンジン101は、任意の適当な態様で、1つまたは複数のゲートウェイ110A−110C(および1つまたは複数のゲートウェイ110A−110Cに関連するエッジデバイス群およびエッジデバイス)に接続され得る。一態様において、1つまたは複数の通信機器140が、ゲートウェイ110A−110Cと中央コントローラ101との間の通信リンクとして使用され得る。1つまたは複数の通信リンク140は、例えば、1つまたは複数の基地局/プロバイダをモバイル通信ネットワークに含み得る。他の態様において、1つまたは複数の通信リンク140は、例えば、衛星通信ネットワークにおける1つまたは複数の衛星、公共交換電話ネットワーク、インターネット/ワールド・ワイド・ウェブのアクセスポイント、または上記の有線および/または無線通信プロトコルにおいて使用されるもの等の他の任意の適当な通信アクセスポイントを含み得る。さらにまた他の態様において、1つまたは複数の通信リンク140は、モバイル通信と衛星通信との組合せ、または他の任意の適当な有線または無線通信リンクであり得る。
ここで図2A、図2B、および図2Cを参照すると、IoTプラットフォームシステム100を含むインターネット・オブ・シングス(IoT)ネットワークシステム100Sの追加の概略図が示される。図2Aおよび図2Bは、単一のエッジデバイス120が単一のゲートウェイ110に接続され、さらにプラットフォームエンジン101に接続され、周辺デバイス130−132にまで広がって接続されていることを表している。一態様において、図2Aおよび図2Bは、図1Aに示されるインターネット・オブ・シングス(IoT)プラットフォームシステム100を実質的に他の形で表したものである。図2Aおよび図2Bに示されるように、インターネット・オブ・シングス(IoT)プラットフォームシステム100は、エッジデバイス120を含み、エッジデバイス120はゲートウェイ110と通信し、ゲートウェイ110はさらにプラットフォームエンジン101と通信し、プラットフォームエンジン101はデータを周辺デバイス130−132に配布する。図2Cに示されるように、一態様において、インターネット・オブ・シングス(IoT)プラットフォームシステム100は、例えば、プログラム可能なハードウェアおよびソフトウェアとして機能する仮想マシン154、160、181の分散型システムとして構成される。一態様において、少なくとも1つのIoTプラットフォームシステム制御エンジン101、少なくとも1つのネットワークノードデバイス110、および少なくとも1つのIoTエッジデバイス120のそれぞれの仮想マシン154、160、181は、特定のIoTタスクを実行するように構成される。一態様において、少なくとも1つのIoTプラットフォームシステム制御エンジン101、少なくとも1つのIoTネットワークノードデバイス110、または少なくとも1つのIoTエッジデバイス120のそれぞれの仮想マシン154、160、181は、特定のIoTタスクの一部を実行するように構成され、特定のIoTタスクの一部は、少なくとも1つのIoTプラットフォームシステム制御エンジン101、少なくとも1つのIoTネットワークノードデバイス110、または少なくとも1つのIoTエッジデバイス120のそれぞれの仮想マシン154、160、181の容量および効率特性に基づいて分散される。
再び図2A、図2B、および図2Cを参照すると、一態様において、エッジデバイス120、ゲートウェイ110、およびプラットフォームエンジン101用のハードウェアおよびソフトウェアは、各々、セキュアシステムスペース(例えば、各それぞれのデバイス用のファームウェアを含み得るそれぞれのネットワークリンクカード153、166、180内)、ならびにそれぞれのネットワークリンクカード153、166、180内で動作する仮想マシン154、160、181の形態でユーザ定義/構成可能スペースをそれぞれ定義する。セキュアシステムスペースは、例えば、各それぞれのデバイス(例えば、エッジデバイス120、ゲートウェイ110、およびネットワーク稼働コントローラ101)とネットワークおよび/または低レベルハードウェア操作との間の相互作用を制御する(例えば、物理層またはデバイス層において各それぞれのデバイスと物理ハードウェアがどのように通信するかを制御する)。ネットワークリンクカード153、166、180内のセキュアシステムスペースは、セキュアされており、エンドユーザまたは管理者により変更可能でない。各エッジデバイス120、ゲートウェイ110、およびプラットフォームエンジン101はさらに、各デバイスレベルでのユーザ構成可能スペースを定義するファームウェア内で実行されるそれぞれの仮想マシンを含む。例えば、エッジデバイス120のそれぞれの仮想マシンは、例えば、様々な多様なセンサの入力と出力との間のインターフェースについてのユーザ構成を可能とする。各それぞれの仮想マシン154、160、181はさらに、例えば、ユーザによるカスタマイズのための共通のインターフェースを提供する。このため、仮想マシン154、160、および181は、エッジデバイス120、ゲートウェイ110、およびプラットフォームエンジン101の機能をカスタマイズするために、ユーザが定義した、またはユーザがカスタマイズしたスクリプト、規則、またはコードを実行するように構成される。ユーザによるカスタマイズは、一態様において、以下でより詳細に説明するような、スクリプト言語インタプリタの形態、または視覚的形状の形態で可能である。一態様において、エッジデバイス120、ゲートウェイ110、およびプラットフォームエンジン101の各それぞれの仮想マシン154、160、172内で定義されるセキュアシステムスペースは、エンドユーザによるアクセスおよびそれぞれの仮想マシン154、160、172内のバグまたは悪意のあるコードによる悪用を防止するように、隔離されている。一態様において、IoTエッジデバイス120セキュアシステムスペースは、認可されていないアクセスを防止するためにセキュアされて構成され、IoTエッジデバイス120ユーザ定義スペースは、仮想マシン154の分散型システムを形成するユーザ定義命令を受信および実行するように構成される。別の態様において、IoTエッジデバイス120およびネットワークノード110のセキュアシステムスペースは、認可されていないアクセスを防止するためにセキュアされて構成され、IoTエッジデバイス120およびネットワークノード110のユーザ定義スペースは、仮想マシン154および160の分散型システムを形成するためのユーザ定義命令を受信および実行するように構成される。さらに別の態様において、IoTエッジデバイス120、プラットフォームエンジン101、およびネットワークノード110のセキュアシステムスペースは、認可されていないアクセスを防止するためにセキュアされて構成され、IoTエッジデバイス120、プラットフォームエンジン101、およびネットワークノード110のユーザ定義スペースは、仮想マシン154、160、172の分散型システムを形成するためのユーザ定義命令を受信および実行するように構成される。
図2A、図2B、および図11を参照して、各ネットワークリンクカード153、166、180(「IoTデバイスリンク」ともいう)について説明する。ネットワークリンクカード153は、図11に例示を目的として示され、ネットワークリンクカード166、180は同様の構成を有し得る。ネットワークリンクカード153は、プロセッサ1103(「マイクロコントローラ」ともいう)と、メモリ1100と、メディア・アクセス・コントロール(MAC)アドレス1101ストレージと、インターフェースモジュール1102と、電源1105と、電力コントローラ1104と、通信モジュール1106と、アンテナ1107とを含む。プロセッサ1103(プロセッサ162はIoTデバイス110に含まれる)は、暗号解読ユニット1103CM(暗号解読ユニット162CMはIoTデバイス110に含まれる)を含むか、またはこれに通信可能に結合される。プロセッサ1103も、メモリ1100と、通信モジュール1106と、インターフェースモジュール1102と、MACアドレスモジュール1101とに通信可能に結合される。プロセッサ1103は、メモリ100に保管される非一時的なプログラムコードを実行するように構成される。プログラムコードは、セキュアされ、認可されていないアクセスおよびユーザ定義命令を実行するように構成されるユーザ定義プログラムコードを防止するように構成されるセキュアプログラムコードを含む。一態様において、プロセッサ1103は、IoTネットワークリンクカード153によって送信および受信されるデータを暗号化および復号化するように構成される暗号解読ユニット1103CMをふくむか、またはこれに結合される。
インターフェースモジュール1102は、ネットワークリンクカード153、166、180が設置されるIoTエッジデバイス120、IoTゲートウェイ110、またはプラットフォームエンジン101の他の構成要素との通信をプロセッサ1103に提供する。例えば、インターフェースモジュール1102は、IoTデバイスリンクセンサ11−28の少なくとも1つの入力151および出力152を接続し、制御するように構成される。一態様において、インターフェースモジュール1102は、IoTデバイスリンクセンサ11−28で共用され、IoTデバイスリンクセンサは、天候、公共安全、廃棄物管理、ガス漏洩、下水道監視、水漏洩、駐車アクセス、スマート駐車、水質、構造的健全性、土壌水分、電子射出、スマート照明、街路安全、空気質、アイテム位置、水位、または公共衛生のセンサのうちの1つまたは複数に対応するセンサを含む。一態様において、ユーザ定義プログラムコードは、IoTデバイスリンクセンサ11−28の少なくとも1つの入力151および出力152の操作を制御するように構成される。一態様において、IoTデバイスリンクセンサ11−28は、感知特性(例えば、天候、公共安全情報、廃棄物管理情報、ガス漏洩情報、下水道情報、水漏洩情報、駐車情報、水質情報、構造的健全性情報、土壌水分情報、電子放射情報、照明情報、街路安全情報、空気質情報、アイテム位置情報、水位情報、または公共衛生情報等)を感知し、暗号解読ユニット1103CMは、通信モジュール1106およびアンテナ1107が感知特性を送信する前に感知特性を暗号化する。
電力コントローラ1104および電源1105は、メモリ1100、MACアドレスモジュール1101、プロセッサ1103(および暗号解読ユニット1103CM)、および通信モジュール1106に結合される電力供給管理モジュールを形成し、電力供給管理モジュールは、IoTネットワークリンクカード153に電力を提供するように構成される。
通信モジュール1106は、データをIoTネットワークリンクカード153に送信し、IoTネットワークリンクカード153から受信するように構成される。一態様において、温度補償水晶発振器(TCXO)が通信モジュール1106に結合される。通信モジュール1106およびアンテナ1107は、IoTエッジデバイス120、IoTゲートウェイ110、およびプラットフォームエンジン101のうちの少なくとも1つがIoTエッジデバイス120、IoTゲートウェイ110、およびプラットフォームエンジン101のうちの他の少なくとも1つと通信し得るように、IoTプラットフォームシステム100の広域ネットワーク(WAN)を介した通信を提供する。
MACアドレスモジュール1101は、IoTネットワークリンクカード153に固有ネットワークアドレスを提供するように構成される。リアルタイムクロックRTCも設けられ、プロセッサ1103の動作を計時するように構成される。
また、図2A、図2B、および図2Cを参照すると、一態様において、エッジデバイス120は、様々なセンサ種に対するインターフェースとなり、特定の出力デバイスを駆動する、ハードウェアおよびソフトウェアモジュールである。一態様において、エッジデバイス120は、様々かつ多様な種類のセンサと統合し、ネットワークを介して多様なセンサ種(例えば、本明細書中において説明されるセンサ11−28)を通信することを許容するように構成される。一態様において、エッジデバイス120は、認可されていない個人によるハッキングまたはアクセスの可能性を最小化する閉じられたアーキテクチャを有することによってセキュリティを提供するように構成される、マイクロコントローラ、チップ、またはプリント回路基板(PCB)である。なお、エッジデバイス120は、センサまたは出力デバイスとは別個である。代わりに、エッジデバイス120は、多くの異なる種類のセンサ(例えば、本明細書中において説明されるセンサ11−28)とのインターフェースとなる共通の通信および制御スイートを提供する。一態様において、エッジデバイス120のセキュアされたアーキテクチャは、以下で説明するようなセキュアされたシステムスペースを定義するネットワークリンクカード153によって定義される。エッジデバイス120はさらに、共通のプログラミングインターフェースを提供し、エッジデバイス120のユーザによるカスタマイズならびに以下でより詳細に説明するような多様なセンサ種および多様な出力との相互作用を可能とする、ネットワークリンクカード153内で実行される仮想マシン154を提供するように構成される。一態様において、エッジデバイス120はさらに、仮想マシン154を通じてローカルエッジデバイス120のレベルでローカルロジックまたは制御アーキテクチャを提供する。
一態様において、エッジデバイス120は、多様な種類のセンサ入力151を提供する異なるセンサ種(例えば、本明細書中において説明されるセンサ11−28)の多様なセンサに結合されるか、またはこれらと一体化されるように構成されている。一態様において、エッジデバイス120はさらに、例えば、ディスプレイ、スイッチ、データストレージデバイス、レジスタ、または他のコントローラに出力を提供するように構成される。一態様において、エッジデバイス120に結合される多様なセンサ(例えば、センサ11−28)は、低電力センサとなるように構成される。以下でより詳細に説明するように、一態様において、エッジデバイス120は、ネットワークリンクカード153を含む。一態様において、ネットワークリンクカード153は、ユーザには見えずアクセス不能であるセキュアシステムスペースを定義する。一態様において、ネットワークリンクカード153によって定義されるセキュアシステムスペースは、例えば、ネットワーク通信または低レベルハードウェア通信(例えば、通信モジュール155による)とのすべての相互作用の管理等、エッジデバイス120の特定の機能を制御する。エンドユーザによるネットワーク通信または低レベルハードウェア通信との相互作用へのアクセスを制限することにより、ネットワークリンクカード153のセキュアシステムスペースは、改ざんを防止し、ユーザ定義コードによってマイナスに影響される抵抗であるセキュアされたプラットフォームを提供する。例えば、エッジデバイス120の中核を担う性能(例えば、ブートローダ、ドメイン固有言語インタプリタ、ネットワーク通信ドライバ、デバイスとの物理レベルの相互作用)の多くはユーザ定義コードにアクセス可能でないことから、ユーザ定義コードは、エッジデバイス120をロックすることはできない。
一態様において、ネットワークリンクカード153は、エッジデバイス120の入力151および出力152が共通のデータ構造となるように、ネットワークリンクカード153を通じた多様な種類のセンサに対する共通のインターフェースのための仮想マシンランタイムを提供する仮想マシン154を含む。さらに、一態様において、エッジデバイス120は、包括的かつ代替可能であり、任意の適当なセンサ種(例えば、本明細書中において説明されるセンサ11−28)ならびに任意の適当な出力種に関連付けられ得る。エッジデバイス120は包括的かつ代替可能であることから、入力151および出力152から受信するデータは、独立タイプまたは不可知タイプであり、任意の特定のデータまたはセンサプロトコルに制限されることはない。一態様において、仮想マシン154は、システムのセキュリティおよび統合性に影響を与えることなくユーザがプログラム可能であるとともに、多様なセンサ種に結合されるエッジデバイス120からの感知データの判断形成、分析、および統合を促進するように構成される。一態様において、仮想マシン154は、ユーザ定義コードまたはスクリプトを実行してエッジデバイス120の機能をカスタマイズするように構成される。例えば、一態様において、温度計または熱電対に接続されたエッジデバイス120上の仮想マシン154は、センサ入力を電気信号として受信して電気信号を温度読取値に変換するようにエッジデバイス120をカスタマイズするユーザ定義コードまたはユーザプログラム可能コードを実行するように構成される。他のエッジデバイス120において、仮想マシン154は、例えば、自動化駐車システムのための有無センサ等、特定のエッジデバイス120をカスタマイズするユーザ定義コードに基づく異なる機能を有し得る。一態様において、仮想マシン154は、異なるデータ構造またはプロトコルを有する多様なセンサ種からデータを受信するにも関わらずエッジデバイス120と共通のゲートウェイ110とのインターフェース接続を促進するようにも構成される。一態様において、ネットワークリンクカード153は、暗号化された通信プロトコルを用いてゲートウェイ110と通信するように構成される通信モジュール155も有する。エッジデバイス120については、以下でより詳細に説明する。一態様において、エッジデバイス120の仮想マシン154は、エッジデバイス120レベルにおけるローカルロジック動作を提供するように構成される。例えば、仮想マシン154は、特定の所定センサ閾値、および特定の所定のセンサ閾値が満たされた場合に行われるアクションを定義するコードを実行し得る。
図2A、図2B、および図2Cをさらに参照すると、一態様において、エッジデバイス120はゲートウェイ110と通信可能である。一態様において、ゲートウェイ110は、デバイスアクタモジュール161と、通信モジュール162とを含み、通信モジュール162は、wifiモジュール165、イーサネットモジュール164、およびモバイルモジュール163により、エッジデバイス120の通信モジュール155ならびにプラットフォームエンジン101と通信するように構成される。他の態様において、ゲートウェイモジュール110は、エッジデバイス120およびプラットフォームエンジン101と通信するように構成される任意の通信モジュールを有する。一態様において、ゲートウェイ110は、ネットワークリンクカード166を有する。ネットワークリンクカード166は、エッジデバイス120のネットワークリンクカード153によって定義されるセキュアされたシステムスペースと実質的に同様の補完的なセキュアされたシステムスペースを定義する。一態様において、ネットワークリンクカード166によって定義されるセキュアされたシステムスペースは、例えば、ゲートウェイ110とネットワーク内の他のデバイス(例えば、ネットワーク稼働コントローラ101およびエッジデバイス120)との間のネットワーク通信を制御するように構成される。さらに他の態様において、ネットワークリンクカード166によって定義されるセキュアされたシステムスペースはまた、物理層上の他の低レベルハードウェア制御も制御する。一態様において、ネットワークリンクカード166によって定義されるセキュアされたシステムスペースは、エンドユーザにはアクセス不能であって見えず、エンドユーザによる改ざんを防止するように構成される。一態様において、セキュアされたシステムスペースは、ユーザ定義コードがゲートウェイ110の性能をロックするか、またはこれに影響を与えないように構成される。一態様において、ネットワークリンクカード166はさらに、それぞれのエッジデバイス120の仮想マシン154に対応するネットワークリンクカード166内に内在する補完的仮想マシン160を有する。また、一態様において、仮想マシン160は、プログラム可能であり、以下でより詳細に説明するように、ゲートウェイレベルで多様なセンサ種に結合されるエッジデバイス120からの感知データの判断形成、分析、および統合を容易にするように構成される。ゲートウェイ110については、以下でより詳細に説明する。
図2A、図2B、および図2Cを参照すると、一態様において、ゲートウェイ110はプラットフォームエンジン101と通信可能である。一態様において、プラットフォームエンジンは、概して、プラットフォームエンジンネットワークリンクカード180と、ゲートウェイ110と通信するように構成される通信モジュール173と、例えばエッジデバイス120から受信したデータ等のデータを記憶するように構成される分散型ストレージ171と、ドメイン固有言語(DSL)モジュール182およびプラットフォームエンジン101の動作を制御するように動作可能なプラットフォームエンジン仮想マシン181を含むプラットフォームエンジンロジカル層モジュール172とを有する。一態様において、ネットワーク稼働コントローラのネットワークリンクカード180は、ネットワーク通信および/または低レベルハードウェア通信(例えば、デバイスまたはドライバレベルにおける)を制御するように構成される。一態様において、プラットフォームエンジン仮想マシン181は、エッジデバイス120の仮想マシン154およびゲートウェイ110の仮想マシン160に対して補完的である。一態様において、仮想マシン181は、以下でさらに詳細に説明するように、ユーザ定義コードまたはユーザプログラム可能コードを受信および実行するように構成される。また、一態様において、プラットフォームエンジンは、分析モジュール174Aならびにビジネスメタデータマネージャモジュール174Bを用いたマシン学習およびビッグデータ分析のために構成される洞察モジュール174と、第三者データ統合を用いてローカルデータを統合するように構成される法人用データ統合モジュール175とを含む。また、一態様において、プラットフォームエンジン101は、アプリケーションプログラミングインターフェースモジュール175ならびにダッシュボードビルダ179と、アプリケーションフレームワーク178と、ユーザインターフェースモジュール177とを含む。一態様において、プラットフォームエンジン101はさらに、例えば、ビジネスアプリケーション130、消費者アプリケーション131、および地方自治体アプリケーション132を含み得る、周辺デバイス130−132と通信するように構成される。
一態様において、インターネット・オブ・シングス(IoT)ネットワークシステム100Sは、管理モジュール190を有する。一態様において、管理モジュール190は、エッジデバイス120、ゲートウェイ110、プラットフォームエンジン101、または周辺デバイス130−132を提供するか、または導入するように構成される。他の態様において、管理モジュール190は、適切なサービスの品質を確保するために、エッジデバイス120、ゲートウェイ110、プラットフォームエンジン101、または周辺デバイス130−132の間の通信および同期を統合するように構成される。さらに他の態様において、管理モジュール190は、セキュリティを提供する、またはシステムへの認可されていないアクセスまたは侵入を検出するように構成される。他の態様において、提供は、例えば、ネットワーク稼働コントローラ101等、インターネット・オブ・シングス(IoT)プラットフォームシステム100の他の部位によって行われ得る。
ここで、図2Cおよび図2Dを参照すると、一態様において、仮想マシン154、160、181は、顧客ハードウェアのための、およびデバイスレベルでセンサまたはハードウェアデータを処理するための共通のユーザカスタマイズ可能なインターフェースを提供するように構成される。例えば、図2Dに見られるように、エッジデバイス120A−120Dおよび121A−121Cは、様々なセンサ入力151A−151Dおよび様々な出力152A−152Dとインターフェース接続するように構成される。様々なセンサ入力151A−151Dの各々は、異なるか、または異なる特性を有し得る。例えば、センサ入力151Aは温度センサであり得て、入力デバイス151Bは湿度センサであり得て、別のセンサ入力151C−Dは、他の環境要素を検出するように構成される(例えば、センサ11−28)。同様に、エッジデバイス120A−Dおよび121A−Cはまた、無数の出力デバイス152A−152Dと通信し得る。これらの出力デバイスは、例えば、加湿器、サーモスタット、または作用を生じる他のデバイスを含み得る。インターネット・オブ・シングス(IoT)プラットフォームシステム100がすべての考えられる入力デバイス151および出力デバイス152に対するサポートを提供することは難しい。また、インターネット・オブ・シングス(IoT)プラットフォームシステム100の製造者が、そのように多くの異なる潜在的な入力デバイス151および出力デバイス152と通信するためにソフトウェアを検討することも難しい。エッジデバイス120A−Dおよび121A−Cが様々な入力デバイス151A−Dおよび無数の出力デバイス152A−Dと通信するために、エッジデバイス120A−Dおよび121A−Cは各々、各入力デバイス151A−Dおよび出力デバイス152A−Dとインターフェース接続するためのユーザカスタマイズ可能コードを実行する仮想マシン154(例えば、上記のユーザ構成可能スペース)を有する。一態様において、ユーザカスタマイズ可能コードはさらに、多様なセンサまたは出力デバイスとインターフェース接続する以上の他の機能を有する。一態様において、ユーザカスタマイズ可能コードは、状況メッセージを介してセンサ入力を報告し得る。さらに他の態様において、ユーザカスタマイズ可能コードは、状況メッセージを送信するために、入力値に基づく単純な状況判断を含み得る。これは、例えば、閾値または状態の変化に基づいて報告を行うために使用され得る。
ここで、図2Eを参照すると、エッジデバイス120の図が示される。一態様において、エッジデバイス120は、仮想マシン154と、ネットワークリンクカード153とを含む。一態様において、ネットワークリンクカード153はさらに、ドメイン固有言語(DSL)インタプリタ156と、カーネル157と、ブートローダ158とを含む。一態様において、ネットワークリンクカード153、ならびにそのそれぞれのDSLインタプリタ156、カーネル157、およびブートローダ158は、エンドユーザがアクセス可能でないセキュアされたシステムスペースの一部である。DSLインタプリタ156は、ドメイン固有言語、すなわち、単純化されたスクリプト言語(例えば、仮想マシン154内においてユーザ定義コードを提供するために使用されるスクリプト言語)を解釈するように構成される。一態様において、DSLインタプリタ156は、単純化されたDSL構文を強要するように軽く、低電力および限定された処理能力で動作する様々な種類のハードウェア上で実行され得る。カーネル157およびブートローダ158は、エッジデバイス120の動作を制御するネットワークリンクカード153の一部である。例えば、ブートローダ158は、エッジデバイス120が起動される際にカーネル157を呼び出す役割を有する。また、カーネル157は、例えば、ネットワークを介した通信またはデバイスとの低レベル通信(例えば、デバイスから未処理の信号を受信する)等の低レベル機能のための役割を有する。ネットワークリンクカード153のカーネル157、ブートローダ158、およびDSLインタプリタ156は、エンドユーザがアクセス不能であり、変更することはできない。ネットワークリンクカード153内のセキュアされたシステムスペースおよびその構成要素を隔離することにより、エンドユーザは、ユーザ定義コードまたはユーザプログラム可能コードのバグによるエッジデバイス120のロックが防止される。ネットワークリンクカード153のセキュアされたシステムスペースを隔離することにより、さらに、エンドユーザのユーザ定義コードがネットワーク全体を悪用することが防止される。一態様において、ネットワークリンクカード153およびカーネル157は、デバイス層250および物理層260上でデバイスまたはネットワークと通信するように構成される(例えば、ビットレベル通信における低レベル通信)。一態様において、デバイス層250および物理層260は、セキュアされたシステムスペースの一部でもあり、エンドユーザは、アプリケーション層と、デバイス層250と、物理層260との間のAPIに対する変更が防止される。
一態様において、仮想マシン154は、ネットワークリンクカード153上で実行されるコンピュータランタイムのエミュレートされたインスタンスである。上述のように、仮想マシン154は、様々な入力デバイス151A−Dおよび様々な出力デバイス152A−Dとインターフェース接続するようにカスタマイズされた、ユーザ定義コードを実行するユーザ構成可能スペースである。一態様において、仮想マシン154は、仮想マシン154が多様なセンサ入力151(例えば、センサ入力151A−D)に対してカスタマイズできるように、ユーザ定義コードを受信し、これを実行する。例えば、仮想マシン154およびエッジデバイス120は、多様なセンサ種をネットワークにインターフェース接続することを可能とする包括モジュールとして機能する。一態様において、仮想マシン154によって実行されるユーザ定義コードも、エッジデバイス120レベルにおいてエッジデバイスがローカル処理を行うことを可能とする。例えば、一態様において、仮想マシン154によって実行されるユーザ定義コードは、状況処理を可能とする。例えば、温度計に接続されるエッジデバイス120は、温度計の温度読取値を受信し、さらに温度読取値を処理して温度が所定の閾値に達しているかを判定するユーザ定義コードを有し得る。所定の閾値となった場合、仮想マシン154上で実行されるユーザ定義コードは、警告を送信、またはユーザによって定義されたアクションを行い得る。
一態様において、仮想マシン154は、ドメイン固有言語インタプリタ156によって解釈されるドメイン固有言語の形態でユーザ定義コードを受信し得る。一態様において、ドメイン固有言語は、アセンブリなどの単純化された低レベル言語であり、被演算子および演算子等のアセンブリ言語と同様の構文特性を有する。さらに他の態様において、ドメイン固有言語は、Lua、Ruby、Python、またはPerlと同様のスクリプト言語またはインタプリト型言語であり得る。さらに他の態様において、ドメイン固有言語は、単純化され、被演算子および演算子の限定されたセットを有する任意の適当なスクリプト言語であり得る。一態様において、仮想マシン154は、仮想マシン154のハードウェアおよびソフトウェアのプログラミングを容易にし、エッジデバイス120またはインターネット・オブ・シングス(IoT)プラットフォームシステム100の制御および利用を単純化するように、視覚的ユーザインターフェース、例えば、顧客のためのウェブベースのツールを介してユーザ定義コードを受信し得る。
図3を参照すると、エッジデバイス120の物理アーキテクチャの例示的な概略図が示される。一態様において、エッジデバイス120は、任意の適当なハウジング401を含み得る。ハウジング401は、一態様において、例えば、露出した環境、街路または道路面内、廃棄物コンテナ内、ガス本管内、下水道内、水道本管内、駐車場内、水域内、建物内、土壌中、街灯柱内、塔内、公害を発生する建物または機械内、倉庫内、雨水管および貯蔵部内、または原子力的、生物的、化学的施設内(例えば、図1においてセンサ11−28について示される)を含む任意の場所にエッジデバイス120が設置されるか、または埋設され得るように、任意の適当な形状を有し得て、任意の材料からなり得る。他の態様において、ハウジング401は、それぞれの駐車スペースの車両を感知するための任意の適当な場所において地上に配置されるよう構成され得る。ハウジング401は、暗号ユニット(MCU)402を有するマイクロプロセッサ、メモリ403(本明細書中において説明されるように、ネットワークリンクカード153およびロジック層154を通じてエッジデバイス120の動作に関する態様を有効とするプロセッサ402に対して適切に構成される)、エッジデバイス電力システム、システムクロック406、エッジデバイス電力システム、エッジデバイス電力システム通信システム、および、例えば、本明細書中において引用により援用される米国特許出願第14/495676号明細書からのエッジデバイス制御インターフェースモジュールのスイート等の任意の適当なセンサモジュール414等の感知デバイス400の構成要素を収容するように構成され得る。
一態様において、エッジデバイス電力システムは、プロセッサ402に接続された電力供給管理ユニット404を有し得る。任意の適当な蓄電ユニット405が、感知デバイス400の構成要素に電力を供給するための電力供給管理ユニット404に接続され得る。電力供給管理ユニット404は、プロセッサ402の制御下等の任意の適当な態様で蓄電ユニット405からの電力を調整および分配するように構成され得る。センサ通信システムは、プロセッサ402および関連するアンテナ408に接続される通信モジュール155(任意の適当な無線周波数通信モジュールであり得る)を有し得る。アンテナ408は、一態様における全方向性アンテナや他の態様における指向性アンテナ等の任意の適当なアンテナであり得る。アンテナ408が指向性アンテナである場合、受信または送信される通信の信号強度がゲートウェイ110(図2Aおよび図2B)に関して記載した態様と実質的に同様の態様で最大化されるように、適当なモータまたは他の固体(solid state)または機械的駆動ユニットが、アンテナを旋回または回転させるために設けられ得る。一態様において、センサモジュール414は、天候センサ11、公共安全センサ12、廃棄物管理センサ13、ガス漏洩センサ14、下水道監視センサ15、水漏洩センサ16、駐車アクセスセンサ17、スマート駐車センサ18、水質センサ19、構造的健全性センサ20、土壌水分センサ21、電子放射センサ22、スマート照明センサ23、街路安全センサ24、空気質センサ25、アイテム位置センサ26、水位センサ27、または公共衛生センサ28を含むがこれらに限定されない任意の適当なセンサであり得る。一態様において、センサモジュール414は、任意の適当な態様でプロセッサ402に接続され得て、任意の感知特性を感知するように構成され得る。認識されるように、センサモジュール414のプロセッサ402との通信を可能とするために、任意の適当な付随的な回路が設けられ得る。
ここで図3Aを参照すると、エッジデバイス120の代替的な態様が示される。図3Aにおいて、MCU402は、通信モジュール155に接続される(無線周波数(RF)受信器/送信器の形態で)。MCU402はさらに、ネットワークを介した通信を提供するMACアドレス420に接続される。一態様において、図示されていないが、MACアドレス420は、通信モジュール155の一部であり、通信モジュール155を介したネットワーク通信を可能にする。一態様において、MCU402はさらに、エッジデバイス120に電力を供給する電源404に接続される。MCU402はさらに、MCU402から出力デバイス152への信号をレベルシフトする出力レベルシフタ414Aに接続される。また、MCU402は、さらに入力151に接続される入力レベルシフタ414Bにも接続される。
図1A、図2A、および図2Bを再び参照すると、前述のように、一態様において、エッジデバイス120は、多様な種類のセンサ入力151を提供する多様な異なるセンサ(例えば、本明細書中において説明されるセンサ11−28)に結合されるか、または一体化されるように構成される、マイクロコントローラ、チップ、またはプリント回路基板(PCB)である。一態様において、エッジデバイス120は、例えば、ディスプレイ、スイッチ、または他のコントローラに出力152を提供するようにも構成される。一態様において、エッジデバイス120に結合された多様なセンサ(例えば、センサ11−28)は、電力消費を制限するために、低電力センサとして構成される。一態様において、エッジデバイス120のエッジデバイス仮想マシン154は、プログラミングのためのソフトウェアを構成し、多様なセンサ11−28(上記のような)から感知データを受信し、多様なセンサ11−28からの感知データを分析し、および統合し、既定のまたはユーザによってプログラムされたロジック層154内の規則または命令に基づいて、多様なセンサ11−28からの感知データに基づくローカルでの(例えば、エッジデバイス120レベル)判定を行うようにエッジデバイス120を構成するための、共通プラットフォームおよびプログラム可能なインターフェースとして構成される。前述のように、一態様において、エッジデバイス120は、実質的に代替可能であり、任意の適当なセンサに接続されるよう構成される。
図4を参照すると、一局面において、エッジデバイスネットワークリンクカード153の取り得る状態が、有限状態機械図として示される。一局面において、エッジデバイスネットワークリンクカード153は、初期化状態420で初期化される。ネットワークリンクカード153が初期化された後、ネットワークリンクカード153は、RFメッセージ430(例えば、ゲートウェイ110もしくはプラットフォームエンジン101から受信したRFメッセージ)の処理、ハードウェア割り込み440(例えば、多様なセンサ11−28のうちの1つからのハードウェア割り込み)の処理、およびロジック層450(例えば、ロジック層154内に記憶された既定のプログラムもしくはユーザがプログラミングしたプログラムを実行する)の循環の間で切り替わる実行状態に入る。他の局面において、ネットワークリンクカード153は、ロジック層450の循環、ハードウェア割り込み440の処理、およびRFメッセージ430の処理の状態間にスリープモード460となってバッテリ寿命を温存、または電力消費を減少させるようにも構成される。
図1A、図2A、および図2Bを再び参照すると、一局面において、前述のように、エッジデバイス仮想マシン154hは、既定およびユーザがプログラミングしたビジネスロジックおよび学習した行動を含む、多様なセンサ(例えば、センサ11−28)のためのユーザがプログラム可能なインターフェースである。一局面において、エッジデバイス仮想マシン154は、データの受信(例えば、多様なセンサ11−28から)、データ収集の処理(例えば、入力151を介して多様なセンサ11−28から)、データの記憶(例えば、多様なセンサ11−28から収集)、およびデータの伝達(例えば、ゲートウェイ110もしくはプラットフォームエンジン101)を提供するように構成される。一局面において、エッジデバイス仮想マシン154は、ゲートウェイ110もしくはプラットフォームエンジン101から受信したRFメッセージの処理(例えば、ネットワークリンクカード153のRFメッセージ430処理の状態)、または入力151(例えば、多様なセンサ11−28から)からのハードウェア割り込みの処理(例えば、ハードウェア割り込み状態440)も提供する。
一局面において、エッジデバイス仮想マシン154は、エッジデバイス120内に内在するローカルエッジデバイス仮想マシン154からの特定のセンサ入力のタイプ、論理的ローカル解析、および分解を提供する規則ベースの解決システムとなるように構成される。エッジデバイス仮想マシン154によってもたらされる規則ベースの解決システムは、上記のドメイン固有言語(DSL)を通じて、またはDSLモジュール156によってインタプリトもしくはコンパイルされた任意のインタプリトもしくはコンパイルされた言語を通じて提供される。一局面において、エッジデバイス仮想マシン154によって提供される規則ベースの解決システムは、出力152を介してローカル出力を生成するようにも構成される(例えば、センサが所定の閾値を超えると、エッジデバイス仮想マシン154は出力152を介してアラーム命令を開始するように構成される)。一局面において、出力152は、例えば、ゲートウェイ110およびプラットフォームエンジン101を含む、インターネット・オブ・シングス(IoT)プラットフォームシステム100アーキテクチャの他の部分に伝達され得る。一局面において、エッジデバイス仮想マシン154は、エッジデバイス120上での出力152のローカル変化を有効にすることによって、入力151からの入力変化(例えば、多様なセンサ11−28からの)に対してエッジデバイス120が反応できるようにする。例えば、一局面において、エッジデバイス120が、所定の閾値(ロジック層154によって定められる)を超える温度測定値を温度センサから受信した場合、エッジデバイス120は、ゲートウェイ110もしくはプラットフォームエンジン101に対して温度を通信する必要なくしてローカルで出力152を介してアラーム命令を出力することができる。一局面において、エッジデバイスのためのエッジデバイス仮想マシン154のローカル処理能力は、ネットワークのエッジにおける(例えば、エッジデバイス120における)最適なセンサ解析および決定を有効にする。一局面において、エッジデバイス仮想マシン154は、ローカル解析を識別し、または定義するために、多様であるが関連するセンサデータのセンサデータ解析または融合も有効とする。例えば、エッジデバイス120は、漏洩検知センサおよび金属検知センサからデータを受信し、水道本管の破損箇所の近傍に自動車の交通があるかどうかを判定し得る。さらに他の局面において、エッジデバイス仮想マシン154は、アラームを警察署、水道局、もしくは施設水道施設に対して送信して水道本管の破損について関連する者に警告するなど、ローカルアクションを開始および有効化するようにも構成される。
図5を参照すると、ゲートウェイ110の各々は、任意の形状および大きさを有する任意のハウジング299を有し得る。一局面において、ハウジングは、耐候性であり、UV(紫外)線に対して抵抗を有し得る。ハウジング299は、一態様では、無線周波数がハウジングを通過することを可能にするように、任意の適切な材料で構成され得る。各ゲートウェイ110A−110C(概して、ゲートウェイ110という)は、それぞれのハウジング内に、プロセッサモジュール200(本明細書において説明されるように、任意のメモリと適したプログラミングを有し得て、ゲートウェイの機能を実行するように構成され得る)と、GPSモジュール201と、クロックモジュール204と、蓄電コントローラ205と、電源モジュール202と、任意の適切な数の通信モジュール203および208とを有し得る。一局面において、ゲートウェイ110は、全体が引用により援用される、2014年11月20日に公開された米国特許出願公開第2014/0340240号明細書および2014年11月20日に公開された米国特許出願公開第2014/0340243号明細書に開示されるゲートウェイと実質的に同様である。一局面において、ゲートウェイ110は、一局面においてゲートウェイ110のプロセッサモジュール200上に内在するゲートウェイ仮想マシン160を有するゲートウェイネットワークリンクカード166も有する。一局面において、ゲートウェイ仮想マシン160は、ゲートウェイネットワークリンクカード166のセキュアされたシステムスペースから隔離されたユーザ定義コードによって定義される。一局面において、ゲートウェイ仮想マシン160は、エッジデバイス120からセンサデータを受信し、エッジデバイス120A−C、121A−C、および122A−Cの群からの解析を提供するコードを有するように構成される。一局面において、ゲートウェイ仮想マシン160は、エッジデバイス120のエッジデバイス仮想マシン154に対応する。一局面において、ゲートウェイ仮想マシン160は、ゲートウェイ110レベルでローカルにセンサデータの整理、解析、および統合を提供するように構成される。一局面において、ゲートウェイ110は、全体が引用により援用される、2012年9月25日に発行された米国特許第8274403号明細書に開示のフォールトトレランスのためのクロスゲートウェイフェイルオーバ(図6参照)を提供するようにも構成される。
GPSモジュール201は、プロセッサモジュール200に対して動作可能に接続され得て、1つまたは複数のGPS衛星と通信するための任意の適当なアンテナ209を有し得る。GPSモジュール201は、場所/位置データ、日付データ、および時間データを含むがこれらに限定されない任意の適当なデータをプロセッサモジュールに提供するように構成され得る。クロックモジュール204は、プロセッサモジュール200に対して動作可能に接続され得て、プロセッサモジュール200に対して、GPSモジュール201から得られた日付データおよび/または時間データを用いてプロセッサモジュール200によって周期的に(もしくは、任意の適当な回数)更新され得る時間データを提供し得る。
蓄電コントローラ205は、プロセッサモジュール200に対して動作可能に接続され得る。1つまたは複数のソーラーパネル207が、ハウジング299に対して配置され得て、遠隔に設けられ得て、または接続され得る。一局面において、1つまたは複数のソーラーパネル207は移動可能であり、1つまたは複数の蓄電ユニット206の再蓄電サイクルを最適化するために、例えば最高の光源等、1つまたは複数の利用可能な光源を追跡する任意の適当な態様で構成され得る。ここで、1つまたは複数のソーラーパネルは、1つまたは複数のソーラーパネルの光追跡動作を有効化するための任意の適当なモータと光センサとを有し得る。認識されるように、モータおよび光センサは、光追跡動作を有効化するために必要な計算および制御のためのプロセッサモジュール200に接続され得る。他の局面において、ソーラーパネル207は、光追跡動作を有効化するために必要な計算を行うプロセッサを有し得る。ソーラーパネル207は、1つまたは複数の再蓄電可能な蓄電ユニット206を蓄電するための蓄電コントローラ205に対して動作可能に接続され得る。一局面において、ゲートウェイ110は、実質的に光のある状況(例えば、日中)に1つまたは複数のソーラーパネル207によって提供される電力、および実質的に光のないもしくは少ない状況(例えば、夜間、夕暮れ、夜明け等)に1つまたは複数の再蓄電可能な蓄電ユニット206によって提供される電力で動作するように構成され得る。他の局面において、ゲートウェイ110は、1つまたは複数のソーラーパネル207および1つまたは複数の蓄電ユニット206の合成出力によって提供される電力で動作するように構成され得る。さらにまた他の局面において、ゲートウェイは、公共設備等からのハードラインを用いて電源供給され得て、公共設備からの電力をゲートウェイで使用可能な電力へ変換するための適した電子機器を有し得る。
電源202は、ゲートウェイ110の稼働のための1つまたは複数の蓄電ユニット206および/またはソーラーパネル207からの電力を提供して管理するために、プロセッサユニット200および1つまたは複数の蓄電ユニット206に対して動作可能に接続され得る。一局面において、電源モジュール202は、1つまたは複数の蓄電ユニット206の蓄電状態をプロセッサモジュール200に提供し得る。プロセッサモジュール200は、例えば、蓄電状態が所定の閾値に到達した時または他の任意の適当な時間において、1つまたは複数の蓄電ユニット206を蓄電するために1つまたは複数のソーラーパネル207から1つまたは複数の蓄電ユニット206へ電力が提供されるように、蓄電コントローラ205の稼働を有効化するように構成され得る。電源モジュール202は、例えば、1つまたは複数の蓄電ユニット206の蓄電周期を監視する予測メンテナンスも提供し得る。プロセッサモジュール200は、例えば、1つまたは複数のソーラーパネル207の電圧/電流曲線および/または1つまたは複数の蓄電ユニット206の蓄電周期等の電源モジュール202からのデータを用いて1つまたは複数の蓄電ユニット206の寿命を判定もしくは予測するように構成され得る。プロセッサモジュール200は、メッセージ(1つまたは複数の蓄電ユニット206の状態/寿命を含む)メッセージを、インターネット・オブ・シングス(IoT)プラットフォームシステム100の任意の適当なオペレータ/メンテナンス人員への通信のためにゲートウェイ110から中央コントローラ101に送信させ得る。
一局面において、ゲートウェイ110は、2つの通信モジュール203および208を有し得る。通信モジュール203のうちの1つは、例えば、モバイル、衛星、または他の長範囲もしくは短範囲の通信プロトコル等の任意の適当な無線プロトコルを通じたそれぞれのエッジデバイス120A−120C、121A−121C、および122A−122Cとの通信のために構成された「ローカル」通信モジュールであり得る。通信モジュール208のうちの他方は、例えば、以下でより詳細に説明するアンテナ211を用いて1つまたは複数の通信機器140と通信するように構成される「遠方」通信モジュールであり得る。他の局面においては、エッジデバイス120A−120C、121A−121C、122A−122C、および1つまたは複数の通信機器140と通信するために単一の通信機器が使用され得る。一局面において、任意の適当なアンテナ210が、エッジデバイス120A−120C、121A−121C、および122A−122Cとの任意の適当な無線周波数通信を可能とするために通信モジュール203に接続され得る。アンテナ210は、ハウジング299内に配置され得る、ハウジング299に取り付けられ得るか、またはハウジング299から遠隔に配置され得る。
プラットフォームエンジン101は、コンピュータ化されたデータフローシステムである。一局面において、プラットフォームエンジン101は、プラットフォームエンジンロジック層モジュール172と、洞察モジュール174と、法人用データ統合モジュール175と、分散型ストレージモジュール171と、通信インターフェースモジュール173とを有するプラットフォームエンジンネットワークリンクカード180を有する。一局面において、プラットフォームエンジン101はさらに、プラットフォームエンジンロジック層モジュール172内で実行されるプラットフォームエンジン仮想マシン181を有する。また、一局面において、プラットフォームエンジン101は、アプリケーションプログラミングインターフェースモジュール176と、ダッシュボードビルダ179と、アプリケーションフレームワーク178と、ユーザインターフェースモジュール177とを有する。
一局面において、プラットフォームエンジン101のプラットフォームエンジンファームウェア180は、セキュアされたシステムスペースである。ゲートウェイネットワークリンクカード166およびエッジデバイスネットワークリンクカード153と同様に、セキュアされたシステムスペースは、エンドユーザがアクセス不能なプラットフォームエンジン101の稼働を制御するように構成される。例えば、一局面において、プラットフォームエンジンネットワークリンクカード180は、ゲートウェイ110およびエッジデバイス156とのネットワーク通信を制御する通信インターフェース173を有する。通信インターフェース173へのユーザアクセスを防止することにより、プラットフォームエンジン101は、プラットフォームエンジン101の稼働に対して悪影響を及ぼし得る改ざん、ハッキング、およびユーザ定義コードの実行を受けにくくなる。また、一局面において、プラットフォームエンジンネットワークリンクカード180は、ビッグデータ分析もしくはマシン学習ならびにビジネスメタデータ管理のために構成される洞察モジュールを有する。また、一局面において、プラットフォームエンジンネットワークリンクカード180は、ロジック層モジュール172を有する。一局面において、ロジック層モジュール172は、ドメイン固有言語(DSL)モジュール182を有する。ドメイン固有言語は、一局面において、ユーザ定義コードもしくはユーザプログラム可能コードを定義するための単純化された言語である。例えば、ドメイン固有言語は、被演算子と演算子とを有する、単純化された低レベルのアセンブリ型言語であり得る。一局面において、DSLは、仮想マシン154、160、および181によって実行されるいくつかの低レベルの命令を含む低レベルのインタプリト型言語である。一局面において、仮想マシン154、160、および181はさらに、シミュレーション環境、ユースケース(use case)、およびDSL言語で記述された他のユーザ定義スクリプトをさらに有し得る。一局面において、仮想マシン154、160、および181の構成は、DSL言語で記述された構成ファイルをプラットフォームエンジン仮想マシン181にロードし、ゲートウェイ仮想マシン160およびエッジデバイス仮想マシン154に伝搬してこれらをカスタマイズすることによって行われ得る。他の局面において、ドメイン固有言語は、Ruby、Lua、Python、もしくはPerl等のインタプリト型言語と同様の高レベルのインタプリト型言語である。さらに他の局面において、ドメイン固有言語は、実行可能なバイナリプログラムへコンパイルされ得る。一局面において、DSLモジュール182は、ユーザ定義コードもしくはユーザプログラム可能コードを構文解析(parse)し、解釈し、またはコンパイルするように構成される。ユーザ定義コードもしくはユーザプログラム可能コードは、エッジデバイス120から受信した感知データに基づいて整理し、解析し、統合し、および決定を行うように構成される規則のプログラム可能なコード、またはプログラム可能なセットである。一局面において、DSLモジュール182によって解釈またはコンパイルされたユーザ定義コードまたはユーザプログラム可能コードは、ユーザ定義コードまたはユーザプログラム可能コードを実行するように構成される仮想マシンランタイムであるプラットフォームエンジン仮想マシン181において実行される。一局面において、プラットフォームエンジンロジック層モジュール172のユーザ定義規則は、実質的に、既定であってユーザプログラム可能である。一局面において、プラットフォームエンジン仮想マシン181は、ゲートウェイ110の補完的ゲートウェイ仮想マシン160およびエッジデバイス120のエッジデバイス仮想マシン154と実質的に同様であり、プラットフォームエンジン101レベルでのデータの整理、統合、解析、および処理を提供する。プラットフォームエンジン仮想マシン181の規則は、データをどのように扱うかを決定する。規則の第1のステップは、適用可能なデータ要素へ受信されるデータストリームを構文解析し、適切なデータベースまたは管理システムへ転送することである。規則は、受信されたデータストリームが構文解析される各データストリームマーカについて定義される。また、規則は、どのシステムがこれらの構文解析された要素を受信するか、および返信されるデータが予想されるかを決定する。その後、各データストリームは、特定のデータベースまたは管理システムに渡され、すべてのデータストリームの受信を確認する。各要素との通信は、履歴追跡および内部診断報告のために別個のデータベースにログとして記憶される。定義されたサポートシステムからの応答が期待されると規則が指令する場合、プラットフォームエンジン101は、その変身されるデータストリームを待ち、ローカルに記憶する。構文解析されたデータストリームの各々がひとたび処理されると、戻りデータストリームが、コンパイルされ、ゲートウェイ110、エッジデバイス120、または周辺デバイス130−132との通信のための通信インターフェースモジュール173に渡される。
通信インターフェースモジュール173は、一局面において、複数の物理的接続に接続されて複数のプロトコルを使用する、マルチファセットシェルである。また、通信インターフェースモジュール173は、一局面において、該当する場合にウェブブラウザまたは携帯アプリケーションでの表示のためのインタラクティブ文書を生成するユーザインターフェースエンジン177に接続される。一局面において、通信インターフェースモジュール173は、モバイル、衛星、または他の長距離無線接続によって、エッジデバイス120、ゲートウェイ110、および周辺デバイス130−131への暗号化されたデータストリームの交換を提供する。通信インターフェースモジュール173は、経路選択テーブルを用いて、各デバイスとの通信時に使用される手段およびプロトコルの両方を追跡する。
データを伝送するために、通信インターフェースモジュール173は、送信されるデータと、それが送達されるデバイスアドレスとを受信する。定義された経路選択テーブルに基づき、通信の手段およびプロトコルが判定され、ペイロードデータが送達のためにフォーマットされる。情報の送達は、1つの個別のデバイスまたはデバイスのグループに向けられ得る。ひとたび受信されると、パケットが必要に応じて再配列され、受信側デバイスのロジックによって解釈される。データパケットのペイロードは、受信側デバイスに対し、どのようなアクションを取るか、および、どのパラメータを適用するかを伝える。
一局面において、図2Cに示されるように、エンドユーザは、ユーザ定義コードもしくはユーザプログラム可能コードをプラットフォームエンジン仮想マシン181に対して通信するプログラミング環境ツール280を通じて、ユーザ定義コードもしくはユーザプログラム可能コードを伝播することができる。一局面において、プログラミング環境ツール280は、単純化されたグラフィックインターフェースもしくはポイント・クリックインターフェースを通じてユーザが命令のスクリプトを単純化できるグラフィックプログラミングモジュール281を有し得る。他の局面において、プログラミング環境ツール280はさらに、ユーザがテキストもしくはテキストファイルを入力することでユーザ定義コードもしくはユーザプログラム可能コードをカスタマイズすることができるテキストプログラミング環境282を有し得る。一局面において、テキストプログラミング環境282は、DSLパーサであり、DSLでのスクリプトの入力を受け付ける。他の局面において、テキストプログラミング環境282は、任意の適当なプログラミング言語を構文解析し、それをDSLの単純化されたシンタックスに解釈するように構成される。一局面において、これは、C、Python、Lua、Perl、およびRuby等の高レベルおよび低レベルの言語の両方を含み得る。一局面において、ユーザ定義コードもしくはユーザプログラム可能コードは、プログラミング環境ツール280からプラットフォームエンジン仮想マシン181へ渡される。そして、プログラミング環境ツール280からプラットフォームエンジン仮想マシン181へ渡されたユーザ定義コードもしくはユーザプログラム可能コードは、エッジデバイス120の仮想マシン154およびゲートウェイ110の仮想マシン160へ渡され、仮想マシン154および160の動作がさらにカスタマイズされ得る。
アプリケーションプログラミングインターフェースモジュール
コンピュータもしくは携帯アプリケーションおよび第三者のユーザをプラットフォームエンジン101にアクセスさせるために、プラットフォームエンジン101は、アプリケーションプログラミングインターフェースも有し、アプリケーションプログラミングインターフェースは、インターネット接続を介してユーザによってアクセスされ得るソフトウェアおよびアプリケーションを構築するための、またはアプリケーションデータを表示するための、サブルーティンの定義、プロトコル、およびツールのセットを提供するように構成される。本発明は、いくつかの異なる種類のインターフェースを有する。
地理的情報システム
図7から図11は、例えば、ユーザインターフェースモジュール177(ウェブブラウザ)上または周辺デバイス130−132のディスプレイ(例えば、アプリケーションプログラミングインターフェースモジュール176にアクセスする携帯アプリ)上に表される地理的情報システムユーザインターフェースの基本的なフォーマットを示す。インターフェースは、多くのビューおよびフィルタリングレベルを有する。図7は、実行状態に注目したビューである。選択制御(11−1)により、ユーザは、特定の状態に応じてビューをフィルタリングすることができる。この場合、ビューは、例えば、駐車コンテキスト内における空いた駐車スペース等の特定のデータのみを示すようにフィルタリングされる。他の局面において、ビューは、エッジデバイス120および多様なセンサ11−28のうちのいずれかからの任意の適当なデータを有し得て、天候、公共安全、廃棄物管理、ガス漏洩、下水道感知、水漏洩、駐車感知、スマート駐車感知、水質、構造的健全性、土壌水分、電磁放射、スマート照明、安全、および/または街路感知、空気質、アイテム追跡および位置、水位、公共衛生の危険、または多様なセンサ11−28に対する上記の任意の適当な所定の感知特徴を含む任意の適当なコンテキストを表示し得る。これらは、地図上にアイコン(11−2)によって示される。
図8は、図7と同じビューを示すが、図8においては、ユーザがアイコンの1つをクリックしたものである。これが行われると、バルーンもしくはウィンドウ(12−1)が開き、アイコンによって示されるスペースに関するさらなる詳細が提供される。
図9は、図7および図8と同様であるが、フィルタが拡張され、空いたスペースおよびメータ違反が失効したものが示される。
詳細バルーン(13−1)は、スペースおよびそこで生じた違反の両方についての情報を与える。図10は、スペースのユーザ定義グループ分けを表すGISのビューである。この場合、スペースにおいて有効な実行ポリシーに基づいてユーザによってグループが定義される。選択されたポリシーは、着色した線(14−1)もしくは他の視覚的手段によって示される。
これらのグループ分けは、レポートの実行、ポリシーの変更、またはスペースの管理に使用され得る。図11は、メータの地理的選択を示す。ユーザは、異なる地理のタイプを定義することができる。このようなタイプは、政治的(議会地区)もしくは機能的(実行ゾーン)によって分けられ得る。図10におけるグループ分けのように、これらの選択(15−1)は、レポートの生成、ポリシーの変更、またはその地理内のスペースの管理に使用され得る。
タイプは、ユーザがマウスを用いて、または公共におけるリストからスペースを選択することで1つまたは複数のスペースを選択することによって開始される。ひとたび選択されると、ユーザは、インターフェース画面の上部のメニューバーを通じて、または既定のマウスクリックの組合せで利用可能なコンテキストメニューによって、既定のアクションを開始することができる。リクエストの詳細を定義するために、ユーザによって一連のパラメータが入力され得る。全リクエストは、プラットフォームエンジン101のロジック中心に渡され、ここで、何のデータ要素が収集されるか、どのように照合されるか、およびどのデバイスに通信されるかについて既定の規則によって司令される。
同様に、地図画像上のアイコンは、現在の状態についての情報を表示するために使用され得る。この情報は、表示をリフレッシュするためのユーザの手動リクエストによって、または表示の自動リフレッシュによって更新される。いずれの場合においても、プラットフォームエンジン101は、現在の情報を含むデータベースから遠隔のアセットおよび人員の現在の場所および状態に関する情報を検索し、変化を反映するために表示画像を更新する。
テキストレポート
多くの場合、ユーザ(周辺デバイス130−132を使用)によって必要とされる情報は、本質的に統計的な情報である。これらのリクエストに対処するために、本開示は、一局面において、ユーザが例えば、アプリケーションプログラミングインターフェースモジュール176を通じて利用可能であり、周辺デバイス130−132上のアプリケーションを介してアクセス可能なテキストレポートを含む。レポートは、日付の範囲、グループもしくは個別のスペースの選択、統計のタイプ、ならびに、例えば、特定の時間において設備におけるいくつのメータが動作していない、および他と比較されるデータのサブセクション等の含まれる情報を特定する入力画面によって実行される。レポートは、ユーザによって要求される統計に対してコンテキストとして適切なレポート、表、またはチャートの形態を取り得る。
グラフィックレポート
テキストレポートに加えて、グラフは、相互に関連する統計の傾向、比較、および分析について迅速かつ簡潔に理解できる統計の視覚的表示を提供する。
テキストレポートと同様に、グラフィックレポートは、日付範囲、含まれるグループもしくは個別のスペース、およびグラフ化される統計を制御するユーザ入力画面によって指示されることで(アプリケーションプログラミングインターフェースモジュール176へのアクセスを通じて周辺デバイス130−132上に)表示される。また、ユーザは、利用可能なグラフのタイプのリストから、使用されるグラフのタイプを選択する。該当する場合、ユーザは、1つの統計を他の統計に重ねることによって統計を比較することができる。グラフ選択インターフェースは、結果を別個の軸上に表示するかについて特定するオプションをユーザに与える。これは、パーセントで測定された遵守レベル(compliance levels)に対してドルで収益を比較するなど、異なる測定の単位を用いて統計を比較する際に有用である。
電子看板
インターネット・オブ・シングス(IoT)プラットフォームシステム100は、スペース監視および測定機器、状態メータ、または温度読み出し情報等の遠隔のユニットのための電子ディスプレイを有する。一局面において、電子ディスプレイは、アプリケーションプログラミングインターフェースモジュール176を介してプラットフォームエンジン101にアクセスするように構成される周辺デバイス130−132である。このようなディスプレイ(例えば、図7から図11に示されるディスプレイ)は、現在の料金およびポリシーを公共駐車場に対して通信する実際の計測機器に接続される街路標識およびLCDディスプレイを含む。電子的な性質により、標識を交換または修正するために労働力を配置する必要なしに、そのような標識を更新して、料金および稼働時間などの変更を更新することが可能になる。このような看板がなければ、このようなポリシーに対して迅速および通常の変更を行うことができない。
サポートデータベースおよび管理システム
すべての必要なフォーマットで詳細かつ柔軟にレポートを行うためには、いくつかの相互接続したシステムおよびデータベースが必要となる。プラットフォームエンジン101は、これらの個別のデータソースの入力を調整し、図1A、図2A、および図2Bに示される周辺デバイス130−132のうちの1つまたは複数における個別の表現を作成する。
洞察エンジン174
一局面において、プラットフォームエンジン101は、エッジデバイス120およびゲートウェイ110から受信した生データを処理するように構成される洞察エンジン174も有する。一局面において、洞察エンジン174は、使用パターンについて感知データを識別する、または任意の適当な態様でデータを解析するためにビッグデータ分析およびマシン学習を行うように構成される。例えば、洞察エンジン174は、例えば、水漏洩検知センサ16および土壌水分センサ21を用いて水の使用パターンを識別し、例えば、水不足の状況において芝生に水を与えている個人がいるかどうかを判定するように構成され得る。一局面において、感知データ間の任意の適当な関係は、洞察エンジン174によって判定もしくは解析され得る。
一局面において、メタデータの処理として、2005年7月13日に出願されて継続中の米国特許出願第11/179779号明細書に記載のスマートメータシステムのようなシステムが、当該出願における図面の簡単な説明および詳細な説明について引用により援用される。このシステムは、システム管理における柔軟性を最大化させるために拡張する必要がある。そして、この処理の出力は、ユーザが要求したレポートに必要な集合統計への後の検索および編集のために、プラットフォームエンジン101における関連付けられたデータベースに記憶される。
本発明のシステムは、スタッフスーパバイザおよびポリシーメーカーによってまとめられることで、システム100の稼働を有効にするポリシーの変化のモデリングを可能とする。履歴データを記憶することにより、洞察エンジン174は、エッジデバイス120からの感知データの統計的および数学的モデルを生成することができる。ユーザは、単にどの統計を手動で変更するか、および、どの統計を計算するかについて特定し、システムは、履歴データを使用して結果を予測することができる。これらの結果は、ターゲットとされる地理についての実際のデータに基づいており、ユーザは、料金が上昇した場合の特定の割合だけ遵守レベルが低下するという推測等、様々な推測を行うことができる。
現状データベース
一局面において、分散型ストレージ171の一部は、監視されている各アセットおよび人的資源についての記録を含むデータベースであることから、プラットフォームエンジン101は、現状データベースも有する。
エッジデバイス120およびゲートウェイ110に関する記録は、暗号化されたデータメッセージによって監視され、エッジデバイス120状態およびゲートウェイ110状態についての情報を含む。テーブルは、スペースにおける様々な状態の変化のシステムテレメトリからの各新しいレポートを用いて更新される。記録の詳細は、エッジデバイス120、ゲートウェイ110、および周辺デバイス130−132に関する例外事例も含む。
例えばスタッフスーパバイザもしくはポリシーメーカーによる人的資源に関する記録は、テレメトリ等のシステム通信技術によって新しいデータが受信されると更新される。これらの記録は、従業員によって使用されている機器(車両およびツールを含む)、従業員の場所、およびメンテナンス人員によって必要とされる指定された仕事もしくは関連する作業順序に関する情報を含む。
管理システム
一局面において、システム101の稼働を管理する1つの主要な構成要素は、在庫追跡である(例えば、センサ26を介して)。一局面において、これは、例えば、法人用データ統合モジュール175を用いた統合を含み得るか、または分散型ストレージ171の一部であり得る。稼働の各要素は、固有のシリアル番号を用いて識別される。このシリアル番号は、アセットについての全ての情報を含むデータベーステーブルを検索(index)するために使用される。この情報は、部品番号、モデル番号、および製造者を含む。
追加のデータベーステーブルが、アセットに関する履歴事象を追跡するために使用される。このような事象は、メンテナンス事項および事象、アップグレード、位置変化、および接続されたアセットを含む。このデータは、メンテナンス人員の稼働に有用である。補助的なテーブルが、メンテナンス、交換、およびアップグレードをスケジューリングするために、システム内の任意の適当なアセットについての現在データおよび履歴データの両方を表示するために使用される。
部品の交換が必要な問題が生じた場合、関連付けられた交換部品および交換のための利用可能な在庫についての情報を記憶するテーブルが使用され得て、メンテナンスクルー(メンテナンス人員)が必要な修理を行うための全ての必要な部品を有することが確保される。さらに、テーブルは、部品を購入するためのソース、および製造者からの部品の効率的な発注を容易にするリードタイムについての情報を記憶する。
多くのシステムは、製造者からの部品の注文の属性を記録し、最も有効な注文量および輸送費用を計算することにより商品管理における効率をさらに提供するためのツールも有する。
メンテナンス履歴
上述したように、各アセットについてのメンテナンス履歴は、プラットフォームエンジン101の分散型ストレージ171において追跡される。この情報は、予防メンテナンスを容易にし、ならびに一般市民の経験を向上させる内訳の傾向を分析する際に重要である。しばしば、駐車ポリシーの違反に対して召喚される人々が、パーキングメーターの誤作動が原因であると、切符に異議を唱える。履歴情報は、このような誤作動が発生したかどうかを判定するために使用され得る。故障が発生していた場合、切符は免除される。このデータは、執行人員の稼働のために必要である。
特定の時間において既定の地理的領域において誤作動が発生した場合、メンテナンス管理者は、違反行為の問題を認識し、この問題を修正するために法執行の支援を求めることが可能となり得る。
ポリシー管理
ポリシー管理データベースは、様々なエッジデバイス120の起動を追跡するために使用される。また、このデータベースは、エッジデバイス120へのこれらのポリシーの適用の履歴を追跡する。
エッジデバイス120から受信したデータを処理するためにデータベースが参照される。この生データの解析は、正しく統計を計算するとともに、地図での表示(図7〜図11)およびレポートのための現状データベースにおける現在のスペースの状態を更新するために、正しいメータ料金および人員による実行パラメータをデータに適用する必要がある。
エンドユーザに対する情報の伝達と拡散、解析、および収集の適した局面のさらなる例は、該当する場合に全体が引用により援用される、2012年9月25日に公開された米国特許第8274403号明細書に開示および示されるシステムと同様である。
図2A、図2B、図12A、および12Bを参照すると、一局面において、IoTネットワークシステムは、少なくとも1つのネットワークリンクカード153および166(上述のように、プラットフォームエンジン101は、ネットワークリンクカード180も有し得る)と、製造時暗号化フィクスチャ1219と、IoTエッジデバイス120およびIoTネットワークノードデバイス登録認証マネージャコントローラ199(エンジンコア101ECおよびエンジン保管庫101EVのうちの1つまたは複数等のプラットフォームエンジン101の1つまたは複数の構成要素(もしくはプラットフォームエンジン101の任意の適当な他の構成要素)、および/または封止され隔離された保管庫190V等の管理モジュール190の1つまたは複数の構成要素(もしくは管理モジュール190の任意の適当な他の構成要素)を含み得る)を有する。少なくとも1つのネットワークリンクカード153、166、および180の各々は、IoTプラットフォームシステム100のIoTエッジデバイス120およびIoTネットワークノードデバイス110のうちの対応する少なくとも1つにそれぞれインターフェース接続し、広域ネットワークWANを介してIoTプラットフォームシステム100の各それぞれの少なくとも1つのIoTエッジデバイス120およびIoTネットワークノードデバイス110をプラットフォームエンジン101等のIoTプラットフォームシステム制御エンジンに通信可能にリンクするように構成される。
製造時暗号化フィクスチャ1219は、任意の適当な態様で、製造時に、各少なくとも1つのネットワークリンクカード153、166にそれぞれ結合して暗号化し、各それぞれのネットワークリンクカード153、166の製造時に、各それぞれのネットワークリンクカード153、166上に、および一意に対応して暗号化鍵セット1203を形成するように構成される。一局面において、暗号化フィクスチャ1219は、暗号化時に、任意の適当な有線もしくは無線の接続を介して少なくとも1つのネットワークリンクカード153、166に結合するように構成され得る。
IoTエッジデバイス120およびIoTネットワークノードデバイス登録認証マネージャコントローラ199は、IoTエッジデバイス120およびIoTネットワークノードデバイス110のうちの各少なくとも1つを、それぞれの開始および登録時において、IoTプラットフォームシステム100内のIoTエッジデバイス120およびIoTネットワークノードデバイス110のうちの各少なくとも1つのIoTプラットフォーム(システム制御)エンジン101によって、IoTエッジデバイス120およびIoTネットワークノードデバイス110のうちの各少なくとも1つの対応するリンクカード153、166の製造時に形成された暗号化鍵セット1202に対するセキュア対称暗号化鍵セット1202Sに基づいて、それぞれ登録し、および認証し、IoTエッジデバイス120およびIOTネットワークノードデバイス110のうちの各少なくとも1つのそれぞれをIoTプラットフォームシステム100に搭載する認証を機能させるように構成される。一局面において、認証は、IoTネットワークシステム100S内におけるデバイス120および110のIoTネットワークプラットフォーム(システム制御)エンジン101による登録時に機能し、実質的にこれと同時に機能する。暗号化鍵セット103は、少なくとも、各少なくとも1つのネットワークリンクカード153および166の製造時に各少なくとも1つのネットワークリンクカード153および166の暗号解読ユニット1103CMに配置される。
さらに図2A、図2B、図12A、および図12B、ならびに図13Aおよび図13Bを参照すると、IoTプラットフォームシステム100は、IoTプラットフォームシステム暗号化鍵セキュリティシステム1290を含む。IoTプラットフォームシステム暗号化鍵セキュリティシステム1290の稼働は、IoTプラットフォームシステム100から分離されて封止されるようにセキュアストレージ190KS(図13A、ブロック1300)に記憶される少なくとも1つの主要もしくは共通(例えば、マスタ)鍵MK1−MKを含む共通暗号化鍵セット1204に基づき得る。一局面において、セキュアストレージ190KSは、管理モジュール190の鍵生成ユニット190Kに含まれ、他の局面において、セキュアストレージ190KSは、IoTプラットフォームシステム100から分離および隔離される任意の適当なストレージであり得る。4つの共通鍵MK1−MK4が示されるが、他の局面において、4つよりも大きいか、または小さい数の共通鍵が設けられ得る。鍵生成ユニット190Kは、1回のみプログラム可能なストレージであり得て、鍵生成ユニット190Kのコントローラ/プロセッサ190KCによって読取られるか、または変更され得ない。
IoTプラットフォームシステム100によって構成されるIoTプラットフォームシステム暗号化鍵セキュリティシステム1290は、一局面において、セキュアされた暗号化通信リンク1235を介してIoTプラットフォームエンジン暗号化鍵生成端1201に通信可能に結合されるIoTデバイス暗号化鍵生成端1220を有する。IoTプラットフォームエンジン暗号化鍵生成端1201は、IoTプラットフォームシステム100上で開始されるIoTデバイス110および120を登録し、認証するように配置される1つまたは複数のプラットフォームエンジン101の一部であり得る。セキュアされた暗号化通信リンク1235は、IoTデバイス暗号化鍵生成端1220において生成される上位層1250LS1の暗号化鍵セット1202、およびIoTプラットフォームエンジン暗号化鍵生成端1201において生成される上位層1250LS2の暗号化鍵セット1203を用いて、階層的暗号化鍵セット層配置1250を定義し、上位層1251LS1および1250LS2が従属する階層的暗号化鍵セット層配置1250の主要層1250LPを構成する共通暗号化鍵セット1204(例えば、共通鍵MK1−MK4)に基づく。
暗号化鍵セキュリティシステム1290のIoTデバイス暗号化鍵生成端1220は、例えばそれぞれの暗号化フィクスチャ1219に含まれる暗号化鍵生成プロセッサ1200によって定義され、IoTエッジデバイス120およびIoT通信ノードデバイス110の製造時にIoTエッジデバイス120およびIoT通信ノードデバイス110に暗号化鍵セット1202に暗号化するように配置される。
鍵生成ユニット190Kなどの他の暗号化鍵生成プロセッサ190KCは、暗号化鍵セット1203をIoTプラットフォームエンジン101に提供する暗号化鍵生成入力を与えるように配置される、または通信可能に結合される。他の暗号化鍵生成プロセッサ190KCは、IoTデバイス暗号化鍵生成端1220およびIoTプラットフォームエンジン暗号化鍵生成端1201が暗号化鍵セキュリティシステム1290の実質的に対称な鍵生成端1230SMを形成するように、暗号化鍵セキュリティシステムのIoTプラットフォームエンジン暗号化鍵生成端1201を定義する。IoTプラットフォームエンジン暗号化鍵生成端1201において生成される暗号化鍵セット1203の各々は、IoTデバイス暗号化鍵生成端1220において生成される暗号化鍵セット1202の各対応する暗号化鍵セット1202に対する暗号化鍵1202Sの対称セットに少なくとも一部が基づき得る。
IoTプラットフォームエンジン暗号化鍵生成端1201で生成される暗号化鍵セット1203の各々は、独立して生成される独立鍵1217と、少なくとも1つの他の鍵1218(例えば、デバイス通信鍵)とを含む。暗号化鍵1202Sの対称セットに一部が基づく独立鍵1217および少なくとも1つの他の鍵1218は、IoTプラットフォームシステム100のIoTプラットフォームエンジン暗号化鍵生成端1201とIoTデバイス暗号化鍵生成端1220とを接続する通信リンクの生成端間の暗号化のセキュリティを確保する階層的暗号化鍵セット層配置1250の他の上位鍵セット層1250LLを定義する。独立鍵1217は、各それぞれのIoTエッジデバイス120および/またはIoTネットワークノードデバイス110に固有に対応する。少なくとも1つの他の鍵1218は、IOTデバイス暗号化鍵生成端1220において生成される暗号化鍵セット1202の各対応する暗号化鍵セット1202に対する暗号化鍵1202Sの対称セットに少なくとも一部が基づいている。独立鍵1217は、それぞれのIoTエッジデバイス120もしくはそれぞれのIoTネットワークノードデバイス110(本明細書中において、まとめてIoTデバイス110、120という)についてのセッション鍵1217Sを定義し、広域ネットワークWANを介したIoTプラットフォームシステム100のIoTプラットフォームエンジン101からのセッション鍵暗号化通信SCOMMによりIoTデバイス110、120に入力される。セッション鍵暗号化通信SCOMMは、少なくとも1つの他の鍵1218に基づいており、セッション鍵暗号化通信SCOMMの通信改ざん表示1258A(有効性改ざん表示128と同じか、または同じでない)を提供する少なくとも1つの有効性演算子1257A(有効性演算子1257と同じか、または同じでない)を含む。
それぞれのIoTデバイス110、120に入力されるセッション鍵1217Sを具現化するセッション鍵暗号化通信SCOMMは、IoTプラットフォームシステム100内のそれぞれのIoTデバイス110、120の開始についてのIoTプラットフォームエンジン101の登録時、または初期応答において機能する。IoTプラットフォームエンジン101からそれぞれのIoTデバイス110、120へのセッション鍵暗号化通信SCOMMの初期応答、およびそれぞれのIoTデバイス110、120におけるセッション鍵暗号化通信SCOMMからのセッション鍵1217Sの暗号化および入力は、本明細書中において詳細に記載されるように、それぞれのIoTデバイス110、120の認証およびIoTプラットフォームシステム100に対するそれぞれのIoTデバイス110、120の搭載を機能させる。
一局面において、IoTデバイス暗号化鍵生成端1220において生成される上位層1250LS1の暗号化鍵セット1202、およびIOTプラットフォームエンジン暗号化鍵生成端1201において生成される上位層1250LS2の暗号化鍵セット1203は、少なくとも1つの対称暗号化鍵SKEYおよび少なくとも1つの非対称暗号化鍵AKEYの組合せを含む。
IoTデバイス暗号化鍵生成端1220において生成される暗号化鍵セット1202は、共通暗号化鍵セット1204およびIOTデバイス暗号化鍵生成端1220への暗号化された入力1255からの情報に基づく。これらの暗号化鍵セット1202は、暗号解読ユニット1103CM、162CMへ渡されるデータを暗号化および復号化することのみに使用され得る(例えば、このハードウェア隔離により、IoTデバイス110、120に悪意のファームウェアをインストールすることによって遠隔的にデバイス鍵セット1202が盗まれないことを確保し得る)。デバイス鍵セット1202の固有性により、研究室の環境において悪意の攻撃者がIoTデバイス110、120へ物理的にアクセスした場合に、その悪意の攻撃者が物理的に所有されるIoTデバイス110、120の鍵を盗むことしかできないことを確保し得る(なぜなら、各IoTデバイス110、120は固有の鍵セット1202を有するためである)。暗号化された入力1255は、共通暗号化鍵セット1204に基づいており、少なくとも所定のIoTデバイス製造識別特性1256と、暗号化された入力1255の改ざん表示1258を有効化する有効性演算子1258とを含む。所定のIoTデバイス製造識別特性1256は、IoTデバイス暗号化鍵生成端1220での暗号化鍵セット1202の生成における基礎を成し、暗号化鍵セット1202の各々は、それぞれのリンクカード153、166の製造時における各所定のIoTエッジデバイス120および各所定のIoT通信ノードデバイス110のそれぞれのリンクカード153、166に対して暗号化し、および一意に対応する。有効性演算子1257は、暗号化された入力1255の有効性窓(もしくは終了)、ならびに、IoTデバイス暗号化鍵生成端1220における暗号化された入力1255に基づいて生成される暗号化鍵セット1202の生成、および暗号化された入力に基づく製造時にそれぞれのリンクカード153、166への暗号化セット1202の各々に暗号化するための有効性窓(もしくは終了)を定義する。
一局面において、暗号化フィクスチャ1219の各々は、共通鍵MK1−MK4から得られるそれぞれの固有のフィクスチャ鍵FK1−FKnと、それぞれの暗号化フィクスチャ1219−1219nの固有のMACアドレスとを含む。例えば、例示的な6バイトMACアドレス0004a3810123である所定の暗号化フィクスチャ1219MACアドレスと共通鍵MK1−MK4のセットにより、鍵生成ユニット190Kは、フィクスチャ鍵FK1−FKnを生成するように構成される(図13A、ブロック1302)。フィクスチャ鍵FK1−FKnは、MACアドレスを右詰めゼロパディングして例えば0004a38101230000000000等の16バイトの平文テキストを形成することによって生成される。鍵生成ユニット190Kは、任意の適当な暗号化アルゴリズム(例えば、カウンタ、電子コードブック、および暗号フィードバックモードなどの任意の適当なモードにおけるAES−128)を用いて、共通鍵MK1−MK4の各々により平文テキストを暗号化し(例えば、鍵SRC1−4を指す)、それぞれの共通鍵MK1−MK4の各々に対応する16バイト暗号テキストを作成するように構成される。例えば、共通鍵MK1の16バイト暗号テキストは、1f7c4d08432fa5a1ece0aa02349503dであり、16バイト暗号テキストは、他の3つの共通鍵MK2−MK4の各々について生成され、MACアドレス0004a3810123を有する暗号化フィクスチャ1219についてのフィクスチャ鍵FK1のそれぞれのセットが作成される。これらのフィクスチャ鍵FK1−FKnは、暗号化された入力1255に含まれ得る。
暗号化された入力1255は、任意の適当な入力生成位置1299からIoTデバイス暗号化鍵生成端1220へ繋がる任意の適当なコンピュータ読み取り可能記憶媒体1260上に配置され得る。暗号化された入力1255は、入力生成位置1299におけるコンピュータ読み取り可能記憶媒体に配置され、入力生成位置1299は、IOTデバイス暗号化鍵生成端1220とは別個であり離れている。一局面において、コンピュータ読み取り可能記憶媒体は、ユニバーサルシリアルバスストレージデバイス、もしくは任意の適当な他の固体(solid state)ストレージデバイスである。他の局面において、暗号化された入力1255は、広域ネットワークWAN等の任意の適当な有線もしくは無線ネットワークを通じてIoTデバイス暗号化鍵生成端1220に繋がり得る。
図2A、図2B、図12A、図12B、図13A、および図13Bを参照し、それぞれのIoTデバイス110A−110nおよび120A−120nに暗号化される鍵セット1202の生成について説明する。一局面において、IoTデバイス110A−110nおよび120A−120nは、任意の適当な契約製造者によって製造される。この契約製造者は、IoTデバイス110A−110nおよび120A−120nを試験するように、ファームウェア(ネットワークリンクカード153および166に含まれ得る)をIoTデバイス110、120にロードし得る。しかしながら、IoTデバイス110A−110n、120A−120nの改ざんを減少させるために、それぞれのIoTデバイス110A−110nおよび120A−120nへの鍵セット1202の暗号化の準備ができるまで、契約製造者には鍵セット1202が与えられない。例えば、IoTデバイス110A−110nおよび120A−120nの製造実行前に、所定のIoTデバイス1256および有効性演算子1258が、所定のIoTデバイス構築順序について、例えば、管理モジュール190の封止された隔離保管庫190Vのプロセッサ190VPによって生成され、検索される(図13、ブロック1305)。IoTデバイス製造識別特性鍵1256Kは、例えば、所定のIoTデバイス製造識別特性1256に基づき、プロセッサ190VPによって生成され得る(図13A、ブロック1308)。一局面において、所定のIoTデバイス製造識別特性1256は製造バッチ番号であり、IoTデバイス製造識別特性鍵1256Kは製造バッチ番号から生成されるバッチ鍵であるが、他の局面において、任意の適当な製造識別情報/特性が使用され得る。暗号化された入力1255(例えば、ラップされたデータの形態)は、少なくともIoTデバイス製造識別特性鍵1256K、有効性演算子1257、ならびにIoTデバイス110A−110nおよび120A−120nのバッチを作成するために使用される暗号化フィクスチャ1219のそれぞれの固有のフィクスチャ鍵FK1−FKnを使用して、プロセッサ190VPによって生成され得る(図13A、ブロック1310)。暗号化された入力1255の一部が改ざんされた場合、この改ざんは、期限が切れると暗号化された入力1255の使用が有効でなくなる時間において有効性窓であり得る有効性演算子1257を使用して検知され得る。
暗号化された入力1255は、コンピュータ読み取り可能記憶媒体1260と繋がるなど、任意の適当な態様で入力生成位置1299からIoTデバイス暗号化鍵生成端1220(図13A、ブロック1315)に提供される。IoTデバイス暗号化鍵生成端1220は、例えば、暗号化フィクスチャ1219において、暗号化された入力1255を受信するように構成され、有効化された場合、暗号化された入力1255は、暗号化フィクスチャ1219をロック解除し(例えば、動作可能とする)、暗号化フィクスチャ1219を用いてIoTデバイス110A−110nおよび120A−120nの生成/製造を可能とする。暗号化フィクスチャ1219は、暗号化された入力1255を認証するために、暗号化された入力1255を暗号化するように構成される。例えば、暗号化デバイス1219は、暗号化された入力を復号化することにより、製造識別特性鍵1256Kを得る(図13A、ブロック1318)。例えば、製造識別特性鍵1256Kが、暗号化フィクスチャ1219によって生成される対応の製造識別特性鍵1256KCと一致する場合、IoTデバイス110A−110nおよび120A−120nの製造のために暗号化された入力が認証され、暗号化フィクスチャ1219が起動される。
本明細書中において説明されるように、IoTデバイス110A−110n、120A−120nは、暗号解読ユニット1103CM、162CM(図13B、ブロック1319)等のそれぞれのセキュアメモリを有する。暗号解読ユニット1103CM、162CMは、一般的な出力レジスタではなく、IoTデバイス110A−110n、120A−120nの後続の稼働のために使用され得るが、それぞれのIoTデバイス110A−110n、120A−120nのプロセッサによって読み取られ得ない。暗号化フィクスチャ1219は、例えば、IoTデバイス110A−110n、120A−120nのハードウェアを試験するために製造されるIoTデバイス110A−110n、120A−120nのバッチ内でIoTデバイス110A−110n、120A−120nと通信する。暗号化フィクスチャは、それぞれのIoTデバイス110A−110n、120A−120nのMACアドレス127MAをそれぞれのIoTデバイス110A−110n、120A−120nから読み取ると共に、任意の適当なメモリ(例えば、製造識別特性1256がユーザ入力であり得る暗号化フィクスチャ1219のメモリ等)から製造識別特性1256(図13Aにおけるブロック1320、図13Bにおけるブロック1330)を読み取る。暗号化フィクスチャ1219は、所定の数(例えば、約4つ、または他の局面において、4つより大きいか、または小さい)の暗号化鍵を有するデバイス鍵セット1202もしくはマスター鍵(図13Aにおけるブロック1322、図13Bにおけるブロック1323)を決定する。本明細書中において説明されるように、鍵セット1202は、IoTデバイス110A−110n、120A−120nを製造/暗号化する暗号化フィクスチャ1219のフィクスチャ鍵セットFK1−FKn、製造識別特性鍵、およびそれぞれのIoTデバイス110A−110n、120A−120nのMACアドレスから決定される。また、本明細書中において説明されるように、IoTデバイス110A−110n、120A−120nは、暗号解読ユニット1103CM、162CM等、それぞれのセキュアメモリを有し、デバイス鍵セット1202は、それぞれのIoTデバイス110A−110n、120A−120n(図13A、ブロック1325)のセキュアメモリに暗号化された状態で保管される。
製造される各IoTデバイス110、120について、例えば、IoTプラットフォームエンジン鍵生成端1201でのオフライン稼働(もしくはオンライン稼働)において、セッション鍵SK(例えば、セッション鍵1217S)、暗号化セッション鍵ESK、ラップセッション鍵WESK、乱数R、乱数の暗号化導関数ER、および巡回冗長符号(CRC)が生成される(図13B、ブロック1335)。初期化ベクトルIVは、例えば、IoTプラットフォームエンジン鍵生成端1201において生成され、少なくとも1つの有効性演算子1257または1257Aから得られる。暗号化導関数ERは、乱数Rおよび初期化ベクトルIVから生成される巡回冗長符号(CRC)であり得る。一局面において、セッション鍵SKは独立鍵を構成する乱数であり、暗号化セッション鍵ESKはそれぞれのIoTデバイス110、120鍵セット1202およびセッション鍵における少なくとも第1のデバイス鍵から生成され、ラップされたセッション鍵WESKはそれぞれのIoTデバイス110、120鍵セット1202および暗号化セッション鍵ESKにおける少なくとも第2のデバイス鍵から生成される。暗号化導関数ERは、それぞれのIoTデバイス110、120鍵セット1202における少なくとも第3のデバイス鍵セットから生成される暗号フィードバックモード暗号化であり得る。一局面において、対称鍵セット1202Sは、各それぞれのIoTデバイス110、120について、暗号化セッション鍵ESK、ラップされたセッション鍵WESK、乱数R、および乱数Rの暗号化導関数のうちの1つまたは複数および巡回冗長符号(CRC)を生成するために使用される。認識されるように、階層的暗号化鍵セット層配置1250および/またはセッション鍵SK鍵セット(例えば、SK、ESK、WESK、R、ER、IV、および/またはCRC)は、IoTプラットフォームシステム100へのハッキングを検知するために提供される。一局面において、他世代(other epochs:IVs)のための追加の乱数Rおよび暗号化導関数ERの対も、保管され得て、より長い「鍵有効」期間をもたらし得る(例えば、より長い有効性演算子1257、1257A)。
少なくともセッション鍵SK、暗号化セッション鍵ESK、ラップされたセッション鍵WESK、乱数R、乱数の暗号化導関数ER、および巡回冗長符号(CRC)が、ネットワークリンクカード180および/または分散型ストレージ188(例えば、エンジン保管庫101EV)等、1つまたは複数のプラットフォームエンジン101の任意の適当なデータベース/メモリに保管され、それぞれのIoTデバイス110、120へのセッション鍵SKの安全な送信がもたらされ得る。
図2A、図2B、図12A、図12B、および図14を参照し、IoTプラットフォームシステム100への新しいIoTデバイス110、120の搭載について説明する。製造の後、IoTデバイス110、120が現場に設置される。一度設置されると、IoTデバイス110、120は、IoTプラットフォームシステム100上に登録および認証される。IoTデバイス110、120を登録するために、IoTデバイス110、120がオン状態に切り替えられる(図14、ブロック1400)。IoTデバイスがIoTエッジデバイス120である場合、IoTエッジデバイス120は利用可能なIoTネットワークノードデバイス110についてスキャンする。IoTデバイスがIoTネットワークノードデバイス110である場合、IoTネットワークノードデバイス110は利用可能なプラットフォームエンジン101についてスキャンする。IoTデバイス110、120は、乱数(例えば、ノンス)を生成し、そのMACアドレスおよびノンスをプラットフォームエンジン101に送信する(図14、ブロック1405)。MACアドレスおよびノンスは、IoTデバイス110、120の登録、IoTプラットフォームシステム100に対する初期化、およびIoTデバイス110、120の認証を稼働/有効化する1つまたは複数のプラットフォームエンジン101の選択された部分に送信され得る。
プラットフォームエンジン101は、IoTデバイス110、120のMACアドレスによってIoTデバイス110、120を参照し、IoTデバイス110、120を登録および認証する(図14、ブロック1410)。プラットフォームエンジン101は、MACアドレスについてのデバイスアクタを作成し、エンジン保管庫101EVからセッション鍵SKを検索する(図14、ブロック1415)。一局面において、デバイスアクタは、IoTエッジデバイス120を示す現在のセッション鍵SKをエンジン保管庫101EVから検索し得る。プラットフォームエンジン101は(例えば、デバイスアクタを通じて)ラップされた暗号化セッション鍵パケット配列番号WESKPSNを作成する(少なくとも巡回冗長符号CRC、ラップされた暗号化セッション鍵WESK、パケット配列番号PSN、およびノンスから作成され、PSNはIoTデバイス110、120の最後に使用されるパケット配列番号である)(図14、ブロック1420)。一局面において、IoTエッジデバイス120のためのデバイス通信鍵1218の少なくとも1つの鍵を使用して、ラップされた暗号化セッション鍵パケット配列番号WESKPSNが作成される。一局面において、ラップされた暗号化セッション鍵パケット配列番号WESKPSNの生成は、保管庫インスタンス内部のXORマスクを用いて行われる。
プラットフォームエンジン101は、ラップされた暗号化セッション鍵パケット配列番号WESKPSNをIoTデバイス110、120に送信する(図14、ブロック1425)。IoTデバイスがIoTエッジデバイス120である場合、IoTエッジデバイスは、現在のIoTプラットフォームシステム100タイムスタンプをIoTネットワークノードデバイス110から検索し、初期化ベクトルIV、ラップされた暗号化セッション鍵WESK、パケット配列番号PSN、およびノンスのうちの1つまたは複数を得る(図14、ブロック1430)。IoTデバイスがIoTネットワークノード110である場合、IoTネットワークノード110は、現在のIoTプラットフォームシステム100タイムスタンプをプラットフォームエンジン101から検索し、初期化ベクトルIV(例えば、有効性演算子)、ラップされた暗号化セッション鍵WESK、パケット配列番号PSN、およびノンスのうちの1つまたは複数を得る(図14、ブロック1430)。IoTデバイス110、120は、デバイス鍵セット1202のうちの少なくとも1つの鍵を使用してプラットフォームエンジン101によって生成されるXORマスクを計算し、ラップされた暗号化セッション鍵パケット配列番号WESKPSNをアンラップし得る。例えば、IoTデバイス110、120は、ラップされた暗号化セッション鍵パケット配列番号WESKPSNをアンラップし、暗号化導関数ERを計算する。ここで、暗号化導関数ERは、初期化ベクトルIVがプラットフォームエンジン101によって許容される所定の時間世代内にある場合にのみ正しいものとなる。少なくともIoTデバイス110、120によって決定されたノンスがIoTデバイス110、120によって生成されたノンスと一致する場合、IoTデバイス110、120は認証され(1432)、ラップされた暗号化セッション鍵パケット配列番号WESKPSNは、ラップされた暗号化セッション鍵WESK、パケット配列番号PSN、およびノンスとなる。認証がない場合、認証処理は図14のブロック1410に戻る。
ひとたびIoTデバイス110、120が認証されると、IoTデバイス110、120は、ラップされた暗号化セッション鍵WESKをアンラップする(図14、ブロック1435)。ラップされた暗号化セッション鍵WESKのアンラップが失敗した場合、その失敗は、誤った世代および登録が再び行われるとハッキング事象もしくはセッション鍵SKを示し得る(例えば、図14、ブロック1410に戻る)。ラップされた暗号化セッション鍵WESKのアンラップが成功した場合、IoTデバイス110、120は、ノンスをIoTデバイスによって生成されたノンスと比較し、ノンスが一致しない場合、ハッキングの試みおよび登録が再び行なわれたことを示し得る(例えば、図14、ブロック1410に戻る)。ノンスが一致する場合、IoTデバイスは、ラップされた暗号化セッション鍵WESKをアンラップすることによって、暗号化セッション鍵ESKの判定を試みる(図14、ブロック1435)。ラップされた暗号化セッション鍵WESKのアンラップが失敗した場合、登録が再び試みられる(例えば、図14、ブロック1410に戻る)。ラップされた暗号化セッション鍵WESKのアンラップが成功した場合、IoTデバイス110、120は、パケット配列番号PSNをそのパケット配列番号として採用し、暗号化セッション鍵ESKをIoTデバイス110、120の暗号解読ユニット1103CM、162CMにロードし、IoTデバイス110、120の鍵セット1202のうちの少なくとも1つの鍵を使用してセッション鍵SKが暗号化セッション鍵ESKから得られる(図14、ブロック1440)。セッション鍵SKは暗号解読ユニット1103CM、162CMに保管され、IoTデバイス110、120のコントローラ151C、152C、162によって読み取れ得ない。
セキュアチャネルは、IoTエッジデバイス120とIoTネットワークノードデバイス110との間に(もしくはIoTネットワークノードデバイス110からプラットフォームエンジン101へ)確立され、暗号解読ユニット1103CM、162CMがオン状態に切り替えられる(図14、ブロック1450)。IoTデバイス110、120は、鍵採用メッセージ(セッション鍵を含む)をIoTデバイス110、120からIoTネットワークノードデバイス110のデバイスアクタ(IoTデバイスがIoTエッジデバイス120である場合)もしくはプラットフォームエンジン101のアセットアクタ(IoTデバイスがIoTネットワークノードデバイス110である場合)に送信する(図14、ブロック1450)。セッション鍵は、IoTネットワークノードデバイス110(IoTデバイスがIoTエッジデバイス120である場合)またはプラットフォームエンジン101(IoTデバイスがIoTネットワークノードデバイス110である場合)によって有効化され、セキュアチャネルが維持される(図14、ブロック1455)。セッション鍵が有効化されない場合、認証処理は図14のブロック1410に戻る。
一局面において、IoTエッジデバイス120を認証するための認証デバイスは、IoTネットワークノードデバイス110であり得て、IoTネットワークノードデバイス110は、初期化時に接続するデフォルト通信モジュール173を認識している。認証デバイスがIoTネットワークノードデバイス110である場合、IoTネットワークノードデバイス110のネットワークリンクカード166および暗号解読ユニット162CMは、上記と同様の方法でノンスを生成してIoTエッジデバイス120を認証するために使用される。
一局面において、IoTプラットフォームシステム100は、上述のように、任意の適当な暗号化モードを使用して、IoTプラットフォームシステム100のデバイス間の通信を暗号化する。一局面において、メッセージの統合性および認証のために、メッセージ統合性コード(MIC)も使用される。例示のみを目的として、一局面において、暗号化モードは、128ビットカウンタおよびペイロードを使用するカウンタ暗号化モードであり得る。ペイロードの一部は、内在するメッセージ統合性コードのためにファイリングされ得る。一局面において、IoTプラットフォームシステム101の暗号化は、少なくともプロトコル識別子(ID)、IoTデバイス110、120のMACアドレス、パケット配列番号PSN、および巡回冗長符号(CRC)を含む。ひとたび暗号化モードが形成されると、暗号化モードは、パケットの残り(メッセージ統合性コード以外)を暗号化するために使用され得る。一局面において、暗号解読ユニット1103CM、162CMは、一度に所定数のバイト、例えば、一度に約16バイト(他の局面において、バイトの所定数は、約16バイトより大きいもしくは小さいものとなり得る)だけパケットデータを暗号化するために、暗号化モードおよびセッション鍵SKを使用するように構成される。各所定の数のバイトを暗号化した後、パケットにファイリングされたカウンタは、増分され、他の所定数のバイトが暗号化される。ひとたびデータの全パケット長さが暗号化されると、メッセージ統合性コード(MIC)がチェイス鍵(ESK、暗号化データ)を用いる、などにより任意の適当な態様で計算され、ペイロードのメッセージ統合性コードフィールドに挿入される。すべてのカウンタ、メッセージ統合性コード、およびペイロードが、任意の適当な通信プロトコルおよび任意の適当な通信方法(例えば、無線周波数もしくは他の任意の適当な送信方法/タイプ)を用いて、例えば、IoTエッジデバイス120からIoTネットワークノードデバイス110へ送信される。
入ってくるパケットは、プラットフォームエンジン101によって受信され、検査される。プラットフォームエンジン101は、カウンタ巡回冗長符号を計算し、データパケットのカウンタブロックの統合性を照合する。巡回冗長符号の不一致が起こった場合、データパケットは破棄され得る。プラットフォームエンジン101は、IoTエッジデバイス120のMACアドレスを抽出し、MACアドレスを使用してIoTエッジデバイス120のセッション鍵履歴を参照する。暗号化セッション鍵はエンジン保管庫101EVから検索され、チェイス鍵(ESK、暗号化データ)が決定され、プラットフォームエンジン101によって受信されるメッセージ統合性コードと比較される。メッセージ統合性コードが一致しない場合、パケットは破棄され得る。巡回冗長符号およびメッセージ統合性コードの両方が一致する場合、プラットフォームエンジン101は、IoTエッジデバイス120のセッション鍵SKを使用して、標準的なカウンタモード暗号化手順においてペイロード領域を得るために使用されるデータパケットのカウンタフィールドを暗号化する。そして、プラットフォームエンジンは、復号化されたIoTエッジデバイス120のメッセージおよびデータを保持する。プラットフォームエンジン101は、自己のメッセージを生成するなどの任意の適当な態様でIoTエッジデバイス120メッセージに応答し、IoTエッジデバイスのセッション鍵SKを使用して、例えば、カウンタモード暗号化を用いてメッセージを暗号化する。
図2A、図2B、図15、図16、および図21を参照すると、IoTプラットフォームシステム100の初期化の前に、所定数のサーバ1500A−1500C(ここでは、3つのサーバが設けられているが、他の局面においては、3つのサーバよりも大きいもしくは小さい数のサーバが設けられ得る)に対して隔離保管庫190Vクラスタが提供される(図21、ブロック2100)。これらのサーバ1500A−1500Cは、インターネットから完全に隔離され、インターネットからの隔離保管庫190Vクラスタに対する遠隔的なハッキング攻撃から保護される。所定数の管理者ADM1−ADM5も選択される。5名の管理者ADM1−ADM5が図15に示されているが、他の局面においては、5名より大きいもしくは小さい数であり得る。1つまたは複数のマスター鍵MSK1−MSK5のセットが作成され(図21、ブロック2105)、遠隔の場所1600においてエキュアされる(図21、ブロック2110)。例えば、1つまたは複数のマスター鍵MSK1−MSK5の各々は、任意の適当なパスワードおよびハードウェア暗号化を用いて暗号化されたそれぞれのセキュアユニバーサルシリアルバスデバイス1510−1514(または他の適したコンピュータ読み取り可能媒体)に保管される。1つまたは複数のマスター鍵MSK1−MSK5のセットは、隔離保管庫190Vクラスタを封止する。一局面において、管理者の各々にはそれぞれのマスター鍵MSK1−MSK5が割り当てられ、管理者の大半は隔離保管庫190Vの封止を解くことを望み、1名以上の管理者は、隔離保管庫190Vを封止することを望む。一局面において、サーバ1500A−1500Cは、シリアルポート(もしくは他の適した通信可能接続)を介して情報を受信するように構成される。ここで、他のサーバ1500Dは、サーバ1500A−1500Cに結合され、遠隔のセキュアされた位置(例えば、セキュアユニバーサルシリアルバスデバイス1510−1514)と隔離保管庫190Vクラスタとの間にインターフェースを提供する。サーバ1500Dは、感染した安全ユニバーサルシリアルバス(USB)デバイス1510−1514が、例えば、サーバ1500Dと隔離保管庫190Vクラスタとの間の所定のシリアル通信プロトコルによって、隔離保管庫190Vクラスタに影響を与えることを防止し得る。
鍵生成ユニット190Kが作成される。少なくとも1つの主要もしくは共通(例えば、マスタ)鍵MK1−MKが鍵生成ユニット190Kのセキュアストレージ190KS(例えば、ハードウェアベースの暗号解読メモリ)に保管される。一局面において、USBケーブルが鍵生成ユニット190Kに結合され、鍵生成ユニット190Kがサーバに結合されると、鍵生成ユニット190Kはシリアルデバイスとなる。共通鍵MK1−MK5および1つまたは複数のマスター鍵MSK1−MSK5のセットは、セキュアされた遠隔の場所1600に保管される。
図2A、図2B、図15、図19、および図21を参照すると、一局面において、IoTプラットフォームシステム100は、ネットワークサーバ1550もしくはクラウドインフラストラクチャ1900上で初期化され得る。上記のように、IoTプラットフォームシステム100は、複数のIoTプラットフォーム通信ネットワークノード110との双方向通信のために通信可能に接続された複数のIoTプラットフォームエッジデバイス120を含む。IoTプラットフォームエンジン101は、IoTプラットフォーム通信ネットワークノード110と双方向通信のために通信可能に結合され、それを介して、IoTプラットフォームエッジデバイス120と双方向通信のために通信可能に結合される。エンジン保管庫101EV1−101EVnクラスタが提供され、初期化される(図21、ブロック2115)。また、エンジン保管庫101EV1−101EVnクラスタは、マスター鍵MK1−MK5で封止されると共に、マスター鍵MK1−MK5の多数を用いて封止解除され得る。エンジン保管庫101EV1−101EVnクラスタは、仮想プライベートネットワーク(VPN)もしくは仮想プライベートクラウド(VPC)内でアクセス可能であり、エンジン保管庫101EV1−101EVnクラスタを隔離することが望ましく、各エンジン保管庫101EV1−101EVnは、耐障害性のために、互いに地理的に分離され得る。エンジン保管庫101EV1−101EVnクラスタは、ユーザ(このユーザは管理者を含み得る)を管理し、認証するために使用され得る(図21、ブロック2120)。例えば、管理者ADM1−ADM5のうちの1名以上は、ユーザ名、電話番号、およびVPN証明を有する新しいユーザを追加することができると共に、ユーザに対してアクセス制御ポリシーを割り当てることができる。セキュア封止ストレージ部101EVは、マルチファクタユーザ認証2000を用いてアクセスの管理および認証を行う(図20)。例えば、ユーザは、ユーザ名およびパスワードを提供し、ユーザが認証を要求した場合にユーザに送信される二要素暗証番号を確認することで、エンジン保管庫101EVを用いて認証することができる。ひとたびユーザが認証されると、ユーザに対して、トークンおよび/またはクラウド証明が発行される(図21、ブロック2125)。トークンは、ポリシーごとに、所定の期間内(例えば、約15分、もしくは約15分よりも短いもしくは長い時間)に終了し得る。トークンおよび証明は、エンジン保管庫101EVにおいて利用可能なデータと相互作用するために使用され得る、例えば、IoTプラットフォームシステム100の他の部分にアクセス鍵をリースするために使用され得る。クラウド証明を要求するユーザは、トークンに関して上で説明した方法と同様の方法で認証される。ひとたび認証されると、ユーザは、短期間のクラウド証明のリースを要求することができる。エンジン保管庫101は、動的証明を生成すると共に、リースが終了するとそれらを取り消すように構成される。これにより、開発者マシンのセキュリティが侵された場合のサーバインフラストラクチャの漏洩が防止され得る。一局面において、クラウド証明は、一時的なものであり、所定の期間(例えば、約3分、または約3分より長いもしくは短い時間)後には無効となる。一時的なクラウド証明により、開発者がIoTプラットフォームシステム開発グループを離れた場合の開発者によるIoTプラットフォームシステム101へのアクセスの取り消しが容易となる。一局面において、リースされたクラウド証明を用いて、開発者もしくはシステムオペレータは、様々なクラウドインフラストラクチャプロバイダの要求に応じて、法人用データセンタのプライベートクラウド環境において、新しいクラウドサーバを作成することができる。これは、スクリプトの集合および所定のマシン画像の集合を用いて容易となり得る。
各IoTプラットフォームエンジン101は、図2Bに示されるように、複数の機能モジュールを有し得る。一局面において、エンジンクラスタ101CLが作成され得て(図21、ブロック2130)、IoTプラットフォームエンジン101は、サーバノードクラウド1900SNのうちの様々に選択可能な数のサーバ/エンジンノードSN1−SNn(図21、ブロック2135)に配置され得る。複数の機能モジュールのうちの少なくとも1つの機能モジュールは、選択可能にサーバノードSN1−SNnにプラットフォームエンジン101を設けるように構成される提供エンジンモジュール1960であり、複数の機能モジュールのうちのその他は、封止ストレージ部の外部のプラットフォームエンジンの複数の機能モジュールから封止され、IoTユーザ証明および提供エンジンモジュール1960を含むプラットフォームエンジン101の機能モジュールの機能へのアクセスおよび変更についての権限を保管する、セキュア封止ストレージ部101EVである。一局面において、サーバノードクラウド1900SNは、サービスとしてのインフラストラクチャ(IAAS)プラットフォーム、もしくはプライベートサーバクラウドとして配置される。
セキュアされ封止されたストレージ101EVは、提供エンジンモジュール1960を初期化する認証を含むユーザ権限へのアクセスを管理および認証し、プラットフォームエンジン101が配置されるサーバノードSN1−SNnの数を柔軟に提供選択することを確実にするように構成される。セキュア封止ストレージ部101EVは、セキュア封止の統合の提供が、IoTプラットフォームエンジン101の外部とは切り離されて維持されるように配置される。一局面において、プラットフォームエンジン101は、分散型ストレージ層1970を有して構成され、セキュア封止ストレージ部101EVは、分散型ストレージ層1970内に配置される。一局面において、セキュア封止ストレージ部190EVは、複数のサーバノードSN1−SNnに渡って分散し、セキュア封止ストレージ部101EVの機能を有効化するように、複数のサーバノードSN1−SNn内において少なくとも最低限の決定数だけ設けられる。
一局面において、IoTプラットフォームエンジン101の複数の機能モジュールのうちの少なくとも1つは、中央サービス検出監視機能1975を定義する。中央サービス検出監視機能モジュール1975は、複数のサーバノードSN1−SNnに渡って分散し、中央サービス検出監視機能モジュール1975の中央サービス検出監視機能を機能させるように複数のサーバノードSN1−Snn内において少なくとも最低限の決定数だけ設けられる。一局面において、エンジンクラスタ101CLにおいて作成されたサーバノードSN1−SNnの第1のセットは、耐障害性のために他のサーバノードSN1−SNnから地理的に遠隔のデータを探索し得る中央サービス検出監視機能モジュール1975であり得る。
上記のように、セキュアされた封止ストレージ101EV部は、プラットフォームエンジン101が配置されるサーバノードSN1−SNnの数についての柔軟な提供選択を機能させるように、提供エンジンモジュール1960を初期化する認可を含むユーザ権限へのアクセスを管理および認可するように構成される。一局面において、IoTプラットフォームシステム100は、任意の適当な態様で、必要なサーバノードSN1−SNnサービスを判定し得る(図21、ブロック2140)。サーバノードSN1−SNn上にインストールされ得る様々なサービスのためのインストールスクリプトは、開発者マシン上で記述され、任意の適当なコードリポジトリへ引き渡され得る。一局面において、IoTプラットフォームシステム100における各サービスに対応するスクリプトがあり、サービスは、どのサービスがサーバノードNS1−SNnに対して決定/割り当てされているかに基づいて、サーバノードSN1−SNnに渡される。サーバノードSN1−SNnサービスは、例えば、必要なサーバノードSN1−SNnサービスによって、必要に応じて初期化され得る(図21、ブロック2145)。中央サービス検出監視機能1975は、提供モジュール1960が設けられると新しく提供されたサーバノードSN1−SNn上の各プラットフォームエンジンサービスの実行開始を登録するように構成される。例えば、サービスにより、それぞれのサーバノードSN1−SNnにおいてサービスが実行されていることについて中央サービス検出監視機能1975に報告され得る。これにより、中央サービス検出監視機能1975を用いて、どのサービスがどのサーバノードSN1−SNn上で実行されているかについて追跡することができ、IoTプラットフォームシステム100の他の部分がサービスの場所を検出することができる。中央サービス検出監視機能1975は、サービスの状態の変化が中央サービス検出監視機能1975によって知られるように、割り当てられたサーバノードSN1−SNn上でサービスが実行されているかどうかが周期的に確認され得る。
一局面において、提供エンジンモジュール1960は、プラットフォームエンジン101が設けられるように提供されているサーバノードSN1−SNnの数についての提供選択、選択されて提供されたサーバノードSN1−SNnの数についてのネットワークトポロジの選択、およびプラットフォームエンジン101の所定のサービスからのサービスの選択を機能させ、提供されている選択されたサーバノードSN1−SNnの各々についての選択されたサービスを開始するように構成される。一局面において、提供エンジンモジュール1960は、1つの構成ファイルおよび選択されたサーバノードSN1−SNnの各々についての実質的に自動設定を有効化する提供エンジンモジュール1960に対して供給される1つの提供スクリプトに対する選択入力を用いて、提供されている選択されたサーバノードSN1−SNnの各々に対する選択されたサービスの選択および設定を行うように構成される。例えば、作成されるサーバノードSN1−SNnの数、それらのトポロジ、および各サーバノードSN1−SNnでどのサービスが開始されるかについては、1つの提供スクリプトにおいて特定され得る。構成ファイルは、IoTプラットフォームシステム100の任意の適当なコードリポジトリに内在し得る。開発者は、構成ファイルをそれらのマシンに引き出し、コードリポジトリに内在し得る提供スクリプトに対して構成ファイルを供給し得る。この提供スクリプトは、構成ファイルを使用し、どのサーバノードSN1−SNnを作成するか、および作成されたサーバノードSN1−SNnにどのサービスをインストールするかについて決定する。
プラットフォームエンジン101のサーバノードSN1−SNn容量は、任意の適当な態様で監視され得て(図21、ブロック2150)、プラットフォームエンジン101のサーバノードSN1−SNn容量は自動的に管理される(図21、ブロック2155)。この高度な自動化は、IoTプラットフォームシステム100は、短期間内(例えば、約3分以内、または他の局面において、約3分より長いもしくは短い期間)においてプラットフォームエンジン101容量を増減させることを可能にし、また、IoTプラットフォームシステム100ネットワークのサブセクションをプラットフォームエンジン101のサブセクションに割り当てることを可能にし、これは、直線的に拡張可能な形式でのエンジン容量の計画を可能にする。例えば、IoTプラットフォームシステム100ネットワークのサブセクションに接続しているIoTエッジデバイス120の数は、設置時間において予測可能であり得る。新しいネットワーク設置(例えば、エッジデバイス)が追加されると、サーバノードSN1−SNnの新しいセットが作成され、新しい場所からのデバイスデータが取り扱われる。外的事象によって、例えば、IoTエッジデバイス120のユーザから重いデータ負荷が予測される場合、新しいプラットフォームエンジン101容量が、計画されていなかった要求に対応するために迅速に提供され得る。
一局面において、新しいサーバノードSN1−SNn上で開始される第1のサービスのうちの1つは、プラットフォームエンジン101の初期ポータル1999を公開する1つまたは複数のサービスである。初期ポータル1999は、固定アドレスと、IoTプラットフォーム通信ネットワークノード110の開始時にこの初期ポータル1999に接続するIoTプラットフォーム通信ネットワークノード110のうちの1つまたは複数とを有する。初期ポータル1999は、どのIoTプラットフォーム通信ネットワークノード110MACアドレスがサーバノードSN1−SNnのどのサブセットに割り当てられているかについて追跡し続け、そのサーバノードSN1−SNnのサブセットにおける新しいポータルにIoTプラットフォーム通信ネットワークノード110を切り換え得る。
一局面において、設定時において、選択されたサーバノードSN1−SNnメタデータファイル101MDのうちの各それぞれは、選択されたサーバノードSN1−SNnのうちのそれぞれに一意に対応する秘密鍵PVK(図17、ブロック1700)で署名される。秘密鍵PVKは、それぞれの選択されたサーバノードSN1−SNnに対応すると共に、セキュア封止ストレージ部101EV内に封止される(図17、ブロック1710)。秘密鍵PVKは、それぞれの選択されたサーバノードSN1−SNnの設定時の署名の受信において、セキュア封止ストレージ部101EVによって認証される(図17、ブロック1720)。例えば、新しいおよび/または追加のプラットフォームエンジン101サーバノードSN1−SNnは、プラットフォームエンジン101サーバノードSN1−SNnのメタデータファイル101MDを使用して認証/認可され得る。プラットフォームエンジン101サーバノードSN1−SNnには、エンジン保管庫101EVアクセス制御リストにおける特権も割り当てられ得る。プラットフォームエンジン101サーバノードSN1−SNnは、メタデータファイル101MDを有効化することによってエンジン保管庫101EVを用いて自身で認証し得る(例えば、メタデータファイル101MD内のメタデータを有効化することにより、メタデータが、提供スクリプトによってメタデータファイルが署名された時と同じであるかどうかをチェックし、メタデータは、各プラットフォームエンジン101サーバノードSN1−SNnに固有である)。ひとたび認証されると、プラットフォームエンジン101サーバノードSN1−SNnには、本明細書中において説明されるような本開示の態様を実行するための任意の適当な鍵が与えられる(図17、ブロック1730)。
図18を参照すると、一局面において、サーバノードSN1−SNnへの人のアクセスは、認可された人員のみに与えられ、サーバノードSN1−SNnへのすべてのアクセスは監査のために記録される。VPN上のセキュアシェル(SSH)を通じてサーバノードSN1−SNnへのアクセスを求めるユーザ1800は、ユーザ/パスバックエンドUBEおよび二要素認証SFAを通じてエンジン保管庫101EVを用いて認証される。ここで、エンジン保管庫101EVは、認証局CAとして稼働する。サーバノードSN1−SNnは、サーバノードSN1−SNnの設定時において、エンジン保管庫10EVを信頼された認証局CAとして信頼するように構成される。サーバノードSN1−SNnへのアクセスを求めるユーザ1800は、新しいSSH鍵ペアSSHKを生成すると共に、SSH鍵ペアSSHKに署名するようにエンジン保管庫101EVに要求し得る。エンジン保管庫101EVによって署名されたSSH鍵ペアSSHKは、エンジン保管庫101EVを信頼する任意のサーバノードSN1−SNnにアクセスし得る。一局面において、エンジン保管庫101EVは、複数の認証局ゾーンZ1−Znを有して、ユーザ1800によってどのサーバノードSN1−SNnがアクセスされるかを制御するように構成され得る。一局面において、SSHアクセスセッションは短期間であり、各サーバノードSN1−SNn上のスクリプトは、約10分より長い時間で全てのSSHセッションを終了する(他の局面において、SSHセッションは、時間が10分より長いか、または短いものであり得る)。ルートとしてのSSHアクセスは、管理者ADM1−ADM5に制限され得る。通常のユーザは、診断のためにSSHアクセスによりサーバノードSN1−SNnにログインし得るが、ルートアクセスの特権を得られ得ない。
図2Aおよび図2Bを参照すると、上記のように、IoTプラットフォームシステム100は、低電力の無線エッジデバイスからクラウドサーバまでの広範囲にわたる近代的なフレームワークであり、多様な産業におけるIoT使用事例としてのシステムに対する高速な開発、信頼性のある稼働、および精細な制御を可能とする。プラットフォームエンジン101は、分散型ストリーム処理、デバイスライフサイクル管理、大規模のデバイスデータについての効率的な保管/問合せ、およびデバイス間のリアルタイムの協働のための柔軟なクラウド構築デバイスである。プラットフォームエンジン101は、高度にカスタマイズ可能であり、マシン学習を伴うリアルタイムデバイスアクタに対して、例えば、法人用ビジネス処理への物理デバイスの統合を助けるストリーミング決定パイプラインを設けたものである。また、プラットフォームエンジン101は、法人用システムと接続されたデバイスとの強力な統合を可能にするために、プラグ接続可能な法人用統合モジュールとともに、近代的な安定したストリーミングのアプリケーションプログラミングインターフェース(API)を提供する。
上記のように、図2A、図2B、および図19を参照すると、プラットフォームエンジン101は、複数のサーバマシンSN1−SNnのクラスタ(グループ)上で実行される。これらのマシンSN1−SNnは、例えば、Amazon EC2(登録商標)、Google(登録商標)Compute Engine、もしくはMicrosoft Azure(登録商標)などのクラウドサービスとしてのインフラストラクチャプラットフォーム、または、例えば、OpenStack(登録商標)、VMWare vSphere(登録商標)などに基づくプライベートクラウドを有するプライベートデータセンタにおいて提供され得る。プラットフォームエンジン101(サーバマシンSN1−SNnのうちの1つまたは複数を含む)は、サービスとしてのインフラストラクチャが利用可能でない場合には、データセンタにおけるサーバマシンに直接的に提供され得る。プラットフォームエンジン101は、様々な指示される下層のインフラストラクチャに渡って一貫したプログラミングインターフェースを提供するプラットフォームエンジンインフラストラクチャ層を有し、これにより、新しいサーバマシンSN1−SNnを提供し、サーバマシンSN1−SNn間のネットワーク接続性を構成し、既存の利用可能なインフラストラクチャ/提供されたインフラストラクチャの状態についての保管および問合せを構成する。また、プラットフォームエンジンインフラストラクチャ層は、プラットフォームエンジン101クラスタにおける全てのサーバマシンSN1−SNnについての中心的な役割の指定、記録、健全性、チェック、および監視を提供する。一局面において、プラットフォームエンジンインフラストラクチャ層は、分散型ストレージ1970層を使用して、上記の情報を保管する。
例として、プラットフォームエンジン101は、これらのIoTデバイスの機能をサポートするIoTデバイスおよびサーバの複合ネットワークの稼働時に生成される複数種類のデータを保管および適時のアクセスを可能とする。プラットフォームエンジン101は、共通のアクセスパターンの保管および速度の信頼性について高度に最適化された分散型ストレージ1970層を提供する。分散型ストレージ1970層は、冗長的な信頼性の高い保管、データの高度な利用可能性、並列処理、およびIoTプラットフォームシステム100上で実行されるアプリケーションの水平方向のスケーラビリティのために、複数のマシンにわたって分散され得る。一局面において、分散型ストレージ1970層は、分散型ファイルシステム1971と、グラフストレージ1972と、メタデータ(鍵値)ストレージ101MDと、エンジン保管庫101EVと、エンジン監視データベース1975とを有する。分散型ストレージ1970層の例示的なグラフィック表示は、図22に示される。
分散型ファイルシステム1971は、システムログなどの大きなファイルの複数の地理的に冗長な写しを保管するように構成される。分散型ファイルシステム1971は、グラフストレージ1972およびメタデータ(鍵値)ストレージ101MD等、ストレージ層の他の部分に保管されるデータについてのバックアップ保管としても構成される。
IoTシステムにおけるデバイスは、様々なビジネスアセットの状態について報告する。例えば、駐車センサは、駐車スペースの状態について報告し得る。デバイスとそれらが報告するアセットとの関係は、アセットナレッジグラフでモデル化される。グラフストレージ1972層は、このグラフを確実かつ効率的に保管するように構成され、このグラフについての迅速な問合せおよび横断(travasal)を可能にする。
メタデータ(鍵値)ストレージ101MDは、システム状態およびメタデータを保管するように構成され、分散型ファイルシステムによってバックアップされる、大規模の高度な耐障害性を有する鍵値データベースを有する。このデータベースは、書き込み操作の信頼性と永続性を保証するために、障害が発生した場合の整合性の高いストレージを優先する。書き込みが少なくとも大多数のストレージサーバによって確認されない場合、書き込みは拒否される。ひとたび書き込みが確認されると、永続的なものとなり、書き込みのインデックスは、半永久的に固定され、固有のものとなる。読み取り動作は、どのコピー(replica)においても並行して行われ得る。
エンジン保管庫101EVは、いくつかの暗号化鍵および証明(本明細書中において説明されるように)(本明細書中において秘密という)を保管し、システムのセキュリティを確保するように構成される。エンジン保管庫101EVは、必要な場合のみ、メモリ内のみにおいて、これらの秘密を暗号化および復号化し続けるように構成される。秘密は、ディスクに対して暗号化されていない形式で書き込まれることはない。エンジン保管庫101EVは、安全な複数要素ユーザ認証と、ユーザとマシンがアクセス権を持っているデータにのみアクセスできることを保証する精細な許可に基づく認証システムを可能にする。本明細書中において説明されるように、エンジン保管庫101EVは、一時的な秘密を動的に生成し、ユーザ/マシンに対して発行する全ての秘密にリースを関連付ける¥リース機構を実施するように構成される。この動的な秘密の生成およびリースにより、危険にさらされた場合であっても、秘密は永遠に危険にさらされることはなく、全体的なセキュリティが向上する。また、本明細書中において説明されるように、エンジン保管庫101EVは、認証局(CA)でもあり、ゲートウェイおよびサーバを認証するために使用される証明を生成することができる。エンジン保管庫101EVは、例えば、IoTエッジデバイス120に対してデータの認証および暗号化/復号化を行うために使用されるデバイスセッション鍵を保管するように構成される。
エンジン監視データベース1975は、各サーバマシンSN1−SNnに対して割り当てられた役割およびサービスを保管するように構成される。エンジン監視データベース1975は、各サーバマシンSN1−SNnについての健全性データを保管するように構成され、エンジンインフラストラクチャ層がプラットフォームエンジン101クラスタにおける全てのサーバマシンSN1−SNnの健全性を監視するのに役立つ。
エンジンコア101ECは、プラットフォームエンジン101の稼働に必要なサービスのコアセットを実施するように構成される。これらのサービスは、ユーザ管理、認証、および認可を含む。これらのサービスは、エンジン保管庫101EVに保管されるデータに依存し、リソースにアクセスする許可を有しているかどうかを認証し、チェックするように構成される。エンジンコア101ECは、IoTプラットフォームシステム100の他の部分が様々なストレージシステムと通信するためのプログラミングインターフェースを提供するように構成される。加えて、エンジンコア101ECは、エンジンにおける各物理的アセットを表すために使用される軽量のパラレルアクタ処理を作成し、実行し、および破壊するための方法を提供するように構成される。これにより、様々なアセットアクタが互いにリアルタイムで通信し、メッセージ送信し得る。エンジンコア101ECは、失敗した場合にはアクタを再び開始させるように構成され、特定のサーバへの負荷が大きすぎる場合には異なるサーバへ再分配することができる。アクタの現状は、分散型グラフストレージ1972およびメタデータストレージ101MDによってバックアップされたアセットナレッジグラフに保管される。
アセットナレッジグラフ1972Gは、マシンのクラスタに亘って分散された数千億の頂点およびエッジを保管し得る分散型グラフストレージ1972に保管されるプラットフォームエンジン101のデータ構造である。プラットフォームエンジン101、IoTエッジデバイス120、ネットワークノード110、サーバマシンSN1−SNn、ユーザ、アセットなどは、全て「アセット」としてモデル化される。全てのこれらの実体(entites)は、概してアセットとして考慮される。全てのアセットは。アセットナレッジグラフ1972Gと呼ばれるデータ構造内の頂点として保管される。例示的なアセットナレッジグラフは、図23および図24に示される。アセット間の関係は、対応するアセット頂点を接続するエッジとして保管される。頂点およびエッジの両方は、特性を保管し得る。頂点は、アセットの1つまたは複数の特性/属性を保管し、エッジは、2つのアセット間の関係の1つまたは複数の特性/属性を保管する。2つのアセット間のエッジは、アセット間の関係に応じて、一方向もしくは双方向となり得る。新しいエッジは、グラフ内における様々なアセットについての情報をエンジンがより学習することで確立され得る。この新しい情報は、ユーザ入力から、または、アセットの履歴データを見ることでアセット間の関係について学習し得るマシン学習アルゴリズムから得られ得る。例えば、図24に示されるように、トラックは長さが変化する傾向があるので、2つの駐車センサが必要となり得るトラック駐車スペースにおいて、その駐車スペースの最終的な占有を決定することに対する各センサの貢献についての重みが、時間をかけて学習され得る。この重みは、各センサと駐車スペースとの間のエッジの特性として保管され得る。
一局面において、アセットは、プラットフォームエンジン101内部における極度に軽量の実行処理でアニメーション化され得る。これらの処理は、互いにメッセージを送信し合い、互いに協力して決定を行い得る。例えば、特定の街路上のIoT駐車センサ(例えば、IoTエッジデバイス)を表すアクタは、大きな磁力事象を見つけるたびにその街路上の他のIoT駐車センサアクタにメッセージを送信し得る。1つのIoT駐車センサから見た場合には駐車事象に見えても実際には街路の下を通過する地下鉄のような何か別のものであるという事象を否定することによって、IoT駐車センサの精度を向上させ得る。
プラットフォームエンジン101のアセットナレッジグラフ1972G層は、これらのアクタ処理のライフサイクルを管理し、通信モジュール173の層173Lを用いたアクタ間のメッセージのやり取りを可能とする。アセットナレッジグラフ1972G層は、故障の際にもアクタを復活させて再開させるように構成される。アセットグラフ1972Gは、所定のパラメータに基づく頂点を見つけるためにグラフ1972Gを問合せおよび横断するための問合せインターフェースを提供する。
層173Lは、IoTプラットフォームシステム100全体に亘るデータのフローを可能とし、これを管理する。層173Lは、「ストリーム」を実施するように構成される。ストリームにより、データ作成者は、確実にデータを公開し、ストリームの消費者への少なくとも1度のメッセージの送達が保証される。データがストリームに公開されると、コンセンサスアルゴリズムを使用して分散型の追加専用(append-only)ログに書き込まれ、これによってストリームにおけるメッセージのインデックスが決定され、永続的なメッセージの順序付けがもたらされる。また、ストリームにより、ストリームに新しいメッセージが到着した際にすぐにオンライン消費者に通知される購読機構が可能となる。オフラインバッチ消費者もまた、サポートされており、各登録された消費者の最後に消費したインデックスをストリームが確実に保管し、消費者は、任意の適当な時間に戻ることができ、離れた箇所から継続することができる。ストリームは、プラットフォームエンジン101およびIoTプラットフォームシステム100の残りの部分において使用され、信頼性の高い順序付け、作成者の消費者からの切り離し、メッセージの信頼性のある経路選択、およびメッセージ送達保証が提供される。層173Lは、サーバマシンSN1−SNn、ネットワークノード110、および外部システムの間のメッセージのフローを可能とするポータルを提供する。
ネットワークノード110は、TCP接続を通じてポータル1999を介してプラットフォームエンジン101に接続する。ポータル1999は、TCP/TLSサーバおよびデバイス登録サービスを提供するように構成され、デバイス登録サービスにより、IoTエッジデバイス120またはネットワークノード110は、特別に作られたチャレンジ/レスポンスアルゴリズムを使用して認証すると共に、プラットフォームエンジン101を登録することが可能となる。ひとたびIoTデバイス110、120が上手く登録されると、共有セッション鍵が、IoTデバイス110、120とプラットフォームエンジン101との間に上手く確立される。プラットフォームエンジン101は、アセットアクタを開始し、プラットフォームエンジン101内のIoTデバイス110、120を示す。アセットアクタは、IoTデバイス110、120のすべての既知の属性および関係が、基礎となる資産知識グラフ1972Gに示されることを保証する。ネットワークノード110が接続されるTCPサーバエンドポイントからデータが流れ始めると、データは、ストリームネットワーク入力に経路選択され、そこで永続的に(または他の態様において一時的に)ネットワークノード110から入ってくる全てのメッセージを保管し、プラットフォームエンジン101の視点からのメッセージの永続的な順序を確立する。ひとたびメッセージがこのストリームに保管されると、MAC(メディアアクセスコントローラ)ベースのメッセージルータがすべての入ってくるメッセージを見て、そのMACアドレスを有するデバイスに対応するアクタにメッセージが送信される。MACアドレスは、IoTプラットフォームシステム100内で固有である。ひとたびメッセージがデバイスアセットアクタに受け渡されると、メッセージは、事前に確立された共有セッション鍵を使用して復号化され得る。デバイスアセットアクタは、暗号化し得ると共に、ネットワーク出力ストリームへの書き込みによって対応する物理デバイスにメッセージを送り返すことができる。このストリームは、プラットフォームエンジン101からIoTプラットフォームシステム100へ出て行くすべてのメッセージの順序を確立し得る。デバイスアセットアクタは、それぞれのIoTデバイス110、120のライフサイクルを管理し、検知アルゴリズムを実施し、構成を可能とし、ファームウェア更新の送達を可能とし、IoTデバイス110、120が送信するメッセージに基づいて物理的世界におけるそれぞれのIoTデバイス110、120の状態を継続的に追跡する。デバイスアセットアクタは、物理的IoTデバイス110、120のためのプロキシとなり、IoTデバイス110、120が積極的に通信しない場合であってもIoTデバイス110、120について知られている最終の状態を報告し得る。
プラットフォームエンジン101は、MQTTのようなオープンプロトコルを介して、IoTプラットフォームシステム100から離れた、他のIoTデバイスネットワークとの通信に対するサポートをも提供し得る。プラットフォームエンジン101は外部の法人用サービスとのリアルタイムの統合もサポートし得る。この外部法人用サービスとのリアルタイムの統合は、特定の法人用システムのために特定的に実施されるカスタム統合ポータルと共にMQTTおよびCoAPなどの通信プロトコルのための層173Lによって生成される再利用可能ポータル(ポータル1999と同じであってもなくても良い)を用いて可能となり得る。このプラットフォームエンジン101の層は、アセットナレッジグラフ1972G内に外部ビジネスアセットおよびそれらの属性を示すことをサポートすると共に、これらの外部ビジネスアセットのアセットファクタの作成もサポートする。例えば、都市管理システムは、プラットフォームエンジンに対して、駐車スペースのような都市アセットについてのデータ(例えば、スペースの場所、そのスペースについての1時間毎の値段、そのスペースについての駐車規則等)を提供し得る。この駐車スペース情報は、アセットナレッジグラフ1792Gにおいて、駐車スペースアセットの属性として保管される。都市管理システムは、例えば、駐車スペースがこの街路にあるなど、アセット間の関係についてのデータも提供し得る。これらの関係は、アセットナレッジグラフ1972G内に保管される。外部システムは、例えば、駐車スペースの状態もしくは街路照明の状態など、特定のアセットの状態について登録することも選択し得る。街路照明を表すアクタが、街路照明がもうすぐ故障すると予測した場合、すぐに外部都市システムに通知し、これにより、メンテナンス処理を開始し得る。
プラットフォームエンジン101の洞察モジュール/エンジン174層は、デバイスおよび他のアセットデータについてのバッチおよびストリーム分析を提供する。洞察モジュール/エンジン174層により、データが大きくなり続けても、予測可能な潜在性(latency)についてのアセットデータの平行および水平な縮尺調整可能処理(scalable processing)が可能となる。洞察モジュール/エンジン174層は、様々な解析およびマシン学習アルゴリズムを使用して、サマリー統計を得る、興味深いもしくは異例の事象を検知する、故障を予測する、決定モデルを学習する、などを行う。プラットフォームエンジン101の内部において実施されるアルゴリズムの一部の例としては、駐車スペースがどのくらい長い間占有されるか/占有されないかについての予測、ユーザの指向および履歴についての利用可能なデータに基づいた理想的な駐車スペースの推奨、街路照明の故障の予測、デバイスログに基づく疑わしいセキュリティ事象の分類、および隣接するトラック駐車スペースまたは現実のトラック駐車事象からの磁気影(magnetic shadow)の分類などが含まれる。
プラットフォームエンジン101の仮想マシン181層(仮想マシン154および160も参照)およびIoTプラットフォームシステム100の全体は、接続されたデバイスのネットワークの頂部で動作するビジネスロジックをすぐにカスタマイズし、反復する方法を提供する。仮想マシン181層は、IoTデバイスのような他のアセットから入ってくる情報に基づいてアセットの状態を決定することができる、新しいビジネス規則、ビジネスロジック、およびデータフローロジックを入力するためのドメイン特定プログラミング言語(DSL)およびユーザインターフェースを提供する。仮想マシン181層は、バッテリの温存および決定潜在性(latency)の向上のために、提供されるビジネスロジックのどの部分に対して物理IoTデバイスをプッシュすることができるかについて、知的に決定するように構成される。ひとたびデバイスアセットアクタによって、仮想マシン181層が、どの部分がデバイス上で実行されるか、およびどの部分がプラットフォームエンジン101上で実行されるかを決定すると、仮想マシン181層は、新しいファームウェア、および仮想マシン181層のファームウェア編集パイプラインを使用してIoTデバイスに伝達される仮想マシンバイトコードを動的にコンパイルすることができる。この更新されたファームウェアおよびバイトコードは、ポータル1999内の対応するアセットアクタに対して伝達され、IoTデバイスの更新が開始される。
プラットフォームエンジン101は、外部システムおよびIoTプラットフォームシステム100アプリケーションのためのストリーミングアプリケーションプログラミングインターフェース(API)およびHTTP APIを提供し、プラットフォームエンジン101と対話する。アプリケーションは、アセットの作成、アセットの変更、グラフ1972Gクエリに基づくアセットの検出、1つまたは複数のアセットの状態の登録などを行う。IoTプラットフォームシステム100アプリケーションフレームワークは、ラッパされたライブラリのセットであり、IoTプラットフォームシステム100APIとの対話およびアプリケーションの構築が容易となる。
洞察モジュールエンジン174は、センサおよび他のアセットデータに基づき、迅速にデータ可視化ダッシュボードを構築するグラフィックツールを提供し得る。グラフィックツールにより、リアルタイムのデータの可視化が容易となり、履歴アセットデータの複雑な問合せも可能にする。IoTプラットフォームシステム100は、開発キットも含み得て、開発キットは、少なくとも新しいIoTエッジデバイス120のプロトタイプ作成を容易にするグラフィックユーザインターフェースおよびハードウェアツールのセットである。
図2Aおよび図2Bを参照し、IoTプラットフォームシステム100における例示的なデータフローについて説明する。層173Lにより、IoTプラットフォームシステム100の全体にわたるデータのフローが可能となる。層173Lは、IoTプラットフォームシステム100における分散層であり、IoTエッジデバイス120、ネットワークノード110、プラットフォームエンジン101、およびIoTプラットフォームシステム100を使用して構築されるユーザインターフェースアプリケーションに対して作用する。層173Lは、ノード(例えば、サーバマシンSN1−SNn)上で実行されるアクタからなる。各ノードは、node_idによって固有に識別され、node_idは、ノード毎に固有の8バイトの長さの二値数である。ハードウェアの6バイトアドレスは、例えば、0x0000AAAAAAAAAAAA等、2つの先頭の0バイトを有する8バイトで表される。各アクタは、{node_id、actor_id}によって固有に識別される。actor_idは、ノード(アクタを有する)が局所的にルーティングすることができ、全体的に識別することができるものである。層173Lは、IoTデバイスの仮想マシンの内部において、例えば、Cプログラミング言語およびアセンブリ言語(CHASM)を使用して実施される。層173Lは、ネットワークノード110の内部において、例えば、Cプログラミング言語およびErlang/Elixirを使用して実施される。層173Lは、プラットフォームエンジン101の内部において、例えば、Cプログラミング言語、Erlang/Elixir、およびRubyを使用して実施され得る。層173LはSらに、IoTプラットフォームシステム100ユーザインターフェースアプリケーションの内部において、例えば、Javaスクリプトを使用して実施され得る。層173Lは、他の任意の適当なランタイム環境において実施され得るように設計される。IoTプラットフォームシステムの各ノードは、1つのlayer_managerアクタを得る。
層173Lマネージャは、ネットワークノード110およびプラットフォームエンジン101上のErlang/Elixirランタイムの内部で開始され得る。例えば、層173Lerlang/elixirアプリケーションがプラットフォームエンジン101におけるサーバマシンSN1−SNn上で開始されると、layer_manager erlang処理がそのサーバマシンSN1−SNn上で開始される。この処理は、このサーバマシンSN1−SNn上で開始される全てのストリームおよびポータルを追跡し続ける。
層173Lマネージャは、プラットフォームエンジン101におけるJavaランタイムの内部およびAndroid(商標)デバイス上で開始され得る。例えば、層173L JRubyアプリケーションがJavaランタイム内部で開始されると、Celluloid layer_manager処理がそのマシン上で開始される。この処理は、このマシン上で開始される全てのストリームおよびポータルを追跡し続ける。
層173Lマネージャは、仮想マシン(VM)154、160、181の内部で開始され得る。層173Lが仮想マシン154、160、181を実行するIoTデバイス110、120(およびプラットフォームエンジン101)に対して利用可能となった場合、layer_managerルーティンがVMバイトコードプログラムに挿入され、バイトコード更新パッチの一部として、IoTデバイス101、110、120に対して送達される。このルーティンは、このIoTデバイス110、120(および/またはプラットフォームエンジン101)上でアクティブな全てのストリームおよびポータルを追跡する。
層173Lマネージャは、ウェブブラウザ、ウェブベースの携帯アプリケーション、NodeJS、もしくはRhinoにおけるJavaスクリプトランタイムの内部において開始され得る。例えば、層173Lがjavaスクリプトランタイムの内部で開始されると、layer_managerウェブワーカ処理がIoTマシン/デバイス上で開始される。この処理は、このマシン上で開始される全てのストリームおよびポータルを追跡し続ける。層173Lを実行するIoTデバイス/マシンは、層173Lポータルを介して層173Lを実行する他のマシンと接続し得る。層173Lポータルは、特定のタイプのアクタであり得る。層173Lポータルは、TCP/TLSポータル、WebSocketポータル、HTTPポータル、Radioポータル、Javaノードポータル、SSHポータル、およびRadioポータルを含むが、これらに限定されない。層173Lポータルは、サポートするデータのフローについて、双方向(インバウンドおよびアウトバウンドのデータの両方をサポートする場合)または一方向に設定される。
層173L内のデータは、メッセージとして動き回り、層173Lストリームによって管理される。ストリームは、メッセージおよびメタデータを保管することができる。ストリームは、Layer.create(stream_id、options)を呼び出すことにより、ローカルマシン上で作成することができる。ストリームは、Layer.create({node_id、stream_id}、options)を呼び出すことにより、リモートマシン上で作成することができる。メッセージの作成者は、ストリーム上のインデックスに割り当てられたストリームに対してメッセージが書き込まれる場合は、Layer.publish(stream_id、message)を呼び出すことで、またはリモートマシン上でLayer.publish({node_id、stream_id}、message)を呼び出すことで、メッセージを公開することができる。ストリームは、last_written_indexを、ストリームメタデータにおける鍵として維持し、これが最後にストリームに書き込まれたメッセージのインデックスとなる。
メッセージの消費者は、Layer.register_consumer(stream_id、consumer_id、options)を呼び出すことにより、ローカルストリームに登録することができる、またはLayer.register_consumer({node_id、stream_id}、consumer_id、options)を呼び出すことにより、リモートストリームに登録することができる。消費者は、特定のストリームに登録された消費者のグループ内の固有のidでストリームに登録するのが望ましい。典型的には、{node_id、consumer_id}であり、consumer_idは、ノード上のアクタのidである。場所は重要ではなく、特定の名前を有する消費者は、特定のマシンに対してクラッシュを起こし、他の場所へ行く可能性もある。消費者は、オンラインもしくはオフラインであり得る。これは、モードオプションによりオプションで指定され得る。オンライン消費者は、ストリームで到達する全てのメッセージをすぐに送信する。オフライン消費者は、メッセージが消費されたことをマーキングした場合にのみメッセージが送信される。オフライン消費者がインデックス10を用いて消費したものとしてメッセージをマーキングし、ストリームのlast_written_indexが0より大きい場合、インデックス11を有するメッセージが消費者に送信される。消費者は、メッセージを消費した時に、消費したものとしてメッセージをマーキングするのが望ましい。メッセージは、ローカルストリームにおいては、Layer.set_consumed(stream_id、consumer_id、index)を用いて消費したものとしてマーキングし、リモートストリームにおいては、layer set_consumed({node_id、stream_id}、consumer_id、index)を用いて消費したものとする。ストリームは、ストリームに登録された各消費者について、last_consumed_indexを維持する。ストリームは、各消費者についての最後切り捨てリスト(truncated tail list)を維持し、どのメッセージがすでに消費されたかを追跡する。オンライン消費者はプッシュされたメッセージを異なる速度で消費し、メッセージの消費を自由に並列化し得るので、切り捨てられた末尾リストは、メモリ使用量を低く抑えながら、消費されたものを追跡するのに役立つ。リストの末尾にある連続した領域はすべて切り捨てられる。
一局面において、メッセージは、ストリームによって消費者に対してプッシュされる。オンライン消費者は、到着のレートと同等のレートでメッセージを消費しなければならない。より多くの時間がかかる消費者は、オフラインとしなければならない。以前のメッセージについての受取確認が受信された場合にのみオフライン消費者に対してメッセージがプッシュされる。これにより、レートの限定および加速が助けられる。バッチ処理の消費者は、ストリームの下方のストレージに対してオフバンドで直接的に対話し、終了時にストリームにおいてlast_consumed_indexを更新することにより、メッセージを処理することができる。消費者は、last_consumed_indexおよびlast_written_indexで全てのメッセージを処理することができる。
メタデータは、鍵と値とのペアとしてストリーム上で保管され得る。メタデータ鍵値ペアは、Layer.set(stream_id、{key、value})を呼び出すことでストリームに書き込むことができる、またはLayer.set({node_id、stream_id}、{key、value})としてリモートストリームに書き込むことができる。メタデータ値は、Layer.get(stream_id、key)を呼び出すことでストリームから読み出すことができる、またはLayer.set({node_id、stream_id}、key)としてリモートストリーム上で読み出すことができる。このメタデータは、自身のストレージを維持することを望まず、ストレージの必要に応じてストリームに依拠する短期的な消費者を可能にする。
ストリームは、ストリームのアドレスであるペア{node_id、stream_id}によって完全に識別される。これらの識別されたストリームは、層173Lが実行されているランタイムに基づいて、プロセスID(process identities)またはルーティンID(routine identifiers)にマッピングされる。
層173Lポータルは、層173Lマネージャ間の接続を作成するストリームまたは消費者への正確な経路は、ローカル層173Lマネージャに問合せることによって検出し得て、ローカル層173Lマネージャは、メッセージをストリームまたはコンシューマに経路選択するために呼び出す機能により応答し得る。例えば、node_idが提供されているか?提供されていない場合、宛先actor_idへローカルに経路選択する。ノードは内部にnode_idを有しているか?有している場合、宛先actor_idへローカルに経路選択する。メッセージが外部ノードに到達した時にnode_idが外部ノードへのポータルへの外部経路である場合、宛先actor_idへローカルに経路選択する。
ストリームに書き込まれるデータ(メッセージおよびメタデータ)は、様々なストレージバックエンドに保管することができる。バックエンドには、HBaseストレージバックエンド(Apache HBaseにデータを保管する)、メモリストレージ内バックエンド(メモリにデータを保管する)、およびCoracleストレージバックエンド(これは、RAFTコンセンサスプロトコルの実施である)が含まれるが、これらに限定されない。層173LストリームからCoracleを使用することにより、複数の異なるマシン上で実行されるストリームを示す複数の処理が可能となる。メッセージは、ストリーム処理の大多数の書き込みが確認された場合のみ、ストリームに書き込まれたものとして考慮される。これにより、障害状態中においても稼働を継続するには大多数のプロセスのみが利用可能である必要があるため、並行化によって拡張し得るストリームが可能となる。
認証は、複数の認証機構を使用してストリーム上で可能となり得る。認証が可能となると、クライアント(作成者もしくは消費者)処理によってストリームもしくはマネージャに対する全てのリクエストに対して認証トークンを提供する必要がある。トークンが有効である場合には稼働が進行し、トークンが有効でない場合、ストリームは認証エラーで応答する。ストリームを作成した処理は、特定の稼働についての特定の処理(もしくはルーティン)を認可することもできる。特定の稼働に対して処理が認可されない場合、稼働は失敗する。一局面において、デフォルトで、ストリームもしくはマネージャを作成した処理は、他の処理を認可することができる。消費者は、自身のlast_consumed_indexを設定することのみできる。ストリームを作成した処理は、新しい消費者および作成者に対して承認するか、または拒絶することができる。一局面において、可能とされるデータタイプのリストは、ストリームに関連付けられ得る。例えば、Layer.create(stream_id、types:[Float])である。複合タイプは、ランタイムによってサポートされる基本的なタイプの組合せとして特定される。例えば、Layer.create(stream_id、types:[MagReading])である。
“‘elixir defmodule MagReading do use Layer.Type
attribute:x、Float
attribute:y、Float
end”’
ストリームは、ストリームに関連するタイプについて有効でないメッセージを拒絶し得る。HTTP、WebSocket、またはTCP APIが、任意の適当なストリームに対して可能となり得る。これは、様々な通信チャネルに亘ってストリームに対する均一なインターフェースを作成する。APIは、層173Lのポータルとして実施される。
開示された実施形態の1つまたは複数の態様によれば、仮想マシンの分散型システムを含むインターネット・オブ・シングス(IoT)システムであって、IoTシステムは、以下を含む。
各々がIoTプラットフォームシステム制御エンジンセキュアシステムスペースおよびIoTプラットフォームシステム制御エンジンユーザ定義スペースを含む、少なくとも1つのIoTプラットフォームシステム制御エンジン。
各々がIoTネットワークノードデバイスセキュアシステムスペースおよびIoTネットワークノードデバイスユーザ定義スペースと含み、ネットワークを介して少なくとも1つのIoTプラットフォームシステム制御エンジンと通信可能な少なくとも1つのIoTネットワークノードデバイス。
各々がエッジデバイスセキュアシステムスペースおよびエッジデバイスユーザ定義スペースを含み、ネットワークを介して少なくとも1つのIoTネットワークノードデバイスおよび少なくとも1つのIoTプラットフォームシステム制御エンジンと通信可能な少なくとも1つのIoTエッジデバイス。
IoTプラットフォームシステム制御エンジンセキュアシステムスペース、IoTネットワークノードデバイスセキュアシステムスペース、およびエッジデバイスセキュアシステムスペースは各々、認可されていないアクセスを防止するようにセキュアされて構成される。
IoTプラットフォームシステム制御エンジンユーザ定義スペース、IoTネットワークノードデバイスユーザ定義スペース、およびエッジデバイスユーザ定義スペースは各々、仮想マシンの分散型システムを形成するユーザ定義命令を受信および実行するように構成される、それぞれの仮想マシンを定義する。
開示された実施形態の1つまたは複数の態様によれば、IoTプラットフォームシステム制御エンジンセキュアシステムスペースおよびエッジデバイスセキュアシステムスペースは各々、少なくとも1つのIoTプラットフォームシステム制御エンジン、少なくとも1つのIoTネットワークノードデバイス、および少なくとも1つのIoTエッジデバイスの間のネットワーク上の通信を制御するように構成される。
開示された実施形態の1つまたは複数の態様によれば、IoTプラットフォームシステム制御エンジンセキュアシステムスペース、IoTネットワークノードデバイスセキュアシステムスペース、およびエッジデバイスセキュアシステムスペースは各々、ネットワーク上の通信を制御する統合型通信制御モジュールを有する。
開示された実施形態の1つまたは複数の態様によれば、エッジデバイスセキュアシステムスペースは、IoTエッジデバイスのアプリケーション層と少なくとも1つのIoTエッジデバイスのドライブ層との間のインターフェースを定義するように構成される。
開示された実施形態の1つまたは複数の態様によれば、少なくとも1つのエッジデバイスの仮想マシンは、所定のセンサ種とインターフェース接続するように少なくとも1つのIoTエッジデバイスのアプリケーション層を構成するように構成される。
開示された実施形態の1つまたは複数の態様によれば、少なくとも1つのIoTプラットフォームシステム制御エンジンの仮想マシンは、ユーザ定義命令を受信するように構成される。
開示された実施形態の1つまたは複数の態様によれば、少なくとも1つのIoTプラットフォームシステム制御エンジンの仮想マシンは、IoTネットワークノードデバイスおよびIoTエッジデバイスのそれぞれの仮想マシンにユーザ定義命令を伝搬するように構成される。
開示された実施形態の1つまたは複数の態様によれば、IoTエッジデバイスは、IoTエッジデバイスの仮想マシンを介して多様なセンサ入力および多様な出力にインターフェース接続するように構成される。
開示された実施形態の1つまたは複数の態様によれば、IoTエッジデバイスの仮想マシンは、多様なセンサ入力および多様な出力の機能をカスタマイズするように構成される。
開示された実施形態の1つまたは複数の態様によれば、少なくとも1つのIoTプラットフォームシステム制御エンジン、少なくとも1つのIoTネットワークノードデバイス、および少なくとも1つのIoTエッジデバイスのそれぞれの仮想マシンは、スクリプト言語インターフェースにより構成可能である。
開示された実施形態の1つまたは複数の態様によれば、少なくとも1つのIoTプラットフォームシステム制御エンジン、少なくとも1つのIoTネットワークノードデバイス、および少なくとも1つのIoTエッジデバイスのそれぞれの仮想マシンは、視覚構成インターフェースにより構成可能である。
開示された実施形態の1つまたは複数の態様によれば、少なくとも1つのエッジデバイスの仮想マシンは、所定のセンサ種のために少なくとも1つのエッジデバイスのアプリケーション層を構成するように構成される。
開示された実施形態の1つまたは複数の態様によれば、IoTプラットフォームシステム制御エンジンは、統合型通信制御モジュールを含む。
開示された実施形態の1つまたは複数の態様によれば、少なくとも1つのIoTプラットフォームシステム制御エンジン、少なくとも1つのネットワークノードデバイス、および少なくとも1つのIoTエッジデバイスのそれぞれの仮想マシンは、特定のIoTタスクを実行するように構成される。
開示された実施形態の1つまたは複数の態様によれば、少なくとも1つのIoTプラットフォームシステム制御エンジン、少なくとも1つのIoTネットワークノードデバイス、または少なくとも1つのIoTエッジデバイスのそれぞれの仮想マシンは、特定のIoTタスクの一部を実行するように構成され、特定のIoTタスクの一部は、少なくとも1つのIoTプラットフォームシステム制御エンジン、少なくとも1つのIoTネットワークノードデバイス、または少なくとも1つのIoTエッジデバイスのそれぞれの仮想マシンの容量および効率特性に基づいて分配される。
開示された実施形態の1つまたは複数の態様によれば、仮想マシンの分散型システムを含むインターネット・オブ・シングス(IoT)システムを動作させる方法であって、方法は、以下のステップを含む。
IoTプラットフォームシステム制御エンジンセキュアシステムスペースおよびIoTプラットフォームシステム制御エンジンユーザ定義スペースを有する少なくとも1つのIoTプラットフォームシステム制御エンジンを提供するステップ。
ネットワークを介して少なくとも1つのIoTプラットフォームシステム制御エンジンと通信可能な少なくとも1つのIoTネットワークノードデバイスを提供するステップであって、少なくとも1つのIoTネットワークノードデバイスの各々がIoTネットワークノードデバイスセキュアシステムスペースおよびIoTネットワークノードデバイスユーザ定義スペースを有する少なくとも1つのIoTネットワークノードデバイスを提供するステップ。
ネットワークを介して少なくとも1つのIoTネットワークノードデバイスおよび少なくとも1つのIoTプラットフォームシステム制御エンジンと通信可能な少なくとも1つのIoTエッジデバイスを提供するステップであって、少なくとも1つのIoTエッジデバイスの各々がエッジデバイスセキュアシステムスペースおよびエッジデバイスユーザ定義スペースを含む少なくとも1つのIoTエッジデバイスを提供するステップ。
認可されていないアクセスを防止するようにセキュアされる、IoTプラットフォームシステム制御エンジンセキュアシステムスペース、IoTネットワークノードデバイスセキュアシステムスペース、およびエッジデバイスセキュアシステムスペースの各々を構成するステップ。
IoTプラットフォームシステム制御エンジンユーザ定義スペース、IoTネットワークノードデバイスユーザ定義スペース、およびエッジデバイスユーザ定義スペースの各々においてそれぞれの仮想マシンを定義するステップ。
各それぞれの仮想マシンがユーザ定義命令を受信および実行するように仮想マシンの分散型システムを形成するステップ。
開示された実施形態の1つまたは複数の態様によれば、インターネット・オブ・シングス(IoT)デバイスリンクは、以下を含む。
プログラムコードを保管するメモリストレージ。
プログラムコードを実行するマイクロコントローラであって、プログラムコードが、認可されていないアクセスを防止するようにセキュアされて構成されるセキュアプログラムコード、およびユーザ定義命令を実行するように構成されるユーザ定義プログラムコードを含むマイクロコントローラ。
データをIoTデバイスリンクに送信し、IoTデバイスリンクから受信するように構成される通信モジュールおよびアンテナ。
データを暗号化および復号化するように構成される暗号解読ユニット。
IoTデバイスリンクに電力を供給するように構成される電力供給管理モジュールおよび蓄電ユニット。
マイクロコントローラ操作を計時するように構成されるリアルタイムクロック。
IoTデバイスリンクに対する固有ネットワークアドレスを提供するように構成されるMACアドレスモジュール。
マイクロコントローラは、IoTデバイスリンクセンサの少なくとも1つの入力および出力を接続および制御するように構成されるインターフェースモジュールを有する。
開示された実施形態の1つまたは複数の態様によれば、インターフェースモジュールは、天候、治安、廃棄物管理、ガス漏れ、下水道監視、水漏れ、駐車アクセス、スマート駐車、水質、構造的健全性、土壌水分、電子放射、スマート照明、街路安全、空気質、アイテム位置、水位、または公共衛生のセンサを含むIoTデバイスリンクセンサに共通である。
開示された実施形態の1つまたは複数の態様によれば、ユーザ定義プログラムコードは、デバイスリンクセンサの少なくとも1つの入力および出力の動作を制御するように構成される。
開示された実施形態の1つまたは複数の態様によれば、IoTデバイスリンクセンサは、感知特性を感知し、暗号解読ユニットは、通信モジュールおよびアンテナが感知特性を送信する前に感知特性を暗号化する。
開示された実施形態の1つまたは複数の態様によれば、インターネット・オブ・シングス(IoT)ネットワークシステムは、以下を含む。
各々が、IoTプラットフォームシステムのIoTエッジデバイスおよびIoTネットワークノードデバイスのうちの対応する少なくとも1つと、広域ネットワークを介してIoTプラットフォームシステムの各それぞれの少なくとも1つのIoTエッジデバイスおよびIoTネットワークノードデバイスをIoTプラットフォームシステム制御エンジンに通信可能にリンクするために、インターフェース接続するように構成される少なくとも1つのネットワークリンクカード。
各それぞれのネットワークリンクカードの製造時に各それぞれのネットワークリンクカード上に設定され、一意に対応する暗号化鍵セットを形成するように、それぞれ製造時に少なくとも1つの各々のネットワークリンクカードと結合し、少なくとも1つの各々のネットワークリンクカード上に暗号化するように構成される製造時暗号化フィクスチャ。
IoTプラットフォームシステム制御エンジンに結合されるIoTエッジデバイスおよびIoTネットワークノードデバイス登録認証マネージャコントローラ。登録認証マネージャコントローラは、IoTエッジデバイスおよびIoTネットワークノードデバイスのうちの少なくとも1つの各々のIoTプラットフォームシステムへの認証された搭載をそれぞれ機能させるように、IoTエッジデバイスおよびIoTネットワークノードデバイスのうちの少なくとも1つの各々の対応するリンクカードの製造時に形成された暗号化鍵セットに対するセキュア対称暗号化鍵セットに基づき、IoTプラットフォームシステム内のIoTエッジデバイスおよびIoTネットワークノードデバイスのうちの少なくとも1つの各々について、IoTプラットフォームシステム制御エンジンによって、初期化および登録の際に、IoTエッジデバイスおよびIoTネットワークノードデバイスのうちの少なくとも1つの各々をそれぞれ登録および認証するように構成される。
開示された実施形態の1つまたは複数の態様によれば、認証は、IoTエッジデバイス120およびIoTネットワークノードデバイス登録認証マネージャコントローラによるIoTネットワークシステム内におけるデバイス初期化による登録時に機能し、実質的に同時に機能する。
開示された実施形態の1つまたは複数の態様によれば、暗号化鍵セットは、少なくとも、少なくとも1つの各々のネットワークリンクカードの製造時に少なくとも1つの各々のネットワークリンクカードの暗号解読ユニット中に配置される。
開示された実施形態の1つまたは複数の態様によれば、インターネット・オブ・シングス(IoT)プラットフォームシステムの暗号化鍵セキュリティシステムであって、IoTプラットフォームシステムは、IoTエッジデバイス、IoT通信ノードデバイス、およびIoTプラットフォームエンジンを備えるIoTコントローラを有し、暗号化鍵セキュリティシステムは、IoTコントローラ上のIoTエッジデバイス、IoT通信ノードデバイス、およびIoTプラットフォームエンジンの間の暗号化セキュリティを確保し、IoTプラットフォームシステムの暗号化鍵セキュリティシステムは、以下を含む。
(製造時に)IoTエッジデバイスおよびIoT通信ノードデバイス上で暗号化鍵セットに暗号化するように配置され、暗号化鍵セキュリティシステムのIoTデバイス暗号化鍵生成端を定義する暗号化鍵生成プロセッサ。
暗号化鍵セットをIoTプラットフォームエンジンに提供する暗号化鍵生成入力を提供するように配置されるか、または通信可能に結合され、IoTデバイス暗号化鍵生成端およびIoTプラットフォームエンジン暗号化鍵生成端が暗号化鍵セキュリティシステムの対称鍵生成端を実質的に形成するように、暗号化鍵セキュリティシステムのIoTプラットフォームエンジン暗号化鍵生成端を定義する別の暗号化鍵生成プロセッサ。
IoTデバイス暗号化鍵生成端とIoTプラットフォームエンジン暗号化鍵生成端とを結合するセキュア暗号化通信リンク。
開示された実施形態の1つまたは複数の態様によれば、セキュア暗号化通信リンクは、IoTデバイス暗号化鍵生成端において生成される上位層の暗号化鍵セットを用いて階層的暗号化鍵セットの層配置を定義し、IoTプラットフォームエンジン暗号化鍵生成端において生成される上位層の暗号化鍵セットは、上位層が従属する階層的暗号化鍵セットの層配置の主層を形成する共通暗号化鍵セットに基づく。
開示された実施形態の1つまたは複数の態様によれば、主層の共通暗号化鍵セットは、IoTプラットフォームシステムから分離されて封止されている。
開示された実施形態の1つまたは複数の態様によれば、IoTデバイス暗号化鍵生成端において生成された上位層の暗号化鍵セットおよびIOTプラットフォームエンジン端において生成された上位層の暗号化鍵セットは、少なくとも1つの対称暗号化鍵および少なくとも1つの非対称暗号化鍵の組合せを含む。
開示された実施形態の1つまたは複数の態様によれば、IoTデバイス暗号化鍵生成端において生成された暗号化鍵セットは、共通暗号化鍵セットおよび暗号化された入力からIOTデバイス暗号化鍵生成端への情報に基づいており、暗号化された入力は共通暗号化鍵セットに基づいており、所定のIoTデバイス製造識別特性および暗号化された入力の改ざん表示を機能させる有効性演算子を少なくとも含む。
開示された実施形態の1つまたは複数の態様によれば、所定のIoTデバイス製造識別特性は、IoTデバイス暗号化鍵生成端における暗号化セットの生成の基礎を形成し、暗号化鍵セットの各々は、それぞれのリンクカードの製造時での各所定のIoTエッジデバイスおよび各所定のIoT通信ノードデバイスのそれぞれのリンクカード上に暗号化し、一意に対応する。
開示された実施形態の1つまたは複数の態様によれば、有効性演算子は、暗号化された入力の有効性窓を定義し、生成された暗号化鍵セットの生成については、IoTデバイス暗号化鍵生成端における暗号化された入力に基づいて生成され、暗号化セットの各々に暗号化することについては、その製造時におけるそれぞれのリンクカード上に、暗号化された入力に基づいて生成される。
開示された実施形態の1つまたは複数の態様によれば、暗号化された入力は、暗号化された入力がコンピュータ読取可能記憶媒体上に配置される入力生成位置からポート接続されるコンピュータ読取可能記憶媒体上に配置され、その位置は、IoTデバイス暗号化鍵生成端に対してIoTデバイス暗号化鍵生成端から分離されて離間している。
開示された実施形態の1つまたは複数の態様によれば、IoTプラットフォームエンジン暗号化鍵生成端において生成される暗号化セットの各々は、IoTデバイス暗号化鍵生成端において生成された暗号化鍵セットの各対応する暗号化鍵セットに対する暗号化鍵の対称セットに少なくとも部分的に基づく。
開示された実施形態の1つまたは複数の態様によれば、IoTプラットフォームエンジン暗号化鍵生成端において生成された暗号化鍵セットの各々は、各それぞれのIoTデバイスに一意に対応する独立して生成された独立鍵と、IoTデバイス暗号化鍵生成端において生成された暗号化鍵セットの各対応する暗号化鍵セットに対する暗号化鍵の対称セットに少なくとも部分的に基づく少なくとも1つの他の鍵とを含む。
開示された実施形態の1つまたは複数の態様によれば、独立鍵は、それぞれのIoTデバイス用のセッション鍵を定義し、IoTプラットフォームシステムの広域ネットワークを介して、IoTプラットフォームエンジンからセッション鍵暗号化通信によってIoTデバイスに入力され、セッション鍵暗号化通信は、少なくとも1つの他の鍵に基づき、セッション鍵暗号化通信の通信改ざん表示を提供する少なくとも1つの有効性演算子を有する。
開示された実施形態の1つまたは複数の態様によれば、それぞれのIoTデバイスに対するセッション鍵入力を具現化するセッション鍵暗号化通信は、IoTプラットフォームシステム内のそれぞれのIoTデバイスの初期化のIoTプラットフォームエンジン登録時または初期応答において実行される。
開示された実施形態の1つまたは複数の態様によれば、IoTプラットフォームエンジンからそれぞれのIoTデバイスへのセッション鍵暗号化通信の初期応答と、セッション鍵暗号化通信からのセッション鍵の復号化と、それぞれのIoTデバイスへの入力とは、それぞれのIoTデバイスの認証と、IoTプラットフォームシステムへのそれぞれのIoTデバイスの搭載を機能させる。
開示された実施形態の1つまたは複数の態様によれば、独立鍵および暗号化鍵の対称セットに少なくとも部分的に基づく少なくとも1つの他の鍵は、IoTプラットフォームシステムのIoTデバイス端とIoTプラットフォームエンジン端とを接続する通信リンクの端同士を繋ぐ暗号化セキュリティを確保する階層的暗号化鍵セットの層配置の他の鍵セットの上位層を定義する。
開示された実施形態の1つまたは複数の態様によれば、双方向通信のために複数のIoTプラットフォーム通信ネットワークノードと通信可能に結合される複数のIoTプラットフォームエッジデバイスのインターネット・オブ・シングス(IoT)プラットフォームシステムであって、システムは、以下を含む。
双方向通信のためにIoTプラットフォーム通信ネットワークノードと通信可能に結合され、これによって双方向通信のためにIoTプラットフォームエッジデバイスと通信可能に結合されるIoTプラットフォームエンジン。
IoTプラットフォームエンジンは複数の機能モジュールを有し、IoTプラットフォームエンジンは、可変選択可能な数のサーバノードクラウドのサーバノード上に配置され、複数の機能モジュールのうちの少なくとも1つの機能モジュールは、プラットフォームエンジンをサーバノードに選択可能に格納するように構成される提供エンジンモジュールであり、複数の機能モジュールのうちの別のものは、提供エンジンモジュールを含むプラットフォームエンジンの機能モジュールの機能にアクセスして機能させるように、IoTユーザの証明および権限を保管するセキュア封止ストレージ部であり、封止ストレージ部の外側ではプラットフォームエンジンの複数の機能モジュールの相互から封止され、セキュア封止ストレージ部は、プラットフォームエンジンが配置されるサーバノードの数のセキュアかつ柔軟な提供選択を機能させるように、提供エンジンモジュールを初期化する認証を含むユーザ権限を管理し、ユーザ権限にアクセス可能であるように構成される。
開示された実施形態の1つまたは複数の態様によれば、セキュア封止ストレージ部は、セキュア封止の完全性の提供が、IoTプラットフォームエンジンの外部から切り離されて維持されるように配置される。
開示された実施形態の1つまたは複数の態様によれば、セキュア封止ストレージ部は、多要素ユーザ認証を管理し、アクセスを可能とする。
開示された実施形態の1つまたは複数の態様によれば、サーバノードクラウドは、サービスとしてのインフラストラクチャ(IAAS)プラットフォームとして、またはプライベートサーバクラウドとして配置される。
開示された実施形態の1つまたは複数の態様によれば、プラットフォームエンジンは、分散型ストレージ層で構成され、セキュア封止ストレージ部は、分散型ストレージ層内に配置される。
開示された実施形態の1つまたは複数の態様によれば、セキュア封止ストレージ部は、複数のサーバノードにわたって分布され、セキュア封止ストレージ部の機能を機能させるように複数のサーバノード内において少なくとも最小の決定数だけ設けられる。
開示された実施形態の1つまたは複数の態様によれば、複数の機能モジュールのうちの少なくとも1つは、中央サービス検出監視機能を定義し、中央サービス検出監視機能モジュールは、複数のサーバノードにわたって分布され、中央サービス検出監視機能を機能させるように複数のサーバノード内において少なくとも最小の決定数だけ設けられる。
開示された実施形態の1つまたは複数の態様によれば、中央サービス検出監視機能は、提供モジュールが格納されて新たに提供されるサーバノード上の各プラットフォームエンジンサービスの実行開始を登録するように構成される。
開示された実施形態の1つまたは複数の態様によれば、提供エンジンモジュールは、提供される選択されたサーバノードの各々における選択されたサービスを開始するために、プラットフォームエンジンが格納されるように提供されるサーバノードの数の提供選択、選択されて提供されるサーバノードの数に対するネットワークトポロジの選択、およびプラットフォームエンジンの所定のサービスからのサービスの選択を機能させるように構成される。
開示された実施形態の1つまたは複数の態様によれば、提供エンジンモジュールは、提供される選択されたサーバノードの各々における選択されたサービスの選択および設定が、ただ1つの構成ファイルによって特定され、選択が、選択されたサーバノードの各々の実質的自動設定を機能させる提供エンジンモジュールに与えられるたた1つの提供スクリプトに入力されるように構成される。
開示された実施形態の1つまたは複数の態様によれば、設定時において、選択されたサーバノードの各それぞれのメタデータファイルは、選択されたサーバノードの各それぞれに一意に対応する秘密鍵で署名され、それぞれの選択されたサーバノードに対応する秘密鍵は、セキュア封止ストレージ部において封止され、それぞれの選択されたサーバノードの設定時に署名の受領次第、セキュア封止ストレージ部によって認証される。
開示された実施形態の1つまたは複数の態様によれば、仮想マシンの分散型システムを含むインターネット・オブ・シングス(IoT)システムであって、IoTシステムは、少なくとも1つのIoTプラットフォームシステム制御エンジンと、少なくとも1つのIoTプラットフォームシステム制御エンジンとネットワークを介して通信可能な少なくとも1つのIoTネットワークノードデバイスと、各々がIoTエッジデバイスセキュアシステムスペースおよびIoTエッジデバイスユーザ定義スペースを含み、少なくとも1つのIoTネットワークノードデバイスおよび少なくとも1つのIoTプラットフォームシステム制御エンジンとネットワークを介して通信可能な少なくとも1つのIoTエッジデバイスとを含み、IoTエッジデバイスセキュアシステムスペースは、認可されていないアクセスを防止するようにセキュアされて構成され、IoTエッジデバイスユーザ定義スペースは、仮想マシンの分散型システムを形成するユーザ定義命令を受信および実行するように構成される。
仮想マシンの分散型システムを含むインターネット・オブ・シングス(IoT)システムであって、IoTシステムは、少なくとも1つのIoTプラットフォームシステム制御エンジンと、各々がIoTネットワークノードデバイスセキュアシステムスペースと、IoTネットワークノードデバイスユーザ定義スペースとを含み、少なくとも1つのIoTプラットフォームシステム制御エンジンとネットワークを介して通信可能な少なくとも1つのIoTネットワークノードデバイスと、各々がIoTエッジデバイスセキュアシステムスペースおよびIoTエッジデバイスユーザ定義スペースを含み、少なくとも1つのIoTネットワークノードデバイスおよび少なくとも1つのIoTプラットフォームシステム制御エンジンとネットワークを通じて通信可能な少なくとも1つのIoTエッジデバイスとを含み、IoTエッジデバイスセキュアシステムスペースは、認可されていないアクセスを防止するようにセキュアされて構成され、IoTエッジデバイスユーザ定義スペースは、仮想マシンの分散型システムを形成するユーザ定義命令を受信および実行するように構成され、IoTネットワークノードデバイスセキュアシステムスペースは、認可されていないアクセスを防止するようにセキュアされて構成され、IoTネットワークノードデバイスユーザ定義スペースは、仮想マシンの分散型システムを構成するユーザ定義命令を受信および実行するように構成される。
上記説明は、本開示の態様の単なる例示であると理解されるべきである。前述の説明は本開示の態様の単なる例示であることを理解されたい。本開示の態様から逸脱することなく、様々な代替形態および修正形態が当業者によって考案され得る。したがって、本開示の態様は、添付の特許請求の範囲の範囲内に含まれるすべてのそのような代替形態、修正形態、および変形形態を包含することを意図している。さらに、異なる特徴が互いに異なる従属請求項または独立請求項に記載されているという単なる事実は、これらの特徴の組合せが有利に使用され得ず、そのような組合せが本発明の態様の範囲内にあることを示す。