IoTデバイス用に独自のパーソナルクラウドを作成するには何が必要ですか?


18

これは私がしばらくの間考えていたテーマです。特に「IoT」の概念が最近多くの場所に浮かんでいるためです。

「IoT」と言うときの意味から始めます。IoTという用語はさまざまな意味を持ち、時には誤用されることもあります。それは明確に定義されていない用語である可能性があり、それが正確に何を意味するかについて大きな議論につながる可能性があります。したがって、私にとってIoTは概念であり、別の組み込みデバイスまたは携帯電話からインターネットを介してリモートで組み込みデバイスに接続する機能を定義する概念です。それと同じくらい簡単。

このコンテキストでは、接続の目的は重要ではありません。オフィスのあるデバイスを自宅の別のデバイスと接続できる場合、または携帯電話から自宅の1つのデバイスに接続できる場合は、すべてインターネット経由で、次に、IoTデバイス(電話ではなく、組み込みデバイス)について話します

それで、IoTが意味することについて合意したので、今、私が達成しようとしていることを説明します。

私が達成しようとしているのは、まさにIoTの定義で説明していることです。

自宅で1つまたは複数の組み込みデバイスをイーサネットまたはwifiでインターネットルーターに接続し、リモートロケーションにある別の組み込みデバイスを使用してリモートで接続できるようにしたい(リモートでは同じネットワーク上にないことを意味する)そして、おそらく私の携帯電話の監視アプリでそれらに接続できるように

たとえば、ガレージのドアオープナーに接続されたオン/オフスイッチとして機能する単純な組み込みデバイスと、職場の机の大きな赤いボタンとして機能する別の組み込みデバイスがあり、机の赤いボタンを押すことができますガレージのドアが開きます。

別の例として、自宅の温度を監視し、しきい値に達したときにアラートを送信できるADC機能を備えた組み込みデバイスがあります。通知は、シンプルなAndroidアプリか、職場の机の上に小さな画面がある別の組み込みデバイスのいずれかで受信できます。

これらの例はばかげているかもしれませんが、私が達成しようとしていることの可能なシナリオとユースケースを説明するためのものです。最後に、考え方は同じです。1つの組み込みデバイスをインターネット経由で別の組み込みデバイスに接続します。

明確にするべきもう1つのことは、これらのデバイス間のデータ交換は非常に軽量であり、毎回数バイトだけであり、デバイス間で数百キロバイトを交換する必要があるということではありません。

さらに、私が言及している種類の「組み込みデバイス」は、100MHzまたは200MHzのcortex-m4マイクロコントローラーをベースにしたシンプルだが機能的なデバイスです。また、これらのデバイスで実行されるLinuxまたは複雑なライブラリは存在しないため、明確にすることが重要です。結局、このようなリソースの浪費であり、電球をオン/オフするためだけにLinuxを実行する強力なプロセッサーを持つことはまったく不要です。いずれにせよ、BeagleBoard、Raspberry Pi、またはそのような他のボードを組み込みデバイスとして使用する予定です。それ以上の複雑さは必要ないので、ちょうどマイクロコントローラー。

私は、IoTプラットフォームと、そのような種類の複雑なソリューションについてはあまり知りません。インターネットを介して1つの組み込みデバイスを別の組み込みデバイスに接続する方法を見つけるこの旅を始めたとき、IoTサービスを備えたいくつかのサイトにつまずきました。

次のようなIoTクラウドサービスがあることを知っています。

ほんの数例を挙げます。それらの主な問題は、コストと複雑さです。あなたはそれらのサービスを得るためにお金を払わなければならず、また、あなたがそれらすべてを必要とする場合に備えて、彼らが持っているすべてのサービスを実装する方法を学ぶ必要がありますデバイス間でいくつかのバイトを交換することができます。それより単純なもの、自分でできることをしたいだけです。

あなたはそれが私がしなければならないことであるなら、私自身の「クラウド」を実装することは単純ではなく、時には単純化のためにこれらの種類のサービスを使用した方が良いと言うかもしれませんが、独自のIoTサービスを実装します。

主な理由は、私が自分でやりたいからです。サードパーティに依存してデバイスを相互に接続したくありません。デバイスのコードとハードウェアを開発するので、IoTデバイスとして接続する独自の手段を作成する方が良いと感じています。

2番目の理由は、その方法を学ぶことです。これを達成するために必要なすべてのことを知ることで、IoTの世界についてよりよく理解できるようになります。

また、私はCに精通しており、Linuxを職場や自宅で日常のOSとして使用しているので、Windowsのものは役に立たないので避けてください。私は自分の目標を達成するために必要なものを実装するために、組み込みデバイス用にCで、またはLinuxで実装しなければならないものを恐れていません。

だから私の質問は、何を実装する必要があり、どこで、それらの間のデータ交換の目的で2つ以上の組み込みデバイスを相互に接続できるようにするためですか?

