jjzjj

DGIOT设备配置同步下发控制指令

数蛙科技 2023-03-28 原文

[小 迪 导读]:在控制设备的过程中,经常会碰到下面这些问题:

老式方案 dgiot基于dlink协议配置同步方案
平台根据实际情况控制开关机  平台远程控制设备同步开关机状态

老式方案缺点:

  • 当平台控制指令没有发下去时,平台需要再次点击发出控制指令,较浪费人力

dgiot配置同步方案优点:

  • 设备上电,设备状态全权由平台管理员控制即平台控制值,例如:平台为关机,现场设备即使开机平台将会自动下发关机指令,将设备再次关机。

整体交互图

方案执行步骤

1.在平台上创建产品,如下图为例。

2.在产品详情的物模型中创建设备上传的"key":"value"对应的物模型,如下图为例。

3.在产品详情的可视化中添加低代码,如下图为例。

4.点击设计编辑低代码,先编辑成产品的低代码用以添加平台的key与上传设备的key进行关联,如下图。



产品低代码例子,以实际产品为准:
{
  "type": "form",
  "api": {
    "url": "iotapi/classes/Device/parse_objectid",
    "method": "put",
    "headers": {
      "store": "localStorage",
      "dgiotReplace": "parse_objectid"
    },
    "dataType": "json",
    "requestAdaptor": "return {\r\n  \"status\":0,\r\n  \"msg\":\"\",\r\n  \"data\":response\r\n  }"
  },
  "body": [
    {
      "id": "u:52fbc3355570",
      "mode": "inline",
      "name": "Ctrl",
      "type": "switch",
      "label": "开关机",
      "onText": "开",
      "option": "",
      "offText": "关",
      "trueValue": 1,
      "falseValue": 0,
      "validateApi": {
        "url": "iotapi/amis/Product/b5f75b59a3",
        "method": "put",
        "requestAdaptor": "return {\r\n  ...api,\r\n  data:{\r\n    profile:{\r\n      Ctrl:api.data.Ctrl    \r\n      }\r\n  }\r\n}"
      },
      "submitOnChange": true
    }
  ],
  "title": "开关机控制器",
  "trueValue": true,
  "falseValue": false,
  "submitText": "",
  "optionAtLeft": false
}

5.在产品详情的可视化中找到刚刚创建的低代码,点击预览,点击一下开关机添加平台key,如下图。

6.在产品详情的物模型中找到刚刚创建的物模型,点击编辑,关联平台key与设备key,如下图。

7.在产品详情的可视化中找到刚刚创建的低代码,点击设计,修改为设备的低代码,如下图。

设备低代码示例:
{
  "type": "form",
  "api": {
    "url": "iotapi/classes/Device/parse_objectid",
    "method": "put",
    "headers": {
      "store": "localStorage",
      "dgiotReplace": "parse_objectid"
    },
    "dataType": "json",
    "requestAdaptor": "return {\r\n  \"status\":0,\r\n  \"msg\":\"\",\r\n  \"data\":response\r\n  }"
  },
  "body": [
    {
      "id": "u:52fbc3355570",
      "mode": "inline",
      "name": "Ctrl",
      "type": "switch",
      "label": "开关机",
      "onText": "开",
      "option": "",
      "offText": "关",
      "trueValue": 1,
      "falseValue": 0,
      "validateApi": {
        "url": "iotapi/amis/Device/parse_objectid",
        "method": "put",
        "headers": {
          "store": "localStorage",
          "dgiotReplace": "parse_objectid"
        },
        "requestAdaptor": "return {\r\n  ...api,\r\n  data:{\r\n    profile:{\r\n      Ctrl:api.data.Ctrl    \r\n      }\r\n  }\r\n}"
      },
      "submitOnChange": true
    }
  ],
  "title": "开关机控制器",
  "trueValue": true,
  "falseValue": false,
  "submitText": "",
  "optionAtLeft": false
}

8.设备模拟登录,方式一:MQTTX登录;方式二:ip:18083登录,用户名:admin,密码:public

方式一:MQTTX登录

方式二:ip:18083登录,用户名:admin,密码:public

用户名及密码获取方式,如下图:

9.设备数据模拟上报,方式一:MQTTX上报;方式二:ip:18083上报

dgiot上报数据Topic
    $dg/thing/{ProductId}/{DeviceAddr}/properties/report
dgiot下发控制命令Topic
    $dg/device/{ProductId}/{DeviceAddr}/profile

可以在设备详情查看其对应Topic,如下图:


方式一:MQTTX上报

上报数据

订阅到的控制指令

方式二:ip:18083上报

上报数据

订阅到的控制指令

10.设备配置同步实现,以ip:18083为例

平台设置为开机,如下图

ip:18083模拟上报状态值为0(关机的状态),平台自动下发开机命令,如下图

平台设置为关机,如下图

ip:18083模拟上报状态值为1(开机的状态),平台自动下发关机命令,如下图

[小 迪 点评]

  • dgiot平台配置同步下发控制指令。
  • 在成本方面dgiot为降低用户使用成本,降低运维成本。

想了解更多 dgiot 的具体细节,欢迎大家在GitHub上查看相关源代码。

有关DGIOT设备配置同步下发控制指令的更多相关文章

  1. Ruby Readline 在向上箭头上使控制台崩溃 - 2

    当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby​​安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少

  2. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  3. ruby-on-rails - 带 Spring 锁的 Rails 4 控制台 - 2

    我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.

  4. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  5. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  6. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  7. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  8. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  9. C51单片机——实现用独立按键控制LED亮灭(调用函数篇) - 2

    说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时

  10. 神州数码无线产品(AC+AP)配置 - 2

    注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

随机推荐