IoT用のアルファプロトコルスタックリリース

みなさんこんにちは! お祭りの雰囲気はすでにモニターの画面をノックし、あなたのメールアドレスにスパムを送りつけています。 そこで、私たちは約束を果たし、スタックを明らかにすることにしました。









私たちは主なことに目を向けます:私たちは何をしましたか。 今すぐ予約しましょう:IPv6について話すことは今や10代のセックスについて話すこととほぼ同じなので、MOARとIPv6のスタックを比較しません:誰もがそれについて話す、ほとんどの人はそれについて何も知らず、実際にそれを試したのは少数です。



テストノードについて一言



スタックの1つのインスタンスを持つノードを1つのデバイスと呼びます。 ノードは、外部センサーと連動してスタックの動作をテストするために作成されました。



最もポータブルなソリューションが必要でしたが、最初はすべてがシンプルな段ボール箱に詰められていました。 しかし、それは長い間十分ではなく、情報を得るために常に箱を開けることに飽き飽きしていました。すべての要素がワイヤに取り付けられているという事実、使用の複雑さはある時点で怠inessを圧倒し、主張することが提案されました。 3Dプリンターへのアクセスは、それを作る方法の問題をすぐに終わらせます。 テスト装置は非常に成功したことが判明し、カリーニングラードからヘルシンキまでロシアの郵便局に戻ってきました。





このリリースには、アプリケーションでスタックを使用する方法を理解することができるサンプルがあります。 教育基盤を開発し、お客様のプロジェクトへのソリューションの適応が可能な限り快適になるように努めます。



周辺の問題に対処したら、スタック構造に移りましょう。



MOARスタックの論理構造には、いくつかのレベルが含まれます。



インターフェースレベル -物理または論理チャネルを介して最も近いノードへの直接接続を提供します。 物理的または論理的なデータ交換インターフェースごとに1つずつ、複数のインターフェースレベルがあります。 レベルは、インターフェイスドライバーで動作するか、それ自体がその役割を果たします。



リンクレベル -最も近い各ノードとの最適な通信方法(インターフェイス)を選択し、関連タスクを実行します。



ルーティングレベル(「ルーティング」) -最適なデータ伝送ルートを見つけるためのアルゴリズムを提供します。



プレゼンテーションレベル -暗号化とデータパーティション化、および逆変換を提供します。



サービスレベル -他のアプリケーションからMOARスタックを使用するためのAPIを提供します。



現時点では、各レベルはメインプロセスの個別のスレッドで実行されますが、セキュリティ上の理由から、作業に必要な特権に応じてレベルを分けることができます。



それでは、インストールおよび構成プロセスの説明に移りましょう。 開始するには、リポジトリをダウンロードします。 参照によりこれを行うか、gitを使用して目的のフォルダーに移動し、コマンドを実行します。



git clone https://git@github.com:moarstack/moarstack.git
      
      





MOARリポジトリスタックのほとんどのディレクトリには、特別な目的があります。



./-ルートディレクトリに存在するファイル(CMakeLists.txtなど)は、プロジェクト全体および他のすべてのプロジェクトを内部ディレクトリ(レベルの場合と同様に1つのサブディレクトリに配置されることがある)でビルドするように設計されています。

レイヤー/ -各レベルのヘッダー(* .h)とソース(* .c)を含むディレクトリ。すべてのレベルのソースコードとヘッダーファイルを含む共有ファイルを含みます。 また、このディレクトリでは、スタックとともにコンパイルのために他のレベルを追加できます

インターフェイス/、チャネル/、ルーティング/、プレゼンテーション/、サービス/ -特定のレベルにのみ関連するソースコードとヘッダーファイルを含むファイルを含むディレクトリ。

共有/ -すべてのレベルに共通の定義を持つファイル。

libmoar / -MOARスタックと通信し、それを使用してデータを転送するために他のプロジェクトで使用できるソースコードとヘッダーファイルを含むファイル。 したがって、これらのファイルは、MOARスタックのAPI機能を実装します。

moard /-Linuxデーモンのすべてのレベルを組み合わせたソースファイルとヘッダーファイル

tools / -MOARスタックを使用するか、MOARスタックの動作を保証する追加ユーティリティのソースファイルとヘッダーファイル。 そのため、たとえば、moskitユーティリティは仮想データ転送媒体であり、環境内の無線信号の減衰を考慮して(最も単純な形式で)スタックのいくつかのインスタンスの作業をデバッグできます。


フォルダ構造が多少明確になったので、プロジェクトのコンパイルとビルドを始めましょう。



ルートフォルダーに移動します。



 d moarstack_linux
      
      





次のコマンドを順番に実行します。



 cmake . make
      
      





