本文介紹用戶如何通過生活物聯網SDK開發接入生活物聯網的以太網設備。
在生活物聯網平臺定義產品
設備端開發
請參見SDK概述與開發環境設置下載無AliOS的SDK(基于Link Kit v2.3.0)。
- SDK推薦配置
建議開發者閱讀編譯說明中的“SDK裁剪”了解SDK配置以及各選項的意義。
可以通過修改make.settings或者Linux下執行
make menuconfig
來配置需要的功能。功能 說明 FEATURE_MQTT_COMM_ENABLED y:使用MQTT連接阿里云物聯網平臺 FEATURE_MQTT_DIRECT - y:連國內服務器
- n:連海外服務器
FEATURE_Device_MODEL_ENABLED y:使能物模型 FEATURE_ALCS_ENABLED y:使能本地控制功能 FEATURE_ALCS_SERVER_ENABLED y:使能本地控制被控端功能 FEATURE_DEV_BIND_ENABLED y:使能用戶綁定相關功能 FEATURE_SUPPORT_TLS y:使能TLS加密 FEATURE_OTA_ENABLED y:使能OTA 設備需要連接海外服務器請參見國際站設備開發。
- HAL適配
請參照下面的文檔進行HAL的實現:
- 設備身份認證模式
設備連接阿里云物聯網平臺時,可以使用預置設備證書的方式進行設備的身份認證,也可以采用動態注冊方式得到完整的設備證書再進行身份認證,請參見設備認證。
- 產品功能實現
在設備上根據云端定義的產品功能進行相應功能的實現,請參見物模型編程。
- OTA開發
若使能了OTA功能,請參見OTA編程。
- 云端解綁與恢復出廠默認設置
設備被解綁后,云端會下發一個解綁事件通知:
{"identifier":"awss.BindNotify","value":{"Operation":"Unbind"}}
設備收到此消息可以做重置配網、清空本地數據等處理。如果通過App將設備恢復出廠默認設置,云端會下發一個Reset事件通知:
{"identifier":"awss.BindNotify","value":{"Operation":"Reset"}}
設備收到此消息可以做重置配網、清空本地數據等處理。設備開發者可以結合具體產品類型,決定收到解綁和恢復出廠默認設置通知后做哪些清空操作。可以參考示例代碼example/smart_outlet/smart_outlet_main.c中
notify_msg_handle
函數,做如下改動。static int notify_msg_handle(const char *request, const int request_len) { .... if (!strcmp(item->valuestring, "awss.BindNotify")) { cJSON *value = cJSON_GetObjectItem(request_root, "value"); if (item == NULL || !cJSON_IsObject(value)) { cJSON_Delete(request_root); return -1; } cJSON *op = cJSON_GetObjectItem(value, "Operation"); if (op != NULL && cJSON_IsString(op)) { if (!strcmp(op->valuestring, "Bind")) { EXAMPLE_TRACE("Device Bind"); vendor_device_bind(); } if (!strcmp(op->valuestring, "Unbind")) { EXAMPLE_TRACE("Device unBind"); vendor_device_unbind(); } if (!strcmp(op->valuestring, "Reset")) { EXAMPLE_TRACE("Device Reset"); vendor_device_reset(); } } } .... }
- 設備重置開發
對于生活物聯網平臺來說,建議產品設計一個reset按鍵用于清除設備上的配置,將設備恢復到出廠狀態,同時調用
awss_report_reset()
函數告知云端清除設備與用戶的綁定關系。因此,設備商需要在處理reset按鍵的邏輯中增加對
awss_report_reset()
的調用。/* * 應用程序調用該API后,Linkkit首先往Flash里存儲恢復出廠設置的標志,并向云端上報reset操作, * 在規定的時間內(3秒)如果沒有收到云端的回復,設備會重新上傳reset,直至收到云端的回復位置; * 有些產品希望發生reset時設備可以重新啟動,如果重新啟動之前reset沒有上報成功,下一次連接云后, * 設備會首先檢查Flash中恢復出廠標志是否設置,如果設置了則首先向云端上報reset,直至成功; */ int awss_report_reset();