前言

在此前的新闻方案中有看到,腾讯云利用其物联网开发平台的设备数据引擎,硬件厂商不用修改设备固件既可以快速对接物联网平台。

腾讯云之所以能快速对接多家设备厂商开发的LoRaWAN智能门磁产品,得益于物联网开发平台的设备数据解析引擎,硬件合作伙伴只需通过编写云端脚本,将其设备协议转化成云平台统一的门磁数据模版。因此腾讯云在短时间内联合躬远科技、唯传科技、瑞兴恒方等多家优秀的LoRa®设备厂商,借助可即刻搭建、覆盖小区、信号质量稳定可靠的LoRa低功耗广域网(LPWAN),快速推出了安装便捷的隔离监控整体解决方案。

这篇笔记将演示如何实现这个快速对接操作。文中示例为瑞兴恒方 RHF1S020 智能楼宇套件中的门磁传感器,经过厂商确认,设备协议为公开协议,因此可以对外展示。

腾讯云 IoT Explorer 是腾讯云主推的一站式物联网开发平台,IoT 小能手从设备侧开发、平台功能操作、应用侧开发三个部分来进行学习分享,另外还分享了一些动手实践作品及收录官方发布的产业合作案例,帮助读者更好地理解整个开发链路。详情可点击下方阅读原文。

1 控制台创建 LoRa 门磁传感器

1.1 创建项目和产品

