Python 如何将文本数据和文件从物联网设备发送到云物联网核心?
我正在将图像从树莓Pi发送到云物联网核心。这是可行的,但我现在意识到,在谷歌云存储中存储文件时,我还需要文件名(或我添加到文件名中的数据),但据我所知,发送的只是文件的内容。我试图用下面的代码提取来完成这一点,但这似乎不起作用,我想这是可以理解的,因为它是JSON对象中的字节数组 有办法吗?当通过云函数发送到存储器时,文件名是否可以检索Python 如何将文本数据和文件从物联网设备发送到云物联网核心?,python,google-cloud-storage,mqtt,google-cloud-iot,Python,Google Cloud Storage,Mqtt,Google Cloud Iot,我正在将图像从树莓Pi发送到云物联网核心。这是可行的,但我现在意识到,在谷歌云存储中存储文件时,我还需要文件名(或我添加到文件名中的数据),但据我所知,发送的只是文件的内容。我试图用下面的代码提取来完成这一点,但这似乎不起作用,我想这是可以理解的,因为它是JSON对象中的字节数组 有办法吗?当通过云函数发送到存储器时,文件名是否可以检索 with open(filename, 'rb') as f: imagestring = f.read() byteArray = bytes(ima
with open(filename, 'rb') as f:
imagestring = f.read()
byteArray = bytes(imagestring)
now = datetime.datetime.now()
datetime_formatted = now.strftime("%Y-%m-%d_%H:%M:%S")
filename = 'img_GM4_' + datetime_formatted +'.jpg'
payload = '{{ "ts": {}, filename: {}, "image": {}}}'.format(int(time.time()), filename, byteArray)
client.publish(_MQTT_TOPIC, payload, qos=1)
# Previously: client.publish(_MQTT_TOPIC, byteArray, qos=1)
为了在云存储中保存映像,您需要使用一个 云功能应包括以下步骤:
最后,请注意,根据需要,您应该避免文件名基于时间戳(这将限制吞吐量)。在云存储环境中,建议在中创建文件名。因此,如果您注意到应用程序中存在性能问题,请考虑最后一条消息。此答案假定数据是base64编码的。我没有这样做,因为没有必要使用MQTT。您的意思是必须进行base64编码才能检索文件名吗?请注意,一般情况下,发布/订阅消息的数据作为base64编码的字符串存储在PubsubMessage对象的中。这就是为什么我包括了这一步。如果不是这样,您可以省略解码部分并获得所需的字段。如何访问文件名字段?我不知道
helloPubSub
函数的事件
对象中有一个。(我正在用Typescript btw编写我的函数)。文件名字段应该位于云发布/子主题(应该使用client.publish(_MQTT\u topic,payload,qos=1)的数据(需要解析)上。
)。如果您没有收到云发布/订阅上的数据,请参阅以获取疑难解答。确定。我可以毫无问题地将数据发送到Pub/Sub,但是如果能描述一下如何(解析数据和)检索文件名,我将不胜感激。