/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.

Primary LanguageC#MIT LicenseMIT

Dapr - Actors Sandbox

Sandbox to play with Dapr Actors.

How does it work?

POC

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!"
}