【开源视频联动物联网平台】产品管理

简介: 【开源视频联动物联网平台】产品管理

产品基本信息设置如下:

  • 产品名称:名称为中文、字母、数字、下划线的组合,1位 - 20位且不能为空。
  • 产品品类:选择您所创建产品的所属品类,不同类型产品的属性、事件等数据模板会有所不同。
  • 设备类型:设备类型分为直连设备、网关、子设备3类,详情如下:
  • 直连设备:此类设备可直接接入物联网开发平台且无挂载子设备。
  • 网关:此类设备可直接接入物联网开发平台,并且可接受子设备加入局域网络。可以维持子设备的拓扑关系,将与子设备的拓扑关系同步到云端。
  • 子设备:此类设备必须依托网关设备才可与物联网开发平台进行通信,例如 Zigbee、蓝牙、Modbus等设备。
  • 认证方式:物联网开发平台提供两种认证方式用于设备与平台之间鉴权认证。
  • 证书认证:在创建设备时,平台将为设备生成一个证书文件和一个私钥文件,实现设备与云之间的双向认证。
  • 密钥认证:在创建设备时,使用平台为设备随机生成的 PSK。
  • 通信方式:您可以选择 Wi-Fi、移动蜂窝(2G/3G/4G)、5G、BLE、LoRaWAN 等其它通信方式。
  • 接入网关协议(设备类型选择为子设备可选):表示该产品下的设备作为子设备与网关的通讯协议类型。
  • Zigbee:表示子设备和网关间的通讯协议为ZigBee。
  • BLE:表示子设备和网关间的通讯协议为BLE。
  • Modbus:表示子设备和网关间的通讯协议为Modbus-RTU。
  • 自定义:表示子设备和网关间的通讯协议为其它标准或私有协议。
  • 数据协议:默认采用物模型的数据协议,支持{key:xx,value:xx}和{key:value}两种模式的键值解析,同时支持xml,json,soap等通用编解码数据协议,您也可以自定义协议进行透传。
  • 描述:字数不能超过80个,您可以根据需要选填。


物模型

物模型通过将物理实体设备进行数字化描述,构建其数字模型。在物联网开发平台定义物模型即定义产品功能。完成功能定义后,系统将自动生成该产品的物模型。

新建产品后可以引用已存在的物模型模板,也可以自定义物模型。


物模型类型包含三元素:属性、事件和行为。

功能元素

功能描述

功能标识符

属性

用于描述设备的实时状态,支持读取和设置,如模式、亮度、开关等。


包括以下六种基本数据类型:


布尔型:非真即假的二值型变量。例如,开关功能。


整数型:可用于线性调节的整数变量。例如,空调的温度。


字符型:以字符串形式表达的功能点,例如,灯的位置。


浮点型:精度为浮点型的功能点。例如,压力值的范围:0.0 - 24.0。


枚举型:自定义的有限集合值。例如,灯的颜色:白色、红色、黄色等。


时间型:string 类型的 UTC 时间戳(毫秒)。


同时,支持数组和结构体类型。

PropertiesId


事件


用于描述设备运行时的事件,包括告警、信息和故障三种事件类型,事件型功能属性可以添加具体的事件参数,这些参数可以由属性中六种基本数据类型组成。可添加多个输出参数,例如环境传感器检测到空气质量很差,空调异常告警等。

EventId


行为


用于实现更复杂的业务逻辑,可添加多个调用参数和返回参数。行为的输入参数和输出参数可添加属性中六种基本数据类型,用于让设备执行某项特定的任务。例如,开锁动作需要知道是哪个用户在什么时间开锁,锁的状态如何等。


ActionId



数据模板格式参考

