8合1环境传感器
插件图片
8合1环境传感器
8合1环境传感器
功能介绍

这个插件包含了二氧化碳、TVOC、甲醛、PM2.5、PM10、PM1、温湿度等属性,是一个多属性的环境传感器插件。


对应的硬件设备是数言8合1环境传感器:


淘宝链接:多合一环境质量传感器甲醛TVOC二氧化碳PM2.5PM10温湿度-淘宝网 (taobao.com)


X-SSG-A0801-RS485 八合一环境及空气质量传感器产品采用高速处理器,集成 CO2、甲醛、TVOC、激 光粉尘 PM2.5、PM10、PM1.0 颗粒物、温度、湿度于一体,通过 RS485 总线通信方式实现环境质量 数据检测上报。采用旋转卡扣方式吸顶安装,操作简单。 


设备通过有人口红网关USR-DR154采用485接入,对接好的如下:


功能码:根据产品手册,具体为3

读取策略:设置读取间隔时间,单位秒,这里设置10秒

从机地址:从机设备在总线上标识自己的地址,一般在产品手册中找,这里地址是1

起始地址:读取或写入数据的起始寄存器地址或者线圈地址 ,为0.

地址数量/线圈数量:读取或写入的数据的数量;寄存器对应的是地址数量,线圈对应的是线圈数量;一个寄存器是2个字节(16位二进制数);一个线圈是1位二进制数;这里是8个。

数据类型:根据产品手册配置数据类型;这里是int16-1

设备字段:要跟地址数量/线圈数量 和 数据类型一致;地址数量的二进制位数总和除以数据类型的二进制位数=设备字段的数量;比如地址数量/线圈数量是8,如果是地址数量的话,二进制位数就是64,如果是线圈数量的话二进制位数就是8,假如数据类型是int32,那么设备字段就有两个,数据类型是线圈的话,设备字段就是八个



eCO2,TVOC,CH2O,PM2.5,hum,temp,PM10,PM1



公式处理:对设备字段的值进行简单的运算处理,x代表数据字段的值,多个字段的处理用英文逗号隔开;例:x*100就代表给字段的值乘以100,比如查询到的值是2.55,公式处理后就是255


,,,,x*0.01,x*0.01,,


精度处理:对设字段的值做精度处理;比如2就代表保留两位小数点;例:查询到的值是2.55365,精度处理后就变为2.55


,,,,2,2,,

JSON代码:

