Как я могу отправлять «HTTP-запросы» в облачную функцию Google с устройства (с помощью CLOUD IOT CORE AUTHORIZATION)?
например прямо сейчас у меня есть устройство, которое уже зарегистрировано в ядре Cloud IoT. Для связи я отправляю данные через Pub / Sub Mqtt в облачную функцию. Он работает хорошо, но я не могу отправить сообщение подтверждения из облачной функции на устройство, если ответ успешен или нет.
Но теперь я хотел бы, например, сделать HTTP-запрос POST / GET к облачной функции с устройства. Чтобы этот запрос HTPP получил сообщение подтверждения, например «Ваши данные достигли» обратно из облачной функции.
То, что я пробовал сейчас на своем устройстве, это ..
def post_data(payload):
URL='https://cloudiotdevice.googleapis.com/v1/projects/{project-id}/locations/{cloud-region}/registries/{registry-id}/devices/{device-id}:publishEvent'
payload = json.dumps(payload)
headers = {
'Content-Type': 'application/json; charset=utf-8',
'Authorization': JWT
}
try:
requests.post(URL, json=payload, headers=headers)
except requests.exceptions.ConnectionError:
logging.error('Error posting data to Cloud Function!')
except requests.exceptions.MissingSchema:
logging.error('Error posting data to Cloud Function! Are Environment Variables set?')
Но он возвращает мне ошибку 400. У меня также есть подпапка в качестве темы, но я также не знаю, где ее определить?
формат полезной нагрузки такой, как показано ниже
payload = {'device': device_id,
'type': TYPE,
'timestamp': time.time(),
'data': {'temperature': temperature,
'humidity': humidity}}