この質問自分のサーバーでIoTを作成するために何を使用できますか?同様のものがありますが、閉じられており、答えがありません。また、既存のクラウドインフラストラクチャを使用することを想定しています。だからそれは私を助けません。

この別の投稿では、クラウドに汎用データを保存/送信/公開するためにどのIoTサービスを利用できますか?同様の質問がありますが、OPはIoTサービスを明示的に要求しており、それらを回避しようとしています。


2
サーバーはどのようにして「既存のクラウドインフラストラクチャ」ですか?サーバーは単なるコンピューターです。クラウドインフラストラクチャはそれだけではありません。
user253751

1
また、ユビキタスなIPv6がある場合、中央のサーバー/クラウドを必要とせずに、IoTデバイスが互いに直接通信できるようになる可能性があることに注意してください。
user253751

回答:


10

質問のポイントを逃したかもしれませんが、これは答えの良い出発点だと思います。

少なくとも3つのことが必要です。

  1. データを集約する常時接続の計算ノード。これは強力である必要はありません。NASで実行されているプロセス、または(理論的には)ルータで実行されているプロセスである可能性があります。簡単にするために、Raspberry Piであると仮定します。これは、将来サポートすることを決定した派手な無線プロトコルを提供することもできます。理論上はすべてのノードをインターネットに公開してピアツーピアを実行できますが、1つをマスターとして指定し、これにより(アプリ/ユーザーへの)データの照合と公開を処理する方が簡単です。もちろん、ハブもノードになります。特に、適度に強力なWiFiノードを使用する場合はそうです。
  2. エンドポイントがハブノードにデータを送信できるようにする適切なソフトウェアスタック。はここで必要なものに加えて、それを実行するOSです。
  3. より広いインターネットからサーバーへのアクセスを容易にするDNSおよびポート転送。

その後、セキュリティを忘れないでください。これを行うことにより、ホームネットワーク上のすべてを攻撃にさらすことに近づきます。少しだけかもしれませんが、リスクを認識するのは良いことです。あなたは大事にすることができますが、間違いを犯すと仮定してください。


1
これがあなたの望んだ答えかどうかはわかりません。あなたが尋ねる必要があるものを解決するのに役立つはずです。
ショーンフーリハネ

1
助けてくれてありがとう!! それで、あなたが最初のポイントであなたが意味することは、私が何らかの種類のハブまたはゲートウェイを必要とするということです
m4l490n

1
はい、1つまたは複数のゲートウェイが必要です。ノードが1つしかない場合、これが明らかにノードである可能性があります。回答を少し編集しました。
ショーンフーリハネ

11

既に述べたように、軽量デバイス、および数バイトの日付レートはMQTTの使用を要求します。センサーノードは、MQTTクライアントの実装をホストするのに十分強力なスタンドアロンESP8266モジュールに基づくことができます。または、これらのモジュールをATコマンド制御のWi-Fiモジュールとして外部マイクロコントローラーと一緒に使用することもできます。

4 kBのフラッシュでAtmega48Vを使用したこの男のような、はるかに強力でないマイクロコントローラーに独自のMQTTソリューションを実装できます。

コンピューターでブローカーをホストできますが、代わりにRaspberry Piを実行すると電力効率が向上します。コーディングが好きな場合も、独自のMQTTブローカーを実装できます。個人的には、この目的のためにMosquittoが素晴らしいと思いました。

すべてのセンサーノードがTCP / IP接続を必要とするという欠点。


バッテリーに優しいソリューションは、LoraWANまたはZigBee対応のセンサー/アクチュエータノードを使用して、Raspberry / BeagleBoneにゲートウェイを実装することです。


いずれの場合でも、プライベートネットワークの外部からハブ、ゲートウェイ、またはサーバーにアクセスできるようにするためにすべてがダウンします。これを行う方法は他にもあり、主な関心事は常にセキュリティです。これは私の意見で最も危険な部分です。

基本的な要件は@Seanによって非常によく要約されています。


あなたの答えと@Seanの答えによると、何らかのハブまたはゲートウェイが必要だと思います。これは絶対に必要ですか?つまり、IPアドレスまたはホスト名を知っているだけで、ノードに直接接続することはできませんか?ハブやゲートウェイを避けようとしているということではなく、必要かどうか、そしてその理由を理解したいだけです。助けてくれてありがとう!!
m4l490n

Raspberry Piは「常時接続」デバイスとして問題ないことを発見しましたか?私はネットワークストレージとして使用するPiに小さなHDDを接続していますが、常にオンにしておくことをためらっています。そうすれば大丈夫ですか?(FWIWに小さなヒートシンクがあります)
ブルースウェイン

1
@ m4l490nハブまたはゲートウェイを使用すると、より簡単になります。この方法では、ハブまたはゲートウェイに対してのみポート転送などを設定する必要があります。ルーターの背後にあるすべてのデバイスに直接接続する場合は、たとえばそれぞれに対してポート転送を設定する必要があります。プライベートネットワークにより多くの方法を導入し、作業を増やすと、リスクが高まります。
ベンスカウリック