{
  "version": "1.0",
  "profile": {
    "ProductId": "110",
    "CategoryId": "3"
  },
  "properties": [
    {
      "id": "power_switch",
      "name": "电灯开关",
      "desc": "控制电灯开灭",
      "required": true,
      "mode": "rw",
      "define": {
        "type": "bool",
        "mapping": {
          "0": "关",
          "1": "开"
        }
      }
    },
    {
      "id": "color",
      "name": "颜色",
      "desc": "灯光颜色",
      "mode": "rw",
      "define": {
        "type": "enum",
        "mapping": {
          "0": "Red",
          "1": "Green",
          "2": "Blue"
        }
      }
    },
    {
      "id": "brightness",
      "name": "亮度",
      "desc": "灯光亮度",
      "mode": "rw",
      "define": {
        "type": "int",
        "unit": "%",
        "step": "1",
        "min": "0",
        "max": "100",
        "start": "1"
      }
    },
    {
      "id": "name",
      "name": "灯位置名称",
      "desc": "灯位置名称:书房、客厅等",
      "mode": "rw",
      "required": false,
      "define": {
        "type": "string",
        "min": "0",
        "max": "64"
      }
    }
  ],
  "events": [
    {
      "id": "status_report",
      "name": "DeviceStatus",
      "desc": "Report the device status",
      "type": "info",
      "required": false,
      "params": [
        {
          "id": "status",
          "name": "running_state",
          "desc": "Report current device running state",
          "define": {
            "type": "bool",
            "mapping": {
              "0": "normal",
              "1": "fault"
            }
          }
        },
        {
          "id": "message",
          "name": "Message",
          "desc": "Some extra message",
          "define": {
            "type": "string",
            "min": "0",
            "max": "64"
          }
        }
      ]
    },
    {
      "id": "low_voltage",
      "name": "LowVoltage",
      "desc": "Alert for device voltage is low",
      "type": "alert",
      "required": false,
      "params": [
        {
          "id": "voltage",
          "name": "Voltage",
          "desc": "Current voltage",
          "define": {
            "type": "float",
            "unit": "V",
            "step": "1",
            "min": "0.0",
            "max": "24.0",
            "start": "1"
          }
        }
      ]
    },
    {
      "id": "hardware_fault",
      "name": "Hardware_fault",
      "desc": "Report hardware fault",
      "type": "fault",
      "required": false,
      "params": [
        {
          "id": "name",
          "name": "Name",
          "desc": "Name like: memory,tf card, censors ...",
          "define": {
            "type": "string",
            "min": "0",
            "max": "64"
          }
        },
        {
          "id": "error_code",
          "name": "Error_Code",
          "desc": "Error code for fault",
          "define": {
            "type": "int",
            "unit": "",
            "step": "1",
            "min": "0",
            "max": "2000",
            "start": "1"
          }
        }
      ]
    }
  ],
  "actions": [
    {
      "id": "unlock",
      "name": "开灯行为检测",
      "desc": "用于描述开灯的动作",
      "input": [
        {
          "id": "open",
          "name": "开关",
          "define": {
            "type": "bool",
            "mapping": {
              "0": "关",
              "1": "开"
            }
          }
        },
        {
          "id": "user",
          "name": "用户",
          "define": {
            "type": "string",
            "min": "0",
            "max": "2048"
          }
        }
      ],
      "output": [
        {
          "id": "user",
          "name": "用户",
          "define": {
            "type": "string",
            "min": "0",
            "max": "2048"
          }
        },
        {
          "id": "time",
          "name": "开灯时间",
          "define": {
            "type": "timestamp"
          }
        },
        {
          "id": "state",
          "name": "灯的状态",
          "define": {
            "type": "bool",
            "mapping": {
              "0": "关",
              "1": "开"
            }
          }
        }
      ],
      "required": false
    }
  ]
}


物模型协议

产品定义物模型后,设备可以根据物模型中的定义上报属性、事件,并可对设备下发控制指令。物模型协议包括了以下几部分。

  • 设备初始信息上报:设备连接平台时上报的初始信息,便于平台展示设备详细信息,如设备 MAC 地址、IMEI 号。
  • 设备属性上报:设备端将定义的属性根据设备端的业务逻辑向云端上报,周期上报或者变更即上报。
  • 设备事件上报:设备可根据定义的物模型中的事件,当事件被触发,则根据设备事件上报的协议上报告警、故障等事件信息。
  • 设备远程控制:从云端向设备端下发控制指令,即从云端设置设备的可写属性。
  • 获取设备属性:获取设备最新的上报数据。
  • 设备行为调用:云端可以通过 RPC 的方式通知设备执行某个动作行为,适用于应用需要实时获取设备的执行结果的场景。


设备单Topic上报&订阅

优点:Topic订阅数量少,通过method字段来路由,method可拓展其他类型消息,消息拓展方便,

缺点:服务端处理较复杂

上行请求 Topic (服务端订阅): /up/all/{ProductID}/{DeviceSN}

下行响应 Topic (设备端订阅): /down/all/{ProductID}/{DeviceSN}

上行请求:
{
    "method": "baseinfo|property|event|reply",
    "token": "1234567",
    "params": {
        //支持key:value方式,也支持key:xxx,value:xxx方式
        "name": "dev001",
        "imei": "ddd",
        "hardinfo": "ddd",      
        "mac": "ddd",
        "ip": "ddd"
    }
}
下行请求:
{
    "method": "property|action|add|del",
    "token": "1234567",
    "params": {
        //支持key:value方式,也支持key:xxx,value:xxx方式
        "name": "dev001",
        "imei": "ddd",
        "hardinfo": "ddd",      
        "mac": "ddd"
    }
}
 
