【嵌入式linux】阿里云平台 C Link SDK 接入cJSON

使用阿里云平台提供的 C Link SDK 使 Linux 设备接入物联网 - MQTT接入

阿里云平台mqtt接入物联网可参考此篇博客。

 

找个干净的地方,下载cJSON

git clone https://github.com/DaveGamble/cJSON.git

由于在Makefile中

这句命令的作用是在当前目录下查找所有以.c为扩展名的文件,但排除了路径中包含/demos/和/nopoll/的文件夹。

这里我直接新建了一个lib文件夹 

cd 你自己的路径/cJSON

mkdir 你自己的路径/LinkSDK/lib

cp cJSON.c cJSON.h 你自己的路径/LinkSDK/lib

修改mqtt_basic_demo.c

1、添加包含

2、按你自己的要求使用cjson,示例:

cJSON生成的报文如下

{
	"id":	1694855798655,
	"version":	"1.0",
	"method":	"thing.event.property.post",
	"params":	{
		"Temperature":	1.8,
		"Humidity":	1.9
	}
}

编译放入开发板后运行,阿里云平台数据

接入阿里云的主要步骤包括以下几个方面: 1. 注册阿里云账号并开通物联网平台服务。 2. 创建产品和设备,获取设备证书及密钥。 3. 在ESP32上安装ESP-IDF开发环境,并配置WiFi相关参数。 4. 使用MQTT协议连接阿里云物联网平台,并进行认证。 5. 采集传感器数据,将数据格式化为JSON格式。 6. 将数据发布到阿里云物联网平台上。 以下是一个简单的ESP32接入阿里云的代码示例: ```c #include "esp_wifi.h" #include "esp_system.h" #include "esp_event.h" #include "esp_event_loop.h" #include "esp_log.h" #include "mqtt_client.h" #include "cJSON.h" static const char *TAG = "ALIYUN_IOT"; #define WIFI_SSID "your_wifi_ssid" #define WIFI_PASSWORD "your_wifi_password" #define MQTT_HOST "your_mqtt_host" #define MQTT_PORT your_mqtt_port #define PRODUCT_KEY "your_product_key" #define DEVICE_NAME "your_device_name" #define DEVICE_SECRET "your_device_secret" static esp_mqtt_client_handle_t mqtt_client; static esp_err_t mqtt_event_handler_cb(esp_mqtt_event_handle_t event) { switch (event->event_id) { case MQTT_EVENT_CONNECTED: ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED"); break; case MQTT_EVENT_DISCONNECTED: ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED"); break; case MQTT_EVENT_SUBSCRIBED: ESP_LOGI(TAG, "MQTT_EVENT_SUBSCRIBED"); break; case MQTT_EVENT_UNSUBSCRIBED: ESP_LOGI(TAG, "MQTT_EVENT_UNSUBSCRIBED"); break; case MQTT_EVENT_PUBLISHED: ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED"); break; case MQTT_EVENT_DATA: ESP_LOGI(TAG, "MQTT_EVENT_DATA"); break; case MQTT_EVENT_ERROR: ESP_LOGI(TAG, "MQTT_EVENT_ERROR"); break; } return ESP_OK; } static void mqtt_app_start(void) { esp_mqtt_client_config_t mqtt_cfg = { .uri = "mqtt://"MQTT_HOST":"MQTT_PORT, .event_handle = mqtt_event_handler_cb, .username = DEVICE_NAME"&"PRODUCT_KEY, .password = DEVICE_SECRET, }; mqtt_client = esp_mqtt_client_init(&mqtt_cfg); esp_mqtt_client_start(mqtt_client); } void app_main(void) { // WiFi连接 wifi_init_sta(WIFI_SSID, WIFI_PASSWORD); // MQTT连接 mqtt_app_start(); // 传感器采集并发布数据 cJSON *root = cJSON_CreateObject(); cJSON_AddNumberToObject(root, "temperature", get_temperature()); cJSON_AddNumberToObject(root, "humidity", get_humidity()); char *json_str = cJSON_Print(root); esp_mqtt_client_publish(mqtt_client, "your_topic", json_str, strlen(json_str), 0, 0); cJSON_Delete(root); free(json_str); } ``` 其中,`mqtt_event_handler_cb()`函数用于处理MQTT事件,`mqtt_app_start()`函数用于连接到阿里云物联网平台,并进行认证。在`app_main()`函数中,可以调用传感器采集函数,将采集到的数据格式化为JSON格式,并通过MQTT协议发布到阿里云物联网平台上。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值