Kae.IoT.Framework
1.0.0
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Kae.IoT.Framework --version 1.0.0
NuGet\Install-Package Kae.IoT.Framework -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Kae.IoT.Framework" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Kae.IoT.Framework --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Kae.IoT.Framework, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Kae.IoT.Framework as a Cake Addin #addin nuget:?package=Kae.IoT.Framework&version=1.0.0 // Install Kae.IoT.Framework as a Cake Tool #tool nuget:?package=Kae.IoT.Framework&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Azure IoT Hub Device Application Framework for C#
Azure IoT Hub に接続するデバイスで必要な共通ロジックを実装し、ユーザーコーディング量を少なくするフレームワークライブラリ。
- C# 用ライブラリ
- C/C++ 用ライブラリ - Coming Soon
- Python 用ライブラリ - Coming Soon
このリポジトリについて
フレームワークライブラリの設計・実装のサンプルとして公開。
「Essense of Software Design」 に記載の、様々な基本事項に則って開発を行っている。
ここで公開しているフレームワークライブラリは、https://github.com/kae-made/dtdl-iot-app-generator で公開する自動生成ツールでも利用する。
2022/5/2 第一版公開時点では、まだ、全てのテストが終わっていない状態での公開である。今後、実行テストや自動生成ツールの成長とともにどの様に変化していくかも興味深いと思われるので、github の履歴参照機能を使って、是非、確認してみてほしい。
開発は、最初に C# のライブラリから始めている。理由は、以下の二つ。
- 型付け言語である
- 自動生成と親和性が高い言語体系である
設計にあたって
- アプリケーションは、https://docs.microsoft.com/ja-jp/azure/iot-hub/ で公開されている各言語毎に提供された Device SDK を使って実装する。
- 様々な実行プラットフォーム、実行形式で使えるよう考慮する。
- Azure IoT Hub を活用したデバイスアプリのロジックで、個別のソリューション、機器に依存せず共通に実装しなければならないものを、フレームワークライブラリ内に実装し、IoTソリューションを構成するデバイスの制御ロジックの実装量を低減する。
- アプリ形式で使う DeviceClient と、IoT Edge Module 形式で使う ModuleClient は、ほぼ同じメソッドセットを持っているが、その特性上、微妙に異なる。この相違は、極力フレームワークライブラリで吸収し、ユーザーコードは必要最小限の対応を可能とする。
- IoT Plug & Play の定義から自動生成可能なロジックを容易に組み込めるようにする。
- 手書きによるユーザーコードの追加の容易性も考慮する。
共通コード
それぞれの IoT ソリューション、機器によらない部分の実装は以下の通り。
- Azure IoT Hub とのセキュアな接続
- Azure IoT Hub へのメッセージ送信
- Azure IoT Hub への、センシングデータ等の一定間隔の送信
- Azure IoT Hub からのメッセージ受信と、ユーザーコードへの通知、及び、ACK の送信
- Device Twins Desired Properties の更新の、ユーザーコードへの通知
- Device Twins Reported Properties の更新通知
- Direct Method の起動受信と、ユーザーコードへの通知、及び、結果の送信
- Device 2 Cloud メッセージングでは送信できない大きなデータの送信
以上の項目を、フレームワークライブラリの機能として実装する。
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.1 is compatible. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETCoreApp 3.1
- Azure.Storage.Blobs (>= 12.13.1)
- Kae.Utility.Logging (>= 1.0.0)
- Microsoft.Azure.Devices.Client (>= 1.41.2)
- Microsoft.Azure.Devices.Provisioning.Client (>= 1.19.2)
- Microsoft.Azure.Devices.Provisioning.Security.Tpm (>= 1.14.2)
- Microsoft.Azure.Devices.Provisioning.Transport.Amqp (>= 1.16.4)
- Microsoft.Azure.Devices.Provisioning.Transport.Http (>= 1.15.2)
- Microsoft.Azure.Devices.Provisioning.Transport.Mqtt (>= 1.17.2)
- Newtonsoft.Json (>= 13.0.1)
- YamlDotNet (>= 12.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.