jetlinks之Operator(五)_deviceoperator-程序员宅基地

技术标签: # 物联网  java  

jetlinks之Operator

提示:本文主要分析jetlinks.core包中的defaults包的一些默认实现
部分协议请参加上文 jetlinks之Codec&config


前言

core包中默认实现中主要定义了
DefaultDeviceOperatorDefaultDeviceProductOperator
即设备操作和产品操作

一、设备操作定义

DeviceOperator:设备操作接口定义
DefaultDeviceOperator:默认设备操作实现
在这里插入图片描述

如上可以发现该接口主要继承
Thing(物实例)、StorageConfigurable(可配置存储接口)
物模型主要是对属性,功能,事件进行一些定义,StorageConfigurable支持配置化存储

DefaultDeviceOperator 主要包含以下属性

类型 字段 描述 备注
DeviceStateChecker DEFAULT_STATE_CHECKER 默认状态检查
AtomicReferenceFieldUpdater METADATA_UPDATER 设备元数据更新
AtomicReferenceFieldUpdater METADATA_TIME_UPDATER 产品ID及版本号
ConfigKey lastMetadataTimeKey 最后更新物模型的时间
List productIdAndVersionKey 产品ID及版本号
String id 设备操作id
DeviceOperationBroker handler 设备操作代理
DeviceRegistry registry 设备统一注册
DeviceMessageSender messageSender 设备消息发送器
ConfigStorage storageMono 设备配置存储
ProtocolSupport protocolSupportMono 设备协议
DeviceMetadata metadataMono 设备元数据
DeviceStateChecker stateChecker 设备状态检查器
DeviceProductOperator parent 设备产品操作
DeviceMetadata metadataCache 设备元数据缓存
long lastMetadataTime 设备元数据更新时间
ThingRpcSupportChain rpcChain rpc

二、产品操作定义

DeviceProductOperator 设备产品型号操作
DefaultDeviceProductOperator 设备产品型号操作默认实现
在这里插入图片描述
DeviceProductOperator 设备产品操作主要继承了 ThingTemplate,StorageConfigurable接口。与DefaultDeviceOperator 差异主要是在Thing(物实例接口)。
Thing(物实例定义)会使用ThingTemplate(物模板定义)

/**
 * 获取当前物使用的模版
 *
 * @return 当前物使用的模版
 */
Mono<? extends ThingTemplate> getTemplate();

物实例接口定义元数据的获取和修改,配置获取,RPC操作等。
后续再找时间对此处进行细品…

类型 字段 描述 备注
String id 操作ID
DeviceMetadata metadata 设备物模型定义
Mono<ConfigStorage> storageMono 配置定义
Supplier<Flux<DeviceOperator>> devicesSupplier lastMetadataTimeKey 最后更新物模型的时间
long lstMetadataChangeTime 模型最新更新时间
ConfigKey<Long> lastMetadataTimeKey 模型最新更新时间key
Mono<DeviceMetadata> inLocalMetadata
Mono<DeviceMetadata> metadataMono 元数据
Mono<ProtocolSupport> protocolSupportMono 协议

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了DeviceOperator和DeviceProductOperator 的一些相关知识,后续看时间会增补Thing及ThingTemplate的知识

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/q672746525/article/details/123242041

智能推荐

js setTimeout setInterval 第三个参数说明及应用案例_setinterval第三个参数-程序员宅基地

文章浏览阅读511次。定时器语法setInterval(code,millisec,lang)setTimeout(code,millisec,lang)code :必需。要调用的函数或要执行的代码串。millisec : 必须。周期性执行或调用 code 之间的时间间隔,以毫秒计。lang : 可选。 JScript | VBScript | JavaScript第三个参数说明第三个参数以及以后的参数是:附加参数,一旦定时器到期,它们会作为参数传递给function 或执行字符串(setTimeout参数中的_setinterval第三个参数

一步一步教你打造一个Numeric TextBox控件-程序员宅基地

文章浏览阅读145次。1、创建一个新的类库目,将它命名为MyCustomControls2、 添加System.Web引用:3、 Visual Studio 将会自动添加一个名字为"Class1.cs"的文件。请将它删除,然后添加NumericTextBox.cs 和NumericTextBoxExtention.cs两个文件类。另外创建一个名字为"Resources" 新的文件夹..._numerictextbox属于哪个命名空间

hdu 1429 胜利大逃亡(续)(bfs+状态压缩)-程序员宅基地

文章浏览阅读86次。Problem DescriptionIgnatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)……这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢的某些地方安装了带锁的门,钥匙藏在地牢另外的某些地方。刚开始Ignatius被关在(sx,sy)的位置,离开地牢的门在(ex,ey)的位置。Ignatius每分钟只能从一个坐标走到相邻四个坐标...

