This shows you the differences between two versions of the page.
— |
app-notes:metric-cloudsetup:sdk-adam4015-mqtt-publish [2020/11/12 10:16] (current) erdmann created |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | <file c sdk-adam4015-mqtt-publish.are> | ||
+ | DEV = "SERIAL2"; | ||
+ | SLAVEID = 1; | ||
+ | HOST = "123.123.123.123"; | ||
+ | PORT = 1883; | ||
+ | KEEPALIVE = 60; | ||
+ | PROTOCOL = "V31"; | ||
+ | USERNAME = "mqtt-username"; | ||
+ | PASSWORD = "mqtt-password"; | ||
+ | CLIENT_ID = "SDK-GPS"; | ||
+ | TOPIC = "mqtt-topic"; | ||
+ | QOS = 0; | ||
+ | RETAIN = 0; | ||
+ | MESSAGE = ""; | ||
+ | CLEAN_SESSION = true; | ||
+ | MQTT_HANDLE = 0; | ||
+ | |||
+ | /*create new mqtt instance*/ | ||
+ | MQTT_HANDLE = nb_mqttlib_new(CLIENT_ID, CLEAN_SESSION); | ||
+ | |||
+ | /* check serial port config */ | ||
+ | st = nb_config_get("serial.1.status"); | ||
+ | if (st != "2") { | ||
+ | nb_syslog("Serial port is not enabled for us"); | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | /* set attributes */ | ||
+ | ret = nb_serial_setattr(DEV, 9600, 8, 1, 0, 0); | ||
+ | if (ret != 0) { | ||
+ | printf("Could not set serial attributes: %i \n",ret); | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | /* open serial port */ | ||
+ | fd = nb_serial_open(DEV); | ||
+ | if (fd < 0) { | ||
+ | printf("Unable to open %s\n", DEV); | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | /* register fd for modbus functions */ | ||
+ | if (nb_modbus_register(fd, MODBUS_TYPE_RTU) < 0) { | ||
+ | printf("Unable to register to modbus\n"); | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | /* set slave id */ | ||
+ | if (nb_modbus_set_slave(fd, SLAVEID) < 0) { | ||
+ | printf("Unable to set slave identifier\n"); | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | if (nb_mqttlib_set_protocol_version(MQTT_HANDLE, PROTOCOL) < 0 ) { | ||
+ | printf("Unable to set Protocol version\n"); | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | if (nb_mqttlib_set_user_pw(MQTT_HANDLE, USERNAME, PASSWORD) < 0 ) { | ||
+ | printf("Unable to set Username and Passsword\n"); | ||
+ | |||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | if (nb_mqttlib_connect(MQTT_HANDLE, HOST, PORT, KEEPALIVE) < 0 ) { | ||
+ | printf("Unable to connect\n"); | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | |||
+ | while (1) { | ||
+ | |||
+ | /* read 1 registers from address 0*/ | ||
+ | data = nb_modbus_read_input_regs(fd, 0, 1); | ||
+ | /*write word from array in variable*/ | ||
+ | word=(int) data[0]; | ||
+ | /*convert PT100 data to temperature*/ | ||
+ | temp=(float) word / 65535 * 100; | ||
+ | |||
+ | //printf("%f\n",temp); | ||
+ | |||
+ | MESSAGE=sprintf("%f",temp); | ||
+ | |||
+ | ret = nb_mqttlib_publish(MQTT_HANDLE, TOPIC, MESSAGE, QOS, RETAIN); | ||
+ | |||
+ | if(ret<0){ | ||
+ | nb_syslog("Failed to publish mqtt message"); | ||
+ | } | ||
+ | |||
+ | sleep(60); | ||
+ | } | ||
+ | |||
+ | exit(0); | ||
+ | </file> |