设备控制响应:
{
    "method": "reply",
    "token": "1234567",
    "params": {
        //支持key:value方式,也支持key:xxx,value:xxx方式
        "code":0,
        "status":"some message"
    }
}


设备多Topic上报&订阅

优点:通过Topic来路由消息,服务端业务处理方便。

缺点:Topic路由拓展不方便,涉及客户端改动,或者需进行路由转发

设备属性上行请求 Topic (服务端订阅):


  • /up/property/{ProductID}/{DeviceSN}
  • /up/event/{ProductID}/{DeviceSN}
  • /up/action/{ProductID}/{DeviceSN}
  • /up/sub/property/{ProductID}/{DeviceSN}
  • 自定义Topic


设备属性下行响应 Topic (设备端订阅):


  • /down/property/{ProductID}/{DeviceSN}
  • /down/action/{ProductID}/{DeviceSN}
  • /down/sub/property/{ProductID}/{DeviceSN}
  • 自定义Topic


设备初始信息上报

平台展示设备详细信息时,一般会展示设备的 MAC 地址、IMEI 号、时区等基础信息。

设备上报主题:/up/property/{ProductID}/{DeviceSN} 
设备上报:
{
    "method": "info",
    "token": "1234567",
    "params": {
        "name": "dev001",
        "imei": "ddd",
        "module_hardinfo": "ddd",      
        "mac": "ddd" 
    }
}
 
服务端无响应消息。


设备属性上报

当设备需要向云端上报设备运行状态的变化时,以通知云端业务系统接收设备上报属性数据,

设备上报主题:/up/property/{ProductID}/{DeviceSN} 
设备上报:
{
    "method":"property",
    "token":"123", //(时间戳也可以复用该字段)
    "params":{
        //"timestamp":1628646783,
        "power_switch":1,
        "color":1,
        "brightness":32
     }
}
服务端无响应消息。
设备远程控制

使用物模型协议的设备,当需要通过云端控制设备属性和功能时,

服务端下发主题:/down/property/{ProductID}/{DeviceSN} 
服务端请求:
{
    "method": "property",
    "token": "123",  //(时间戳也可以复用该字段)  
    "params": {
        //"timestamp":1628646783,
        "power_switch": 1,
        "color": 1,
        "brightness": 66    
    }
}
设备端回复主题:/up/property/{ProductID}/{DeviceSN} 
{
    "method":"reply",
    "token":"123",
    "params": {
        "code":0,
        "status":"some message"
    }
}
服务端下发主题:/down/action/{ProductID}/{DeviceSN} 
服务端请求:
{
    "method": "action",
    "token": "123", //(时间戳也可以复用该字段)
    "params": {
        "actionId": "openDoor",                
    }
}
设备端回复主题:/up/action/{ProductID}/{DeviceSN} 
{
    "method":"reply",
    "token":"123",
    "params": {
        "code":0,
        "status":"some message"
    }
}
设备事件上报

当设备需要向云端上报事件时,如上报设备的故障、告警数据,

设备上报主题:/up/event/{ProductID}/{DeviceSN} 
设备上报:
{
    "method":"event",
    "token":"123", //(时间戳也可以复用该字段)
    "params":{
        //"timestamp":1628646783,
        "eventId":"PowerAlarm",
        "type":"info|alert|fault",
        "timestamp":1212121221,
        "Voltage":2.8,
        "Percent":20
     }
}
服务端无响应消息。
子设备管理

子设备身份注册后,需由网关向物联网平台上报网关与子设备的拓扑关系,然后进行子设备上线。


子设备上线过程中,物联网平台会校验子设备的身份和与网关的拓扑关系。所有校验通过,才会建立并绑定子设备逻辑通道至网关物理通道上。子设备与物联网平台的数据上下行通信与直连设备的通信协议一致,协议上不需要露出网关信息。


删除拓扑关系后,子设备不能再通过网关上线。系统将提示拓扑关系不存在,认证不通过等错误。

网关上报主题:/up/sub/{ProductID}/{DeviceSN} 
网关上报:
{
    "method":"register|add|del",
    "token":"123", //(时间戳也可以复用该字段)
    "params":{
        //"timestamp":1628646783,
        "eventId":"PowerAlarm",
        "type":"info|alert|fault",
        "timestamp":1212121221,
        "Voltage":2.8,
        "Percent":20
     }
}
服务端回复主题:/down/sub/{ProductID}/{DeviceSN} 
{
    "method":"reply",
    "token":"123",
    "params": {
        "code":0,
        "status":"some message"
    }
}


