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 安装部署

包文件结构:

image.png

包文件说明:
└── 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 部署实例

image.png

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 结束测试进程程序