其他分享
首页 > 其他分享> > 珍惜生命,远离毒气,就用智能开窗,你值得拥有!

珍惜生命,远离毒气,就用智能开窗,你值得拥有!

作者:互联网

前言

​ 周末闲着无聊,准备搞一个家居安全应用,前面我已经弄了一个自动开窗器和甲醛检测的设备,今天准备弄一个气体与开窗组合的场景应用,甲醛中毒、煤气中毒等案例经常能在日常生活中遇到,而本人也是一个比较爱惜生命(给大家免费翻译一下:就是怕死)的人,所以就打算搞一个在家里自己用,毕竟自己动手,丰衣足食 (~ ̄▽ ̄)~ 。
在这里插入图片描述

设备讲解

这次用到的设备就是之前介绍过的俩个设备:智能开窗甲醛检测设备

1、智能开窗
在这里插入图片描述
2、甲醛检测设备
在这里插入图片描述

应用讲解

在这里插入图片描述

上面就是智能开窗应用的界面了,很漂亮对不对!!!要不要给我扣波666!
在这里插入图片描述
可以看到上面应用中有一个添加设备的按钮,点击按钮可以添加气体设备和开窗设备,应用大致逻辑就是手动滑动窗户会进行开关窗。与此同时,气体超过危险值也会进行自动开窗。目前也就只加了甲醛检测设备,后面的升级版可能会添加更多的气体检测设备,到时候也给大家看看最后的成品。

代码分析

整个应用项目前端用的vue框架,后端用的是javascript,主要依赖于Edgeros上的JSRE运行时;
又到了我给你们长见识的时候了,话不多说,贴!!!┗( ▔, ▔ )┛

	devManager.generateController(devid).then((controller) => {
			const type = getDeviceType(dev);
			if (type && type !== 'window') {
				// 气体
				clearInterval(times[devid]);
				times[devid] = undefined;
				times[devid] = setInterval(() => {
					devManager.sendDeviceInfo(devid, { method: 'get', obj: [type] }).catch(() => {
						console.error(`Failed to get ${type} real-time value.`);
					});
				}, 3000);
			}
			controller.on('message', ({ data }) => {
				// 开窗器需要记录当前位置	
				if (type === 'window') {
					socketIO.emit('message', { devid, data: data.window_percent })
					gas_window_scene.devs = gas_window_scene.devs.map((item) => {
						if (item.devid === devid) {
							return {
								...item,
								settings: {
									window_percent: data['window_percent']
								}
							}
						}
						return item
					})
					updateSceneDB();
				} else {
					socketIO.emit('message', { devid, data: data[type] }); // 气体
					if (GAS_DEFAULT_ALARM_VALUES[type] < data[type]) {
						// 气体超标 找到窗户设备
						const window_dev = gas_window_scene.devs.find((item) => {
							const d = devManager.devMap.get(item.devid);
							if (d && getDeviceType(d) === 'window') {
								return true
							}
							return false
						});
						if (window_dev) {
							devManager.sendDeviceInfo(window_dev.devid, { method: 'set', window: 'right' }).catch(() => {
								console.error(`Failed to open window value.`);
							});
						}
					}
				}
			});
			resolve(controller);
		}).catch(() => {
			reject(`no permission.`);
			emitError(`应用缺少控制${dev.alias}的权限!`)
		})

上面后端代码主要就是用到了之前基于 device 模块封装的设备管理模块来管理终端设备,在甲醛气体检测值超过危险值的时候自动发送命令打开窗户,从而达到一个排除毒气的效果,我这边的话将甲醛危险值设置到了0.02,方便平常时候测试。最终效果还是不错的。前端代码就不贴了,都是基础操作,主要是怕闪瞎各位老板的慧眼。

场景演示

1、手动滑动控制窗户

请添加图片描述

2、甲醛超标开窗

emmm...
纠结了很久,还是决定告诉大家一个沉重的消息!
我这边环境空气太好了,测不了甲醛!不好意思,让大家失望了,hhh(* ̄︶ ̄)
在这里插入图片描述

总结

做了这么多场景,感觉今天这个应用场景在生活中还是相对很有用的,后面的话自己也会将应用和设备弄得更完善一点,打算在自己家里也来装一套。家里需要经常通风或者用燃气的老铁们可以自己搞一套,目前只支持了甲醛检测设备,后面会加上燃气检测和天气检测处理。最后送大家一句话,珍惜生命,远离毒气,就用智能开窗,你值得拥有!!!
差点忘了加项目地址了,今天就放在最后好了,测试项目地址,随便伸手吧,别客气,绅士们!(就问你们不点赞好意思不!)
在这里插入图片描述

标签:毒气,data,devid,甲醛,window,开窗,珍惜,type
来源: https://www.cnblogs.com/inspiration-desktop/p/15457494.html