从0到1编写一个驱动(Hello World)

针对开发者进行简单的数据上报工作,用于简单了解中台流程。提高开发流程,便于更好理解后文的协议对接!方便使用者快速上手使用中台。

HelloWorld对接演示视频

  • 1 流程图

  • 2 SDK下载(驱动框架)

    参见SDK介绍

  • 3 环境搭建

    本文以python为例,参见环境搭建

  • 4 创建驱动文件

    在_drivers目录下创建新的py文件,名称命名为dr_helloWorld(下载的sdk可能已经包含该文件,若包含则命名为其他名称)

    图片名称
  • 5 编写驱动

  • 引入包

#!coding:utf8

# 继承官方驱动类(IOTOSDriverI)
from driver import IOTOSDriverI
#导入python相关的包
import time

提供相关协议对接时使用的第三方依赖库,开发语言为python

  • 初始化

    class HelloWorldDriver(IOTOSDriverI):
    
    # 1、通信初始化
      def InitComm(self, attrs):
          #开启网关和循环采集
          self.online(True)
          self.pauseCollect = False
    
          try:
              # 通过数据点名称,设置单个值
              self.setValue(u'数值',"hello world")
          except Exception as e:
              self.warn(e)

初始化一次,让数据与中台设备数据点进行初始通讯

  • 采集代码
      # 2、循环采集
    def Collecting(self, dataId):
        time.sleep(1)
        try:
              #给数据点名称为“数值”的数据点循环赋值
              self.setValue(u'数值',"hello world")
              return ()
        except Exception as e:
              return ()

数据点值数据循环上报。至此,模拟不同数据类型上传不同的值的驱动已经完成,通讯的部分 都在collecting中,一定要注意自己的类名和文件名,后文要使用到的。完整的代码如下

  • 数据点下发代码

  • 完整代码

#!coding:utf8
# 继承官方驱动类(IOTOSDriverI)
from driver import IOTOSDriverI
#导入python相关的包
import time

class HelloWorldDriver(IOTOSDriverI):

  # 通信初始化
    def InitComm(self, attrs):
        #开启网关和循环采集
        self.online(True)
        self.pauseCollect = False

        try:
            # 通过数据点名称,设置单个值
            self.setValue(u'数值',"hello world")
        except Exception as e:
            self.warn(e)

    # 循环采集
    def Collecting(self, dataId):
        time.sleep(1)
        try:
            #给数据点名称为“数值”的数据点循环赋值
            self.setValue(u'数值',"hello world")
            return ()
        except Exception as e:
            return ()
  • 6 登录中台

    中台地址为爱投斯物联中台
    进入网站后输入账号密码即可登录,若没有账号密码则点击注册按照要求填写相关信息即可
  • 7 中台配置

  • 7.1 创建模板

    依次点击【系统设备】->【模板驱动】->【我的模板】,点击右上角创建模板。详见系统设备管理-模板驱动,helloWorld的驱动模板示例如下:

  • 7.2 创建网关

    依次点击【系统设备】->【通信网关】,点击右上角创建网关。详见系统设备管理-通信网关。填写网关名称即可,这里我创建了我自己中台的网关实例,方便大家理解

  • 7.3 创建设备

    模拟上传hello world设备数据
    依次点击【系统设备】 -> 【通信网关】 -> 【设备实例】,点击右上角创建设备实例。详见系统设备管理-设备实例。填写设备名称,选择刚才创建的网关和模板即可(检查一下驱动根配置的“driver”参数,若在创建模板时已按要求配置,则现在无需修改,否则则需要在此进行配置,配置标准见创建模板),这里我创建了我自己中台的设备实例,方便大家理解

  • 7.4 创建数据点

  • 创建数据点,点击【我的设备】 -> 【通信网关】 -> 【设备实例】 -> 【数据点】,并在【设备实例】下拉列表选择刚刚创建的设备实例,然后进行数据点的创建。详见系统设备管理-数据点注:运行HelloWorld驱动一定要删除系统自带的那四个数据点(设备持续在线时长、网关持续运行时长、设备网络状态、网关网络状态),否则会报错。以下为数据点。
    注:“数值”这个数据点必须要有而且类型必须为消息型(string)。可以自行增加和修改,但是必须保证代码里setValue(u'')里面的名称和中台建立的数据点名称保持一致,比如代码里两处setValue,改为setValue(u'data','hello world')则中台的数据点名称也应该为data

  • 8 创建运行脚本

    开发者在自己个人电脑中进行测试工作,用于模拟中台与hello world设备通讯,当通讯成功后,驱动上传至中台打开云网关即可代码自动运行,长时间自控,用户可查看所有代码运行状态
    在sdk下的_example文件夹下创建bat文件,内容如图,注意:网关的uuid即为上述所建网关的全局标识,可在中台通信网关栏下查看。

  • 9 运行脚本

  • 在_examples文件夹下打开cmd

  • 打开bat文件


    这里开发者也可以在_examples中直接双击打开刚才创建的bat文件运行 但报错会直接弹出跳过,无法观察
    运行没问题则可以进行下一步查看数据,若有问题可以参考常见问题,若不在常见问题中则可能是中台配置或者驱动代码、运行脚本的问题,根据报错进一步检查解决问题即可

  • 10 查看数据

    回到中台数据点的界面即可查看到数据已经上报成功

作者:admin  创建时间:2021-10-12 09:50
最后编辑:admin  更新时间:2022-05-19 01:29