ビルドが成功すると、config、lib、およびbinディレクトリがルートに表示されます。 現在の実装では、システムへのインストールは提供されていませんが、moardはデーモンとして起動できます。もちろん、自動実行に画面またはLSBスクリプトを使用できます。



構成ファイルを検討してください。



パスconfig/moarstack/



は、メイン構成ファイルmoar.confが含まれています



moardSettings.LogPath = /var/log/moard.log



ログファイルの場所

moardSettings.LayersEnabledDir = layers_enabled



残りのレベルの構成があるmoar.confに相対的なディレクトリ

nodeaddress.address = 0123456789abcdef



-16進数のノードのアドレス、8バイト(ノードによって異なる必要があります。スタックの現在の実装には静的アドレス指定があります。これを簡素化するために、このアドレスはTCP / IPスタックのIPアドレスの類似物として表すことができます)

ifaceSocket.FileName = /tmp/moarIfaceChannel.sock



インターフェース層とリンク層の相互作用のためのソケット

serviceSocket.FileName = /tmp/moarServiceApi.sock



サービスレベルとアプリケーションの相互作用のためのソケット。APIはそれを介して動作します



次に、次の場所にあるレベル構成を検討します。



config/<moardSettings.LayersEnabledDir>/*.conf



レベル設定



レベル構成ファイルの共通フィールド:



libraryLocation.FileName =



-コンパイルされた動的ライブラリのファイル名。 相対パスまたは絶対パス、またはファイル名のみを指定できます。 後者の場合、ファイルシステム内のライブラリ検索はld.soに割り当てられます。

Clionでスタックをアセンブルおよびデバッグする場合、コンパイルされたファイルの場所に注意する必要があります。IDEバージョンによって異なる場合があります。ビルドターゲット設定の適切なパスで環境変数LD_LIBRARY_PATHを設定できます



最後に、スタックの最初の起動に来ました。 moardを起動するための引数はまだありません(このため--help xDは空です):

--help -h



将来的には、引数の説明を含むページが作成されます

--config=<filename.conf> -c <file.conf>



-設定ファイルの名前は、明白なことに加えて、異なるパラメーターでスタックの複数のコピーを実行できるようにします



MOARスタックを開始するシーケンス:



0.引数moardを読み取ります。-cへのパスに沿ってファイルがない場合、エラーが発生します。

1. -c引数を使用しない場合、 ../config/moarstack/moar.conf



デフォルトの構成ファイルを探します(見つからない場合はエラーになります)

2.構成ファイルが見つかったら、それをロードし、 <moardSettings.LayersEnabledDir>/



移動して、すべての*.conf



ファイルを読み取ります。

3. *.conf



指定されたパスに従ってモジュールをロードします。

4.特定のタイプのレベルのライブラリがすでにロードされている場合、同じタイプのレベルをロードする以降の試行は無視されます。 (フロントエンドを除く)

5.それだけです! serviceSocket.FileName



指定されたソケットを介してスタックAPIと対話できます。



なぜLinuxを選んだのですか?リリースにMCUスタックを含めなかったのはなぜですか?



MOARスタックは、任意のLinuxデバイスにインストールできるソフトウェアソリューションです。 MOARスタックのユーザーをソリューションだけに限定するのではなく、厳密に定義されたアーキテクチャを備えたプラットフォームとしてではなく、独自のプロジェクトのツールとして扱いたいと考えています。 技術文書の公開は最初のステップにすぎません。 Arduinoファンは私たちを許しますが、既存の開発キットに制限なく決定を下すことはより面白く、それほど難しくはないと考えています。 そして、誰かがはんだごてとMOARのスタックを使って次の気象観測所を集めようとするなら、私たちは幸せになるだけです。



MCUのスタックバージョンを公開するオープンソースでは、状況はより複雑です。 残念ながら、私たちはあなたが食べ物にお金を払わなければならない世界に住んでおり、私たち自身も時々食べたいと思っています。 MCUスタックは、オープンソースのアイデアと完全に互換性のない、より特殊な構造と目的を持っているため、MCUの商用ソリューションを作成する予定です。 その結果、オープンソースで公開されたコードは、商用バージョンに約1年遅れます。



フィードバック。



今日から、MOARスタックはしばらくの間アルファステージになります。パフォーマンスの問題を回避するために、作業プロジェクトで使用することはお勧めしません。 スタックを試してみることにした人のために、ソースコードとドキュメントのあるリポジトリを使用することをお勧めします。 そこで、その使用に関する推奨事項を見つけることができます。 現時点では、個別のサイトまたはフォーラムの作成は非実用的であると考えました。利用可能な通信チャネルは、迅速な変更とフィードバックの収集に十分です。



どうぞお休みください。明けましておめでとうございます。また、私たちは、来年の新しいリリースを喜んでお約束します。



All Articles