找回密码
 立即注册
查看: 287|回复: 6

[技术探讨] 突发奇想让米家自动化极客版和haos协同处理同一个任务

[复制链接]

6

主题

35

回帖

191

积分

注册会员

积分
191
金钱
150
HASS币
0
发表于 2025-3-18 18:20:35 | 显示全部楼层 |阅读模式
我平常让小爱音响来进行精简报时报时前来个提示铃声,以前用的小爱技能,通过米家自动化极客版实现,后来装了haos,就用haos的自动化脚本实现,各有优势:小米的稳定,但是因为是用的小爱技能,一天24小时每分钟语音数据都不一样,全部搞定得29个技能(每个技能最多50个回答,24小时*60分钟/50回答=28.8个技能),如果只12小时制得15个技能,所以只好按五分钟一个报时,就只需要三个技能了,所以比如14:27就凑近播报两点二十五,14:28就报两点半,这样稳定是稳定,但是报时精准度就差了点,平常整点报时和上学睡觉报时,一般也都是整数也没太大问题,后来小孩上幼儿园学时钟来着,我就给冰箱上放了个圆片无线开关,设定的按一下就触发小爱音响报时,小孩很喜欢,刚好那段时间刚开始在学习haos,就搞了个haos的实现方案,【【已解决】小爱音箱极简报时加提示音】,可以按每分钟报时了,但是因为我水平比较菜,这个运行的还是不如小米的稳定,另外我之前haos是在群晖虚拟机装的,占用资源等问题,不一定啥时候就把haos关机了,所以两个都想要,但是又各有问题。。。。

最近我换了N100小主机了,资源问题解决了,就把haos挪到n100了,现在是时候考虑好好玩玩了,于是如何兼容小米自动化极客版和haos同时处理这个报时任务,我想实现的如果haos在线正常待机,就从haos来实现小爱的精简报时,如果haos下线了,就从小米自动化极客版来实现报时,前端都还是走米家APP智能化场景。


因为我太多自动化都还在米家app里面,这个报时也是,一时半会不考虑脱离米家app:

1.png 2.png 3.png

目前是这样实现的,设定的报时时间到了,就设置一个中枢虚拟事件【极简报时】,中枢也就是米家极客版接收到了,就执行报时任务:

4.png
当然这是简化版的,实际前边说了,需要三个技能才能覆盖12/24小时:


5.png
那haos这边是怎么实现的,也是检测到有中枢虚拟事件【极简报时传递给ha】发生,就执行报时脚本:【已解决】小爱音箱极简报时加提示音

6.png
如果想把两个实现合并在一起,如果haos在线就走haos这边,如果不在线就走米家极客版这边,但是现有的条件不允许用网络检测等工具,ping、post什么都不好使。。

想来想去,第一主要是haos不太稳定,可能有时候会关机什么的,所以还是默认要走米家极客版这边,所以米家app里面的智能化暂时不动,需要修改米家自动化极客版里面的自动化任务。。。

首先:创建一个全局变量【HAOS_SEEK】,用来记录haos的在线状态:
7.png
初始值0代表haos不在线,1代表在线

然后创建一个自动化来检测haos是否在线:
8.png

9.png
这个部分就是每5分钟就把刚才那个全局变量还原为0,然后发出一个虚拟事件【haos_seek】给到中枢,这个虚拟事件是让中枢接收到之后进行回应:

好了,下边在haos里面建一个自动化,检测到虚拟事件【haos_seek】之后怎么回应:
10.png
这个haos的自动化,条件一每五分钟的第59秒执行一次,条件二是检测到虚拟事件【haos_seek】也执行一次,执行的动作是也发出一个虚拟事件【haos_on】

好了,米家自动化极客版这边需要加一个检测,就是检测到虚拟事件【haos_on】,就把前边那个全局变量设置为1,现在闭环了哈:
11.png

且慢,因为haos时不时要备份升级更新重启啥的,如果刚好前边通知小米极客版haos在线,然后又重启关机了咋办,所以需要再加一个:
12.png
我之前写的haos定时重启或者关机之前发出微信通知的自动化里面,多加一句呗:
13.png

当系统关机或者重启就发出虚拟事件【haos_off】


14.png
当系统开机,同样发出虚拟事件【haos_on】,蓝色部分是前边说的发出微信通知,不在本文范围内

然后回到米家自动化极客版,增加虚拟事件【haos_off】的处理:
15.png

现在haos在线检测就搞定了,每5分钟米家极客版就恢复默认变量值=0,然后发出一个用来等待的虚拟式件【haos_seek】,haos检测到这个事件,就回复一个【haos_on】;
米家检测到【haos_on】,就把全局变量=1,haos这边也是每五分钟发出【haos_on】,如果haos下线前发出【haos_off】,米家检测到就修改变量值=0,同理haos上线了也发出一个【haos_on】,总之做到万无一失呗:

然后来修改米家极客版极简报时的自动化:
16.png
还是之前的,当米家极客版检测到米家app传递过来的虚拟事件之后,先发出个虚拟事件【haos_seek】询问一下haos有没有在线,当然这个询问有没有问题不大,因为之前每五分钟都问一次,然后查看那个全局变量值=1的话,证明haos在线,就发出一个虚拟事件【极简报时传递给ha】,看蒙了往上翻翻哈,如果全局变量值=0的话,就走米家极客版的报时部分。

其实利用这个逻辑,很多操作也可以实现两个系统协同处理。



回复

使用道具 举报

0

主题

16

回帖

406

积分

中级会员

积分
406
金钱
390
HASS币
0
发表于 2025-3-18 18:57:16 | 显示全部楼层
学习,学习!!!
回复

使用道具 举报

0

主题

34

回帖

309

积分

中级会员

积分
309
金钱
275
HASS币
0
发表于 2025-3-18 23:53:01 | 显示全部楼层
666,还能这么玩
回复

使用道具 举报

9

主题

70

回帖

459

积分

中级会员

积分
459
金钱
380
HASS币
0
发表于 2025-3-19 08:21:54 | 显示全部楼层
要报时的时候发个指令问下小爱同学现在几点了,不是可以了吗?HA离线这个不太理解,除非是人为搞离线,我家用黑群晖docker的HA,从来没有挂过
回复

使用道具 举报

14

主题

1526

回帖

4958

积分

论坛元老

积分
4958
金钱
3418
HASS币
0
发表于 2025-3-19 10:19:59 | 显示全部楼层
linyf 发表于 2025-3-19 08:21
要报时的时候发个指令问下小爱同学现在几点了,不是可以了吗?HA离线这个不太理解,除非是人为搞离线,我家 ...

思路牛x,太麻烦了,ha感觉很稳啊,我魔百盒装的,也几百天不掉线
回复

使用道具 举报

14

主题

1526

回帖

4958

积分

论坛元老

积分
4958
金钱
3418
HASS币
0
发表于 2025-3-19 10:21:09 | 显示全部楼层
linyf 发表于 2025-3-19 08:21
要报时的时候发个指令问下小爱同学现在几点了,不是可以了吗?HA离线这个不太理解,除非是人为搞离线,我家 ...

他是报时前先来段音乐
回复

使用道具 举报

1

主题

37

回帖

386

积分

中级会员

积分
386
金钱
348
HASS币
0
发表于 2025-3-19 16:34:59 | 显示全部楼层
这个思路牛逼
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-5-1 09:55 , Processed in 0.952799 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表