小程序绑定设备流程


小程序、终端、节点交互过程

节点设备 终端设备 MQTT 小程序 lora通信 消息 转发 消息 转发 lora通信 节点设备 终端设备 MQTT 小程序
  • 用户–>>终端设备:

    • topic:
      /dev/[SN]/user/[userID]
      • SN : 设备唯一识别码
      • userID : 用户ID
    • payload:
      	{
      		'code':200,
      		'msg':''
      	}
      
      • code : 命令
      • msg : 消息
    • qos: 消息质量, 0、1、2
  • 终端设备–>>用户:

    • topic:
      /user/[userID]/dev/[SN]
      • SN : 设备唯一识别码
      • userID : 用户ID
    • payload:
      	{
      		'code':200,
      		'msg':''
      	}
      
      • code : 命令
      • msg : 消息
    • qos: 消息质量, 0、1、2
  • 服务器–>>终端设备:

    • topic:
      /dev/[SN]/server/[serverID]
      • SN : 设备唯一识别码
      • serverID: 服务器ID
    • payload:
      	{
      		'code':200,
      		'msg':''
      	}
      
      • code : 命令
      • msg : 消息
    • qos: 消息质量, 0、1、2
  • 终端设备–>>服务器:

    • topic:
      /server/[serverID]/dev/[SN]
      • SN : 设备唯一识别码
      • serverID: 服务器ID
    • payload:
      	{
      		'code':200,
      		'msg':''
      	}
      
      • code : 命令
      • msg : 消息
    • qos: 消息质量, 0、1、2

小程序绑定设备

终端 小程序 服务器 获取SN(扫描二维码获取) MQTT(/dev/[SN]/user/[userID]) ok, 返回设备信息 发送SN、添加设备到当前用户下 添加设备成功 failed,添加设备失败 failed,绑定失败 终端 小程序 服务器

终端节点心跳包设计

终端 节点1 节点2 ...... 节点n 心跳包(60秒) ok 未回应,掉线 心跳包(60秒) ok 未回应,掉线 心跳包(60秒) ok 未回应,掉线 ok 未回应,掉线 终端 节点1 节点2 ...... 节点n

采用轮询的方式获取设备在线状态


节点阀门状态获取,并监测设备在线状态

小程序 终端 节点1 节点2 ...... 节点N 获取所有阀门状态 获取状态 阀门状态 未回应,掉线 获取状态 阀门状态 未回应,掉线 .... 获取状态 阀门状态 未回应,掉线 小程序 终端 节点1 节点2 ...... 节点N

采用轮询的方式获取阀门状态


命令协议

用户控制设备相关命令

类型命令说明
NODE_ACK0xA0应答命令,用户发送命令回应
NODE_OPEN_TAP0xA1打开阀门 ,用户发送打开阀门命令
NODE_CLOSE_TAP0xA2关闭阀门,用户发送关闭阀门命令
NODE_OPEN_TAP_OK0xA3打开阀门成功
NODE_CLOSE_TAP_OK0xA4关闭阀门成功
NODE_OPEN_TAP_ERR0xA5打开阀门失败
NODE_CLOSE_TAP_ERR0xA6关闭阀门失败
NODE_OPENING_TAP0xA7正在打开阀门…
NODE_CLOSING_TAP0xA8正在关闭阀门…
NODE_TAP_STATUS0xA90: 阀门处于关闭状态
1: 阀门处于打开状态
2: 阀门处于半开状态
3: 正在关闭阀门
4: 正在打开阀门
NODE_TAP_ONLINE0xAA0:下线
1:上线

终端命令

类型命令说明
TERMINAL_GET_NODES0xB0获取所有节点信息
TERMINAL_GET_NODES0xB1获取终端绑定用户

终端与节点保持连接相关命令

类型命令说明
NODE_CONNECT0xC0节点连接, 节点开机连接终端命令
NODE_CONNECT_OK0xC1节点连接, 成功
NODE_ONLINE0xC2节点上线
NODE_OFFLINE0xC3节点下线
NODE_ALIVE0xC4节点心跳
NODE_TIMEOUT0xC5节点超时

用户绑定设备相关命令

类型命令说明
BIND_USER0xD0终端设备绑定用户,用于节点扫描终端获取SN码来绑定终端设备
BIND_USER_OK0xD1用户绑定成功
BIND_SN_ERR0xD2SN错误,用在小程序绑定设备返回
BIND_USERID_ERR0xD3用户错误,用在绑定完终端后,终端接收命令中与绑定用户不匹配的情况
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里是一份使用Vue 3和TypeScript实现设备功能的代码示例: ```typescript <template> <div> <h2>设备</h2> <form @submit.prevent="onSubmit"> <div class="form-group"> <label for="deviceId">设备ID:</label> <input type="text" id="deviceId" v-model="deviceId" class="form-control" required> </div> <div class="form-group"> <label for="userId">用户ID:</label> <input type="text" id="userId" v-model="userId" class="form-control" required> </div> <button type="submit" class="btn btn-primary">{{ binding ? '解' : '' }}</button> </form> <div v-if="message" class="alert alert-info">{{ message }}</div> </div> </template> <script lang="ts"> import { defineComponent } from 'vue'; interface Binding { deviceId: string; userId: string; } export default defineComponent({ data() { return { deviceId: '', userId: '', binding: false, message: '' } }, methods: { async onSubmit() { try { const binding: Binding = { deviceId: this.deviceId, userId: this.userId }; if (this.binding) { // 发送解请求 await this.unbindDevice(binding); this.message = `设备${binding.deviceId}已解`; } else { // 发送请求 await this.bindDevice(binding); this.message = `设备${binding.deviceId}已`; } this.deviceId = ''; this.userId = ''; } catch (error) { console.error(error); this.message = error.message; } }, async bindDevice(binding: Binding) { // 发送请求 // ... }, async unbindDevice(binding: Binding) { // 发送解请求 // ... } } }); </script> ``` 这个组件包含一个表单,用户可以在表单中输入设备ID和用户ID。当用户点击“”按钮时,组件将发送一个请求,并将消息显示为“设备”。当用户点击“解”按钮时,组件将发送一个解请求,并将消息显示为“设备已解”。 组件使用了一个名为`Binding`的接口来表示设备和解请求中的数据。组件还包含了两个异步方法,`bindDevice`和`unbindDevice`,它们负责发送和解请求。这些方法可以根据具体的需求进行实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值