创建项目

  1. 登录 物联网开发平台控制台,选择【新建项目】。

  2. 在新建项目页面,填写项目基本信息。

  • 项目名称:输入“LoRa楼宇传感器演示”或其他名称。

  • 项目描述:按照实际需求填写项目描述。

  • 项目新建成功后,即可新建产品。

  • 新建产品

    1. 进入该项目的产品列表页面,单击【新建产品】。

    2. 在新建产品页面,填写产品基本信息。

    • 产品名称输入“LoRa门磁传感器”或其他产品名称。

    • 产品类型选择“门磁传感器”。

    • 认证方式选择“密钥认证”。

    • 通信方式选择“LoRaWAN”。

    产品新建成功后,您可在产品列表页查看到“LoRa门磁传感器”。

    创建数据模板

    选择“门磁传感器”类型后,自定义产品功能。

    示例中,我们仅使用最简单的默认工作模式,更多功能(如电池电量、静默时间等等)大家可以根据传感器的用户手册进行发挥。

    • 绑定 bound

    • 上报周期 period

    • 门窗打开状态 isOpen

    配置 LoRaWAN 参数

    在设备开发页面中,按需调整 LoRaWAN 参数配置。

    1.2 设备数据解析

    在设备开发页面中,按需调整 设备数据解析。由于 LoRa 类资源有限设备不适合直接传输 JSON 格式数据,使用“设备数据解析”可以将设备原始数据转化为产品JSON数据。

    设备协议分析

    在本示例中,采用了门磁传感器5条基础的数据消息:

    1. 上行消息 - 归属状态 0xA1

    在未绑定状态, 设备会上行消息内容 A102(十六进制)到服务器,每 20s 一次,发送最大次数 9 次。同时等待接收服务器确认绑定状态更新消息。
    如果用户要绑定该设备,则回复消息 A103. 设备收到该消息后, 接着会再上行 A103 确认设备切换到绑定状态。

    1. 上行消息 - 设备基础参数 0x07

    设备绑定后开始正常工作即会主动上行一包基础参数信息(其他时候不再上报此基础参数信息) ,用于服务器识别和同步设备参数。

    设备归属之后,会上报出周期等参数。

    1. 上行消息 - 周期上报数据帧 0x00

    这个周期上报数据帧中会展现门磁传感器的开关状态。

    1. 上行消息 - 报警 0x0F

    开关门的实时上报会通过报警帧来上报。

    1. 下行消息 - 设置上报周期(心跳周期) 0x9D

    数据解析脚本

    在上行数据解析部分,javascript示例代码如下:

    function RawToProtocol(fPort, bytes) {const COMMAND_A1_UNBOUND = 0x02;const COMMAND_A1_BOUND = 0x03;const COMMAND_07_FLAG_MODE = 0x05;const COMMAND_07_LEN_MODE = 1;const COMMAND_07_FLAG_VER = 0x90;const COMMAND_07_LEN_VER = 3;const COMMAND_07_FLAG_DELAY = 0x9c;const COMMAND_07_LEN_DELAY = 2;const COMMAND_07_FLAG_ULPRD = 0x9d;const COMMAND_0f_ALERT_KIND = 0x20;const COMMAND_0f_ALERT_OPEN = 2;const COMMAND_0f_ALERT_CLOSE = 4;var data = {"method": "report","clientToken" : new Date(),"params" : {}};switch (bytes[0]) {case 0xA1:if (bytes[1] == COMMAND_A1_UNBOUND) {data.params.bound = 0;} else if (bytes[1] == COMMAND_A1_BOUND) {data.params.bound = 1;}break;case 0x07:for (let i = 1; i < bytes.length; i++) {if (bytes[i] == COMMAND_07_FLAG_MODE) {i += COMMAND_07_LEN_MODE;} else if (bytes[i] == COMMAND_07_FLAG_VER) {i += COMMAND_07_LEN_VER;} else if (bytes[i] == COMMAND_07_FLAG_DELAY) {i += COMMAND_07_LEN_DELAY;} else if (bytes[i] == COMMAND_07_FLAG_ULPRD) {data.params.period = bytes[i+1] | (bytes[i+2] << 8);}}break;case 0x00:if (bytes[5] & 0x80) {data.params.isOpen = 0;} else {data.params.isOpen = 1;}break;case 0x0f:if (bytes[1] == COMMAND_0f_ALERT_KIND) {if (bytes[2] == COMMAND_0f_ALERT_OPEN) {data.params.isOpen = 1;} else if (bytes[2] == COMMAND_0f_ALERT_CLOSE) {data.params.isOpen = 0;}}break;}return data;
    }
    

    在下行数据解析部分,javascript示例代码如下:

    function ProtocolToRaw(obj) {var data = new Array();var i = 0;data[i++] = 8;// fport=8data[i++] = 1;// confirmed modefor (var property in obj.params) {if ((property == "bound") && (obj.params[property] == 1)) {data[i++] = 0xA1;data[i++] = 0x03;}if (property == "period") {data[i++] = 0x9D;data[i++] = obj.params[property] & 0x00FF;data[i++] = (obj.params[property] >> 8) & 0x00FF;}}return data;
    }
    

    脚本模拟测试

    这里也可以使用数据解析页面下方的模拟调试工具,如果开发更多的功能,这个模拟脚本将会提供很大帮助。

    1. 上行消息 - 归属状态 0xA1

    设备原始数据为 0xA1,0x02,我们将其转化为数组,即上行模拟数据为:[161,2],填入设备上行数据的编辑框中。
    点击运行,即可在模拟调试界面右侧看到结果。

    1. 上行消息 - 设备基础参数 0x07

    设备原始数据:07 05 06 90 00 08 04 9c 00 00 9d 80 70 9f 13 13 31 53 30 32 30 1f 02 05 20 95
    模拟测试数据:[7,5,6,144,0,8,4,156,0,0,157,128,112,159,19,19,49,83,48,50,48,31,2,5,32,149]

    1. 上行消息 - 周期上报数据帧 0x00

    设备原始数据:00 06 00 00 00 10 d5
    模拟测试数据:[0,6,0,0,0,16,213]

    1. 上行消息 - 报警 0x0F

    设备原始数据:0f 20 02 20 02 00 00 10
    模拟测试数据:[15,32,2,32,2,0,0,16]
    这条消息为开门报警消息。

    设备原始数据:0f 20 04 20 05 00 00 90
    模拟测试数据:[15,32,4,32,5,0,0,144]
    这条消息为关门报警消息。

    1. 下行消息 - 设置上报周期(心跳周期) 0x9D

    模拟测试数据如下,将其填入设备下行数据的编辑框中:

    {"params": {"period": 300}
    }
    

    1.3 创建测试设备

    在设备调试页面中,单击【新建设备】,设备名为 dws001。

    • DevEUI,每一个设备有一个唯一的身份识别地址 DEVEUI, 设备据此进行 LoRaWAN 网络入网并身份识别。信息以二维码的形式体现在产品外壳。
      本示例中为:8cf957e0000001e7

    • AppKey,设备的密钥。
      可找套件厂家索要。

    2 LoRaWAN 门磁传感器实物操作

    2.1 传感器复位

    根据 《门磁传感器RHF1S020DWS规格书》 中的操作说明,按照章节 3.8 进入无线固件升级, 将磁铁贴近门磁传感器(CE标志面的对面),红色LED从慢闪逐渐常亮后挪开磁铁, 即可让设备会自动重置复位。

    2.2 下发门磁归属

    门磁传感器在刚复位上电的一两分钟会上报3条归属状态的消息,我们必须在这点时间内尽快下发归属命令。

    由于门磁传感器是 LoRaWAN Class A 类设备,这类设备不会立即下发数据,需要在有数据上行后,服务器才会向该设备下行数据。

    因此我们下发了归属命令,当传感器上报归属状态消息后,即可收到我们下发的归属命令。这样门磁传感器之后才可正常使用。

    注意:设备一旦归属之后,会再上报周期参数上来。如果看到平台的设备属性中没有更新“上报周期”,那说明传感器还未归属成功。此时需要重新下发归属命令,然后再复位传感器。

    2.3 开关门操作

    根据 《门磁传感器RHF1S020DWS规格书》 中的章节 2.10 操作说明,

    磁铁部分外壳底部有一个开槽标识, 安装时请务必保证开槽的一边朝向正对传感器一边。主体传感部分和用磁铁部分相对方位如下图, 分别安装在门(或窗)固定边和活动边,距离小于 20mm(不需紧贴) , 主体传感器部分和磁铁部分安装的表面高度基本在一个平面上。

    如图所示,磁铁开槽方向贴近传感器位置,即触发了一次关门。将磁铁挪开 35 mm 以上,即可触发开门上报。

    在控制台的设备调试页面下方则可以看到相应的属性做了更新。

    END

    That's all


    IoT小能手的其他精彩文章:

    * 行业围观

    从工信部发文解读政府对LoRa产业的态度

    深度报道 第1个从太空发回的LoRa信号(含视频)

    * 技术分享

    LoRaWAN介绍 - LoRa从业者读这篇就够了

    干货 | LoRaWAN 协议中文版,你要的pdf来了

    无线节点的空中唤醒技术解析

    * 玩玩硬件

    13块钱DIY微信小程序远程浇花神器

    自制一个 LoRa PM2.5 监测器

    语音控制智能家居的抽风小仓鼠

    * 心得分享

    文档啊,最重要的还是层次感

    技术管理入门课_先做个不讨厌的人

    你没中过勒索病毒,不知道备份有多重要

