跳至主要內容

开发者教程

技术中心大约 9 分钟

开发者教程

概述

本教程旨在介绍开发者参与物联网平台开发的基本流程、规范,帮助开发者快速上手,实现物联网平台的协同开发,实现功能的快速迭代及升级,打造一款便捷、易用、高效、高性能的物联网平台。

软件架构

物联网中心组件脑图

物联网中心组件逻辑关系图

物联网中心软件架构图
软件架构图

开发工作流

注:

  1. 所有代码提交记录都需要与云效中的需求、任务、BUG匹配;
  2. 需求、任务、BUG在修改前均需要进行必要性、实用性、难度评估,评估结果通过云效中确认;
  3. 开发人员无法向主要分支及版本分支中推送代码,只能通过Pull Request方式提交代码;管理员进行代码评审、合并;

基础开发环境&工具准备

开发工具集

以下均为笔者Windows操作系统工具,其他操作系统可参考对应工具(或选择替代工具)进行安装。

  1. Gitopen in new window
  2. JDK8open in new window
  3. JDK17open in new window
  4. Maven 3.6.x+open in new window
  5. Node.js 16.20.xopen in new window
  6. Navicatopen in new window 数据库管理软件
  7. Another Redis Desktop Manageropen in new window Redis可视化工具
  8. MQTTXopen in new window Mqtt客户端
  9. Apifoxopen in new window Api工具
  10. Wiresharkopen in new window 网络抓包工具
  11. OpenVPN Connectopen in new window VPN
  12. Docker Desktopopen in new window
  13. Visual Studio Codeopen in new window
  14. IntelliJ IDEAopen in new window
  15. PotPlayeropen in new window 视频播放工具
  16. Golang 1.20.xopen in new window
  17. kubectlopen in new window
  18. telepresenceopen in new window

仓库地址

# IOT前后端地址
git clone https://codeup.aliyun.com/clzy/product/clzy-bigdata/iot/cljs-iot.git
# script-runner、adapter、adapter-rrpc
git clone https://codeup.aliyun.com/clzy/product/clzy-bigdata/iot/protocol-adapter-server.git
# rule-engine
git clone https://codeup.aliyun.com/clzy/product/clzy-bigdata/iot/rule-engine.git
# endpoint-auth
git clone https://codeup.aliyun.com/clzy/product/clzy-bigdata/iot/endpoint-auth.git
# sip-server
git clone https://codeup.aliyun.com/clzy/product/clzy-bigdata/iot/sip-server.git
# http-endpoint
git clone https://codeup.aliyun.com/clzy/product/clzy-bigdata/iot/broker/iot-http-broker.git
# data-storage-server
git clone https://codeup.aliyun.com/clzy/product/clzy-bigdata/iot/data-storage-server.git
# cljs-device-wechat
git clone https://codeup.aliyun.com/clzy/product/clzy-bigdata/iot/cljs-device-wechat.git

搭建开发环境

基础工作

  1. 云效Codeup代码仓库账号设置(二选一)
  2. 云效Maven制品仓库设置

前端frontend开发

💡 适用场景:
修改前端页面问题,不涉及到修改后端和其他组件服务。

  1. 获取代码
git clone https://codeup.aliyun.com/clzy/product/clzy-bigdata/iot/cljs-iot.git
  1. 配置后端backend地址
    cljs-iot/frontend目录下的.env文件中,修改VUE_APP_API_URL为后端的API地址,VUE_APP_AUTH_URLkeycloak认证地址即可。
    注:VUE_APP_AUTH_URL地址必须与后端backend配置文件中配置的认证地址一致。
# 所有环境默认
# 页面 title
VUE_APP_TITLE=物联网中心
# 后台服务api
VUE_APP_API_URL=http://192.168.110.81:3790/api/
# VUE_APP_API_URL=http://localhost:8802/api/
# 后台服务代理地址(正式部署使用)
VUE_APP_API_PROXY_URL=http://iot-backend-service.cljs.svc:8800
# 统一认证参数
VUE_APP_AUTH_URL=http://sso.jsyun.clzytech.com:30600/auth
# 大屏设计器前端跳转域名。/结尾
VUE_APP_DESIGNER_URL=http://127.0.0.1:5173/
# nodered配置统一前缀
# VUE_APP_NODERED_HOST=http://iot.jsyun.clzytech.com:36939/
VUE_APP_NODERED_HOST=/



 
 
 


 
 





  1. 运行
cd cljs-iot/frontend
npm install
npm run dev

注:npm仓库配置指南open in new window

后端backend开发

💡 适用场景:
修改后端业务功能,以及依赖后端的其他业务组件开发。

💡 小提示:
backend推荐使用IDEA工具进行开发,开发前请先安装Clzy Applicationopen in new window

  1. 获取代码
git clone https://codeup.aliyun.com/clzy/product/clzy-bigdata/iot/cljs-iot.git
  1. 下载安装Taos数据库客户端工具
    TDengine-client-3.0.6.0-Windows-x64open in new window
  2. 连接kubernetes集群仅限公司网络环境
    1. 安装kubectlopen in new window
    2. 获取kubeconfig,放置于%USERPROFILE%\.kube\config。文件获取请联系管理员
    3. 安装telepresenceopen in new window工具,下载安装包解压后执行以下powershell命令
       # 使用管理员权限运行
       Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
       # telepresence安装包解压后的目录
       cd path_to_telepresence_dir
       # 执行安装脚本
       ./install-telepresence.ps1
    
    1. 使用telepresence工具连接kubernetes集群
    telepresence connect
    # 确认ping是否正常
    ping redis.iot2.svc.cluster.local
    
  3. 配置运行参数
    开发环境统一使用application-dev.yml配置文件启动项目。文件位于:backend/cljs-iot-starter/src/main/resources/application-dev.yml
