上行SDK使用说明

1.1 添加依赖

  • 外部用户下载jar包引入

  • 内部用户在内网仓库搜索坐标:

<dependency>
   <groupId>com.seewo.iot.platform</groupId>
   <artifactId>seewo-iot-platform-handler-boot-starter</artifactId>
   <version>${seewo-iot-platform-handler-boot-starter.version}</version>
</dependency>

1.2 修改配置文件

此SDK是一个spring-boot-starter,配置添加方式同spring-boot应用。

1.2.1 公共配置

下述不同的协议配置均包含此公共配置属性

# 配置methodHandler
# 产品key,在IoT管理平台上创建产品后可查看到
mis.frame.protobuf.registration.productKey=${productKey}
# 项目名,值具体项目中自行更改
mis.frame.protobuf.registration.project=${application.name}

1.2.2 dubbo方式配置 inner

若使用Dubbo RPC通道,则在项目配置文件中添加以下配置,其中示例值作参考:

# IoT管理平台的规则配置参考此处,其中name和method固定
# 示例:{"name":"com.seewo.iot.platform.handler.protocol.dubbo.IotPlatformAppDemoDubboAdapter", "method":"upCommunication"}

#可不填,如果填写在规则配置中,需要对应配置
mis.frame.protobuf.registration.dubbo.group=seewo-iot-demo-group      
#可不填,如果填写在规则配置中,需要对应配置
mis.frame.protobuf.registration.dubbo.version=1.0.0 
#此配置是开发环境的IP和端口,不同的环境配置不同的IP和端口即可
spring.dubbo.registry.address=zookeeper://172.18.80.56:2181              
#seewo-iot-demo-service是demo值具体项目中自行更改,建议和mis.frame.protobuf.registration.project相同
spring.dubbo.application.name=iot-remote-service

1.2.3 RabbitMQ方式配置

若使用RabbitMQ通道,则在项目配置文件中添加以下配置,其中示例值作参考:

# ProtoBufRabbitmqMapping, IoT管理平台的规则配置和此处一致
mis.frame.protobuf.registration.rabbitmq.ip=x.x.x.x
mis.frame.protobuf.registration.rabbitmq.port=5672
mis.frame.protobuf.registration.rabbitmq.user=${user}
mis.frame.protobuf.registration.rabbitmq.pwd=${password}
mis.frame.protobuf.registration.rabbitmq.vhost=${vhost}
mis.frame.protobuf.registration.rabbitmq.queue=queue_up_iot-platform-app-demo
mis.frame.protobuf.registration.rabbitmq.exchange-name=exchange_up_iot-platform-app-demo

1.2.4 RocketMQ方式配置

若使用RocketMQ通道,则在项目配置文件中添加以下配置,其中示例值作参考:

mis.frame.protobuf.registration.rocketmq.namesrv-addr=172.18.70.50:9876;172.18.70.49:9876
mis.frame.protobuf.registration.rocketmq.topic=SeewoIotDemoTopic
mis.frame.protobuf.registration.rocketmq.tag=SeewoIotAppDemoTag
mis.frame.protobuf.registration.rocketmq.group=SeewoIotDemoGroup

1.2.5 HTTP方式配置

若使用HTTP通道,则在项目配置文件中添加以下配置,其中示例值作参考:

# ProtoBufHttpMapping, IoT管理平台的规则配置为:http://{本机地址}:{http.port}/{http.uri}
# uri默认值 /iot_platform/up_communication,port默认8080
mis.frame.protobuf.registration.http.uri=/iot_platform/up_communication
mis.frame.protobuf.registration.http.port=8081

1.3 对应代码中添加注解

在应用服务的实现功能类加 @ProtoBufMapping@ProtoBufDubboMapping() 注解,示例代码如下:

// 此处为RPC示例,其他协议类似
// function:设备状态上报,包括:ONLINE、OFFLINE、RECONNECT
@ProtoBufDubboMapping(value = "thing.status.update")
@Component
public class DeviceStatusHandler implements MessageHandler<Map<String, Object>, Void> {

    @Override
    public ResponseDataDto<Void> handle(UpDataReqDto<Map<String, Object>> upDataReqDto) {
        log.info("开始处理设备状态, {}", upDataReqDto);
        try {
            Map<String, Object> params = upDataReqDto.getParams();
            String status = (String) params.get("status");
            //TODO 处理业务逻辑
            return new ResponseDataDto<>(SUCCESS);
        } catch (Exception e) {
            log.error("处理设备状态异常:{} ", e);
            return new ResponseDataDto<>(EXCEPTION.getCode(), e.getMessage());
        }
    }
}

1.4 在IOT平台规则引擎中配置

登录IOT平台在规则引擎模块,选择对应的产品,配置规则信息。

1.4.1 添加RPC通道规则 inner

和上面dubbo配置对应的示例如下:

img

1.4.2 添加RabbitMQ通道规则

和上面rabbitmq配置对应的示例如下:

img

1.4.3 添加RocketMQ通道规则

和上面rocket配置对应的示例如下:

img

1.4.4 添加HTTP通道规则

和上面http配置对应的示例如下:

img