HI,
I am trying to connect to our cloudmqtt account where the topics are dynamically created because of which is it not possible to pre-program a specific topic.
I would like to be able to scan for topics by subscribing to '#' and seeing all the messages on all the topics. I am able to receive messages but i am not sure how to read the topic name that message was published on.
I tried reading the p->message.topic.topic.utf8 but it is just returning the topic that set as publish.
/**@brief MQTT client event handler
*/
void mqtt_evt_handler(struct mqtt_client *const c,
const struct mqtt_evt *evt)
{
int err;
switch (evt->type) {
case MQTT_EVT_CONNACK:
if (evt->result != 0) {
printk("MQTT connect failed %d\n", evt->result);
break;
}
connected = true;
printk("[%s:%d] MQTT client connected!\n", __func__, __LINE__);
subscribe();
break;
case MQTT_EVT_DISCONNECT:
printk("[%s:%d] MQTT client disconnected %d\n", __func__,
__LINE__, evt->result);
connected = false;
break;
case MQTT_EVT_PUBLISH: {
const struct mqtt_publish_param *p = &evt->param.publish;
evt->param.
printk("[%s:%d] MQTT PUBLISH result=%d len=%d\n", __func__,
__LINE__, evt->result, p->message.payload.len);
err = publish_get_payload(c, p->message.payload.len);
if (err >= 0) {
data_print("Received: ", payload_buf,
p->message.payload.len);
data_print("Topic: ",
p->message.topic.topic.utf8, p->message.topic.topic.size);
thank you!