ModifyCloudToDeviceConfig отправляет команду с qos 1. Есть ли другой способ отправки команды, кроме ModifyCloudToDeviceConfig.
Ядро Google Cloud iot отправляет команды на устройство с qos 0
Ответы (2)
Мы только что добавили новую функцию Commands
в IoT Core, которая делает именно это. Он только что прошел открытую бета-версию, поэтому у вас должен быть доступ к нему сейчас. В консоли, если вы углубитесь в одно устройство, вы увидите «Отправить команду» рядом с «Обновить конфигурацию» на верхней панели. В командной строке с помощью gcloud SDK вы можете выполнить gcloud components update
, а затем gcloud beta iot devices --help
, чтобы увидеть команду новых команд, а в API обнаружения теперь у вас должен быть вызов SendCommandToDevice
для этого. Ознакомьтесь с документацией по нему здесь.
Согласно документации MQTT Bridge, для В конфигурациях устройства можно указать два уровня QoS:
- QoS равно 0: публикация версии конфигурации происходит только один раз.
- QoS равно 1: последнее обновление конфигурации повторяется до тех пор, пока устройство не подтвердит его с помощью PUBACK.
Кроме того, согласно документации на Конфигурация устройства MQTT, устройства, использующие MQTT, могут подписаться на специальную тему, в которой поступают обновления конфигурации:
/devices/{device-id}/config
После подписки мост MQTT ответит SUBACK, используя QoS, указанный для темы конфигурации (которое может быть либо 0, либо 1, как обсуждалось ранее).
Кроме того, если вы хотите вместо этого использовать HTTP Bridge , вы можете определить конфигурацию в Cloud IoT Core, как описано в документации, а затем получить ее вручную с помощью явный запрос конфигурации устройства.
Таким образом, при обновлении конфигурации устройства (что вы делаете с помощью метода modifyCloudToDeviceConfig()
, хотя это можно сделать и через gcloud
или Консоль), вы не можете указать уровень QoS. На этом этапе обновление будет доступно в Cloud IoT Core, но не будет применено на соответствующем устройстве. Затем, на втором этапе обновления, где вы фактически получаете и применяете обновление на устройстве, вы можете использовать MQTT (и затем указать уровень QoS для использования в разделе config
) или HTTP (и вручную получать новые конфигурации всякий раз, когда ты хочешь).