Open jibwf opened 1 month ago
可以通过自己修改 dockerfile ,做一个支持启动同时多个的镜像来实现。
可以通过自己修改 dockerfile ,做一个支持启动同时多个的镜像来实现。
能给一个例子吗?
需要有一点制作docker镜像的基础,比如现在的是只启动了一个 python :
FROM python:3.10 AS builder
WORKDIR /app
COPY requirements.txt .
RUN python3 -m venv .venv && .venv/bin/pip install --no-cache-dir -r requirements.txt
COPY install_dependencies.sh .
RUN bash install_dependencies.sh
FROM python:3.10-slim
WORKDIR /app
COPY --from=builder /app/.venv /app/.venv
COPY --from=builder /app/ffmpeg /app/ffmpeg
COPY xiaomusic/ ./xiaomusic/
COPY xiaomusic.py .
ENV XDG_CONFIG_HOME=/config
ENV XIAOMUSIC_HOSTNAME=192.168.2.5
ENV XIAOMUSIC_PORT=8090
VOLUME /config
EXPOSE 8090
ENV PATH=/app/.venv/bin:$PATH
ENTRYPOINT [".venv/bin/python3","xiaomusic.py"]
可以改成启动多个 python 的:
FROM python:3.10 AS builder
WORKDIR /app
COPY requirements.txt .
RUN python3 -m venv .venv && .venv/bin/pip install --no-cache-dir -r requirements.txt
COPY install_dependencies.sh .
RUN bash install_dependencies.sh
FROM python:3.10-slim
WORKDIR /app
COPY --from=builder /app/.venv /app/.venv
COPY --from=builder /app/ffmpeg /app/ffmpeg
COPY xiaomusic/ ./xiaomusic/
COPY xiaomusic.py .
COPY entrypoint.sh .
ENV XDG_CONFIG_HOME=/config
ENV XIAOMUSIC_HOSTNAME=192.168.2.5
VOLUME /config
EXPOSE 8090
EXPOSE 8091
ENV PATH=/app/.venv/bin:$PATH
ENTRYPOINT ["bash","entrypoint.sh"]
然后就可以在 entrypoint.sh 里写多个启动命令:
XIAOMUSIC_PORT=8090 .venv/bin/python3 xiaomusic.py --hardware=L07A &
XIAOMUSIC_PORT=8091 .venv/bin/python3 xiaomusic.py --hardware=L07A
上面只是伪代码,没测试过的。有兴趣可以自己摸索下。
这个功能现在实现了么??我家里也有几个不同的小爱音响
还没有呢
那这得改很多东西了
预计会修改代码来实现,而不是新增端口。新增端口的方式无法做到同时播放。
感觉可能得改成使用配置文件的方式来处理了,多设备时用列表存储设备信息
目前测试版本 main 包已经支持多设备,欢迎更新测试。直接在设置页面选择需要同时播放的设备,保存即可。
勾选多设备后,任何一个小爱同学都无法监听到本地指令了。本地控制页面播放可以同时推送到两个小爱同学。
只够选任何单独的小爱同学都 [Uploading xiaomusic (1).txt…]() 没有问题。
@hanxi 感谢大佬的快速更新
@jibwf 你用的哪个版本呢?你的日志可以再上传一下吗?,下载不了。
@jibwf 你用的哪个版本呢?你的日志可以再上传一下吗?,下载不了。
@hanxi 最新版0.1.97 xiaomusic (1).txt
日志里那个时间点好像没有任何信息。 我已经重启过容器了,还是不行。
日志里那个时间点好像没有任何信息。 我已经重启过容器了,还是不行。
我先看看哈,没有多个设备,不太好调试。
我看出问题了,下个版本修复
@hanxi 0.1.99版本 对话记录没问题了,但是发现同一个指令,多个小爱音箱都会执行。理想状态是只有获取到指令的小爱执行。
确实没有考虑这个问题。目前的实现方案就是用来同时播放的。如果要做到语音分开播放,就还得同时搞定网页里播放的问题。后期考虑做一个分组功能,把分在一组的设备一起控制。
为设备设计分组功能,可以把一个或者多个设备加入到一个分组,一个分组内的设备会被控制同时播放。设备的音量需要支持独立配置。
配置结构如下:
{
"groups": {
"客厅的小爱": {
"cur_music": "当前播放的歌曲",
"cur_playlist": "当前播放的列表",
"did_list": [
"10086",
"10087"
],
"play_type": 1
}
}
}
音量支持修改组内设备的声音,也支持分开设置每个设备的声音,可以在前端操作,后端只需要提供设置多个设备声音的接口即可。
单曲循环,随机播放这些操作只对分组生效,所以存放到组里。
歌单列表所有设备共享,当前选择的歌单和当前播放的歌曲可以存到组里,方便重启后还能记住。
可以给每个设备设置别名,方便管理。
{
"alias": {
"10086": "客厅的左边小爱",
"10087": "客厅的右边小爱"
}
}
设置页面可以看到did,hardware,别名。可以在设置页面调整分组。
主页主要是用于播放操作的,所有操作都是针对于单个分组的,所以在顶部加入一个切换分组的功能。同时为了单独修改声音,修改声音的地方可以改为多个修改条。
家里好几个型号的小爱,可以用一个docker支持吗?现在好像只能开多个docker