This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Sending sensor_value data over MQTT with data_publish() function - nRF916

Hi!

I am using the MQTT simple sample that i have modified to continuously send data after receiving a message. 

I also have connected a MS5837 pressure sensor to the nRF9160, and i would like to send the pressure data over LTE-M with the data_publish() function. The MS5837 is a supported by Zephyr, and i implemented the sensor example in the MQTT simple  https://github.com/zephyrproject-rtos/zephyr/tree/master/samples/sensor/ms5837. 


The publishing loop will look something like this:


                                
          while (1)

                {

		struct sensor_value temp;
		struct sensor_value press;

		sensor_sample_fetch(dev);
		sensor_channel_get(dev, SENSOR_CHAN_AMBIENT_TEMP, &temp);
		sensor_channel_get(dev, SENSOR_CHAN_PRESS, &press);

		printf("Temperature: %d.%06d, Pressure: %d.%06d\n", temp.val1,
		       temp.val2, press.val1, press.val2);          

                                
                                
                 k_sleep(1000);

 data_publish(&client, MQTT_QOS_1_AT_LEAST_ONCE, temp.val1, sizeof(temp.val1));
                                  
                 k_sleep(1000);

     data_publish2(&client, MQTT_QOS_1_AT_LEAST_ONCE, press.val1, sizeof(press.val1))
                              
                                }


The problem is that the sensor value is represented into an integer and a fractional part, press.val1 and press.val2. Is there a simple way of using the data_publish() function with the sensor value peripherals? Or must this be represented in a static u8_t char buffer?


Best regards,

Ivar

Related