不改设备固件,直接让成品LoRaWAN门磁接入腾讯云物联网开发平台相关推荐

  1. RAK7258 LoRaWAN 网关接入腾讯云物联网开发平台

    文章目录 前言 1 控制台操作 LoRa 网关 2 RAK 7258 LoRa网关实物操作 连接配置 网络配置 LoRa参数配置 网关上线确认 END 前言 这篇笔记记录采用 RAK7258 LoRa ...

  2. 腾讯云物联网开发平台 LoRaWAN 透传接入 更新版

    前言 之前有一篇文章介绍LoRaWAN透传数据,不过还是用物模型+云端数据解析脚本,不是真正的透传.腾讯云物联网开发平台也支持对LoRaWAN原始数据的透传.转发.今天来介绍下. 腾讯云 IoT Ex ...

  3. STM32节点移植lorawan协议连接腾讯云物联网开发平台(IoT Explorer)

    STM32移植lorawan协议栈连接腾讯云物联网开发平台(IoT Explorer) 前言 开发环境的准备 正文 初始化 入网 发送与接收 前言 在移植协议之前,先给大家科普一下Lora 和 lor ...

  4. 【STM32+ESP-12S连接腾讯云物联网开发平台 1】云平台的创建和AT固件烧录

    腾讯云物联网开发平台创建和ESP-12S的固件烧录 前言 一.腾讯云物联网开发平台的创建 1. 创建产品 2. 配置产品和创建设备 3. 设备三元组说明 二.ESP-12S固件烧录 1.固件获取 2. ...

  5. 腾讯云物联网-网关设备体验

    sdk代码请点击这里获取 网关设备简介 对于 BLE.Zigbee 和485等不具备直接访问网络能力的设备,需要先接入网关,然后通过网关代理,间接实现设备接入腾讯物联网开发平台 IoT Explore ...

  6. 门禁接入动环系统,门磁接入动环系统怎么设置

    门磁能连接动环监控系统吗?门磁属于数据报警检测量,可通过开关量检测获得.门磁安装在门套的适当位置,对进出人员进行监控. 动力环境监控系统集安全.环境.动力于一体.适用场景不但可以加强机房.通信基站.供 ...

  7. LoRa设备如何连接到腾讯云?

    目录 前言 一.在腾讯云上新建LoRa设备 二.LoRa设备上线 三.在线调试 结语 前言 前面我们已经介绍了<如何在腾讯云上解析LoRa节点数据>,也就是说,我们已经知道如何在腾讯云上为 ...

  8. 实现阿里云物联网平台设备信息到微信小程序分享过程

    简要说明: 实现微信小程序连接阿里云物联网平台并且显示阿里云设备信息等,设备端采用模拟设备进行数据上传,并且利用规则引擎和自定义的Topic进行信息的接受和发送. 目前效果图 步骤: 1.注册阿里云物 ...

  9. esp32 + DHT11温湿度传感器+阿里云物联网平台实时数据显示 实现设备上云

    1 课设目的 本课设是通过esp32板子搭配DHT11传感器,检测温度和湿度数据通过MQTT协议实时传输到阿里云物联网开发平台,实现设备上云. 2 阿里云环境准备 2.1开通物联网平台 我们先需要注册 ...

