Update content

Triggering IoT Hub events via the API

Requirements:

Device information, such as events or errors, are reported on your Hub under the default topic prefix $SCW/events. For more information on Hub Events, you can read the IoT Hub events documentation.

In the following example we will trigger an event by trying to connect without security on a device where security is required.

First, we connect to previously created dev1 device as events consumer (we want only error events)

# In one terminalmosquitto_sub \  -h $(jq -r '.endpoint' hub.json) -p 1883 \  -i $(jq -r '.device.id' dev1.json) \  -t '$SCW/events/error/#'

Then we create a secured-only device and try to connect it in insecure mode:

curl -sS -H "X-Auth-Token: $SCW_SECRET_KEY" -d '{    "hub_id": "'$(jq -r '.id' hub.json)'",    "name": "my_secured_device",    "allow_insecure": false  }' $IOT_API/devices > secure-dev.json
jq < secure-dev.json
# In another terminalmosquitto_pub \  -h $(jq -r '.endpoint' hub.json) -p 1883 \  -i $(jq -r '.device.id' secure-dev.json) \  -t mytopic/mysubtopic \  -m 'This should fail'

dev1 will receive following message, on topic $SCW/events/device/<secure-dev-id>/error:

{  "time":"2020-01-17T15:01:29Z",  "severity": "error",  "object-type": "device",  "object-id": "dev3-id",  "msg":"connection refused because this device requires mutual TLS authentication",  "packet":"CONNECT: dup: false qos: 0 retain: false rLength: 48"}