服务端下发主题:/down/sub/{ProductID}/{DeviceSN} 
服务端下发:
{
    "method":"list",
    "token":"123", //(时间戳也可以复用该字段)
    "params":{
        //"timestamp":1628646783,
        "eventId":"PowerAlarm",
        "type":"info|alert|fault",
        "timestamp":1212121221,
        "Voltage":2.8,
        "Percent":20
     }
}
设备端回复主题:/up/sub/{ProductID}/{DeviceSN} 
{
    "method":"register|add|del",
    "token":"123", //(时间戳也可以复用该字段)
    "params":{
        //"timestamp":1628646783,
        "eventId":"PowerAlarm",
        "type":"info|alert|fault",
        "timestamp":1212121221,
        "Voltage":2.8,
        "Percent":20
     }
}
相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
7月前
|
JavaScript 小程序 前端开发
【手把手教教学物联网项目】01 视频大纲
《手把手教教学物联网项目》是一系列视频教程,旨在引导初学者掌握物联网技术。视频涵盖物联网基础,如物联网概述、架构和技术;STM32微控制器的介绍、编程及外设使用;网关开发,涉及ESP8266和ESP32;物联网通信协议如TCP、MQTT、Modbus等;物联网总线协议如单总线、CAN、IIC和SPI;OLED显示原理与驱动;MQTT服务器搭建;物联网云平台介绍,包括阿里云平台的使用;微信小程序开发入门及前端VUE项目实践。此外,教程还涉及UniAPP和SpringBoot后台开发,最后通过“智能取餐柜”项目将理论知识付诸实践。视频可在B站找到,适合学生、爱好者和开发人员学习物联网技术。
341 12
【手把手教教学物联网项目】01 视频大纲
|
7月前
|
XML 编解码 JSON
【开源视频联动物联网平台】协议包管理
【开源视频联动物联网平台】协议包管理
86 1
|
2月前
|
存储 JSON Ubuntu
时序数据库 TDengine 支持集成开源的物联网平台 ThingsBoard
本文介绍了如何结合 Thingsboard 和 TDengine 实现设备管理和数据存储。Thingsboard 中的“设备配置”与 TDengine 中的超级表相对应,每个设备对应一个子表。通过创建设备配置和设备,实现数据的自动存储和管理。具体操作包括创建设备配置、添加设备、写入数据,并展示了车辆实时定位追踪和车队维护预警两个应用场景。
81 3
|
7月前
|
传感器 边缘计算 物联网
基于ELF 1S开发板完成的物联网开源
项目包含云、网、边、端四部分,采用涂鸦云作为云服务器,便于初学者接入。ELF 1S开发板作为边缘中控,运行Linux+Qt,通过Wi-Fi连接云服务器。开发板通过USB无线模块与端侧设备通信,支持AT指令和功能扩展。项目提供5个Qt应用界面,包括电器控制、环境监测、云服务器连接、有线网络和参数设置,可与手机APP交互。端侧设备包括Modbus-RTU从机和无线网络模块。整个项目已在Gitee开源。
|
5月前
|
物联网
好的资源链接,gitee全糖咖啡,B站视频转成mp4,全糖咖啡 / 物联网网关数据上传,,全糖咖啡 / springboot+百度智能车牌检测
好的资源链接,gitee全糖咖啡,B站视频转成mp4,全糖咖啡 / 物联网网关数据上传,,全糖咖啡 / springboot+百度智能车牌检测
|
5月前
|
分布式计算 DataWorks 大数据
MaxCompute产品使用合集之如何实现嵌入式设备到物联网平台再到PAI DSW的云边结合
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
7月前
|
存储 关系型数据库 物联网
【PolarDB开源】PolarDB在物联网(IoT)数据存储中的应用探索
【5月更文挑战第27天】PolarDB,阿里云的高性能云数据库,针对物联网(IoT)数据存储的挑战,如大规模数据、实时性及多样性,展现出高扩展性、高性能和高可靠性。它采用分布式架构,支持动态扩展,保证99.95%的高可用性,并能处理结构化、半结构化和非结构化数据。通过SDK实现数据实时写入,支持SQL查询和冷热数据分层,有效降低成本。随着IoT发展,PolarDB在该领域的应用将更加广泛。
241 1
|
7月前
|
JSON 缓存 物联网
推荐一款go语言的开源物联网框架-opengw
推荐一款go语言的开源物联网框架-opengw
157 4
|
29天前
|
存储 安全 物联网
政府在推动物联网技术标准和规范的统一方面可以发挥哪些作用?
政府在推动物联网技术标准和规范的统一方面可以发挥哪些作用?
98 50
|
29天前
|
安全 物联网 物联网安全
制定统一的物联网技术标准和规范的难点有哪些?
制定统一的物联网技术标准和规范的难点有哪些?
43 2