yash-nisar / iot-with-dapr-actors

Example of how you can build IoT solutions that have custom device gateways that are using Dapr Actors to represent devices in the field.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Building IoT solutions with Dapr Actors

Example of how you can build IoT solutions that have custom device gateways that are using Dapr Actors to represent devices in the field.

How does it work?

Overview

Try it yourself!

Kubernetes

Prerequisites

Before you can start, you'll need to :

  1. Install Dapr (docs)
  2. Install KEDA (docs)
  3. Update YAML specs under /deploy with your config

Deploying the scenario

You are ready to go, deploy!

  1. Deploy Dapr Components
$ k apply -f .\deploy\dapr-infrastructure.yaml
secret/dapr-infrastructure-secrets created
component.dapr.io/dapr-state-store created
  1. Deploy Device Actor Host
$ k apply -f .\deploy\device-actors.yaml
secret/dapr-sandbox-actors-secrets created
deployment.apps/dapr-sandbox-actors created
  1. Deploy Device API
$ k apply -f .\deploy\device-api.yaml
secret/dapr-sandbox-apis-device-secrets created
deployment.apps/dapr-sandbox-apis-device created
service/dapr-sandbox-apis-device-service created
service/dapr-sandbox-apis-device-load-balancer created
  1. Deploy Twin Change Stream Processor
$ k apply -f .\deploy\twin-changes-stream-processor.yaml
secret/dapr-sandbox-twin-change-secrets unchanged
deployment.apps/twin-changes-stream-processor created
scaledobject.keda.k8s.io/twin-changes-autoscale created
  1. Deploy Device Message Stream Processor
$ k apply -f .\deploy\device-message-stream-processor.yaml
secret/dapr-sandbox-device-telemetry-secrets created
deployment.apps/device-telemetry-stream-processor created
scaledobject.keda.k8s.io/device-telemetry-autoscale created

Locally

  1. Configure dependencies in docker-compose.override.yml
  2. Start containers with Docker Compose:
$ cd src
$ docker-compose up
  1. Explore the API on http://localhost:880/api/docs

Cleanup

Stop containers with Docker Compose:

$ docker-compose down

Testing

Sending device messages

Messages should be sent as following to Azure Event Hubs:

messageType: Telemetry
deviceId: <id>
{
  "content": "Hello Dapr!"
}

About

Example of how you can build IoT solutions that have custom device gateways that are using Dapr Actors to represent devices in the field.

License:MIT License


Languages

Language:C# 96.9%Language:Dockerfile 3.1%