.. | ||
Protos | ||
Sensors | ||
Telemetry | ||
NucuCar.Domain.csproj | ||
Readme.md |
Protos
The files from Protos are compiled by the gRPC compiler and provide data structures that are shared across the project.
Telemetry
It provides useful classes and abstractions for implementing telemetry in individual components. All telemetry publishers use the MQTT protocol unless specified otherwise.
Azure Telemetry
Publisher
You can use cloud telemetry for free via Azure-IoT-Hub. You still need a backend application that will process the messages.
You will need to create a:
- IoT Hub
- IoT Device
Then navigate to your device and grab the primary key, you will need it to create a connection string of the form:
HostName=YOUR_IOT_HUB_NAME.azure-devices.net;DeviceId=YOUR_DEVICE_NAME;SharedAccessKey=PRIMARY_OR_SECONDARY_KEY
The connection string can be passed to the application via appsettings.json
or command line arguments or environment variables:
dotnet run --Telemetry:ConnectionString=CONNECTION_STRING
export Telemetry:ConnectionString=CONNECTION_STRING
The Telemetry:Publisher must be set to: Azure
You may also use the format from above to override any settings in appsettings.json.
Reader
A telemetry reader can be found in NucuCar.TestClient. You'll need a connection string that can be found in Azure's IoT Hub Build-In Endpoints setting.
Disk Telemetry
Publisher
Publishes telemetry on the disk.
Example connection string:
Filename=telemetry;FileExtension=csv;Separator=,;BufferSize=4096
The Telemetry:Publisher must be set to: Disk
See the source code for comments on the ConnectionString.
Reader
You will need to parse the file by yourself.
Firebase Firestore Database
Publisher
Publishes telemetry on the firestore.
The Telemetry:Publisher must be set to: Firestore
Example connection string:
ProjectId=nucuhub;CollectionName=sensors-telemetry-test;Timeout=1000
If you want to use Authentication you can do so by providing the following keys in the connection string: WebApiEmail, WebApiPassword, WebApiKey.
Reader
You will need use a firebase client or rest API.