下面是我尝试使用 MQTT 将图像发送到 Google Cloud IoT Core。我已阅读以下对我有所帮助的帖子,但我的代码仍然无法正常工作:如何在 Python 中使用 Mosquitto 将文件发布到 AWS-IoT以及如何在 Python 中使用 Mosquitto 发布文件?.我猜我的错误与qosin theclient.publish或我如何使用循环有关,但恐怕到目前为止我对这些因素的试验对我没有帮助(尝试qos= 0/1/2 和 eg client.loop_forever())。我的图像是 1.2 Mb,所以据我所知,这应该不是问题。#!/usr/bin/pythonfrom picamera import PiCameraimport datetimeimport timeimport jwtimport paho.mqtt.client as mqttfrom time import sleep# Define some project-based variables to be used below. This should be the only# block of variables that you need to edit in order to run this scriptssl_private_key_filepath = 'FILE1.pem'ssl_algorithm = 'RS256' # Either RS256 or ES256root_cert_filepath = 'FILE2.PEM'project_id = 'PROJECT_ID'gcp_location = 'LOCATION'registry_id = 'REG_ID'device_id = 'DEVICE_ID'# end of user-variablesrun = Truecur_time = datetime.datetime.utcnow()def create_jwt(): token = { 'iat': cur_time, 'exp': cur_time + datetime.timedelta(minutes=60), 'aud': project_id } with open(ssl_private_key_filepath, 'r') as f: private_key = f.read() return jwt.encode(token, private_key, ssl_algorithm)_CLIENT_ID = 'projects/{}/locations/{}/registries/{}/devices/{}'.format(project_id, gcp_location, registry_id, device_id)_MQTT_TOPIC = '/devices/{}/events'.format(device_id)client = mqtt.Client(client_id=_CLIENT_ID)# authorization is handled purely with JWT, no user/pass, so username can be whateverclient.username_pw_set( username='unused', password=create_jwt())def error_str(rc): return '{}: {}'.format(rc, mqtt.error_string(rc))def on_connect(unusued_client, unused_userdata, unused_flags, rc): print('on_connect', error_str(rc))def on_publish(unused_client, unused_userdata, unused_mid): print('on_publish') run = Falseclient.on_connect = on_connectclient.on_publish = on_publishclient.tls_set(ca_certs=root_cert_filepath) # Replace this with 3rd party cert if that was used when creating registryclient.connect('mqtt.googleapis.com', 8883)
添加回答
举报
0/150
提交
取消