最新要闻
- 【环球快播报】破纪录!西班牙女子洞穴生活500多天 回地面称“不想出来”
- 世界热消息:被海鸥圈粉 沈义人:感觉要购入第一台比亚迪了
- 每日精选:成龙被观众当场要求退票上热搜 电影《龙马精神》回应:起诉造谣账号
- 最新资讯:几十秒看完10分钟的视频 就靠这AI输入法:日语也不怕
- 快讯:唯一全面实现国产化!低端低价的1LCD爆发:超DLP成智能投影仪主流
- 全球关注:电影《龙马精神》剧组发声明辟谣“退票”事件
- 天天看热讯:5万元小车谁加速快?长安糯玉米零百22秒 秒杀宏光MINI EV
- 每日速递:诺奖得主杨振宁倡议 清华推出攀登计划:培养未来物理大师
- 全球新动态:都是4799元!你买AMD上代旗舰卡6950XT、还是老黄的RTX 4070
- 【全球快播报】无处不在的激光可能会毁掉你的双眼!
- 世界今头条!张艺谋去看LPL季后赛决赛了:此前宣布筹拍网剧《英雄联盟》
- 送父亲的礼物排行榜
- 全球观察:Steam最受欢迎的软件Wallpaper Engine疑似中病毒 网友称游戏库被盗
- 环球热头条丨优质长绒棉 亲肤透气:VXGY精梳棉五分裤49元(减120元)
- 当前资讯!ChatGPT带火AI芯片!NVIDIA顶级显卡售价超4万美元
- 视讯!张兰称自己不是网红:网红是一时的 我是一世的
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
世界快看点丨如何防止设备被重复控制
1. 引言
在一个物联网的系统中,主要有三部分组成:云端、WiFi
、电控。当用户在APP
上控制设备时,其控制下发链路是:云端>>WIFI
>> 电控。当电控收到控制指令后,执行设备控制,控制成功后,返回结果给云端,并将结果展示在APP
上,其状态上报链路是: 电控 >> WIFI
>> 云端。
在云端和电控交互之间存在着三种指令,其分别是:
- 控制指令:属于云端发下给电控
- 控制返回:电控控制后,将设备的状态返回给云端
- 定时上报:电控端会定时向云端上报自身的状态
在做设备之间联动的时候,云端只解析上报,除了存在定时上报外,当控制指令下发后,也会触发状态上报(其协议头和定时上报是同一个),因此云端只会关注上报。
(资料图)
但是存在一个问题,云端只解析同一种协议,如何区分是控制的上报还是定时的上报的?
2. 场景联动实例
举个相关的例子,在冬天的时候,空调长时间开制热模式会导致空气湿度下降,可能会导致用户皮肤脱皮、流鼻血等情况发生。这时候就可以创建一个空调和加湿器联动的场景,当空调设置为制热模式的时候,就帮助打开用户家里的加湿器,帮助房屋保湿。
其控制逻辑是:当用户控制空调到制热模式时,APP
端通过云端下发指令到电控,电控再去控制空调的模式,当模式改变后,会触发电控端上报,此时就会上报空调此时的状态到云端。
当空调设备的状态上报到云端后,需进行逻辑判断,如果空调状态为:开机、制热模式,云端就去控制和空调绑定的加湿器,这就实现了空调联动加湿器。
在引言中提到,设备的状态存在定时主动上报,按照之前的逻辑,会再次控制加湿器开机。但这并不合理,因为该上报的状态并不是控制产生的,因此云端需进行过滤,以此来解决重复控制设备。
3. 如何解决重复控制设备
在这部分使用Redis
搭建一个去重逻辑:
- 缓存第一次状态,设置过期时间
- 判断之后上报状态与缓存中是否一致
- 如果一致,直接返回;
- 如果不一致,修改缓存,控制设备。
接下来就以代码展示一下,去重逻辑。
3.1 定义一个状态状态的BO
@Datapublic class StatusPushBO { private String applianceId; private String power; private String mode;}
如上所示,BO
中包含设备id
、电源、模式,用于接收电控上报的状态。
3.2 Redis实现缓存
在这个demo
中依旧使用SpringBoot
作为基础框架。
- 引入
Redis
依赖
org.springframework.boot spring-boot-starter-data-redis
- 创建一个
RedisClient
public class RedisClient {private RedisTemplate redisTemplate;private ValueOperations valueOperation; public RedisClient(RedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; this.valueOperations = redisTemplate.opsForValue(); } // 通过key 获取redis中value public T get(String key) { return this.redisTemplate.opsForValue().get(key); } // 判断redis key是否存在 public Boolean exists(String key) { return redisTemplate.hasKey(key); } // 设置过期时间 public void setExpire(String key, long timeout, TimeUnit unit) { redisTemplate.expire(key, timeout, unit); } // 将数据放入redis中,并且设置过期时间 public void setex(String key, Object value, Long timeout, TimeUnit timeUnit) { redisTemplate.opsForValue().set(key, value, timeout, timeUnit); }}
如上建立了一个RedisClient
类,其中包含四个方法:get
、exists
、 setExpire
, setex
。
- 使用
redis
缓存状态,防止相同状态控制设备。
@Servicepublic class DemoLinkageService{ // 注入redisClient @Autowired RedisClient redisClient; // 联动加湿器, linkage: 联动 public void linkageHumidier(StatusPushBO statusPushBO){ String applianceId = statusPushBO.getApplianceId(); String redisKey = "linkage" + applianceId; // 判断该key是否已经存在redis中 if (redisClient.exists(redisKey)) { // 存在就取值 StatusPushBO statusBOByRedis = redisClient.get(redisKey); if (statusPushBO.equals(statusBOByRedis)) { // 判断上报的状态和缓存中的状态一致,就重新更新redisKey的时间。 redisClient.setExpire(redisKey, 80L, TimeUnit.MINUTES); // 直接return return; } } // 将首次状态放入redis进行缓存 redisClient.setex(redisKey, StatusPushBO, 80L, TimeUnit.MINUTES); // TODO 控制设备 }}
如上,如果设备第一次上报状态,此时Redis
里面是没有该设备的状态,就跳过状态相等判断逻辑,之后将这次的状态添加进Redis
缓存一段时间;如果之后的状态没有变换,来自于设备的主动上报,此时就会进入状态是否相同判断逻辑中,并且状态相等,那就重新更新过期时间,并直接返回,不进行后续逻辑处理。
结语
如上使用Redis
中间件,避免了相同的状态,重复控制设备。
关键词:
视焦点讯!如何快速而优雅的解决问题(提问的智慧简略版)
天天讯息:cin与CTRL+z的问题
世界快看点丨如何防止设备被重复控制
【环球快播报】破纪录!西班牙女子洞穴生活500多天 回地面称“不想出来”
世界热消息:被海鸥圈粉 沈义人:感觉要购入第一台比亚迪了
每日精选:成龙被观众当场要求退票上热搜 电影《龙马精神》回应:起诉造谣账号
最新资讯:几十秒看完10分钟的视频 就靠这AI输入法:日语也不怕
快讯:唯一全面实现国产化!低端低价的1LCD爆发:超DLP成智能投影仪主流
当前热议!6错误代码C3848.
全球关注:电影《龙马精神》剧组发声明辟谣“退票”事件
天天看热讯:5万元小车谁加速快?长安糯玉米零百22秒 秒杀宏光MINI EV
每日速递:诺奖得主杨振宁倡议 清华推出攀登计划:培养未来物理大师
全球新动态:都是4799元!你买AMD上代旗舰卡6950XT、还是老黄的RTX 4070
【全球快播报】无处不在的激光可能会毁掉你的双眼!
世界今头条!张艺谋去看LPL季后赛决赛了:此前宣布筹拍网剧《英雄联盟》
送父亲的礼物排行榜
全球观察:Steam最受欢迎的软件Wallpaper Engine疑似中病毒 网友称游戏库被盗
环球热头条丨优质长绒棉 亲肤透气:VXGY精梳棉五分裤49元(减120元)
当前资讯!ChatGPT带火AI芯片!NVIDIA顶级显卡售价超4万美元
视讯!张兰称自己不是网红:网红是一时的 我是一世的
即时:小s啥情况?看开了
全球新消息丨ChatGPT人工智能热潮之下,NCSI功能OCP网卡助力数据中心发展
python进程池中的回调函数
疑似回应“比500万SUV更好” 李想:持续刷存在感、因为心力不强大
热点!雷军:小米13 Ultra小米手机史上最强信号体验
泼水节变味?女生颜值越高被泼越狠:网友喊话虽是祝福也请适量
观点:meterpreter后渗透攻击
焦点简讯:发展氢能应符合各国情况和市场需求——访德国能源专家科马尔尼茨基教授
天天热点评!五一假期淄博再成顶流,“北京南-淄博”火车票开售1分钟售罄
全球首搭帝瓦雷音响!比亚迪腾势N7猎跑SUV将开售:或35万起
每日速讯:《圣斗士星矢》真人电影抢先看:星矢帅呆了
世界看热讯:Apifox手动和自动两种更新token方式(推荐自动)
每日观察!刚需速囤!中石化出品竹浆抽纸狂促:券后每包只需1元
环球观点:向木星前进!欧洲木星探测器JUICE发射成功:旅途长达八年
天天速读:薛之谦上热搜 巡演唱到一半被伴舞撞飞了:观众忍俊不禁
第08章_索引的创建与设计原则
【大国基理】党建引领,创造基层治理“天津范式”
天天看点:【财经分析】REITs拟纳入深港通 大湾区财富管理市场开放步伐加速
移动散热史革新!小米环形冷泵揭秘:热导率三倍于传统VC
仰望U8平替来了!原地掉头、100%爬坡度:奇瑞捷途出品
环球聚焦:年度“奇幻大片”潍坊风筝节上映 网友:放的是人类想象力
销量又该暴涨 大神绘制新款特斯拉Model 3:有豪车味了
天天简讯:历史一刻!贾跃亭的FF91量产车正式下线:百公里加速2.3秒 交付时间又“跳票”
环球微资讯!【最新】上海修订中小学生欺凌防治手册:欺凌行为并非普通打闹
天天热资讯!使用自签名证书,新手必然会遇到的问题
焦点消息!小米13 Ultra搭载澎湃P2/G1芯片:支持应急模式 1%电量续航60分钟
马里奥游戏改编电影史上最强
最新资讯:Hololens2 开发(仿真器)配置
智能快递车揽收功能规模化上线 京东小哥“好帮手”再升级
多省都要封杀!北京定义老头乐危害公共安全 倒逼大爷买新能源车、考驾照
环球热消息:首款下载量超10亿手游!《愤怒的小鸟》卖了:世嘉出价近70亿收购
播报:分布式事务--Seata
每日速讯:【环球财经】美联储官员发表鹰派言论 美元指数14日显著上涨
华为首次下放卫星通信!nova 11系列上架预约:下周一发布
【焦点热闻】美方以涉俄为由将多家中国企业列入清单实施制裁,商务部回应
【播资讯】史上最大屏!苹果15英寸MacBook Air确认搭载M2芯片:6月发布
医院回应护士上班戴美甲给患者扎针:已让其卸掉!专业人士科普
地产网红称没几千万怎么叫人才引热议:网友称价值观扭曲 谁钱多谁就是人才?
万元买手机很难吗?中美日韩等1月销量TOP 5:iPhone完爆安卓
全球简讯:学系统集成项目管理工程师(中项)系列06a_信息系统安全管理(上)
世界热推荐:国内油价17日料上调 部分地区95号汽油或重返“8元时代”
世界最资讯丨CPU买散片还是盒装 DIY老鸟:怎么选都是错!
当前视讯!沙特俄罗斯等减产后!国内新一轮油价调整将至 或重返8元时代
Java 在线编程工具上线(直接编译运行Java代码)
全球观天下!民声丨合理优化社区规模 提升社会服务质量
环球热门:诚意十足!国产科幻FPS《边境》制作组24小时直播修BUG
环球观速讯丨00后网红马若松遇车祸身亡监控曝光:面包车双实线掉头致追尾
当前速递!性能残血还带风扇 海盗船PCIe 5.0硬盘开卖:性价比竟然很高
世界今日讯!诺基亚一个暗箱操作 给华为喂了口九转大肠
天天快报!小米13 Ultra全曝光 核心配置已无悬念
苹果手机无法下载app什么原因_苹果手机无法下载app是什么原因
天天滚动:4.14训练解题报告
即时:Java + Jpcap实现监控 IP包流量
微头条丨MAUI之Android记录设备号+动态授权
当前焦点!RTX 4070显卡首发驱动531.61发布:4款游戏优化、修复黑屏崩溃
今日观点!南京动物园回应网红猴被欺负困在水中:没有霸凌 会游泳
欧洲探测器启程奔赴木星
【天天新要闻】内部类
当前热讯:c++打卡第五天
ChatGPT如何做投资?
全球今热点:docker_day04:Dockerfile docker私有仓库 dockercompose介绍 dockercompose部署 一件部署路飞项
全球关注:【金融街发布】证监会:取消期货从业资格管理 强化期货从业人员的事中事后监管
世界速讯:20万元买特斯拉?陶琳甩出5张图:中国价格全球最低
天天速看:高通垄断全球基带!中国紫光展锐排第4:2G/3G/4G/5G都很难
环球热议:仙履奇缘3中文版央视网 仙履奇缘3国语版免费
世界速讯:day01-项目介绍与环境搭建
全球快资讯:美光被审查 国产存储芯片崛起的机会来了?
1L体积塞进电源!联想推出小新mini主机:性能超越M2
【时快讯】403秒!中国"人造太阳"又创世界纪录:领先世界5年
环球微动态丨中国巡天太空望远镜明年底发射 将参与近地小行星防御撞击任务
全球讯息:方向导数
高中语文小说情节的作用_高中语文小说的情节题的答题方法 题型
环球快资讯:旺——消费信心加速回归
全球看热讯:可以攒钱了!任天堂Switch 2最快年底发布
实时:14年老牌网站 音悦台官宣回归后向EXO、坤音道歉:欠债一定还
当前快播:《塞尔达传说:王国之泪》实机中黑皮女子是谁:海利亚女神附身塞尔达?
今日精选:亚马逊加入战局:推出大语言模型“泰坦”为客户提供便宜芯片
【全球快播报】藏族女子出嫁带硬核嫁妆走红 价值百万只是一部分:男方根本不用巨额彩礼
今日播报!Nvidia Tensor Core-MMA PTX编程入门
中诚信大湾区信用债券指数系列正式发布