本帖最后由 jsfer888 于 2023-3-1 10:45 编辑
实现效果:
1、在看电视的时候,门口有人按门铃,摄像头实时画面弹窗推送到电视,以画中画的形式弹出
2、使用安卓平板中控,门口有人按门铃,摄像头实时画面以浮窗的形式推送到平板
具体样式如图所示:
前置要求:摄像头需要接入HA,并且成功安装WebRTC插件
推送到电视:
1、要求是安卓电视,或者安卓电视盒子,电视上安装下方附件中的pipup.apk软件,然后通过adb连接电视运行ADB命令:adb shell appops set nl.rogro82.pipup SYSTEM_ALERT_WINDOW allow 这串命令主要是让pipup这个app能够显示在其他应用上层(切记一定要赋予权限)
2、电视上打开刚刚安装的app,应该会显示服务已运行<IP地址:7979>,意思是在pipup服务在电视的7979端口运行;
3、在HA的配置文件中添加一行:rest_command: !include rest_commands.yaml,然后再HA的根目录下新建rest_commands.yaml文件;
4、将下面的代码粘贴到rest_commands.yaml文件中,记得修改其中的IP地址为你电视的IP
pipup_image_on_tv:
url: http://你电视的IP地址:7979/notify
content_type: 'application/json'
verify_ssl: false
method: 'post'
timeout: 20
payload: >
{
"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/notify
content_type: 'application/json'
verify_ssl: false
method: 'post'
timeout: 20
payload: >
{
"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) }}
}
}
}
复制代码
5、修改完配置文件以后记得重启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 这个服务是可以推送视频链接到电视;
6、前置要求里说了要将摄像头接入到HA,而且要使用WebRTC插件其实不是必须(因为我是这么做的),接下来写一个脚本来触发推送:
alias: 推送到电视
mode: single
variables:
link_id: '{% for _ in range(40) %}{{ range(10)|random }}{% endfor %}'
sequence:
- service: webrtc.create_link
data:
link_id: '{{ link_id }}'
entity: 你的摄像头
open_limit: 1
time_to_live: 60
- service: rest_command.pipup_url_on_tv
data:
title: 标题
message: 消息
width: 640
height: 480
url: 你HA的地址带:8123/webrtc/embed?url={{ link_id }}&webrtc=false
复制代码
这个脚本的意思是2步,第一步是使用WebRTC插件的webrtc.create_link服务建立一个视频链接,第二步是使用 rest_command.pipup_url_on_tv这个服务将视频链接推送到电视上;具体脚本设置如下图所示:
这里是app下载=====>
pipup.zip
(4.2 MB, 下载次数: 258)
推送到安卓平板: 为什么需要推送到安卓平板,是因为上面的那个pipup软件在我的 盒子上安装了以后无法使用,app无法打开,我家里使用了一个酒店盒子做了floorplan中控,可以很方面看到整个家里的情况,然后还能够通过语音(贾维斯)控制HA的设备,可以接入chatgpt提高智商,可玩性很强,关于这个盒子我也有单独写一个帖子,有兴趣的可以移步查看: 【酒店盒子】给智能音箱接入Chatgpt,对话,画画样样在行
1、平板必须开启无线ADB,并且在HA里通过Android TV集成接入;
2、平板上安装float悬浮浏览器,并将float悬浮浏览器设置为系统默认浏览器,并给float浏览器在其他应用上层显示的权限(文件在下方附件);
3、在HA制作推送到平板的脚本,具体请参考下图,记得修改代码中的参数为你自己的信息;还是分成2步,第一步是通过WebRTC插件的webrtc.create_link服务生成视频链接,第二步是通过Android TV的androidtv.adb_command服务进行adb脚本执行:后续执行脚本,就可以进行推送了;
service: webrtc.create_link
data:
link_id: "{{ link_id }}"
entity: 你的摄像头实体
open_limit: 1
time_to_live: 60
复制代码
service: androidtv.adb_command
data:
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
(1.79 MB, 下载次数: 87)
好了,接下来就是自动化的流程了,门口有人按门铃,如果正在看电视就推送到电视,如果没有在电视就推送到中控等等大家根据实际需求制作相应的自动化流程。
另外如果不需要视频流的推送,仅需要文字信息的推送则可以使用HA自带的Notifications for Android TV / Fire TV 集成,在电视上或者平板上下载Notifications for Android TV / Fire TV这个app,并简单设置,在HA的服务中使用notify服务就可以进行文字信息推送,非常方便 。