简体中文
简体中文
English
联系我们
注册
登录
layout空间导航
涂鸦 IoT 开发平台云开发SaaS 开发框架本地运行 SaaS 开发框架后端项目

本地运行 SaaS 开发框架后端项目

更新时间:2021-08-27 07:06:19下载pdf

本文将介绍如何在本地运行涂鸦智能 SaaS 开发框架后端项目。您可以基于涂鸦智能 SaaS 开发框架进行二次开发和自定义功能拓展。

前提条件

  • 已安装 JDK( 1.8 或以上版本)
  • 已安装 Maven

第一步:拉取项目代码

通过 IDEA 的 Get from Version Control > URL 克隆项目。

https://github.com/tuya/iot-server.git

本地运行 SaaS 开发框架后端项目

项目代码结构如下:

  • iot-server-core: 公共层,提供通用工具和模型
  • iot-server-ability: 能力层,定义云平台接口
  • iot-server-service: 业务逻辑层,实现开发者自定义业务逻辑
  • iot-server-web: web接口层,提供前端外部调用接口

本地运行 SaaS 开发框架后端项目

第二步:创建云项目

云项目是涂鸦云开发平台管理开发资源的单位,每个云项目的资源和权限相互隔离。开发 IoT 应用前,您需要创建一个云项目。

  1. 登录 涂鸦 IoT 平台
    本地运行 SaaS 开发框架后端项目

  2. 在左侧导航栏中,单击云开发>云开发
    本地运行 SaaS 开发框架后端项目

  3. 我的云项目的页面,点击页面右侧 创建云项目

  4. 创建项目对话框中,配置项目参数后点击 创建

    • 项目名称:自定义项目的名称。
    • 项目描述:自定义项目的描述。
    • 开发方式:本示例选择自定义开发。不同开发方式特征参见 开发方式
    • 服务行业:自定义选择您项目的行业类型,便于后期统计分析。
    • 可用区域:填入对应您所在区域对应的服务器地址,详细对应关系请参见文末账号所在地和可用区域对应关系

    本地运行 SaaS 开发框架后端项目

  5. 批量授权 API 产品 中,除了默认选择的 API 服务外,还需添加 行业通用权限管理 API,添加完成后单击 开通授权

    本地运行 SaaS 开发框架后端项目

    说明: 如果您需要配置短信邮件推送功能,请同时添加短信服务邮件服务。您也可以在后续的使用中根据需要开通其他的 API服务,开通方法参见 开通 API 服务

  6. 创建初始资产和初始账号,初始资产将自动授权至该初始账号。

    本地运行 SaaS 开发框架后端项目

第三步:获取授权密钥

在已创建项目的 概览 页面,获取用于 API 调用的 授权密钥,即 Access ID 和 Access Secret。

本地运行 SaaS 开发框架后端项目

第四步:配置参数

  1. iot-server/iot-server-web/src/main/resources/application.properties 文件中,并配置以下参数。
    本地运行 SaaS 开发框架后端项目

    • connector.ak:授权密钥中的 Access ID
    • connector.sk:授权密钥中的 Access Secret
    • project.code:项目 ID,如下图项目页面地址中的 ID

    本地运行 SaaS 开发框架后端项目

  2. (可选)配置短信邮件推送模板。
    如果需要支持密码找回功能,您需要配置找回密码的短信或(和)邮件推送模板,并提前开通 短信服务 或(和)邮件服务 API,开通方法参见 开通 API 服务

    您需要调用添加邮件模板添加短信模板 API 获取模板 ID,然后配置在 application.properties 文件。

    #短信中文模板
    captcha.notice.resetPassword.sms.templateId.cn=
    #短信英文模板
    captcha.notice.resetPassword.sms.templateId.en=
    #邮件中文模板
    captcha.notice.resetPassword.mail.templateId.cn=
    #邮件英文模板
    captcha.notice.resetPassword.mail.templateId.en=
    

    更多关于邮件服务和短信服务的说明参见邮件服务短信服务

第五步:构建和运行

执行如下命令,构建并运行项目。

  1. 通过 Maven 构建项目。

    cd ./iot-server/
    mvn -U clean package -Dmaven.test.skip=true
    
  2. 执行可运行 JAR 包。

    java -jar ./iot-server-web/target/iot-server-web-{version}.jar
    

    说明:iot-server-web JAR 包的版本请根据实际情况调整。例如,使用的是 1.1.3 版本,则执行命令为 java -jar ./iot-server-web/target/iot-server-web-1.1.3.jar

等待终端输出如下信息,即服务运行成功,可结合前端项目体验整体系统流程。
本地运行 SaaS 开发框架后端项目

第六步:开发功能

本节以远程控制灯为例,为您介绍如何在 SaaS 开发框架的基础上,开发下发设备指令的服务。

本地运行 SaaS 开发框架后端项目

1. 定义 ability

iot-web-ability 模块根据接口文档定义 ability 接口。

说明: 设备控制的 API 接口详情参见下发指令

public interface DeviceAbility {
  @Override
	@POST("/v1.0/iot-03/devices/{device_id}/commands")
	Boolean commandDevice(@Path("device_id") String deviceId, @Body DeviceCommandRequest request);
}

2. 实现业务逻辑

iot-server-service 模块中实现业务层逻辑,可以使用 @Autowired 方式注入 ability 接口。

@Service
public class DeviceServiceImpl implements DeviceService { 
    @Autowired 
    private DeviceAbility deviceAbility;
    
    @Override 
    public Boolean commandDevice(String deviceId, DeviceCommandRequest request) {
        return deviceAbility.commandDevice(deviceId, request);
    }
}

3. Web 接口层

iot-server-web 模块定义对外提供前端可调用的 API 接口。

@RequestMapping("/device")
@RestController
public class DeviceController {
    @Autowired
    private DeviceService deviceService;

    @RequestMapping(value = "/command/{device_id}", method = RequestMethod.POST)
    @RequiresPermissions("2003")
    public Response<Boolean> commandDevice(@PathVariable("device_id") String deviceId, @RequestBody List<DeviceCommandCriteria> criteriaList) {
        List<DeviceCommandRequest.Command> convert = SimpleConvertUtil.convert(criteriaList, DeviceCommandRequest.Command.class);
        DeviceCommandRequest request = new DeviceCommandRequest();
        request.setCommands(convert);
        return Response.buildSuccess(deviceService.commandDevice(deviceId, request));
    }
}

操作结果: 通过上面基于 iot-server 的二次开发,可以实现对灯的远程操作(开/关),当然您也可以通过此接口操作其他的任意设备。

小结

以上就是使用 SaaS 开发框架后端二次开发的示例流程。SaaS 开发框架能够快速协助您搭建物联网 SaaS 应用,实现业务落地。欢迎在 iot-server和我们交流和反馈更多关于 SaaS 开发框架的内容。