本示例介绍在智慧博物馆场景中,借助环境传感器设备,使用LoRa通信技术,监控藏品所在环境的温度、湿度、二氧化碳浓度、挥发有机物、甲醛、光照强度、PM2.5等环境指标。

前提条件

在进行本示例配置前,您需要完成以下准备工作:

背景信息

博物馆作为藏品的收藏和展览场所,其环境直接影响藏品的保存和状态,因此实时监控各种对藏品可能产生影响的环境参数非常重要。使用LoRa环境监测设备的配置过程包括:
  • 自主搭建博物馆的LoRa网络。
  • 配置LoRa环境传感器入网。
  • 配置环境传感器数据上报数据到物联网平台。
  • 在物联网平台上提交数据解析脚本,用于解析环境传感器上报的数据。
基于LoRa自组网技术的物联网整体架构图如下。
图 1. 整体架构图
整体架构图

配置LoRa网关

使用LoRa设备之前,您需在物联网络管理平台上配置LoRa网关,搭建物联网所需的网络服务。

  1. 登录物联网络管理平台控制台
  2. 添加网关。
    1. 在左侧导航栏,选择网络管理>网关管理
    2. 网管管理页的网管列表页签,单击添加网关
    3. 填入您的网关基本信息和位置信息后,单击确认
      网关的GwEUI、PIN Code和频段信息,请在您的网关设备的标签上查看。如下图:查看网关信息
  3. 添加入网凭证。
    1. 在左侧导航栏,选择入网开通
    2. 入网开通页,单击添加专用凭证
    3. 填入凭证信息,单击确认添加专用凭证
  4. 凭证授权。
    1. 入网开通页,找到刚创建的凭证,单击凭证对应的凭证授权
    2. 勾选授权给自己,单击确认凭证授权

创建产品和设备

  1. 登录物联网平台控制台
  2. 创建产品。
    1. 在左侧导航栏,选择设备管理>产品
    2. 产品管理页,单击创建产品
    3. 填入产品信息,单击确定。完成产品创建。
      参数 说明
      产品名称 自定义产品名称。
      所属分类 选择为自定义品类。
      节点类型 选择设备。
      是否接入网关 选择否。
      连网方式 选择为LoRaWAN。
      入网凭证 选择您在物联网络平台中创建并已授权的入网凭证。
      数据格式 选择为透传/自定义。
      新建产品
  3. 创建设备。
    1. 在左侧导航栏,选择设备
    2. 设备管理页,单击添加设备
    3. 选择刚创建的产品,输入设备的DevEUI和PIN Code,单击确定。完成设备创建。
      说明 设备的DevEUI和PIN Code,请在您的设备标签上查看。查看设备标签

定义物模型

定义物模型即定义功能,包括定义属性、事件和服务。本示例中,需定义以下属性:温度、湿度、二氧化碳浓度、挥发有机物、甲醛、光照强度、PM2.5。

  1. 在物联网平台控制台的左侧导航栏,选择设备管理>产品
  2. 产品管理页,找到之前创建的产品,单击对应的查看按钮。
  3. 产品详情页,选择功能定义,再单击自定义功能对应的添加功能
  4. 逐个添加下图中的属性。自定义功能

编写数据解析脚本