clzy:
  k8s:
    ### k8s集群api server地址
    url: https://kubernetes.default.svc.cluster.local
    ### k8s集群api server认证token
    token: eyJhbGciOiJSUzI1NiIsImtpZCI6InVJck41dUQwOTU5TWU3eF9KQjFXYmNQVEVLSzlrdTRWeXI3M3dpUGk3V0kifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tMjhndmMiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiOWNlYzMyMGMtNDM5Ni00ZTk0LTkxZmQtYmY4ODc2NWZiYTcwIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.k7Ul_p5SghxLj5J9x_YQvKFhVyWK9SiNgOE9TwnZx6k9tCEuBsRAbbL7tzZNLutPa6sGIWF64DR6ExvfpuI7upknMmgVXZp1ZjETjEO4c26sKtESLxyQ-8io6q2DTwCuvdDnG7DvWVBhEU2KtlhEEQy_lHICvkKOrS21UNMYzq3x8Yn0K5yhG62xbOXq7d1nQm-Qg9j3LxtzInSZK5QDfwji94eTReF5-UQyNDWEVPfjEsDSPb48M1G3LFGliStdGgQEH25_vXIHNw0o_AQwSFBhNYvA27wHM3vvHKk-Nk7SPNgdTJmL6DkvfO-746nsY9659pcsht0VfTQMMXbcGQ
  ### tdengine数据库地址
  tdengine:
    url: jdbc:TAOS://taosd.iot2.svc.cluster.local:6030/?charset=utf-8&locale=en_US.UTF-8&timezone=UTC-8
spring:
  thymeleaf:
    cache: true
  datasource:
    druid:
      ### 数据库连接地址
      url: jdbc:postgresql://192.168.110.81:30927/cljs-iot-dev
      username: postgres
      password: 123456
      driver-class-name: org.postgresql.Driver
  jackson:
    time-zone: GMT+8
  redis:
    ### redis地址
    host: redis.iot2.svc.cluster.local

logging:
  level:
    root: info
    com.clzy.cljs.iot.device.service.DeviceService: debug
  file:
    path: ./logs

com:
  clzy:
    sso:
      ### keycloak认证地址
      realm: cljs
      auth-server-url: http://sso.jsyun.clzytech.com:30600/auth/
      ssl-required: external
      use-resource-role-mappings: false
      cors: true
      app-secret: "b4b88583-790a-45aa-8cb1-0003266476de"
      app-id: iot-server
    file:
      local:
        data-dir: E:\itouxin\Downloads

### kubernetes集群中的POD与实例组件状态同步任务开启状态
syncProjectStatus:
  disable: true
syncParserStatus:
  disable: true
startMqttService:
  disable: true
scheduleStat:
  disable: true

### 脚本运行组件地址配置
script-runner:
  host: http://192.168.110.81:28768
#  host: http://127.0.0.1:8081
  1. 使用Clzy Applicationopen in new window选择backend/cljs-iot-starter/src/main/java/com/clzy/cljs/iot/IotApplication.java文件启动项目
    注: VM参数增加-Dspring.profiles.active=dev参数以启用dev配置

script-runner开发

data-parser开发

ruleengine开发

adapter-rrpc开发

adapter开发

endpoint-auth开发

http-endpoint开发

iot-sip-server开发

任务管理

统一使用云效进行任务的管理成理极数-物联网中心open in new window

功能修改及测试

  1. 功能修改前,需要在云效的事项中完善设计思路、实现原理

代码管理

新建分支进行开发

  1. 基于需要修改的基础分支创建新分支。
    1. 分支命名规范为feat-X.Y.Z-xxxxxxxxxxxxfix-X.Y.Z-xxxxxxxxxxxxdocs-X.Y.Z-xxxxxxxxxxxx;
    2. featfixdocs分别代表功能、bug修复、文档修改
    3. X.Y.Z为当前修改功能的分支版本
    4. xxxxxxxxxxxx为功能描述,描述长度不能少于6个字符

代码推送描述信息规则

规则: ^((fix|feat|docs):\s#CIOT\-([0-9]+)|Merge)\s.{6,}

  1. 必须以fixfeatdocs中的某一个开始。featfixdocs分别代表功能、bug修复、文档修改
  2. 紧接着跟冒号和空格
  3. 紧接着跟一个云效事项编号,以#开头,编号来源为云效事项的编号云效事项编号
  4. 紧接着空格后跟一个描述,描述长度不能少于6个字符

示例:

fix: #CIOT-001 设备数据查看列表页面,点击查询,无法查询最新的数据
feat: #CIOT-002 视频功能增加云端录像功能
docs: #CIOT-003 视频功能文档更新

提交Pull Request

开发人员通过Git工具或者云效,提交Pull Request到要合并的基础分支,由管理员进行代码评审、合并。

版本发布

当一个版本开发测试完成之后,管理员进行版本发布工作。参考:版本发布流程open in new window