docker版jxTMS使用指南:使用jxTMS采集数据之一

这篇具有很好参考价值的文章主要介绍了docker版jxTMS使用指南:使用jxTMS采集数据之一。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文讲解了如何jxTMS的数据采集与处理框架并介绍了如何用来采集数据,整个系列的文章请查看:docker版jxTMS使用指南:4.4版升级内容

docker版本的使用,请查看:docker版jxTMS使用指南

4.0版jxTMS的说明,请查看:4.0版升级内容

4.2版jxTMS的说明,请查看:4.2版升级内容

使用jxTMS搭建一个数据采集系统,相对来说较为简单,因为jxTMS已经内置了一个完整的数据采集处理读取的框架:

docker版jxTMS使用指南:使用jxTMS采集数据之一,jxTMS,docker,python,jxTMS,SaaS

所演示的框架图默认是现场配置有数据采集器,采集了数据后通过MQTT发送到MQTT服务器,然后数据采集系统通过MQTT来收取数据。

注:现场数据的读取与推送和现场设备以及数据采集器、DTU等密切相关,所以不放入本框架中进行讨论

上述框架前面已经讲解过,所以本文只做总体的、针对性的解说,大约分为三篇文章。

站点与站点数据的收取

站点主要是用于业务管理上的概念,如开通、关停、加载并配置下属设备等,同时提供对设备进行管理与操作的接口。其在数据采集与处理方面主要有两个功能:

  • 统一提供本站现场采集到的设备数据的传送方式

  • 对下属各设备处理完毕的数据根据业务需要进行综合处理,如电力监控,就是从下属的配电系统、柴油发电机、储能系统等抽取最核心的监控指标综合在一起进行保存并提供给外界的监控仪表盘等

目前,现场与本站之间多采取MQTT协议进行数据的传输,简单、方便,同时还可提供一定的QoS,关键是支持MQTT的DTU非常多,便于降低现场采集系统的建设成本。

目前,jxTMS默认以站点名为主题来接收站点数据【相关工作在main.py中完成,也就是说,其实这一点不属于数据采集处理框架】,所以通过MQTT收取数据非常简单,就是以主题名来查找站点,找到后将收到的字节流的消息原封不动的递交给该站点。

站点接收到数据后,需要根据本站现场的数据采集器的打包方式,针对性的对字节流做初步的处理以从字节流中提取出设备标识,然后将处理后的数据递交给相应的设备。

目前,有三种站点类型已经预置了相应的初步处理方式:

  • site类型,最基本的站点类,是单设备无采集器直接MQTT推送型站点。site只是将字节流以utf-8进行编码为字符串后,直接递交给自己下属的设备【就一台】即可

  • site_multiDev_push类型,是多设备MQTT推送型站点。该类型默认接收到某设备数据后即将其转换为json格式,并添加dn【设备名】后立即通过MQTT推送

  • site_packet类型,是多设备自定义协议包MQTT推送型站点。该类型默认接收到某设备数据后即将其视为设备类型为名的数据集,然后打包后立即通过MQTT推送。所以将字节流以自定义协议包进行解码,就可得到相应设备的dict形式的数据

注:现场的数据采集器可以定义诸如stateRep【状态报告】之类的系统用数据包来发送其它类型的数据,这些数据一般由站点做针对性处理

在之前的【站点的调整】一文中,我们还介绍有site_multiDev_poll型站点,该类型的站点主要是用于现场对modbus之类的设备进行设备采集时使用,即site_multiDev_poll目前主要考虑用于现场的数据采集器的部署使用,不归入后端数据框架中讨论。

site_multiDev_push代码:

class site_multiDev_push(site):
    def __init__(self, type, name, saveDataInterval=15):
        super(site_multiDev_push,self).__init__(type,name,saveDataInterval=saveDataInterval)

    def receive(self, bsMsg):
        s = str(bsMsg,"utf8")
        js = json.loads(s)
        dn = js.get('dn')
        if not dn is None:
            d = self.getDev(dn)
            if not d is None:
                rd = d.receive(js)
                if not rd is None:
	                #默认回调了站点的receiveData函数来完成站点的数据综合与处理
                    self.receiveData(dn,rd)

而某站点的代码为:

from jx.site import site

class site_xmk(site):
    def __init__(self, name):
        super(site_xmk,self).__init__('site_xmk',name)

    def addDevice(self, d):
        #站点用设备的类型做识别关键字
        self._allDev[d.type()] = d

    def receive(self, bsMsg):
	    #此站点的设备数据都是ascii码文本
        s = str(bsMsg,"utf8")
        try:
	        #波流仪的数据以$PSVSW为识别冠字
            offset = s.index('$PSVSW')
            d = self._allDev.get('svs_original')
        except:
	        #此站点就两种类型的设备,不是波流仪就是气象仪
            d = self._allDev.get('WSx_XDR_original')
		#此站点的数据采集模式是两设备直接通过串口周期性自动发送数据
		#DTU直接将串口数据透传给MQTT,因此直接递交给相应设备即可
        d.receive(s)

#下面三行代码是注册本类型的站点
def _newSite_xmk(name):
    return site_xmk(name)

site.register('site_xmk',_newSite_xmk)

站点本身也提供了站点数据的处理、保存:

#如果需要保存数据,则返回保存站点数据的数据对象
def newOrmData(self):
    #返回None则不再执行站点数据的保存动作
    return None

#本站点的数据综合处理函数,下属社会收到并处理完自己的数据后调用站点的receiveData函数回送给站点
def onReceive(self, dn, data):
    #onReceive即用来完成站点本身的数据处理动作,默认不做任何处理
    return data,True

