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);
}
--