2

Mosquitto と python を使用して AWS IoT にファイルを発行しようとしています。公開する必要があるファイルは、ローカル ディレクトリにある jpg ファイルです。IoT にデータを公開するために必要な秘密鍵とアクセス キーがあります。私はプログラミングが初めてで、このプログラムの書き方がわかりません。誰かが私を助けてくれますか?これが非常に基本的なものである場合は申し訳ありません。ありがとうございました

私はすでにこれを試しました PythonでMosquittoを使用してファイルを公開するにはどうすればよいですか? 私にはうまくいきませんでした。

これが私がするのに疲れた方法です。

> #!/usr/bin/python

import mosquitto import sys                                  
import ssl 
import paho.mqtt.client as mqtt


f = open("data") 
imagestring = f.read() 
byteArray = bytes(imagestring) 
client.publish("photo", byteArray ,0)

#called when a message is received by a topic 
def on_message(mqttc, obj, msg):
print("Received message from topic: "+msg.topic+" | QoS: "+str(msg.qos)+"Data      Received: "+str(msg.payload))

#creating a client with client-id=mqtt-test 
mqttc = mqtt.Client(client_id="mqtt-test")

mqttc.on_connect = on_connect 
mqttc.on_subscribe = on_subscribe 
mqttc.on_message = on_message

#Configure network encryption  
mqttc.tls_set("/home/username/root-CA.crt",
certfile="/home/username/6fdda68178-certificate.pem.crt",
keyfile="/home/username/6fdda68178-private.pem.key",
              tls_version=ssl.PROTOCOL_TLSv1_2,
              ciphers=None)

#connecting to aws-account-specific-iot-endpoint 
mqttc.connect("A2DL8ZE59089FKF.iot.us-west-2.amazonaws.com", port=8883) 


#the topic to publish to 
mqttc.subscribe("$aws/things/mqtt-listener/shadow/update/#", qos=1)


#automatically handles reconnecting 
mqttc.loop_forever()
4

1 に答える 1

4

コードに逆方向のものがあるか、少なくとも理解するのが難しいようです。バイナリ ファイルを AWS IOT にアップロードするコードの例を次に示します。

#!/usr/bin/python

import paho.mqtt.client as paho
import os
import socket
import ssl
from time import sleep
from random import uniform

connflag = False

def on_connect(client, userdata, flags, rc):
   global connflag
   connflag = True
   print("Connection returned result: " + str(rc))

mqttc = paho.Client()
mqttc.on_connect = on_connect

awshost = "YOURAWSHOST.iot.us-west-2.amazonaws.com"
awsport = 8883
caPath = "root-CA.crt"
certPath = "YOURCERT.pem.crt"
keyPath = "YOURKEY.pem.key"

mqttc.tls_set(caPath, certfile=certPath, keyfile=keyPath, cert_reqs=ssl.CERT_REQUIRED, tls_version=ssl.PROTOCOL_TLSv1_2, ciphers=None)

mqttc.connect(awshost, awsport, keepalive=60)

mqttc.loop_start()
while 1==1:
   sleep(0.5)
   f = open('mybinaryfile')
   imagestring = bytearray(f.read())
   f.close()

   message = '"image": { "bytearray": "' + imagestring + '"} } '
   mqttc.publish("$aws/things/rpi/shadow/update", message, qos=1)

パブリッシュされたメッセージは小さい必要があることに注意してください - 128KB が最大サイズです。大きな画像がある場合は、画像をループして 128KB 未満 (+ オーバーヘッド) のチャンクに読み込み、全体がアップロードされるまで、画像ごとに複数の画像を A​​WS IOT にアップロードする必要があります。

-レイ

于 2016-03-10T16:22:26.467 に答える