Website for the Codit connected car that is being used in The Barrel Challenge 2018
The car sends all telemetry to Azure IoT Hub via Nebulus™ as a field gateway. Once it arrives in Azure IoT Hub we split the processing in two parts:
- Near-Real-Time aggregation
- Push events to Azure Service Bus Topics that gives us the ability to hook in where we want
For our real-time aggregation we use Azure Stream Analytics that will create aggregates based on the device message stream in Azure IoT Hub.
The job will output this for the following intervals:
- Every 15 minutes
- Every Hour
- Every Day
We have Azure Table Storage & Azure Blob Storage configured as sinks for this.
We use functions to have small extensibility points:
- A function to archive all our events to Azure Table Storage
- A function that pushes events to our frontend via SignalR
- Setup a table storage in Azure and copy the connection string.
- Replace the
<CHANGEME>
value for theTelemetryStorage.ConnectionString
setting inappsetings.json
with the table storage connection string. - Generate a random string here for the API key (this is used by the
RealTime
Azure function to communicate with the frontend). - Replace the
<CHANGEME>
value for theAuthorization.ApiKey
in the API and theRealTimeApiKey
setting in the functions project with this random API key - Replace the
<CHANGEME>
value for theAzureWebJobsStorage
in the functions project with the connection string to your Azure Storage account for hosting the functions - Replace the
<CHANGEME>
value for theConnectedCarServiceBus
in the functions project with the connection string to your Service Bus namespace - Replace the
<CHANGEME>
value for theConnectedCarTableStorage
in the functions project with the connection string to your Azure Storage account
- Get a Google Maps key here (https://developers.google.com/maps/documentation/javascript/get-api-key)
- Open
environment.ts
and replace the<CHANGEME>
value for themapKey
setting.
- Go to the
src/frontend
folder. - Make sure all npm packages are installed by running
npm install
oryarn
. - Run
ng build --prod
. - Go to the
src/backend
folder and rundotnet build --runtime debian-x64
. - Publish the backend by running
dotnet publish --runtime debian-x64
. - Go back to the root folder of the project.
- Run
docker build -f '.\docker\dev.dockerfile' -t <imagename> .
to build the docker image. (Replace with a name for the Docker image). - Start the container by running `docker run -p :80 -t (Replace with the port you want to service to be available at & replace with the name you used from the previous step).