{
  "info": {
    "pluginName": "8合1环境传感器",
    "description": "二氧化碳、TVOC、甲醛、PM2.5、PM10、PM1、温湿度",
    "pluginCategory": "1"
  },
  "tsl": {
    "properties": [
      {
        "dataType": "float",
        "dataRange": "0-999",
        "stepLength": 0.1,
        "title": "二氧化碳eCO2",
        "name": "eCO2",
        "unit": "ppm"
      },
      {
        "dataType": "float",
        "dataRange": "0-999",
        "stepLength": 0.1,
        "title": "TVOC",
        "name": "TVOC",
        "unit": "ug/m3"
      },
      {
        "dataType": "float",
        "dataRange": "0-999",
        "stepLength": 0.1,
        "unit": "ug/m3",
        "title": "甲醛 CH2O",
        "name": "CH2O"
      },
      {
        "dataType": "float",
        "dataRange": "0-999",
        "stepLength": 0.1,
        "title": "PM2.5",
        "name": "PM2.5",
        "unit": "ug/m3"
      },
      {
        "dataType": "float",
        "dataRange": "0-999",
        "stepLength": 0.1,
        "title": "PM10",
        "name": "PM10",
        "unit": "ug/m3"
      },
      {
        "dataType": "float",
        "dataRange": "0-999",
        "stepLength": 0.1,
        "title": "PM1",
        "name": "PM1",
        "unit": "ug/m3"
      },
      {
        "dataType": "float",
        "dataRange": "0-999",
        "stepLength": 0.1,
        "title": "温度",
        "name": "temp",
        "unit": "°C"
      },
      {
        "dataType": "float",
        "dataRange": "0-999",
        "stepLength": 0.1,
        "title": "湿度",
        "name": "hum",
        "unit": "%"
      }
    ],
    "option": {
      "classify": "custom",
      "catValue": "ambient_sensor"
    }
  },
  "chart": [
    {
      "series": [
        {
          "type": "gauge",
          "startAngle": 200,
          "endAngle": -20,
          "title": {
            "color": "#FFFFFF"
          },
          "itemStyle": {
            "color": "#FFFFFF"
          },
          "progress": {
            "show": false,
            "width": 0
          },
          "pointer": {
            "show": false
          },
          "splitLine": {
            "show": false
          },
          "axisTick": {
            "show": false
          },
          "axisLabel": {
            "show": false
          },
          "axisLine": {
            "show": false
          },
          "anchor": {
            "show": false
          },
          "detail": {
            "show": true,
            "fontSize": 30,
            "offsetCenter": [
              0,
              "-15%"
            ],
            "formatter": "{value}",
            "color": "#FFFFFF"
          },
          "data": [
            {
              "value": 0,
              "name": ""
            }
          ]
        }
      ],
      "simulator": {
        "funcArr": [
          "return +(Math.random() * 60).toFixed(2);"
        ],
        "interval": 5000
      },
      "name": "二氧化碳 eCO2",
      "mapping": [
        "eCO2"
      ],
      "controlType": "dashboard",
      "style": {
        "backgroundColor": "#2d3d86",
        "opacity": 1
      },
      "id": "xgHXHY8Jzfa7"
    },
    {
      "series": [
        {
          "type": "gauge",
          "startAngle": 200,
          "endAngle": -20,
          "title": {
            "color": "#FFFFFF"
          },
          "itemStyle": {
            "color": "#FFFFFF"
          },
          "progress": {
            "show": false,
            "width": 0
          },
          "pointer": {
            "show": false
          },
          "splitLine": {
            "show": false
          },
          "axisTick": {
            "show": false
          },
          "axisLabel": {
            "show": false
          },
          "axisLine": {
            "show": false
          },
          "anchor": {
            "show": false
          },
          "detail": {
            "show": true,
            "fontSize": 30,
            "offsetCenter": [
              0,
              "-15%"
            ],
            "formatter": "{value}",
            "color": "#FFFFFF"
          },
          "data": [
            {
              "value": 0,
              "name": ""
            }
          ]
        }
      ],
      "simulator": {
        "funcArr": [
          "return +(Math.random() * 60).toFixed(2);"
        ],
        "interval": 5000
      },
      "name": "TVOC",
      "mapping": [
        "TVOC"
      ],
      "controlType": "dashboard",
      "style": {
        "backgroundColor": "#2d3d86",
        "opacity": 1
      },
      "id": "aMqxfggfmNcN"
    },
    {
      "series": [
        {
          "type": "gauge",
          "startAngle": 200,
          "endAngle": -20,
          "title": {
            "color": "#FFFFFF"
          },
          "itemStyle": {
            "color": "#FFFFFF"
          },
          "progress": {
            "show": false,
            "width": 0
          },
          "pointer": {
            "show": false
          },
          "splitLine": {
            "show": false
          },
          "axisTick": {
            "show": false
          },
          "axisLabel": {
            "show": false
          },
          "axisLine": {
            "show": false
          },
          "anchor": {
            "show": false
          },
          "detail": {
            "show": true,
            "fontSize": 30,
            "offsetCenter": [
              0,
              "-15%"
            ],
            "formatter": "{value}",
            "color": "#FFFFFF"
          },
          "data": [
            {
              "value": 0,
              "name": ""
            }
          ]
        }
      ],
      "simulator": {
        "funcArr": [
          "return +(Math.random() * 60).toFixed(2);"
        ],
        "interval": 5000
      },
      "name": "甲醛 CH2O",
      "mapping": [
        "CH2O"
      ],
      "controlType": "dashboard",
      "style": {
        "backgroundColor": "#2d3d86",
        "opacity": 1
      },
      "id": "FYjGrC1xCmcq"
    },
    {
      "series": [
        {
          "type": "gauge",
          "startAngle": 200,
          "endAngle": -20,
          "title": {
            "color": "#FFFFFF"
          },
          "itemStyle": {
            "color": "#FFFFFF"
          },
          "progress": {
            "show": false,
            "width": 0
          },
          "pointer": {
            "show": false
          },
          "splitLine": {
            "show": false
          },
          "axisTick": {
            "show": false
          },
          "axisLabel": {
            "show": false
          },
          "axisLine": {
            "show": false
          },
          "anchor": {
            "show": false
          },
          "detail": {
            "show": true,
            "fontSize": 30,
            "offsetCenter": [
              0,
              "-15%"
            ],
            "formatter": "{value}",
            "color": "#FFFFFF"
          },
          "data": [
            {
              "value": 0,
              "name": ""
            }
          ]
        }
      ],
      "simulator": {
        "funcArr": [
          "return +(Math.random() * 60).toFixed(2);"
        ],
        "interval": 5000
      },
      "name": "PM2.5",
      "mapping": [
        "PM2.5"
      ],
      "controlType": "dashboard",
      "style": {
        "backgroundColor": "#2d3d86",
        "opacity": 1
      },
      "id": "rZFqCFMbejca"
    },
    {
      "series": [
        {
          "type": "gauge",
          "startAngle": 200,
          "endAngle": -20,
          "title": {
            "color": "#FFFFFF"
          },
          "itemStyle": {
            "color": "#FFFFFF"
          },
          "progress": {
            "show": false,
            "width": 0
          },
          "pointer": {
            "show": false
          },
          "splitLine": {
            "show": false
          },
          "axisTick": {
            "show": false
          },
          "axisLabel": {
            "show": false
          },
          "axisLine": {
            "show": false
          },
          "anchor": {
            "show": false
          },
          "detail": {
            "show": true,
            "fontSize": 30,
            "offsetCenter": [
              0,
              "-15%"
            ],
            "formatter": "{value}",
            "color": "#FFFFFF"
          },
          "data": [
            {
              "value": 0,
              "name": ""
            }
          ]
        }
      ],
      "simulator": {
        "funcArr": [
          "return +(Math.random() * 60).toFixed(2);"
        ],
        "interval": 5000
      },
      "name": "PM10",
      "mapping": [
        "PM10"
      ],
      "controlType": "dashboard",
      "style": {
        "backgroundColor": "#2d3d86",
        "opacity": 1
      },
      "id": "SSeNse4aaYl6"
    },
    {
      "series": [
        {
          "type": "gauge",
          "startAngle": 200,
          "endAngle": -20,
          "title": {
            "color": "#FFFFFF"
          },
          "itemStyle": {
            "color": "#FFFFFF"
          },
          "progress": {
            "show": false,
            "width": 0
          },
          "pointer": {
            "show": false
          },
          "splitLine": {
            "show": false
          },
          "axisTick": {
            "show": false
          },
          "axisLabel": {
            "show": false
          },
          "axisLine": {
            "show": false
          },
          "anchor": {
            "show": false
          },
          "detail": {
            "show": true,
            "fontSize": 30,
            "offsetCenter": [
              0,
              "-15%"
            ],
            "formatter": "{value}",
            "color": "#FFFFFF"
          },
          "data": [
            {
              "value": 0,
              "name": ""
            }
          ]
        }
      ],
      "simulator": {
        "funcArr": [
          "return +(Math.random() * 60).toFixed(2);"
        ],
        "interval": 5000
      },
      "name": "PM1",
      "mapping": [
        "PM1"
      ],
      "controlType": "dashboard",
      "style": {
        "backgroundColor": "#2d3d86",
        "opacity": 1
      },
      "id": "goCajDsnghDa"
    },
    {
      "series": [
        {
          "type": "gauge",
          "startAngle": 200,
          "endAngle": -20,
          "title": {
            "color": "#FFFFFF"
          },
          "itemStyle": {
            "color": "#FFFFFF"
          },
          "progress": {
            "show": false,
            "width": 0
          },
          "pointer": {
            "show": false
          },
          "splitLine": {
            "show": false
          },
          "axisTick": {
            "show": false
          },
          "axisLabel": {
            "show": false
          },
          "axisLine": {
            "show": false
          },
          "anchor": {
            "show": false
          },
          "detail": {
            "show": true,
            "fontSize": 30,
            "offsetCenter": [
              0,
              "-15%"
            ],
            "formatter": "{value}",
            "color": "#FFFFFF"
          },
          "data": [
            {
              "value": 0,
              "name": ""
            }
          ]
        }
      ],
      "simulator": {
        "funcArr": [
          "return +(Math.random() * 60).toFixed(2);"
        ],
        "interval": 5000
      },
      "name": "温度",
      "mapping": [
        "temp"
      ],
      "controlType": "dashboard",
      "style": {
        "backgroundColor": "#2d3d86",
        "opacity": 1
      },
      "id": "oTtcvVBGPURf"
    },
    {
      "series": [
        {
          "type": "gauge",
          "startAngle": 200,
          "endAngle": -20,
          "title": {
            "color": "#FFFFFF"
          },
          "itemStyle": {
            "color": "#FFFFFF"
          },
          "progress": {
            "show": false,
            "width": 0
          },
          "pointer": {
            "show": false
          },
          "splitLine": {
            "show": false
          },
          "axisTick": {
            "show": false
          },
          "axisLabel": {
            "show": false
          },
          "axisLine": {
            "show": false
          },
          "anchor": {
            "show": false
          },
          "detail": {
            "show": true,
            "fontSize": 30,
            "offsetCenter": [
              0,
              "-15%"
            ],
            "formatter": "{value}",
            "color": "#FFFFFF"
          },
          "data": [
            {
              "value": 0,
              "name": ""
            }
          ]
        }
      ],
      "simulator": {
        "funcArr": [
          "return +(Math.random() * 60).toFixed(2);"
        ],
        "interval": 5000
      },
      "name": "湿度",
      "mapping": [
        "hum"
      ],
      "controlType": "dashboard",
      "style": {
        "backgroundColor": "#2d3d86",
        "opacity": 1
      },
      "id": "jPsQnCKPJuUJ"
    },
    {
      "tooltip": {
        "formatter": "{a} <br/>{b} : {c}%"
      },
      "series": [
        {
          "name": "Pressure",
          "type": "gauge",
          "startAngle": 200,
          "endAngle": -20,
          "offsetCenter": [
            0,
            "-15%"
          ],
          "min": 0,
          "max": 60,
          "axisTick": {
            "show": true,
            "splitNumber": 2,
            "length": 2,
            "lineStyle": {
              "color": "#ddd"
            }
          },
          "splitLine": {
            "show": false,
            "length": 10,
            "lineStyle": {
              "color": "auto"
            }
          },
          "axisLabel": {
            "show": true,
            "distance": 12,
            "textStyle": {
              "color": "#fff",
              "fontSize": 12
            }
          },
          "axisLine": {
            "lineStyle": {
              "width": 6,
              "color": [
                [
                  0.3,
                  "#67e0e3"
                ],
                [
                  0.7,
                  "#37a2da"
                ],
                [
                  1,
                  "#fd666d"
                ]
              ]
            }
          },
          "progress": {
            "show": true,
            "width": 8,
            "itemStyle": {
              "color": "#63e33d"
            }
          },
          "pointer": {
            "show": true,
            "width": 3,
            "itemStyle": {
              "color": "#63e33d"
            }
          },
          "detail": {
            "formatter": "{value}°C",
            "fontSize": 30,
            "color": "#63e33d"
          },
          "data": [
            {
              "value": 0,
              "name": ""
            }
          ]
        }
      ],
      "simulator": {
        "funcArr": [
          "return +(Math.random() * 60).toFixed(2);"
        ],
        "interval": 5000
      },
      "name": "温度",
      "mapping": [
        "temp"
      ],
      "controlType": "dashboard",
      "style": {
        "backgroundColor": "#2d3d86",
        "opacity": 1
      },
      "id": "RB4QgzDlCJtP"
    },
    {
      "grid": {
        "left": "20",
        "right": "20",
        "top": "20",
        "bottom": "20",
        "containLabel": true
      },
      "legend": {},
      "xAxis": {
        "type": "category",
        "axisLine": {
          "lineStyle": {
            "color": "#fff"
          }
        },
        "data": [
          ""
        ]
      },
      "dataZoom": [
        {
          "type": "inside",
          "start": 70,
          "end": 100
        },
        {
          "start": 70,
          "end": 100
        }
      ],
      "yAxis": {
        "type": "value",
        "axisLine": {
          "lineStyle": {
            "color": "#fff"
          }
        }
      },
      "series": [
        {
          "data": [
            0
          ],
          "type": "line",
          "name": "二氧化碳eCO2"
        },
        {
          "data": [
            0
          ],
          "type": "line",
          "name": "TVOC"
        },
        {
          "data": [
            0
          ],
          "type": "line",
          "name": "甲醛 CH2O"
        },
        {
          "data": [
            0
          ],
          "type": "line",
          "name": "PM2.5"
        },
        {
          "data": [
            0
          ],
          "type": "line",
          "name": "PM10"
        },
        {
          "data": [
            0
          ],
          "type": "line",
          "name": "PM1"
        },
        {
          "data": [
            0
          ],
          "type": "line",
          "name": "温度"
        },
        {
          "data": [
            0
          ],
          "type": "line",
          "name": "湿度"
        }
      ],
      "name": "温度历史数据",
      "mapping": [
        "temp"
      ],
      "controlType": "history",
      "id": "SqcWThnqM6Ll"
    }
  ],
  "publish": {
    "isPus": true
  }
}
什么是设备插件

