准备
阿里iot已经为接入准备好了link sdk,根据文档和网上的内容,下载编译linux 64版,测试能正常连接阿里云。
/LinkSDK$ tree ./
./
...
├── demos
│ ├── data_model_basic_demo.c //demo的c文件
│ ├── mqtt_basic_demo.c
│ ├── mqtt_broadcast_demo.c
│ ├── mqtt_rrpc_demo.c
│ ├── mqtt_userdefine_demo.c
│ └── sysdep_api_test_demo.c
...
├── output
...
│ ├── include
│ │ ├── aiot_dm_api.h //四个重要的头文件
│ │ ├── aiot_mqtt_api.h
│ │ ├── aiot_state_api.h
│ │ └── aiot_sysdep_api.h
│ ├── lib
│ │ ├── libaiot.a //静态库
│ │ └── libaiot.so //动态库
│ ├── mqtt-basic-demo //可执行文件
│ ├── mqtt-broadcast-demo
│ ├── mqtt-rrpc-demo
│ ├── mqtt-userdefine-demo
...
整个编译后的目录,只要将lib和include目录加入到虹软的sdk里面,仿照demo写对应的调用,就可以对接阿里云iot。
复制库,头文件,代码
LinkSDK$ cp ./output/lib/* ../../face/samplecode/ASFTestDemo/linux_so/
LinkSDK$ cp ./output/include/* ../../face/samplecode/ASFTestDemo/inc/
LinkSDK$ cp ./demos/data_model_basic_demo.c ../../face/samplecode/ASFTestDemo/
修改代码
把dimo文件改为aliot.c 并且创建aliot.h
aliot.h
#ifdef __cplusplus
extern "C" {
#endif
void* httpd_thread(void* arg);
#ifdef __cplusplus
}
#endif
把aliot.c中的main函数中的return改为exit,重命名为void* httpd_thread(void* arg)。修改cmake文件把头文件,代码文件,库全部加上去。
在主程序中增加线程
//阿里云iot
pthread_t aliot_thread_t;
void* arg_aliot;
if (pthread_create(&aliot_thread_t , NULL, aliot_thread, arg_aliot) != 0)
perror("pthread_create");
printf("aliot thread %lu ok \n", aliot_thread_t);
编译测试
samplecode/ASFTestDemo/build$ make
Scanning dependencies of target arcsoft_face_engine_test
[ 12%] Building C object CMakeFiles/arcsoft_face_engine_test.dir/database.c.o
[ 25%] Building C object CMakeFiles/arcsoft_face_engine_test.dir/jpeg.c.o
[ 37%] Building C object CMakeFiles/arcsoft_face_engine_test.dir/usb_cam.c.o
[ 50%] Building C object CMakeFiles/arcsoft_face_engine_test.dir/httpd.c.o
[ 62%] Building CXX object CMakeFiles/arcsoft_face_engine_test.dir/arcsoft.cpp.o
[ 75%] Building C object CMakeFiles/arcsoft_face_engine_test.dir/aliot.c.o
[ 87%] Building CXX object CMakeFiles/arcsoft_face_engine_test.dir/samplecode.cpp.o
[100%] Linking CXX executable arcsoft_face_engine_test
[100%] Built target arcsoft_face_engine_test
测试
[1726908314.248][LK-0309] pub: /k1raawE4e5Y/device/user/deviceSide
[LK-030A] > 7B 22 54 65 6D 22 3A 20 33 31 2E 35 2C 20 22 48 | {"Tem": 31.5, "H
[LK-030A] > 75 6D 22 3A 20 39 33 7D | um": 93}
[1726908316.249][LK-0309] pub: /k1raawE4e5Y/device/user/deviceSide
[LK-030A] > 7B 22 54 65 6D 22 3A 20 33 31 2E 35 2C 20 22 48 | {"Tem": 31.5, "H
[LK-030A] > 75 6D 22 3A 20 39 33 7D | um": 93}
[1726908318.249][LK-0309] pub: /k1raawE4e5Y/device/user/deviceSide
[LK-030A] > 7B 22 54 65 6D 22 3A 20 33 31 2E 35 2C 20 22 48 | {"Tem": 31.5, "H
[LK-030A] > 75 6D 22 3A 20 39 33 7D | um": 93}
数据能正常发送,在阿里云iot上查看设备也在线。