找回密码
 立即注册

微信扫码登录

搜索
楼主: axcom

[智能音箱] 让小爱音箱简单接入AI大模型

[复制链接]

1

主题

19

回帖

143

积分

注册会员

积分
143
金钱
123
HASS币
0
 楼主| 发表于 2025-9-5 11:03:47 | 显示全部楼层
更新记录:

1.22
用AI美化了config配置页面的UI风格
修改原--webui参数变更为--config参数
参考miGPT文档添加了更多的小爱音箱类型的支持(不支持的型号会显示"暂不支持"字样).
回复

使用道具 举报

0

主题

36

回帖

282

积分

中级会员

积分
282
金钱
246
HASS币
0
发表于 2025-9-5 19:28:42 | 显示全部楼层
windows的应用?那用的时候电脑要一直开机?
为啥不搞个docker?可以部署到NAS上,功耗低,7*24小时在线。
回复

使用道具 举报

1

主题

19

回帖

143

积分

注册会员

积分
143
金钱
123
HASS币
0
 楼主| 发表于 5 天前 | 显示全部楼层
# xiaobot -t (监控模式)

​        参数 -t 让xiaobot进入监控触发模式,此时xiaobot不会主动去轮询查询小爱音箱的对话,要等到收到 /monitor 给来的信号后,立即在不断静音小爱音箱的同时,开始5秒的轮询动作。得到问题后,交由AI答复,然后中止静音,由小爱TTS回答。

​        该模式不但大大减少了轮询次数,同时能最大程度的降低小爱的抢答。但因为目前还不清楚小爱播放音乐的执行方式,只能回答语音部份,要用小爱点歌、听故事的可能就不适用该模式了。

​        要实现对小爱的监控,最直接的当然是能抓取到小爱音箱的外发数据。首先想到的是让小爱走openWrt旁路由,但是折腾许久没有搞定修改小爱音箱的网关IP设置,只能作罢。目前成功实现的方案有2种:

​        1- 让小爱音箱连接我们自已用Linux搭建的wifi服务机器,就可在该服务器上用tcpdump这类抓包工具获取小爱的外发数据;

​        2- 在家里的局域网内对小爱音箱做ARP欺骗(推荐使用bettercap),让小爱音箱的外发数据流经我们自已装有抓包工具的机器,从而实现监控。
回复

使用道具 举报

1

主题

19

回帖

143

积分

注册会员

积分
143
金钱
123
HASS币
0
 楼主| 发表于 4 天前 | 显示全部楼层
# 方案1:WIFI服务器实现监控 --  OpenWrt下的配置

​        将xiaobox程序解压放到/home/mi目录下。

1. **安装必要工具**:

   ```bash
   opkg update
   opkg install tcpdump
   ```

2. **配置脚本**:

   ```bash
   #!/bin/sh
   
   # 配置参数 - 根据实际情况修改
   TARGET_MAC="aa:bb:cc:dd:ee:ff"  # 目标设备的MAC地址
   INTERFACE="br-lan"              # 监控的网络接口,通常是br-lan
   COOLDOWN=10                     # 冷却时间(秒),避免频繁触发
   
   echo "MAC监控脚本启动,目标MAC: $TARGET_MAC,接口: $INTERFACE"
   
   # 初始化最后触发时间
   last_trigger=0
   
   # 等待网络就绪(最多等待30秒)
   for i in {1..30}; do
     if ping -c 1 8.8.8.8 &>/dev/null; then
       break
     fi
     sleep 1
   done
   
   # 后台开启xiaobot服务
   cd /home/mi
   ./xiaobot -t > /dev/null 2>&1 &
   
   # 使用tcpdump监控外发流量
   tcpdump -i $INTERFACE -n ether src $TARGET_MAC 'and dst port 443 and (tcp[tcpflags] & tcp-syn) != 0 and tcp[13]=0x02 and dst 220.181.106.172' -v -l 2>/dev/null | while read -r line; do
       # 获取当前时间戳
       current_time=$(date +%s)
      
       # 检查是否在冷却期内
       if [ $((current_time - last_trigger)) -ge $COOLDOWN ]; then
           echo "$(date)执行调用monitor"
           
           # 调用HTTP接口
           curl -s -w " %{http_code}" "http://192.168.1.111:9997/monitor"
           
           # 更新最后触发时间
           last_trigger=$current_time
       fi
   done
   ```

   - 将该脚本保存为`/home/mi/mac_monitor.sh`并设置权限:`chmod +x /home/mi/mac_monitor.sh`
   - 编辑脚本中的配置参数,特别是`TARGET_MAC`(目标设备小爱音箱的MAC地址)和`INTERFACE`(网络接口,通常是`br-lan`)
   - 在执行xiaobot -t 命令后,程序会主动显示当前小爱音箱的MAC地址。 或者可以直接查看小爱音箱底部标签,上边也有音箱的MAC地址。
   - 这里监控机器的IP地址`192.168.1.111:9997`,需要自行修改为你监控机器的IP地址和端口。

3. **设置启动服务**:

   ```bash
   #!/bin/sh /etc/rc.common
   
   # 服务名称
   NAME="mac_monitor"
   # 脚本路径
   DAEMON="/home/mi/mac_monitor.sh"
   
   # 启动优先级(90表示较晚启动)
   START=90
   # 停止优先级(10表示较早停止)
   STOP=10
   
   # 使用procd进程管理
   USE_PROCD=1
   
   # 启动服务
   start_service() {
       # 检查脚本是否存在且可执行
       if [ ! -x "$DAEMON" ]; then
           echo "错误: $DAEMON 不存在或不可执行"
           return 1
       fi
      
       # 配置procd参数
       procd_open_instance
       procd_set_param command "$DAEMON"
       procd_set_param respawn  # 进程意外退出时自动重启
       procd_set_param stdout 1  # 输出重定向到系统日志
       procd_set_param stderr 1
       procd_close_instance
      
       echo "mac_monitor 服务已启动"
   }
   
   # 停止服务
   stop_service() {
       echo "正在停止 mac_monitor 服务..."
       # procd会自动处理进程停止
       return 0
   }
   
   # 重启服务
   restart_service() {
       stop
       start
   }
   ```

   - 将该脚本保存为`/etc/init.d/mac_monitor`并设置权限:`chmod +x /etc/init.d/mac_monitor`
   - 启动服务:`/etc/init.d/mac_monitor start`
   - 设置开机自启:`/etc/init.d/mac_monitor enable`
回复

使用道具 举报

1

主题

19

回帖

143

积分

注册会员

积分
143
金钱
123
HASS币
0
 楼主| 发表于 3 天前 | 显示全部楼层
更新记录:

1.23
修复了有时可能得不到回复的bug
修复了ai代理proxy地址不可用的问题

目前xiaobot在 -t 模式下的工作状况还是比较满意的。
回复

使用道具 举报

1

主题

34

回帖

172

积分

注册会员

积分
172
金钱
137
HASS币
0
发表于 3 天前 | 显示全部楼层
楼主厉害,加油!!!
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-9-14 03:14 , Processed in 1.361414 second(s), 12 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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