本示例中,LoRa设备上报的数据是二进制格式,如:AA1FC800003710FF000503690B0018013500FFFFFFFFFFFFFFFFFFFFFFFFFF6C。阿里云物联网平台的标准数据格式为Alink JSON格式,不能直接使用二进制数据进行业务处理。对此,物联网平台提供数据解析功能,您可以依据设备数据格式和物模型,编写数据解析脚本,提交至物联网平台,用于将数据解析成标准的Alink JSON。

  1. 产品详情页,选择数据解析
  2. 编辑脚本输入框中,输入解析脚本。
    点击查看数据解析脚本编写指导。本实例的数据解析脚本如下:
    var PROPERTY_REPORT_METHOD = 'thing.event.property.post';
    /*
    示例数据:
    传入参数 ->
        AA1FC800003710FF000503690B0018013500FFFFFFFFFFFFFFFFFFFFFFFFFF6C 
    
    输出结果 ->
    {
      "method":"thing.event.property.post",
      "id": 1526870753,
      "params": {
        "temperature": 10,
        "humidity": 88
      },
      "version": "1.0"
    }
    */
    //上行数据,自定义二进制转物模型json
    function rawDataToProtocol(bytes) {
    
         var uint8Array = new Uint8Array(bytes.length);
        for (var i = 0; i < bytes.length; i++) {
            uint8Array[i] = bytes[i] & 0xff;
        }
    
        var dataView = new DataView(uint8Array.buffer, 0);
    
        var jsonMap = new Object();
    
             //属性上报method        
             jsonMap['method'] = PROPERTY_REPORT_METHOD;
             //协议版本号固定字段
             jsonMap['version'] = '1.0';
             //标示该次请求id值
             jsonMap['id'] = new Date().getTime();
             var params = {};
             //12,13
             params['pm25'] = (dataView.getUint8(13)*256+dataView.getUint8(12));
             //14,15对应产品属性中 temperature
             params['temperature'] =
     (dataView.getUint8(15)*256+dataView.getUint8(14))/10;
             //16,17对应产品属性中 humidity
             params['humidity'] = (dataView.getUint8(17)*256+dataView.getUint8(16));
             //18,19
             params['co2'] = (dataView.getUint8(19)*256+dataView.getUint8(18));
             //22,23
             params['hcho'] = (dataView.getUint8(23)*256+dataView.getUint8(22))/100;
             //26,27
             //params['voc'] = (dataView.getUint8(27)*256+dataView.getUint8(26))/100;
             //28,29
             params['lightLux'] = (dataView.getUint8(29)*256+dataView.getUint8(28));
    
             jsonMap['params'] = params;
         
             return jsonMap;
    }
    //下行指令,物模型json转二进制格式
    function protocolToRawData(json) {
             var payloadArray = [];
             // 追加LoRa下行帧头部
             payloadArray = payloadArray.concat(0x5d);
             payloadArray = payloadArray.concat(0x0a);//厂商提供数据端口
             payloadArray = payloadArray.concat(0x00);
             // 追加LoRa业务内容...
             return payloadArray;
    
    }
  3. 测试脚本。
    1. 选择模拟类型为设备上报数据
    2. 模拟输入下的输入框中,输入一个模拟数据,如:AA1FC800003710FF000503690B0018013500FFFFFFFFFFFFFFFFFFFFFFFFFF6C
    3. 单击运行
    4. 在右侧运行结果栏,查看解析结果。测试脚本
  4. 确认脚本能正确解析数据后,单击提交,将脚本提交到物联网平台系统。
    注意 物联网平台不能调用草稿状态的脚本,只有已提交的脚本才会被调用来解析数据。

LoRa设备接入物联网平台

  1. LoRa设备上线。
    将LoRa设备通电,设备便可使用LoRa网关接入物联网平台。设备接入物联网平台后,便可根据探测结果,上报环境数据。物联网平台调用您提交的数据解析脚本进行数据转换,将设备上报的二进制数据解析为Alink JSON格式。
  2. 查看设备状态。
    在物联网平台控制台设备管理页,可查看设备状态。对应的设备显示为在线,则表示LoRa设备已接物联网平台。设备显示在线
  3. 查看设备上报的环境参数。
    1. 在物联网平台控制台设备管理页,单击设备对应的查看查看按钮。
    2. 设备详情页,选择运行状态
      运行状态页签下,显示设备上报的属性数据。显示设备属性数据
      说明 您还可以在物联网平台上,配置规则引擎数据流转规则,将设备上报的数据流转到其他阿里云产品中进行存储和计算处理。点击查看配置数据流转规则配置说明

名词解释

  • 物联网络管理平台(Alibaba Cloud Link WAN)

    物联网络管理平台是阿里云面向物联网领域开发人员推出的网络管理平台,旨在帮助开发者搭建无线空口数据通道,实现终端(如传感器等)数据通过无线技术上报云端。可与阿里云物联网平台搭配使用,实现自主管理的物联网无线覆盖区。

  • 物联网平台(Alibaba Cloud IoT Platform)

    物联网平台提供安全可靠的连接通信能力,向下连接海量设备,支撑设备数据采集上云;向上提供云端API,通过API调用下发指令数据实现设备远程控制。另有设备管理、规则引擎、数据分析、边缘计算等增值服务。

  • LoRa

    LoRa(Long Range)是基于线性扩频(CSS)的扩频调制技术,用于建立长距离、低功耗的无线局域通信链路。

  • PIN Code

    LoRa设备的PIN码,通常印刷在设备的外显标签上。在物联网络管理平台上配置网关时,需传入网关设备的PIN Code;在物联网平台上创建设备时,需使用设备的PIN Code。

  • GwEUI

    LoRa网关设备的唯一标识符,通常印刷在网关设备的外显标签上。在物联网络管理平台上配置网关时,需传入网关设备的GwEUI。

  • DevEUI

    LoRa设备的唯一标识符,通常印刷在设备的外显标签上。在物联网平台上创建设备时,需使用设备的DevEUI。

更多最佳实践

点击查看更多阿里云最佳实践