今天給大家介紹一下小程序配網工具-安信可 IoT,近期剛發布了新的版本,新增了服務器地址配置的功能。這個新功能,給我們帶來了不少便利,特別是 HomeAssistant 固件使用這一塊。
在2024 年 7 月 17 號之前,安信可 IoT 小程序只能提供配網程序,用戶能夠利用藍牙功能給 Wi-Fi 模塊進行無線網絡配置,但是隨著 DIY 作品不斷地更新,為了更加方便地使用固件,涉及 TCP 服務器和 MQTT 服務器地址配置只能通過 AT 指令來實現,在某些應用場合根本無法實現。
所以,這次讓前端工程師加了這個功能,在配網的時候,可以選擇配置服務器地址。
01新功能使用說明
02數據格式
小程序下發的服務器配置數據是以 json 格式下發:
{ "server_type": { "addr":"0.0.0.0", "port":"xxxxx" } }
字段名說明示例server_type服務器類型"tcp"addr服務器地址,支持 IPV4 地址和域名"192.168.1.1"port服務器端口號1883
例如:下發一個TCP 服務器,地址為:192.168.3.1,端口號為:8888,則數據為:
{ "tcp": { "addr":"192.168.3.1", "port":"8888" } }
03數據接收
數據接收就是設備端的了,但是前提是要使用 Blufi 配網功能,在 Ai-WB2 的 SDK(Ai-Thinker-WB2)當中,有 Blufi 的 demo。
因為小程序下發的數據是通過 Blufi 的custom data(自定義數據)接口下發,在 blufo demo 當中
的AXK_BLUFI_EVENT_RECV_CUSTOM_DATA事件,可以看到下發的服務器地址數據:
04數據解析
既然是 json 數據,那只要引用 cJSON.h 頭文件,就能實現對服務器地址和端口號的解析,下面寫了函數,大家做個參考
解析服務器地址
static char data_buff[128] = { 0 }; char* get_ip_addr_from_custom_data(const char* server_type, const char* custom_data) { if (custom_data==NULL) { blog_error("custom_data is NULL"); return NULL; } char* cjson_root = custom_data; cJSON* root = cJSON_Parse(cjson_root); if (root==NULL) { blog_error("%s is't json data", cjson_root); cJSON_Delete(root); return NULL; } cJSON* add_type = cJSON_GetObjectItem(root, server_type); if (add_type==NULL) { blog_error("%s not "%s" project ", cjson_root,server_type); cJSON_Delete(root); return NULL; } cJSON* addr = cJSON_GetObjectItem(add_type, "addr"); if (addr==NULL) { blog_error("%s not "addr" project ", cjson_root); cJSON_Delete(root); return NULL; } memset(data_buff, 0, 128); strcpy(data_buff, addr->valuestring); cJSON_Delete(root); return data_buff; }
調用示例:
char* addr=get_ip_addr_from_custom_data("tcp",custom_data); printf("addr=%srn",addr);
解析端口號
uint16_t get_port_from_custom_data(const char* server_type, const char* custom_data) { if (custom_data==NULL) { blog_error("custom_data is NULL"); return NULL; } char* cjson_root = custom_data; cJSON* root = cJSON_Parse(cjson_root); if (root==NULL) { blog_error("%s is't json data", cjson_root); cJSON_Delete(root); return NULL; } cJSON* add_type = cJSON_GetObjectItem(root, server_type); if (add_type==NULL) { blog_error("%s not "%s" project ", cjson_root,server_type); cJSON_Delete(root); return NULL; } cJSON* port_p = cJSON_GetObjectItem(add_type, "port"); if (port_p==NULL) { blog_error("%s not "port" project ", cjson_root); cJSON_Delete(root); return NULL; } uint16_t port = atoi(port_p->valuestring); cJSON_Delete(root); return port; }
調用示例:
uint16_t port=get_port_from_custom_data("tcp",custom_data); printf("port=%drn",port);
這些程序流程我就不解釋,太簡單了,不懂的話,自己去學一下 cjson 的數據解析。
審核編輯 黃宇
-
智能家居
+關注
關注
1930文章
9607瀏覽量
186421 -
配網
+關注
關注
0文章
155瀏覽量
9108 -
IOT
+關注
關注
187文章
4230瀏覽量
197617 -
安信可
+關注
關注
0文章
159瀏覽量
4046
發布評論請先 登錄
相關推薦
人工智能如何強化智能家居設備的功能
![人工<b class='flag-5'>智能</b>如何強化<b class='flag-5'>智能家居</b>設備的<b class='flag-5'>功能</b>](https://file1.elecfans.com/web2/M00/05/37/wKgaombNPgaAeP9hAAFuAepSzMg440.png)
智能家居與物聯網的關系
智能家居之旅(9):HomeAssistant 的開關實體具象化
![<b class='flag-5'>智能家居</b><b class='flag-5'>之旅</b>(9):HomeAssistant 的開關實體具象化](https://file1.elecfans.com//web2/M00/F9/C3/wKgZomaLqD-AF7riAABK-Vqa-5o55.jpeg)
使用BLUFI進行wifi配網,應該調用哪些API來關閉BLUFI呢?
智能家居之旅(3):Ai-M61/M62 接入HomeAssistant 實現點燈
![<b class='flag-5'>智能家居</b><b class='flag-5'>之旅</b>(3):Ai-M61/M62 接入HomeAssistant 實現點燈](https://file1.elecfans.com//web2/M00/ED/47/wKgaomZia1mANAk5AAB7Npr4BoI85.jpeg)
打卡智能家居學習之旅(1):了解HomeAssistant
![打卡<b class='flag-5'>智能家居</b>學習<b class='flag-5'>之旅</b>(1):了解HomeAssistant](https://file1.elecfans.com//web2/M00/E8/67/wKgaomZL8-mAalrCAABa1uu5v2w42.jpeg)
智能家居控制系統解決方案功能
安信可亮相AWE 2024,助力智能家居產業加速發展
![<b class='flag-5'>安</b><b class='flag-5'>信</b><b class='flag-5'>可</b>亮相AWE 2024,助力<b class='flag-5'>智能家居</b>產業加速發展](https://file1.elecfans.com//web2/M00/C6/26/wKgaomX7qZuAF8hzAAGD3UffN0U43.jpeg)
安信可雷達模組Rd-01燒錄指南
![<b class='flag-5'>安</b><b class='flag-5'>信</b><b class='flag-5'>可</b>雷達模組Rd-01燒錄指南](https://file1.elecfans.com//web2/M00/C5/3C/wKgZomX7qW6AY3ZuAAC7rO9KcbA063.png)
評論