智能家居折腾记 篇五:打造手自一体挡位智能风扇(二)

前文再续,书接上一回。

首先跟大家拜个年,祝各位年大吉!

然后给大家道个歉,懒癌发作起来真的是没救的打造手自一体挡位智能风扇(二) 这个“手自一体档位智能风扇”由构思到动手,只用了一个月左右时间,但这篇文章确实是一拖再拖。忙嘛,只是借口,一来的确是老夫懒,二来,家里环境所限,要趴在“桌子前”一两个小时却写这篇东西,也是在有点难为老夫……为何?大家看看照片就知道了

图1图1

没错,就是这么骚,平时只能在这以“高上”床铺为椅子,衣柜顶为桌子,作为唯一的工作台。要半跪在电脑前,屁股垫着座垫一两小时,老夫的老腰和老腿,基本就废了……呵呵呵呵

好了,废话不多说了,自从上次写完硬件方面的制作,总得把事情给结了,这次就跟大家分享一下Domoticz方面的配置,看怎么配合mos板子,实现自动控制风扇。只要大家跟着老夫步伐,相信都能做出来,其实真不难。同样的道理,大家可以脑洞一下,会有更多的玩法的。但各位切记,一定要注意安全,尤其涉及到强电的部分,一定要慎之又慎,毕竟自己安全第一嘛!

好,折腾开始,先循例喊个口号打个鸡血:

生命不息,折腾不止!

如果大家一直是按照老夫前面的路子一直走过来,mos上刷的代码也跟老夫的一样,那么,你的NodeMCU板子其实已经可以接受来自网络POST过来的信息了。格式如下:

http://你的板子IP地址/rpc/fanlvl

POST内容:{'num':pinnumber},其中pinnumber就是你要设置为高电平的pin口

为了实现从Domoticz控制板子的pin口,我们需要自己写一个脚本(因为老夫没研究到Domoticz怎么直接POST消息打造手自一体挡位智能风扇(二) ),该脚本能从命令行参数接收一个数字参数,然后发送post请求,将接收到的数字以post形式传出去给板子;然后从Domoticz根据不同的情形调用这个脚本,从而实现自动控制。

首先,在装了Domoticz的机子上,安装python3,这个步骤请自行百度,没有啥难度。

然后,在Domoticz的安装目录下,找到scripts/python目录,新建一个“setpin.py”文件:

sudo vi setpin.py

里面的内容如下,也可以在 网盘 下载完整代码,提取码:rv05

图2图2

保存退出后,将文件设置为可执行:

sudo chmod +x setpin.py

这里需要留意,Domoticz的用户,老夫这里的用户跟用户组是一个叫“2000”的东西,如下图:

图3图3

如果你用“ls -all”命令看到的,不是与其他文件同一个用户跟用户组,可以用下面的命令来更改文件归属:

sudo chown 2000:2000 setpin.py

上面的命令中的2000就是你需要更改的组别及用户名

接下来,就可以测试脚本是否正确了,在命令行下输入以下命令:

./setpin.py -p 12

此时风扇应该自动打开了1档,那么,恭喜你,已经成功了80%了!

系统返回截图:

图4图4

跟着,我们就要在Domoticz中增加开关,并关联相关的脚本动作,新建一个Dummy设备:

图5图5

然后新建两个个虚拟传感器,名字随便,老夫一个写“风扇档位”,另一个写“风扇定时器”;类型都选择“多段开关”,如下图:

图6图6

然后在“开关”界面,就能看到两个新增的开关,点击“风扇档位”的“编辑”按钮进入编辑界面:

图7图7

里面的设置,按照下图来:

图8图8

从上图可以看到,当执行多段控制时,其实时执行了我们刚刚写的控制脚本,通过不同的参数,实现风扇的档位控制。

接下来,我们需要做一个定时器,风扇总不能整晚吹,否则怎么“智能”呢打造手自一体挡位智能风扇(二) 

在“设置”-“更多选项”-“用户变量”下面,新建一个叫“vFanTimer”的变量,类型选“整形”,如图:

图9图9

图10图10

这个用户变量的值,等于定时器的开关。

然后,再新建一个虚拟传感器,与风扇档位一样,选择“多段开关”类型:

打造手自一体挡位智能风扇(二)

放大看清楚这个开关各个段位的动作设置:

打造手自一体挡位智能风扇(二)

然后,在事件编辑器里面,新建一个dzVents脚本:

图13图13

图14图14

这里需要留意,老夫是更新到最新的Domoticz Beta版的,新建事件的方式跟旧版有点不同,而且用Chrome浏览器显示格式有点问题,用Edge却没问题打造手自一体挡位智能风扇(二) 

代码如下图,不想敲的,直接 传送,提取码:9dcz

图15图15

注意第7、8行,里面的开关名,需要改为各位设置的开关名称,否则联动不了。

稍微解释以下代码,主要是每分钟判断,如果风扇档位不是0,则判断vFanTimer这个用户变量,如果为1,且风扇定时器的档位不为0,则判断vFanTimer变量的上次更新时间,如果上次更新时间距离当前时间已经超过档位设定的值,则关闭风扇,同时关闭vFanTimer开关,以及风扇定时档位复位为0。

最后,新建一个dzVents,叫“FanLevel”的,用来做你想做的智能方案,老夫的是在半夜某个时间点,判断风扇是否运行,以及根据档位进行调节,让风扇慢慢降低风量:

图16图16

这个就没有传送门了,老夫的腰已经僵了,要抓紧时间赶紧写完它,各位自己看图敲吧。

到此,从Domoticz已经可以控制/智能控制你的风扇了,但是有个问题,如果手动按风扇的按钮调节风扇档位,Domoticz上是不能反映当前的档位值的,这时需要在Domoticz上新建一个MQTT的虚拟开关,可以接受MQTT的报文,从而调整各个开关的值:

图18图18

留意红框位置,填写各位自己的MQTT服务器信息。之前在这个系列第一篇里面,就教了大家设置MQTT server,此时就用上了。

而如果你一直按照老夫的步骤走下来,NodeMCU板子上的代码中,其中有一段就是通过MQTT发送当前档位信息给Domoticz的,如下图:

图19图19

需要留意,idx是Domoticz中“风扇档位”对应的值:

图20图20

在MOS系统中,也需要设定相应的MQTT服务器,如下图:

图21图21

好了,到此,手自一体档位的智能风扇就完成了,这里面的硬件软件结合其实很灵活的,各位可以大胆发挥脑洞,做出各种好玩的东西来,此系列暂时也告一段落了,毕竟一下午下来,老夫的老腰已经好像不属于自己的了…………赶紧去找个妹妹给老夫锤锤背打造手自一体挡位智能风扇(二) 





推荐关注:
购物攻略
话题:购物攻略 +关注
智能家居
分类:智能家居 +关注
智能家居折腾记
系列:智能家居折腾记 +关注

提示

鼠标移到标签上方,

尝试关注标签~

评论4

发表评论请 登录
  • 最新
  • 最热
评论举报

请选择举报理由

51 4

关注数量超出限制,请先删除部分内容再尝试

关注数量超出限制,
请先删除部分内容再尝试

登录
注册
用户名/邮箱
密码
验证码
看不清?点击更换
看不清?点击更换 忘记密码?

已收藏
去我的收藏夹 >

已取消收藏
去我的收藏夹 >

小提示