Я пытаюсь отправить сообщение на мое устройство из облака, используя Azure IoT Hub и REST api (не используя Azure IoT hub python SDK).
Я могу успешно отправить сообщение (запрос POST) на концентратор с устройства с помощью uri https://<myiothub>.azure-devices.net/devices/<devid>/messages/events?api-version=2018-06-30
. В документации на https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-c2d говорится, что есть конечная точка на стороне обслуживания на /messages/devicebound
. Однако они не показывают полный пример, поэтому я не совсем уверен, какую конечную точку мне следует использовать, и как / где указать, какое устройство отправлять.
Я все равно попробовал следующее:
curl -v POST \
https://<myhub>.azure-devices.net/messages/devicebound?api-version=2018-06-30 \
-H 'Authorization: SharedAccessSignature <sas>' \
-H 'Content-Type: application/json' \
-d '{
"payload": {
"key": "value"
}
}'
где генерируется с помощью Azure CLI az iot hub generate-sas-token -n <myhub>
. Я получаю сообщение об ошибке
{"Message":"ErrorCode:ArgumentInvalid;Request must contain IoTHub custom 'To' header","ExceptionMessage":"Tracking ID:ec98ff8...
где я отрезаю конец. Поэтому я попытался добавить заголовок «Кому», который независимо от того, что я помещаю, возвращает одно и то же сообщение об ошибке.
Я также попробовал то, что предлагается здесь API-интерфейс REST API Azure IoT для облачных вычислений , а именно для отправки через конечную точку https://main.iothub.ext.azure.com/api/Service/SendMessage/,, но безуспешно.