jetlinks之Thing(六)
jetlinks之Thing
提示:项目原因,有幸结识一50多岁的老博士,觉得这位老博士是个技术控,挺佩服的,不知道自己达知命之年时会在做什么,或许也是在做技术吧!之前聊过一些低代码,今天聊到物联网平台,谈了一些物联网的看法,博士说物联网平台的关键技术是"规则引擎",好吧,其实自己最早学习jetlinks的初衷是想学习下“物模型”… 路漫漫其修远兮!
文章目录
- jetlinks之Thing
- 前言
- 一、物实例
- 1.实例简介
- 2.属性
- 3.构造器
- 二、物模板
- 1.属性
- 2.构造器
前言
本章主要介绍“物实例”相关代码及实现。
一、物实例
1.实例简介
该包是jetlink-core包下org.jetlinks.core.defaults 包下代码
提示:如上StorageConfigurable 已经不是第一次遇见了,可配置存储
Thing 物实例接口,可通过此接口获取物的物模型以及相关配置信息.。
DefaultThing 物实例默认实现。
属性解析:
ThingType 物类型定义,通常使用枚举实现此接口
ThingMetadata 物模型定义 包含 事件 属性 功能 标签定义
ThingTemplate 物模版,统一定义物模型等信息
2.属性
类型 | 字段 | 描述 | 备注 |
---|---|---|---|
String | id | 主键 | |
ThingType | type | 设备元数据更新 | |
Mono<ConfigStorage> | storageMono | 配置存储器 | |
Mono<ThingMetadata> | metadataMono | 物模型定义 | |
Mono<ThingTemplate> | templateMono | 物模板定义 | |
long | lastMetadataTime | 模型最后更新时间 | |
ThingMetadata | metadataCache | 物模型缓存 | |
ThingMetadataCodec | metadataCodec | 物模型编码器 | |
Function<Thing,ThingRpcSupport> | rpcFactory | rpc创建工厂 |
3.构造器
public DefaultThing(ThingType thingType,String id,Mono<ConfigStorage> storageSupplier,ThingMetadataCodec metadataCodec,ThingsRegistry registry,Function<Thing,ThingRpcSupport> rpcFactory) {this.id = id;this.type = thingType;this.storageMono = storageSupplier;this.metadataCodec = metadataCodec;this.rpcFactory=rpcFactory;this.templateMono = this.getSelfConfig(ThingsConfigKeys.templateId).flatMap(templateId -> registry.getTemplate(this.type, templateId));this.metadataMono = this//获取最后更新物模型的时间.getSelfConfig(lastMetadataTimeKey.getKey()).map(Value::asLong).flatMap(i -> {//如果时间一致,则直接返回物模型缓存.if (i.equals(lastMetadataTime) && metadataCache != null) {return Mono.just(metadataCache);}lastMetadataTime = i;//加载真实的物模型return this.getSelfConfig(metadata).flatMap(metadataCodec::decode).doOnNext(metadata -> metadataCache = metadata);})//获取物模版的物模型.switchIfEmpty(Mono.defer(() -> getTemplate().flatMap(ThingTemplate::getMetadata)));}
代码如下(示例): mark一下
二、物模板
物模版,统一定义物模型等信息
1.属性
代码如下(示例):
类型 | 字段 | 描述 | 备注 |
---|---|---|---|
String | id | 主键 | |
Mono<ConfigStorage> | storageMono | 设备元数据更新 | |
Mono<ThingMetadata> | metadataMono | 物模型定义 | |
long | lastMetadataTime | 物模板定义 | |
ThingMetadata | metadataCache | 物模型缓存 | |
ThingMetadataCodec | metadataCodec | 物模型编码器 |
2.构造器
代码如下(示例):
public DefaultThingTemplate(ThingType thingType,String id,ConfigStorageManager storageManager,ThingMetadataCodec metadataCodec) {this.id = id;this.storageMono = storageManager.getStorage("thing-template:" + thingType.getId() + ":" + id);this.metadataCodec = metadataCodec;this.metadataMono = this//获取最后更新物模型的时间.getConfig(ThingsConfigKeys.lastMetadataTimeKey).flatMap(i -> {//如果时间一致,则直接返回物模型缓存.if (i.equals(lastMetadataTime) && metadataCache != null) {return Mono.just(metadataCache);}lastMetadataTime = i;//加载真实的物模型return this.getConfig(metadata).flatMap(metadataCodec::decode).doOnNext(metadata -> metadataCache = metadata);});}
jetlinks之Thing(六)相关推荐
- WebStorm前端启动JetLinks 物联网基础平台(2.x)
目录 一.环境准备 二.下载源码 三.安装依赖 四.修改配置 五.启动项目 六.访问项目 一.环境准备 1.降级node版本为12.22.0 使用node版本管理器gnvm_苍穹之跃的博客-CSDN ...
- 国内|开源|物联网平台|Jetlinks物理网平台自定义协议开发
自定义协议开发 技术交流群:2021514 环境准备和开发工具 JDK:1.8+ MAVEN:3.1+ (注意不要使用全局仓库配置,可能导致依赖无法下载) 开发工具:idea 第一步 通过idea创建 ...
- Docker入门六部曲——Swarm
原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...
- Docker入门六部曲——Stack
原文链接:http://www.dubby.cn/detail.html?id=8739 准备知识 安装Docker(版本最低1.13). 阅读完Docker入门六部曲--Swarm,并且完成其中介绍 ...
- Docker入门六部曲——服务
原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...
- 受用一生的高效 PyCharm 使用技巧(六)
http://www.sohu.com/a/329854019_654419 大家好,今天我又来给大家更新 PyCharm 的使用技巧. 从第一篇开始,一直到本篇,一共更新了6篇文章,每篇 5 个小技 ...
- 操作系统学习笔记 第六章:设备管理(王道考研)
本文章基于网课: 2019 王道考研 操作系统 考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com) 需要相关电子书的可以关注我的公众号BaretH后台回复操作系统 第一章:操作系 ...
- 王道考研 计算机网络笔记 第六章:应用层
本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 第一章:王道考研 计算机网络笔记 第一章:概述&计算机网络体系结构 第二章:王道考研 计算机网络笔记 第 ...
- TVM性能评估分析(六)
TVM性能评估分析(六) Figure 1. The workflow of development PC, compile, deploy to the device, test, then mod ...
最新文章
- 技术一般,却被破格提拔!肯定有黑幕......
- 计算机的云是什么意思_高考倒计时!现在学什么专业好?答案是……
- iptv直播_全球IPTV高清直播网络电视+4K频道
- silverlight 获取文本框焦点
- 互利网上数字金融典型场景: 消费金融
- 剑指offer01--二叉树的最近公共祖先
- WCF Endpoint分类
- 瑞友客户端无法建立跟远程计算机的连接,瑞友天翼终端错误信息的原因以及解决方法大全.doc...
- AngularJS 的常用特性(四)
- Linux 磁带机型号,请教一下,爱华的磁带机型号大全,里面的字母什么意思?
- 计算机教室布线施工方案,最新计算机教室施工方案.docx
- 红帽Linux多点触摸,Linux系统实现多点触摸
- 这一年很幸运,平平淡淡的|2021 年度总结
- Turtle库画小猫咪
- Swiper实现手风琴式的图片展示
- html伸缩布局,HTML-CSS:伸缩布局
- 开年第一炸:黑马程序员1月就业报告新鲜出炉!
- python外星人入侵游戏打包
- Revit 2022安装教程(附详细安装步骤+激活教程)
- 芯科EFR32BG22芯片,详细分析与nRF52805和CC2640R2F区别
热门文章
- 柯美服务器处理文件慢,处理打印机在打印文件时打印速度过慢的原因 看完你就知道了...
- 概率论与数理统计基础概念整理
- 【Hadoop学习笔记】大数据框架原理及主要工具概述
- AIDA64内存与缓存测试过了算稳定吗_【AMD R52600X】装机实录、基本特性介绍及性能测试...
- 计算机水平cet2是什么等级,英语cet2等级考试试题
- 关于机械硬盘坏道(超时无响应、低速区域、掉盘)的修复尝试
- 公开信息查询的一些方法,查征信,查婚姻状况,查询公开个人信息
- java scene_JavaFX中场景(Scene)的意义是什么?
- 英文论文的proposal怎么写?
- python除数为0报错_Python3报错-Python入门到精通