#接收下属设备回送的数据,然后完成一系列相关动作
def receiveData(self, dn, data):
    #self._data和data并不一致,data有可能是事件通知、有可能是命令等等
    rd,self._newData = self.onReceive(dn,data)
    if (not self._ormData is None) and self._newData:
        self._lock.acquire()
        try:
            for k in rd:
                #将数据保存到自己的_data中,_saveData会自动进行保存
                self._data[k] = rd[k]
        finally:
            self._lock.release()

        if self._scheduler_saveData is None:
            #初始化时如果指定了saveDataInterval>0,则为周期性保存,否则就实时保存
            self._saveData()

参考资料:

jxTMS设计思想

jxTMS编程手册

下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:

如何用jxTMS开发一个功能

下面的系列文章讲述了jxTMS的一些基本开发能力:

jxTMS的HelloWorld文章来源地址https://www.toymoban.com/news/detail-641265.html

到了这里,关于docker版jxTMS使用指南:使用jxTMS采集数据之一的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker版jxTMS使用指南:数据源之表达式

    本文讲解4.2版jxTMS的数据产生与校验表达式,整个系列的文章请查看:docker版jxTMS使用指南:4.2版升级内容 docker版本的使用,请参考docker版jxTMS使用指南 4.0版jxTMS的说明,请查看:4.0版升级内容 数据产生式 数据产生式是一个字符串的表达式,jxTMS在需要时将运行该表达式以获

    2024年02月12日
    浏览(40)
  • docker版jxTMS使用指南:动态管控

    本文讲解4.4版jxTMS中的动态管控,整个系列的文章请查看:docker版jxTMS使用指南:4.4版升级内容 docker版本的使用,请查看:docker版jxTMS使用指南 4.0版jxTMS的说明,请查看:4.0版升级内容 4.2版jxTMS的说明,请查看:4.2版升级内容 之前的文章中我们讲解了jxTMS提供的python侧的REST用

    2024年02月15日
    浏览(37)
  • docker版jxTMS使用指南:自定义频率型动态管控

    本文讲解4.4版jxTMS中如何自行定义一个频率型的动态管控,整个系列的文章请查看:docker版jxTMS使用指南:4.4版升级内容 docker版本的使用,请查看:docker版jxTMS使用指南 4.0版jxTMS的说明,请查看:4.0版升级内容 4.2版jxTMS的说明,请查看:4.2版升级内容 上篇文章中我们讲解了j

    2024年02月14日
    浏览(38)
  • docker版jxTMS使用指南:python服务之设备策略

    本文讲解4.0版的jxTMS中python服务的设备策略,整个系列的文章请查看:docker版jxTMS使用指南:4.0版升级内容 docker版本的使用,请参考:docker版jxTMS使用指南 jxTMS实现的接口机对设备的数据采集与处理采取的是框架组装模式。 即jxTMS定义了一整套的设备数据采集、处理、查询/访

    2024年02月07日
    浏览(49)
  • 去掉鼠标系列之一: 语雀快捷键使用指南

    其实应该是系列之二了,因为前面写了一个关于Interlij IDEA的快捷键了。 为什么要写这个了,主要是觉得一会儿用鼠标,一会儿键盘,一点儿不酷,我希望可以一直用键盘,抛开鼠标。后面陆续记录一下各个软件的快捷键,一步步减少鼠标的使用。 gogogo! 1,搜索 Ctrl+J 2, 撤

    2024年02月12日
    浏览(47)
  • vernemq 一个可用的入门指南之一:Mac下的安装及使用,使用MQTTX访问verneMQ

    因为百度到一篇简书的,不可用,所以写这么一篇,方便后来人 物联网的消息队列技术选型,很多地方会推荐使用VerneMQ,这里做一个安装实验记录,并非推荐。  官网没有加sudo,执行失败,安装过程会多次下载github上的依赖包,大家要想办法解决速度问题 跑到最后发现le

    2024年02月06日
    浏览(42)
  • Docker 网络使用指南

    目录 前言 Docker网络类型 Docker 网络概念 使用 Docker 网络 运行容器并连接到网络 检查网络 清理网络资源 Docker Compose网络 Docker 是一种容器化平台,它允许你将应用程序和它们的依赖项打包成一个称为容器的独立单元。Docker 提供了一种轻量级、可移植和自包含的方式来部署应用

    2024年02月05日
    浏览(42)
  • docker全流程使用指南

    注:本部分内容参照自Ubuntu - Docker — 从入门到实践 卸载旧版本 使用脚本自动安装 在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu 系统上可以使用这套脚本安装,另外可以通过 --mirror 选项使用国内源进行安装: 执行这个命令后,脚本就

    2024年02月15日
    浏览(32)
  • docker使用指南&疑难杂症

    1 构建包不成功留下一堆废镜像和容器 none 如何清理? https://blog.csdn.net/catoop/article/details/91908719 2 docker0 ip没了怎么办? 容器stop(不确定是否必须,关上保险),重启docker,再start容器 问题:Dockerfile构建镜像,旧文件一点没动,结果执行到apt各种包会报找不到。returned a non-

    2024年01月19日
    浏览(51)
  • 【正点原子STM32连载】第三十三章 单通道ADC采集实验 摘自【正点原子】APM32E103最小系统板使用指南

    1)实验平台:正点原子APM32E103最小系统板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban 本章介绍使用APM32E103模数转换器(ADC)进行带通道的电压采集。通过本章的学习,读者将学习到单通

    2024年02月19日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包