i am developing a module in python that will allow me to connect my raspberry pi to a version of hivemq hosted on my pc.
it connects normally but when i add hivemq's file auth plugin it doesnt seem to work
im using the username_pw_set to set my username and password
here is what my code currently looks like:
import paho.mqtt.client as mqtt
client = mqtt.Client()
#The callback for when the client recieves a CONNACK response from the server
def on_connect(client, userdata, flags, rc):
print("connected with the result code "+str(rc))
#Define any topics you would like the pi to
#automatically subscribe to here
#The callback for when this client publishes to the server.
def on_publish(client, userdata, mid):
print("message published")
#The callback for when a PUBLISH message is recieve from the server.
def on_message(client, userdata, msg):
print(msg.topic+" "+str(msg.payload))
def on_log(client, userdata, level, buf):
print(str(level)+" "+str(buf))
#set callbacks
def setup():
client.on_connect = on_connect
client.on_message = on_message
client.on_publish = on_publish
client.on_log = on_log
#setup connection to broker
def connect(username, password):
client.username_pw_set(username, password)
client.connect("10.19.109.152")
def publish(topic, message):
client.publish(topic, message)
def loop():
client.loop()
could it be something to do with the way the python client formats the connect request?
Edit:
Server gives me error message:
2015-11-26 09:50:53,723 ERROR - Could not get valid results from the webservice
org.apache.http.NoHttpResponseException: The target server failed to respond
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(Default
HttpResponseParser.java:143)
and my client(on_connect function) outputs a connack message with code 5 which is for refused connection as its not authorised.
The error from hivemq states that the http server you have pointed it at to do the authentication has not responded.
You should check that those details are correct and that it responds as expected when you use something like curl to test it.