#python #iot #google-cloud-iot
#python #iot #google-cloud-iot
Вопрос:
Как я могу отправить команду на все устройства в реестре, используя MQTT и Google Cloud IoT Core?
Все примеры, которые я видел до сих пор, просто отправляли команду на одно устройство. Должен ли я выполнять цикл на своих устройствах и отправлять сообщения на каждое из них?
Заранее спасибо.
Комментарии:
1. Вы пробовали использовать подстановочный знак MQTT (я думаю, это хэш ‘#’) в поле device-id?
Ответ №1:
Вам нужно было бы перечислить устройства в реестре, а затем вызвать метод sendCommandToDevice в цикле, как вы предложили.
Для справки, это будет выглядеть примерно так (на Python):
command = '{ "state": "off" }'
registry_path = 'projects/{}/locations/{}/registries/{}'.format(
project_id, cloud_region, registry_id)
client = get_client(service_account_json)
devices = client.projects().locations().registries().devices(
).list(parent=registry_path).execute().get('devices', [])
for device in devices:
device_path = 'projects/{}/locations/{}/registries/{}/devices/{}'.format(
project_id, cloud_region, registry_id, device.get('id'))
config_body = {
'binaryData': base64.urlsafe_b64encode(
command.encode('utf-8')).decode('ascii')
}
client.projects().locations().registries().devices().sendCommandToDevice(
name=device_path, body=config_body).execute()