同样的一个温湿度传感器,可能有上千个厂家,不同的规格型号,但是他们都是温湿度传感器。 温湿度传感器的输入是温度、湿度、时间。输出是当前温度、当前湿度、温度曲线、湿度曲线等图表单元或者报表。这些输入和输出的数量和彼此关系都是确定的。 因此,我们将温湿度传感器对应的软件部分也抽象成一个标准的温湿度传感器组件,这个组件包括了固定的数据输入和结果输出。并使之成为物联网大厦中的标准的砖块。

如何使用设备插件

1. 选择一个设备插件, 复制JSON代码。

2. 在ThingsPanel物联网平台中,点击“应用管理”,点击“设备插件生成器”,点击“导入插件”,把刚才拷贝的设备插件JSON代码粘贴进去,点击确定,然后刷新页面,就可以在已安装列表里看到刚才导入的插件了。

3. 在ThingsPanel物联网平台中,点击“设备接入”,点击“设备管理”,在设备上点击“绑定插件”对话框,输入设备插件的名称,在检索出的插件列表中找到刚才导入的设备插件,点击选择就绑定成功了。

插件信息
作者:
ThingsPanel
类别:
设备插件 - 传感器
版本号:
0.1
发布日期:
2023-06-15 15:16
Github
Gitee
微信交流群
QQ交流群
北京极益科技有限公司 版权所有 ICP:京ICP备15045763号-12