10

コントローラー/ハブの必要性に関する以前の回答の両方に質問しました。物事を実現するには、ルールが存在する必要があることを考慮してください。大きな赤いボタンを押してガレージのドアを開くには、センサー(ボタン)を目的のアクション(ドアを開く)に結び付けるルールが必要です。それを実現するには、2つの方法があります。ルールをボタンに直接配置する方法と、ルールを別のコンピューターに配置する方法です。

直接的な解決策についてもっと考えてみましょう。ガレージのドアについてボタンを教えると、ボタンはルールを内部に保持します。ボタンにはガレージのドアのIDが必要なので、ガレージのドアを交換すると、ボタンは機能しません。ボタンが机の上にあり、家が独自のネットワークを使用している場合、ボタンは家のゲートウェイのアドレスとドアのアドレスの両方を知っている必要があります。ボタンは、ドアが開くことを知らせる特定のプロトコルを知る必要があります-すべてのメーカーは、すべてのドアの信号を知っている互換性のあるボタンを作りますか?あなたはそれを再プログラムしない限り、ボタンは他に何もできません-あなたはボタンのチップを置くためのフラッシュプログラマを持っていますか、そしてそのプログラマは他のデバイスと互換性がありますか?ガレージのドアを開き、5分後に閉じる場合、ボタンには、リアルタイムクロックを維持するためのすべての複雑さが必要です。ボタンはドアの状態を認識しないため、ドアを閉じているのか開いているのかがわかりにくくなります。また、ボタンが壊れた場合に交換ボタンで仕事ができるように、ルールをどのようにバックアップしますか?プラス面としては、安く聞こえます。別のコンピューターは必要ありません。

コントローラでは、状況は異なります。すべてのセンサーからのすべてのメッセージがコントローラーに配信されます。各センサーはシンプルです。信号をコントローラーに送信します。その後、コントローラーは非常に複雑なルールに必要な入力を適用できます。日照センサーを確認し、暗くなければ屋外の照明を点灯させたり、月の平均降水量が平均以上で現在の気温の場合にスプリンクラーを作動させたりすることができます平均より5度下です。コントローラーは状態を追跡できます。これは、「ガレージドアを閉じる」ボタンが必要で、「ガレージドアを開く」ボタンが必要でない場合に重要です(家から離れているとき、ドアを開けることはめったにありませんが、もしそうなら絶対に閉じたいです)誤って開いたままにしておきます。)

コントローラーは、ボタンを聞く方法を知っているデバイスドライバーや、ドアを話す方法を知っている他のドライバーに場所を提供できます。コントローラーは、ボタンの中にある小さなチップよりも新しいデバイスやデバイスタイプにアップグレードできる場合があります。

また、コントローラーは、特定のレベルのサービスを提供してメッセージを配信するなどのインフラストラクチャタスク用のより複雑なロジックを持つことができます。たとえば、MQTTプロトコルでは3つの異なるレベルが許可されています。メッセージを1回配信する、少なくとも1回表示されるまで繰り返し配信する、1回だけ配信する、のいずれかです。

このコントローラーは、通信ゲートウェイとの間のすべてのメッセージングを統合するためのアーキテクチャ上の論理的な場所を提供し、外部インターフェイスの使用を可能にします。これは、ボタンと携帯電話の両方が信号を送信できることを意味し、ルールはどちらかがガレージのドアを開くことが許可されていることを把握できます。ゲートウェイはセキュリティも提供できます。インターネットにボタンとガレージのドアを置く必要はありません。それらをプライベートな分離ネットワークに配置し、ゲートウェイを使用して信号を伝送できます。コントローラーは、システムのすべてのルールをバックアップする単一のポイントも提供します。

コントローラーのマイナス面は、待ち時間が長くなり、複雑さが増すことです。驚くべきことに、コントローラーはコストをそれほど高くしません。Raspberry Piにコントローラーを実装すると、1つの平均的なリモート制御可能なライトスイッチのコストを抑えることができます。コストだけに基づいてアイデアを割り引いてはいけません。


特に、ネットワーク全体を最大限に活用できるすべてのIoTデバイスでルールベースの機能が必要な場合は、HUB(コントローラー)が非常に望ましいようです。
m4l490n

そのため、正しく理解できれば、複雑なルールやIoTデバイスの複雑なネットワークさえも必要ない限り、ピアツーピア接続を使用できます。これは、IoTデバイスが他のブランド、たとえば1つのボタンは常に同じドアオープナーに関連付けられます。
m4l490n

それ以外の場合、より柔軟性と機能が必要な場合は、HUBが必要です。あれは正しいですか?
m4l490n

はい、それは正確な要約です。実質的に誰もが何らかのハブ/コントローラーを必要とすることになります。ハブには、商用とオープンソースの両方のオプションがたくさんあります。
ジョンDeters
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.