C#中使用try...catch...是否会影响程序性能_csharp try catch性能-程序员宅基地

文章浏览阅读1.6w次,点赞9次,收藏19次。老实说,我这人很少有打破沙锅问到底的精神。不过昨晚听一技术人员跟他的项目经理说要在程序中使用try...catch...时,只见这项目经理邹邹眉说了句“try...catch...性能多差,尽量不要用。”这句话不知道触动了我哪条神经,让这突然产生了相当好奇的心里。于是呼我就百度一下,找找相关的文章。这么一找,才知道,原来网上讨论这个的还挺多的,而且各执一词,各有各的道理。 找到的一_csharp try catch性能

POI合并单元格注意事项_poi addmergedregion-程序员宅基地

文章浏览阅读1.2k次。//注意再合并单元格的时候,sheet1.addMergedRegion(new CellRangeAddress(rowIndex, rowIndex + surveySearches.size()-1, 3, 3));//如果不能确定rowIndex 和 rowIndex + surveySearches.size()-1 是否相同,那么需要以下方法// 合并单元格 priva..._poi addmergedregion

如何从零开始搭建一套web集成测试环境_如何搭建web测试环境-程序员宅基地

文章浏览阅读1.3k次。如何从零开始搭建一套web集成测试环境 2017年03月03日 16:19:48 阅读数:56443 测试环境的搭建是一名合格QA必须具备的技能。下面,结合CI和CD两种不同软件生产实践,总结一下如何从零开始部署一套web集成测试环境。1.服务器准备。根据项目和使用的中间件的规模,准备好一个或多个资源配置能够满足要求的服务器,一般选用linux下 centos的某个发行版..._如何搭建web测试环境

随便推点

Linux文件处理命令-程序员宅基地

文章浏览阅读63次。Linux中大概3000条命令,需要掌握和熟悉六七十条命令,每个命令要至少敲3遍ls -alha显示所有文件包括隐藏文件h显示人性化的file sizel显示文件的详细信息-rw-r--r--第一位 - 表示文件类型- 表示文件d 表示目录l 表示软连接文件后面的9位,每三位为一个整体rw- u所有者 可读可..._linux 份文件处理

hdu 4751 Divide Groups(dfs染色 或 2-sat)-程序员宅基地

文章浏览阅读82次。Problem DescriptionThis year is the 60th anniversary of NJUST, and to make the celebration more colorful, Tom200 is going to invite distinguished alumnus back to visit and take photos. Afte...

Qt中RapidJSON的使用案例(从网页请求数据并解析json)_rapidjson qt-程序员宅基地

文章浏览阅读1k次。1在与网页交互数据的时候,经常用到json.2头文件#include "rapidjson/rapidjson.h"#include "rapidjson/document.h"#include "rapidjson/reader.h"#include "rapidjson/writer.h"#include "rapidjson/stringbuffer.h"3实际的函数一,写URL。字符串的形势,192.168…按照格式二,new一个NETworkcell三,请求数据4实际的解析_rapidjson qt

Vue.js:webpack打包_vue webpack 打包js-sdk-程序员宅基地

文章浏览阅读77次。一、webpackwebpack是一款JavaScrpt应用静态模块打包工具。功能:模块 打包二、安装安装webpack首先需要安装Node.js Node.js自带软件包管理工具npm 全局安装webpackcmd窗口或IDE terminal 运行如下命令安装npm install [email protected] -g # 这里指定了版本3.6.0 因为vue cli依赖该版本webpack --version #安装成功,查看版本号..._vue webpack 打包js-sdk

JavaWeb-servlet、cookie和session_cookie和servlet的区别-程序员宅基地

文章浏览阅读232次。一、Servlet技术1.什么是Servlet(1)、Servlet 是JavaEE规范之一。 规范就是接口(2)、Servlet 就JavaWeb三大组件之一。 三大组件分别是: Servlet 程序、Filter 过滤器、Listener 监听器。(3)、Servlet 是运行在服务器上的一个java 小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。2.手动实现Servlet程序(1)、编写一个类去实现Servlet接口(2)、实现service方法,处理请求,并响应数据pa_cookie和servlet的区别

安装Java (JDK16)_java16.02安装-程序员宅基地

文章浏览阅读285次。本文将在win10的环境下安装jdk16、配置环境变量。1.下载JDK(1)打开官网下载最新的JDK(Java SE Development Kit, JDK)(2)选择对应的版本(3)双击下载的exe进行安装在安装过程中可以改变安装位置也可以不改变,但是安装的位置一定要记住!!!!这关系到后面设置环境变量。然后安装过程中其它的选项就next~(4)配置环境变量一共需要配置3个系统环境变量。此电脑–属性–高级系统设置–环境变量—新建系统变量一定注意是系统变量!!!!别搞错了!!!!_java16.02安装