5

This question is related to this one after you helped me to fix my mistake I have connected to Eclipse broker, it worked just fine, connection and publishing, then I switched to AWS IoT broker with this code

#!/user/bin/python3
import paho.mqtt.client as mqtt
import RPi.GPIO as GPIO
import time
import ssl
import _thread

GPIO.setmode(GPIO.BCM) GPIO.setup(4, GPIO.IN)

Define Variables

MQTT_PORT = 8883 MQTT_KEEPALIVE_INTERVAL = 45 MQTT_TOPIC = "ldr" MQTT_MSG = "there is a product" #MQTT_HOST = "iot.eclipse.org"

MQTT_HOST = "xxxxxxx" THING_NAME = "LDRsensor" CLIENT_ID ="LDRsensor" CA_ROOT_CERT_FILE = "xxxxxxx" THING_CERT_FILE = "xxxxxxxxxxxx" THING_PRIVATE_KEY = "xxxxxxxxxxx"

Define on_publish event function

def on_publish(client, userdata, mid): print ("Message Published...")

Initiate MQTT Client

mqttc = mqtt.Client()

Register publish callback function

mqttc.on_publish = on_publish

Configure TLS Set

mqttc.tls_set(CA_ROOT_CERT_FILE, certfile=THING_CERT_FILE, keyfile=THING_PRIVATE_KEY, cert_reqs=ssl.CERT_REQUIRED, tls_version=ssl.PROTOCOL_TLSv1_2, ciphers=None)

Connect with MQTT Broker

mqttc.connect(MQTT_HOST, MQTT_PORT, MQTT_KEEPALIVE_INTERVAL) print ("Connected Successfully") #mqttc.loop_forever()

def publishMessage(Variable):

while (1):
    input_value = GPIO.input(4)
    if input_value == 1:
        mqttc.publish(MQTT_TOPIC,MQTT_MSG,qos=1)
        #print ("message published")
        time.sleep(1)

_thread.start_new_thread(publishMessage,("publishMessage",)) mqttc.loop_forever()

But what I get is that, I can connect successfully but I can not publish the mesages. Is it because of forever loop or there is some thing else.I tried debug method, on line _thread.start_new_thread(publishMessage,("publishMessage",)) i got [Errno 32] Broken pipe what is that mean and how i can fix it?

should i install AWSIoTPythonSDK?

Bence Kaulics
  • 7,843
  • 8
  • 42
  • 90
Balsam Qassem
  • 693
  • 4
  • 11

1 Answers1

5

I finally figured out what my mistake is. It was in the ARN Resources of policy I wrote a wrong topic in the end of policy resources line. I wrote ldr instead of LDRsensor.

Bence Kaulics
  • 7,843
  • 8
  • 42
  • 90
Balsam Qassem
  • 693
  • 4
  • 11