最新文章

  1. 整合初步---------SSH(注解版)
  2. node 常见的一些系统问题
  3. 自动化监控--zabbix中的Macros(宏)详解
  4. python读取文件最后一行
  5. ionic4集成高德地图
  6. python按位定义数据_《Python3智能数据分析快速入门》—2.2.5 按位运算符
  7. JAVA大厂高频面试题及答案
  8. php 中 的含义
  9. Layui 数据表格:用户个性化定制列(拖拽,隐藏)
  10. 抓包教程_最简单的Wireshark抓包TCP/UDP新手5步教程(宽带故障运维必备)
  11. tomcat 日志拆分
  12. 物联网系统网关开发与实现
  13. win10安装opencv,pycharm中import cv2失败
  14. JEECG3.8 全套实战视频全部开放,免费下载!
  15. vc 文字转换到机内码,输入汉字和数字, 输出一串16进制码(数字-〉ASII码,汉字—〉国标码)...
  16. jieba分词词性标注含义
  17. Macbook Pro 201 装Win10 声卡_MacBook+BMPCC+康佳PS300共同打造事半功倍视频制作流
  18. IDEA中建包时如何把包分开
  19. 京东云开发者|IoT运维 - 如何部署一套高可用K8S集群
  20. 实际上Ubuntu在你最起初配置完系统以后,是无法访问root类型的操作的(下面详解),ubuntu系统网络设置方法(图文)

热门文章

  1. fedora 19 安装后优化
  2. 手机麦克风声音太大_手机麦克风声音小怎么调整,简单处理一个方法
  3. android程序员手机壁纸,ASCII码壁纸-程序猿不务正业系列
  4. 移动测试人员学习Python的顺序
  5. 贩妖记 第四十九章,了断
  6. JavaScript 页面渲染
  7. Java常用类库API
  8. do not be evil. 不作恶
  9. 无锡设计——CAD设计和绘图的优点
  10. 如何解决error: failed to push some refs to 'git