Communication with AWS Server
-
I want to send date that I recived from a Oxygen sensor(SDS011) using serial port. I want to send this values to the Amazon server using MQTT. My main code is the next:
print("Importing Library") import time import sys import datetime import paho.mqtt.client as paho import ssl import os import json print("Importing Done") def on_connect(client, userdata, flags, rc): global connflag connflag = True if rc == 0: print("Connected") else: print("Connection returned result: " + str(rc) ) def on_message(client, userdata, msg): print(msg.topic+" "+str(msg.payload)) mqttc = paho.Client("Omega-C11B") mqttc.on_connect = on_connect mqttc.on_message = on_message print("Paho Client Setup Done") awshost = "a3rzs5flqm8tjk-ats.iot.ap-south-1.amazonaws.com" awsport = 8883 clientId = "Omega-C11B" thingName = "Omega-C11B" caPath = "/root/root-CA.crt" certPath = "/root/496d95a10e-certificate.pem.crt" keyPath = "/root/496d95a10e-private.pem.key" mqttc.tls_set(caPath, certfile=certPath, keyfile=keyPath, cert_reqs=ssl.CERT_REQUIRED, tls_version=ssl.PROTOCOL_TLSv1_2, ciphers=None) print("TLS Established") mqttc.connect(awshost, awsport, keepalive=60) print("Server Connected") mqttc.loop_start() while True: humidity = 60 #Supposing Data temperature = 30 #Supposing Data t = time.time(); date = datetime.datetime.fromtimestamp(t).strftime('%Y%m%d%H%M%S') mqttc.publish("$aws/things/Omega-CF2D/shadow/update/", json.dumps({"time": date, "temperature": temperature, "humidity": humidity}), qos=1) time.sleep(10)
In my console I get that the connection was sucefull, but when I see the AWS server, I can´t find the data. I don't know if it's due to a code problem or caPath Certificate, beacuse I don't know where I can find. So I get it forn this link link text. In my console I get :
I'm sending data with a time to 10seconds.
-
@Victor-Lucio Take a look at my response in this thread. Paho is not great at exposing errors if you don't use the callbacks.
https://community.onion.io/topic/3691/omega2-aws-connect-error-ssl-certificate-verify-failed/7
-
@crispyoz Which others changes I need to do?
Thanks for respondingCould you explain me, what de you tried to say in this " I would also implement the on_publish callback.
¿This? Sorry if my question it's basic- I´m new using this module and sendding data to AWS.
def on_publish(client, userdata, mid):
print("Message published: " + message)# message published, disconnect client.disconnect()
client.on_publish = on_publish"
-
@Victor-Lucio your on_log should print the buffer, it has no parameter named msg. buffer should contain any errors or warnings.