# small_mqtt_client **Repository Path**: smilerll/small_mqtt_client ## Basic Information - **Project Name**: small_mqtt_client - **Description**: 基于rtthread 的mqtt 客户端 - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2023-04-17 - **Last Updated**: 2023-04-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # small mqtt ```c #include "small_mqtt_client.h" /* define MQTT client context */ static mqtt_client_t mqttclient; rt_thread_t tid; int value; small_mqtt_control(&mqttclient,MQTT_CLIENT_INIT,mqtt_port_socket_create()); //初始化mqtt客户端 设置数据端口 small_mqtt_control(&mqttclient,MQTT_SET_HOST,mqtt_host); //设置mqtt主机 small_mqtt_control(&mqttclient,MQTT_SET_PORT,mqtt_port); //设置mqtt端口 small_mqtt_control(&mqttclient,MQTT_SET_CLIENTID,mqtt_clientid); //设置mqtt客户端用户名 small_mqtt_control(&mqttclient,MQTT_SET_USERNAME,mqtt_username); //设置mqtt客户端用户名 small_mqtt_control(&mqttclient,MQTT_SET_PASSWORD,mqtt_password); //设置mqtt客户端密码 int value; value = 180; //s small_mqtt_control(&mqttclient, MQTT_SET_KEEPALIVE, &value); //设置mqtt心跳时间 value = 1; small_mqtt_control(&mqttclient, MQTT_SET_CLEANSESSION, &value); //设置mqtt是否清除会话 value = 10; //s small_mqtt_control(&mqttclient, MQTT_SET_RECONNECT, &value); //设置mqtt重连间隔时间 value = 3000; //ms small_mqtt_control(&mqttclient, MQTT_SET_READ_TIMEOUT_MS, &value); //设置mqtt读超时时间 value = 1024; small_mqtt_control(&mqttclient, MQTT_SET_READ_BUFF_SIZE, &value); //设置mqtt读缓存大小 value = 1000; //ms small_mqtt_control(&mqttclient, MQTT_SET_WRITE_TIMEOUT_MS, &value); //设置mqtt写超时时间 value = 1024; small_mqtt_control(&mqttclient, MQTT_SET_WRITE_BUFF_SIZE, &value); //设置mqtt写缓存大小 small_mqtt_control(&mqttclient, MQTT_CB_STATUS, mqtt_status_callback); //设置mqtt状态回调 small_mqtt_control(&mqttclient, MQTT_CB_MESSAGE, mqtt_sub_default_callback); //设置mqtt消息默认回调 small_mqtt_subscribe(&mqttclient, (enum QoS)QOS0, mqtt_subtopic,mqtt_sub_callback); //未连接状态下订阅主题,连接成功后会自动订阅 small_mqtt_will(&mqttclient,0,0,(enum QoS)QOS0,"will",mqtt_clientid); //设置断线消息 tid = rt_thread_create("smqtt", small_mqtt_thread,(void *)&mqttclient,2048, 17, 10); if (tid) { rt_thread_startup(tid); } return 0; ``` ## rtthread平台接口函数: ```c extern void small_mqtt_thread(void *param); extern int small_mqtt_subscribe(mqtt_client_t *client, enum QoS qos, char *topic,mqtt_message_cb callback); extern int small_mqtt_unsubscribe(mqtt_client_t *client, char *topic); extern int small_mqtt_publish(mqtt_client_t *client, enum QoS qos, char *topic, void *payload, size_t length); extern int small_mqtt_control(mqtt_client_t *client, int cmd, void *arg); extern int small_mqtt_will(mqtt_client_t *client,unsigned char willFlag,unsigned char retained, enum QoS qos,char *topic,char *msg); extern int small_mqtt_reconnect(mqtt_client_t *client); ```