如何用云端Python脚本触发Google Home播放音频?
云端Python脚本触发Google Home的可行方案
方案1:基于Cast协议的直接控制(推荐)
Google Home支持Chromecast协议,可通过第三方库直接从云端向设备发送播放指令,无需依赖本地网络反向代理。
- 前置准备:
- 确认Google Home设备处于公网可访问环境(开启路由器UPnP,或给设备设置静态IP并映射Cast服务端口(默认8009))。
- 准备公网可访问的音频文件(如存放在云存储的音效/歌曲URL)。
- 实现步骤:
- 安装依赖库:
pip install pychromecast - 核心控制代码:
import pychromecast from pychromecast.controllers.media import MediaController def cast_to_google_home(device_name, media_url): # 搜索指定名称的Google Home设备 chromecasts, _ = pychromecast.get_listed_chromecasts(friendly_names=[device_name]) if not chromecasts: print(f"未找到目标设备: {device_name}") return cast_device = chromecasts[0] cast_device.wait() # 等待设备连接 # 初始化媒体控制器并播放音频 media_controller = MediaController() cast_device.register_handler(media_controller) media_controller.play_media(media_url, 'audio/mp3') media_controller.block_until_active() media_controller.play() # 降雨检测触发示例 if rain_detected: cast_to_google_home("客厅Google Home", "https://your-cloud-storage/rain-alert.mp3")
- 安装依赖库:
方案2:Google Assistant API 指令调用
通过Google官方API向绑定的Google Home发送语音指令,借助Assistant完成播放操作。
- 前置准备:
- 在Google Cloud控制台启用Google Assistant API,创建服务账号密钥并部署到云端服务器(设置环境变量
GOOGLE_APPLICATION_CREDENTIALS指向密钥文件)。 - Google Home已绑定对应Google账号,且已关联音乐服务(如YouTube Music)。
- 在Google Cloud控制台启用Google Assistant API,创建服务账号密钥并部署到云端服务器(设置环境变量
- 实现步骤:
- 安装依赖库:
pip install google-assistant-sdk[samples] - 核心代码:
from google.assistant.library import Assistant from google.assistant.library.event import EventType def trigger_assistant_command(): with Assistant() as assistant: for event in assistant.start(): if event.type == EventType.ON_CONVERSATION_TURN_STARTED: # 发送播放指令(需匹配Assistant可识别的自然语言) assistant.send_text_query("播放降雨提示音效") break # 降雨检测触发 if rain_detected: trigger_assistant_command()
- 安装依赖库:
方案3:IFTTT Webhook 无代码中转
利用IFTTT的Webhook服务实现云端脚本与Google Home的联动,无需复杂开发。
- 前置准备:
- 在IFTTT创建Applet:触发条件选择
Webhooks,设置自定义触发事件名(如rain_alert);动作选择Google Assistant,配置播放音频或播报文本。
- 在IFTTT创建Applet:触发条件选择
- 实现步骤:
- 安装依赖库:
pip install requests - 触发代码:
import requests def trigger_ifttt(event_name, api_key): webhook_url = f"https://maker.ifttt.com/trigger/{event_name}/with/key/{api_key}" requests.post(webhook_url) # 降雨检测触发 if rain_detected: trigger_ifttt("rain_alert", "your-ifttt-api-key")
- 安装依赖库:
- 注意:免费版IFTTT有调用次数限制,高频率场景需升级付费版。
内容的提问来源于stack exchange,提问作者Abhinandan K
相关产品推荐
相关产品推荐

