Hello
everyone and thanks in advance for your support.
I cannot
connect to Azure IoTHub via the C paho library (on linux).
I’m using the latest release,
v1.2.1.
I’m
following the official Microsoft documentation here (https://docs.microsoft.com/it-it/azure/iot-hub/iot-hub-mqtt-support).
I have
managed to successfully connect with both the python library
(un Ubuntu) and
the Java GUI client (on Windows) and to exchange messages,
so I guess the
credentials I’m using are correct.
I'm compiling the C paho
library, altough my application is in C++, I don't know if
this can be a problem.
What happens after I try
to Connect is connectFailure with a null response pointer.
This is a
snippet of my MQTT_connect() function, linked against the
mqtt3as library:
#define MQTT_BROKER_ADDRESS
"ssl://xxx:8883"
void onConnectFailure(void* context,
MQTTAsync_failureData* response)
{
printf("Connect failed, rc %d %s\n",
response ? response->code : 0, response->message);
}
int main() {}
char
clientID[] =
"xxxx";
MQTTAsync_connectOptions conn_opts =
MQTTAsync_connectOptions_initializer;
MQTTAsync_SSLOptions
ssl_opts =
MQTTAsync_SSLOptions_initializer;
//MQTTAsync_willOptions will_opts =
MQTTAsync_willOptions_initializer;
MQTTAsync_create(&client,
MQTT_BROKER_ADDRESS,
clientID,
MQTTCLIENT_PERSISTENCE_NONE,
NULL);
MQTTAsync_setCallbacks(client, client, NULL,
OnMessageArrived,
NULL);
string username =
"xxxx";
string password =
"xxxx ";
//ssl_opts.struct_version =
2;
ssl_opts.enableServerCertAuth =
1;
ssl_opts.sslVersion =
MQTT_SSL_VERSION_TLS_1_2;
ssl_opts.trustStore =
"/etc/ssl/certs/Baltimore_CyberTrust_Root.pem";
//ssl_opts.keyStore
="/etc/ssl/certs/ca-certificates.crt";
//ssl_opts.CApath =
"/etc/ssl/certs";
//ssl_opts.enabledCipherSuites="TLSv1";
//conn_opts.keepAliveInterval =
MQTT_KEEPALIVE;
//conn_opts.cleansession =
MQTT_CLEAN_SESSION;
//conn_opts.will =
&will_opts;
conn_opts.username =
username.c_str();
conn_opts.password =
password.c_str();
//conn_opts.connectTimeout =
MQTT_TIMEOUT;
conn_opts._onSuccess_ =
onConnect;
conn_opts._onFailure_ =
onConnectFailure;
conn_opts.context =
client;
//conn_opts.automaticReconnect = 0;
conn_opts.ssl =
&ssl_opts;
conn_opts.MQTTVersion
=
4;
//
gAppLog.PrintLog(LOG_DEBUG_WS, "MQTT
connecting to: %s",
MQTT_BROKER_ADDRESS);
printf("host: %s
\nclientID: %s
\nusername: %s \npassword: %s \n",
MQTT_BROKER_ADDRESS,clientID,username.c_str(),
password.c_str());
int
rc;
rc =
MQTTAsync_connect(client,
&conn_opts);
}
--