4.1 依赖&约束
4.1.1 硬件环境
内存:大于32M;
存储:大于64M;
网络接口:有线/WIFI/4G;
4.1.2软件环境:
Linu内核版本:大于2.6;
标准库:libc;
工具链:
ABI:eabi;
GCC:gcc4.8.5+,含g++;
4.1.3 系统时间
机具设备系统时间及时区校准(北京时间,+8区),否则可能导致ssl握手失败;
4.1.4 厂商参数
厂商参数是alipay分配给接入iot平台的供应商和产品标识,包含了厂商和设备产品相关基础信息标识。
厂商参数在厂商完成与alipay合作相关正式接入流程后,由alipay以配置文件形式颁发交付,并由厂商置于SDK运行时环境中。
4.1.5 厂商接口
厂商接口是由支付宝定义的,需要厂商提供实现的接口,用于IoTSDK调用,获取业务产品相关的设备基本信息,如厂商名,设备型号、设备SN等信息;
厂商接口实现以动态库的形式输出,固定命名为“libsupplier.so”,由厂商置于SDK运行时目录,参见安装部署章节;
接口列表:
-
获取厂商名,必选
-
获取设备序列号,必选
-
获取设备型号,必选
-
获取设备名称,必选
-
获取设备IMEI,可选,但需要实现为空函数(返回NULL或空字符串均可)
接口头文件:supplier.h:
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 | #include
#if
defined(cplusplus)||defined(c_plusplus)
extern “C” {
#endif
/
获取厂商名称
参数:
out,输出buffer
size,输出buffer长度
返回值:
小于0,表示错误码;
大于等于0,表示写入buf的数据实际长度
/
int alipay_vendorName(char *out,
size_t size);
/
获取设备序列号
参数:
out,输出buffer
size,输出buffer长度
返回值:
小于0,表示错误码;
大于等于0,表示写入buf的数据实际长度
/
int alipay_deviceSn(char out,
size_t size);
/**
获取设备型号
参数out,输出buffer
参数size,输出buffer长度
返回值:小于0表示错误码,大于等于0,表示写入buf的数据实际长度
/
int alipay_deviceModel(char out,
size_t size);
/**
获取设备名称
参数:
out,输出buffer
size,输出buffer长度
返回值:
小于0,表示错误码;
大于等于0,表示写入buf的数据实际长度
/
int alipay_deviceName(char out,
size_t size);
/*
获取(移动网络接入)设备IMEI,此接口可选实现(空实现,返回NULL),对于移动数据网络接入的设备必选
参数:
out,输出buffer
size,输出buffer长度
返回值:
小于0,表示错误码;
大于等于0,表示写入buf的数据实际长度
/
int alipay_deviceIMEI(char out,
size_t size);
#if defined(cplusplus) ||
defined(c_plusplus)
}
#endif |
| —- | —- |
| | |
4.2 安装部署
包文件结构:
包文件说明:
└── alipay
├── client(用于厂商APP集成的clientSDK)
│ ├── example(示例程序,具体项目应用可能不同)
│ │ ├── example
│ │ └── example.c
│ ├── include(依赖头文件)
│ │ ├── alipay_sdk_client.h(SDK框架接口)
│ │ ├── bus(公交应用,可选)
│ │ │ ├── decoder.h(公交NFC解码接口,可选)
│ │ │ └── pos_crypto.h(公交验码接口,可选)
│ │ ├── app(应用管理接口)
│ │ │ └── alipay_iot_app_manager.h
│ │ ├── counter(计数器接口)
│ │ │ └── alipay_iot_counter.h
│ │ ├── device(设备信息接口)
│ │ │ └── alipay_iot_device.h
│ │ ├── location(位置上报接口)
│ │ │ └── alipay_iot_location.h
│ │ └── payment(码SDK,可选)
│ │ └── alipay_payment_sdk.h
│ └── lib(依赖库)
│ └── libalipay_unisdk.so(统一SDK库)
├── install.sh(安装脚本)
├── iotsdk(SDK主程序目录)
│ └── bin(SDK程序文件)
│ ├── alipay_iotd(主服务程序)
│ ├── alipay_iotmd(管理进程)
│ ├── monitor.sh(保活脚本)
│ └── service.sh(服务启停脚本)
└── supplier(厂商接口)
└── supplier.h
4.2.1 目录/分区需求
/alipay(或设置为独立分区),开放读写权限。
下文以ALIPAY_ROOT表示根目录。
4.2.2 自动安装
自动安装脚本位于SDK包根目录下的install.sh,执行此脚本自动完成统一SDK安装。
4.2.3 目录列表
目录名 | 说明 | 备注 |
---|---|---|
ALIPAY_ROOT/iotsdk | SDK安装运行目录 | |
ALIPAY_ROOT/iotsdk/bin | SDK程序文件目录 | SDK相关二进制程序文件或脚本 |
ALIPAY_ROOT/iotsdk/lib | SDK相关库目录 | 依赖动态库(暂无) |
ALIPAY_ROOT/iotsdk/conf | SDK内部配置文件 | 暂无 |
ALIPAY_ROOT/iotsdk/data | SDK运行时数据目录 | |
ALIPAY_ROOT/iotsdk/log | SDK运行时日志目录 | |
ALIPAY_ROOT/runtime | 运行时相关依赖目录 | ? |
ALIPAY_ROOT/runtime/profile.dat | 厂商参数配置 | 参见厂商参数章节 |
ALIPAY_ROOT/runtime/libsupplier.so | 厂商接口库 | 参见厂商接口章节 |
ALIPAY_ROOT/runtime/alipay_net.conf | 网络(代理)配置 | 参数网络配置章节 |
4.2.4 部署实例
4.2.5 厂商参数(必须)
厂商接入参数在厂商完成与alipay合作相关正式接入流程后,由alipay以配置文件形式颁发交付,并由厂商置于SDK运行时环境中。
文件名 | profile.dat | |
---|---|---|
安装位置 | ALIPAY_ROOT/runtime/ | 实例:/alipay/runtime/profile.dat |
4.2.6 网络配置(可选)
设备运行于特殊网络环境时,需要配置代理服务器,以访问alipay服务器。
一般由ISV在设备安装时配置。
| 配置文件名 | alipay_net.conf | 文件格式:{“host”: “10.209.85.84”,”port”: 3128} | | —- | —- | —- | | 安装位置 | ALIPAY_ROOT/runtime/ | /alipay/runtime/alipay_net.conf |
4.3 启动运行
4.3.1 运行用户
运行用户不限,建议添加alipay用户,必须具备ALIPAY_ROOT目录读写权限。
4.3.2 运维脚本
启动alipay_iotd:ALIPAY_ROOT/iotsdk/bin/service.sh
startup
停止alipay_iotd:ALIPAY_ROOT/iotsdk/bin/service.sh
shutdown
重启alipay_iotd:ALIPAY_ROOT/iotsdk/bin/service.sh
restart
查看alipay_iotd状态:ALIPAY_ROOT/iotsdk/bin/service.sh
status
alipay_iotmd监控拉起:ALIPAY_ROOT/iotsdk/bin/monitor.sh
注意:在配置了进程保活(自动拉起)的情况下,一般无需手工执行运维脚本启动服务。
4.3.3 进程保活
一般情况下,有系统Init进程托管、定时任务、或专用监控进程三种方式实现服务保活,厂商可根据实际情况进行选择
4.3.3.1 系统init进程托管
编辑/etc/inittab文件,在结尾添加一行:
::respawn:ALIPAY_ROOT/iotsdk/bin/monitor.sh
注意:ALIPAY_ROOT替换为实际的根目录,如:/alipay。
4.3.3.2 定时任务监控
通过设置crontab任务,实现开机自启动设置,监控拉起。
监控脚本:ALIPAY_ROOT/iotsdk/bin/monitor.sh
crontab任务:
/5 * ALIPAY_ROOT/iotsdk/bin/monitor.sh >/dev/null
2>&1
注意:ALIPAY_ROOT替换为实际的根目录,如:/alipay。
4.3.3.3 专用监护进程
对于具备专用监护进程的厂商,可以直接对iot服务进程进行监护,如下:
进程名:alipay_iotmd
路径:/alipay/iotsdk/bin/alipay_iotmd
4.4 出厂检测(可选)
IOTGuide工具是用于检测IOT设备运行软硬件环境是否正确的一个可执行程序。
检测主要内容包括:系统时间、统一SDK的合法正确性、专用网络的可达性,还包括一些较为关键的测试用例。
程序通讯接口采用tcpip接口2025端口进行通信。 其工作模式为:
1、当程序启动后会指定2025端口侦听。
2、收到来自客户端的连接后返回READY字符串。
3、收到socket连接发送的字符串命令后执行对应动作:
4、AT%IOTTEST\r 初始化测试环境
5、AT%IOTTESTALL\r 执行全部测试
6、客户端收到+IOTTESTALL:0表示测试完成并失败
7、客户端收到+IOTTESTALL:1表示测试完成并成功
8、客户端收到+IOTTESTTIME:x表示时间检测完成和结果 x为0表示成功,其余表示错误。
9、客户端收到+IOTTESTSDK:x表示测试SDK完成和结果 x为0表示成功,其余表示错误。
10、AT%EXIT\r 结束测试进程程序