点击蓝字
关注我们
本文为『瀚思彼岸』论坛精华文章,作者为jsfer888大神,在此表示感谢!文章版权归原作者所有,侵权必究。
实现效果
在看电视的时候,门口有人按门铃,摄像头实时画面弹窗推送到电视,以画中画的形式弹出;
使用安卓平板中控,门口有人按门铃,摄像头实时画面以浮窗的形式推送到平板。
具体样式如图所示:
前置要求
摄像头需要接入HA,并且成功安装WebRTC插件。
推送到电视
要求是安卓电视,或者安卓电视盒子,电视上安装下方附件中的pipup.apk软件,然后通过adb连接电视运行ADB命令:adb shell appops set nl.rogro82.pipup SYSTEM_ALERT_WINDOW allow 这串命令主要是让pipup这个APP能够显示在其他应用上层(切记一定要赋予权限);
电视上打开刚刚安装的APP,应该会显示服务已运行,意思是在pipup服务在电视的7979端口运行;
在HA的配置文件中添加一行:rest_command: !include rest_commands.yaml,然后再HA的根目录下新建rest_commands.yaml文件;
将下面的代码粘贴到rest_commands.yaml文件中,记得修改其中的IP地址为你电视的IP;
改完配置文件以后记得重启HA,然后到开发者工具的服务里应该能够找到rest_command.pipup_image_on_tv 和 rest_command.pipup_url_on_tv 这2个服务,其中rest_command.pipup_image_on_tv这个服务是可以推送图片到电视,rest_command.pipup_url_on_tv 这个服务是可以推送视频链接到电视;
前置要求里说了要将摄像头接入到HA,而且要使用WebRTC插件其实不是必须(因为我是这么做的),接下来写一个脚本来触发推送:
rest_commands.yaml内容:
pipup_image_on_tv:url: http://你电视的IP地址:7979/notifycontent_type: 'application/json'verify_ssl: falsemethod: 'post'timeout: 20payload: >{"duration": {{ duration | default(20) }},"position": {{ position | default(0) }},"title": "{{ title | default('') }}","titleColor": "{{ titleColor | default('#50BFF2') }}","titleSize": {{ titleSize | default(10) }},"message": "{{ message }}","messageColor": "{{ messageColor | default('#fbf5f5') }}","messageSize": {{ messageSize | default(14) }},"backgroundColor": "{{ backgroundColor | default('#0f0e0e') }}","media": {"image": {"uri": "{{ url }}","width": {{ width | default(640) }}}}}pipup_url_on_tv:url: http://你电视的IP地址:7979/notifycontent_type: 'application/json'verify_ssl: falsemethod: 'post'timeout: 20payload: >{"duration": {{ duration | default(20) }},"position": {{ position | default(0) }},"title": "{{ title | default('') }}","titleColor": "{{ titleColor | default('#50BFF2') }}","titleSize": {{ titleSize | default(10) }},"message": "{{ message }}","messageColor": "{{ messageColor | default('#fbf5f5') }}","messageSize": {{ messageSize | default(14) }},"backgroundColor": "{{ backgroundColor | default('#0f0e0e') }}","media": {"web": {"uri": "{{ url }}","width": {{ width | default(640) }},"height": {{ height | default(480) }}}}}
alias: 推送到电视mode: singlevariables:link_id: '{% for _ in range(40) %}{{ range(10)|random }}{% endfor %}'sequence:- service: webrtc.create_linkdata:link_id: '{{ link_id }}'entity: 你的摄像头open_limit: 1time_to_live: 60- service: rest_command.pipup_url_on_tvdata:title: 标题message: 消息width: 640height: 480url: 你HA的地址带:8123/webrtc/embed?url={{ link_id }}&webrtc=false
这个脚本的意思是2步,第一步是使用WebRTC插件的webrtc.create_link服务建立一个视频链接;第二步是使用rest_command.pipup_url_on_tv这个服务将视频链接推送到电视上。具体脚本设置如下图所示:
请点击阅读原文到论坛下载APP(pipup.zip)。
推送到安卓平板
平板必须开启无线ADB,并且在HA里通过Android TV集成接入;
平板上安装float悬浮浏览器,并将float悬浮浏览器设置为系统默认浏览器,并给float浏览器在其他应用上层显示的权限(文件在下方附件);
在HA制作推送到平板的脚本,具体请参考下图,记得修改代码中的参数为你自己的信息;还是分成2步,第一步是通过WebRTC插件的webrtc.create_link服务生成视频链接,第二步是通过Android TV的androidtv.adb_command服务进行adb脚本执行:后续执行脚本,就可以进行推送了。
service: webrtc.create_linkdata:link_id: "{{ link_id }}"entity: 你的摄像头实体open_limit: 1time_to_live: 60
service: androidtv.adb_commanddata:command: >-am start -a android.intent.action.VIEW -d'http://你的HA链接:8123/webrtc/embed?url={{ link_id }}&webrtc=false'target:entity_id: 你的平板实体ID
其中的一些参数可以自己根据实际情况调整。
请点击阅读原文到论坛下载Float悬浮浏览器( float.zip)。
好了,接下来就是自动化的流程了,门口有人按门铃,如果正在看电视就推送到电视,如果没有在看电视就推送到中控。大家根据实际需求制作相应的自动化流程。
另外如果不需要视频流的推送,仅需要文字信息的推送则可以使用HA自带的Notifications for Android TV / Fire TV 集成,在电视上或者平板上下载Notifications for Android TV / Fire TV这个APP,并简单设置,在HA的服务中使用notify服务就可以进行文字信息推送,非常方便。
欲了解更多Home Assistant最新玩法和教程,请访问瀚思彼岸论坛(bbs.hassbian.com),同时欢迎关注本公众号:
▼ 请点击“阅读原文”到论坛与作者互动。