本帖最后由 fanxiong 于 2023-8-23 08:45 编辑
暑假期间,为防止小孩看电视太久,设置了小米电视的儿童模式,但功能太弱鸡了,它允许设置每次观看时长和一天观看总时长,但是在一次观看时间达到上限锁屏后,到解除锁屏只间隔了5分钟,也不能更改间隔时间。间隔五分钟还不是等于没有限制吗?况且还有更坑的,一天总的观看时长用完后,电视锁屏,这时按关机键提示“请解锁后使用该功能”,不看了关机还得输入密码才行,佩服小米电视的脑C设计。 另外,小米电视5开机后,不管有没有播放视频,电视状态都是idle(原来的康佳电视状态有idle、playing、pause),获取的APP名称也始终是桌面,不能精细化管理控制。
吐槽完了,还是自己写一个控制电视的流程得了,还是自己最懂自己的需求。
先介绍一下背景:我是在电视盒子CM211-1上安装的docker版homeassistant,电视是小米电视5,带有小爱功能,所以流程中的TTS是通过电视小爱发出的。
控制逻辑是这样的:当限制功能启用时,检测到电视开机,则TTS语音提醒当前允许观看剩余时间XX分钟(若已用完观看时间则提醒还有XX分钟才能观看);在观看过程中,剩余观看时间为10分钟、5分钟、1分钟以及关机时都会TTS语音提醒;当观看时间用尽时,则返回电视主页,并且30秒后关机;若家长额外允许观看时间,则在倒计时输入框内输入额外允许的时间,则系统会放开限制,直到倒计时结束,清零额外允许时间,并再次限制电视。
新的电视控制流程图
与流程配套的需求有:一个启用限制功能的按钮,用来开启或关闭限制功能;一个 允许观看时间的输入框,用来设置在4个小时内允许观看电视的时间(滚动更新);还有一个 倒计时输入框,用来设置额外的允许观看时间;一个历史记录传感器,记录电视在4个小时内的总观看时间,0.01小时即36秒更新一次。
目前存在的问题:
①由于小米电视没有playing状态,只有开关机状态,因此不能精确判断电视是否在播放,只能认为开机就是在观看,所以数据不一定准确。
②目前流程中电视的控制是通过ADB发送遥控器键码方式实现的,但是电视重启后ADB会自动关闭,影响使用体验。本准备用小爱语音控制,但是今天看到了小米协议控制,待试验成功后再更新流程吧。本条已经解决,使用spec协议控制电视,不惧ADB关机失效。
=======================================================================================================================================================
有朋友问电视当前观看时间是怎么获取的,我是参考论坛前辈的帖子,在configuration.yaml文件中加入了历史记录传感器记录电视观看时间的,内容如下:
sensor:
- platform: history_stats
name: TV_playing_Last_4H
entity_id: media_player.xiaomi_mitv5h1_2c03_play_control
state: "idle"
type: time
end: "{{ now() }}"
duration: "4:00"
|