#修改主机名
hostnamectl set-hostname wky
#写入固定网卡
sed -i '7c hwaddress 00:22:6D:59:E4:CB' /etc/network/interfaces
#更新系统
sudo apt update -y && apt upgrade -y
# 安装docker
apt install docker.io
apt install docker-compose
# 更换docker源
if [ ! -d /etc/docker ];then
sudo mkdir -p /etc/docker
fi
cat << EOF | sudo tee /etc/docker/daemon.json
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://dockerproxy.com",
"https://docker.nju.edu.cn"
]
}
EOF
# 重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
#写入emmc
emmc: cd /boot/install ./install.sh
# 安装ctop
wget "https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-linux-arm"
sudo cp ctop-0.7.7-linux-arm /usr/local/bin/ctop&chmod +x /usr/local/bin/ctop
# 安装1Panel
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
# tailscale
version: "3"
services:
tailscale:
container_name: tailscale
volumes:
- /var/lib:/var/lib
- /DATA/AppData/tailscaled/net/tun:/dev/net/tun
network_mode: host
cap_add:
- NET_ADMIN
- NET_RAW
environment:
- TS_AUTHKEY=tskey-auth-kgWLfq5CNTRL-xWKKrQ3sCa1RjLJxd5L9X1bUohvhFf6X768
image: tailscale/tailscale
# syncthing
version: "3"
services:
syncthing:
container_name: syncthing
network_mode: host
privileged: true
restart: unless-stopped
ports:
- 8384:8384
environment:
- TZ=Asia/Shanghai
volumes:
- /DATA/AppData/syncthing:/var/syncthing
image: syncthing/syncthing:latest
# alist
version: "3"
services:
alist:
restart: always
volumes:
- /DATA/AppData/alist:/opt/alist/data
ports:
- 5244:5244
environment:
- PUID=0
- PGID=0
- UMASK=022
container_name: alist
image: xhofe/alist:latest
写入系统
将镜像再写入到U盘,插到离网口较近的那个usb口,然后玩客云通电,
进入armbian后,进入cd /boot/install
目录 执行 ./install.sh
即可写进emmc
[collapse status="false" title="EMMC"]
Cppying BOOT...done.
Edit init config...done.
Formatting ROOT partition...
e2fsck 1.44.5 (15-Dec-2018)
ROOT_EMMC: clean, 11/433328 files, 51202/1732096 blocks
done.
Copying ROOTFS.
Copy BIN
Create DEV
Copy ETC
Copy HOME
Copy LIB
Create MEDIA
Create MNT
Copy OPT
Create PROC
Copy ROOT
Create RUN
Copy SBIN
Copy SELINUX
Copy SRV
Create SYS
Create TMP
Copy USR
Copy fstab
Change MAC
Complete copy OS to eMMC
盒子emmc安装完成以后先不要拔U盘,输入命令
reboot
进行系统重启盒子重启完成以后输入poweroff
命令关机拔出U盘,然后通电启动进入系统
root@arm:~# uname -a
Linux arm 5.9.0-rc7-aml-s812 #20.11 SMP Thu Jun 30 22:41:02 CST 2022 armv7l GNU/Linux
root@arm:~# df -H
Filesystem Size Used Avail Use% Mounted on
udev 481M 0 481M 0% /dev
tmpfs 104M 3.2M 101M 4% /run
/dev/sda2 31G 1.1G 29G 4% /
tmpfs 519M 0 519M 0% /dev/shm
tmpfs 5.3M 0 5.3M 0% /run/lock
tmpfs 519M 0 519M 0% /sys/fs/cgroup
tmpfs 519M 0 519M 0% /tmp
/dev/sda1 536M 51M 486M 10% /boot
armbian-ramlog 53M 1.9M 51M 4% /var/log
tmpfs 104M 0 104M 0% /run/user/0
root@arm:/boot/install# lsusb
Bus 002 Device 002: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Flash Drive
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0bda:8178 Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ath/ar5523/ar5523.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ath/ath10k/ath10k_core.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ath/ath10k/ath10k_sdio.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ath/ath10k/ath10k_usb.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ath/ath6kl/ath6kl_core.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ath/ath6kl/ath6kl_sdio.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ath/ath6kl/ath6kl_usb.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ath/ath9k/ath9k_htc.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ath/ath.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ath/carl9170/carl9170.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ath/wcn36xx/wcn36xx.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/atmel/at76c50x-usb.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/broadcom/b43/b43.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/broadcom/b43legacy/b43legacy.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcmsmac.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/intersil/hostap/hostap.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/intersil/p54/p54common.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/intersil/p54/p54spi.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/intersil/p54/p54usb.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/mac80211_hwsim.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/marvell/libertas/libertas.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/marvell/libertas/libertas_sdio.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/marvell/libertas/usb8xxx.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/marvell/libertas_tf/libertas_tf.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/marvell/libertas_tf/libertas_tf_usb.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_sdio.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/marvell/mwifiex/mwifiex_usb.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7663u.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7663-usb-sdio-common.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/mediatek/mt76/mt76.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/mediatek/mt76/mt76-usb.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0u.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/mediatek/mt76/mt76x02-lib.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/mediatek/mt76/mt76x02-usb.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2u.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/mediatek/mt7601u/mt7601u.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ralink/rt2x00/rt2500usb.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ralink/rt2x00/rt2800lib.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ralink/rt2x00/rt2800usb.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00lib.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00usb.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ralink/rt2x00/rt73usb.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/realtek/rtl818x/rtl8187/rtl8187.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/rtl8192cu.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/realtek/rtlwifi/rtl_usb.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/realtek/rtlwifi/rtlwifi.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/rndis_wlan.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/rsi/rsi_91x.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/rsi/rsi_sdio.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/rsi/rsi_usb.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/rtl8189fs/8189fs.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/rtl8192cu/8192cu.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/rtl8192eu/8192eu.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/rtl8723ds/8723ds.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/rtl8723du/8723du.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/rtl8812au/88XXau.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/rtl88x2bu/88x2bu.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/st/cw1200/cw1200_core.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/st/cw1200/cw1200_wlan_sdio.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ti/wl1251/wl1251.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ti/wl1251/wl1251_sdio.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ti/wl1251/wl1251_spi.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ti/wl12xx/wl12xx.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ti/wl18xx/wl18xx.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ti/wlcore/wlcore.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/ti/wlcore/wlcore_spi.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/virt_wifi.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/xradio/xradio_wlan.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/zydas/zd1201.ko
/lib/modules/5.9.0-rc7-aml-s812/kernel/drivers/net/wireless/zydas/zd1211rw/zd1211rw.ko
U盘内uEnv.txt文件修改
镜像写入完成后,打开U盘内的uEnv.txt文件,修改要用的dtb文件
经过网友反馈,SD卡不识别,研究了下,原来是因为dtb的问题,于是修改了下dtb文件,为了便于跟其他dtb文件分辨,
命名为:meson8b-bugscaner.dtb
已经修复了SD卡不识别的问题。
如果您刷了之前的固件,请在网盘下载玩客云Armbian_20.11_Aml-s812_5.9.0-支持USB-WIFI最终完美版.img.xz
重新刷一下最新的,或者在网盘下载meson8b-bugscaner.dtb 自行替换,即可解决SD卡的问题。
插入USB无线网卡,连接wifi
nmtui
选择要连接的wifi,enter后输入密码, ok进行连接
ifconfig命令查看,已经获取到IP地址
[/collapse]
CasaOS
wget -qO- https://get.casaos.io | sudo bash
or
curl -fsSL https://get.casaos.io | sudo bash
_____ ____ _____
/ ____| / __ \ / ____|
| | __ _ ___ __ _| | | | (___
| | / _` / __|/ _` | | | |\___ \
| |___| (_| \__ \ (_| | |__| |____) |
\_____\__,_|___/\__,_|\____/|_____/
--- Made by IceWhale with YOU ---
[ OK ] Your hardware architecture is : armv7l
[ OK ] Your System is : Linux
[ OK ] Your Linux Distribution is : debian
[ OK ] Memory capacity check passed.
[ OK ] Disk capacity check passed.
[ INFO ] Install the necessary dependencies: smartmontools
[ INFO ] Install the necessary dependencies: udevil
[ INFO ] Install the necessary dependencies: samba
[ INFO ] Install the necessary dependencies: cifs-utils
[ INFO ] Install the necessary dependencies: mergerfs
[ INFO ] Install the necessary dependencies: Docker
[ OK ] Current Docker verison is 24.0.7.
[ INFO ] Configuration CasaOS Addons
[ INFO ] Downloading https://casaos.oss-cn-shanghai.aliyuncs.com/IceWhaleTech/CasaOS-Gateway/releases/download/
✅ CURRENT_VERSION: CURRENT_VERSION_NOT_FOUND
✅ SOURCE_VERSION: v0.4.4
✅ Migration is not needed.
[ OK ] Rclone v1.61.1 installed successfully.
Created symlink /etc/systemd/system/multi-user.target.wants/rclone.service → /lib/systemd/system/rclone.service.
[ INFO ] Starting casaos-gateway.service...
[ INFO ] Starting casaos-message-bus.service...
[ INFO ] Starting casaos-user-service.service...
[ INFO ] Starting casaos-local-storage.service...
[ INFO ] Starting casaos-app-management.service...
[ INFO ] Starting rclone.service...
[ INFO ] Starting casaos.service...
[ INFO ] Checking casaos-gateway.service...
[ OK ] casaos-gateway.service is running.
[ INFO ] Checking casaos-message-bus.service...
[ OK ] casaos-message-bus.service is running.
[ INFO ] Checking casaos-user-service.service...
[ OK ] casaos-user-service.service is running.
[ INFO ] Checking casaos-local-storage.service...
[ OK ] casaos-local-storage.service is running.
[ INFO ] Checking casaos-app-management.service...
[ OK ] casaos-app-management.service is running.
[ INFO ] Checking rclone.service...
[ OK ] rclone.service is running.
[ INFO ] Checking casaos.service...
[ OK ] casaos.service is running.
─────────────────────────────────────────────────────
CasaOS v0.4.4.2 is running at:
─────────────────────────────────────────────────────
bonding_masters: error fetching interface information: Device not found
- http://192.168.123.204 (eth0)
Open your browser and visit the above address.
─────────────────────────────────────────────────────
CasaOS Project : https://github.com/IceWhaleTech/CasaOS
CasaOS Team : https://github.com/IceWhaleTech/CasaOS#maintainers
CasaOS Discord : https://discord.gg/knqAbbBbeX
Website : https://www.casaos.io
Online Demo : http://demo.casaos.io
Uninstall : casaos-uninstall
安装homeassistant
![]() | |
---|---|
Docker 镜像 * | homeassistant/home-assistant:stable |
标题 * | homeassistant |
Web UI | 地址留空:8123 |
/DATA/AppData/homeassistant/config | /config |
容器主机名 | homeassistant |
docker run -d \
--name homeassistant \
--privileged \
--restart=unless-stopped \
-e TZ=Asia/Shanghai \
-v /DATA/AppData/homeassistant/config:/config \
--network=host \
ghcr.io/home-assistant/home-assistant:stable
#查询目录
find / -type d -name "homeassistant"
#进入查询目录
cd /DATA/AppData/homeassistant/config/
#新建custom_components文件夹
mkdir custom_components
#文件夹赋权
chmod 777 -R custom_components
##进入config目录
cd /DATA/AppData/homeassistant/config/
#下载 hacs 并赋权
chmod 777 -R hacs
#查询当前文件夹权限
ls -l
alist初始密码
docker exec -it alist ./alist admin
mysql
docker run -d \
--name mysql \
--net=host \
-p 3306:3306 \
-p 33060:33060 \
-v /DATA/AppData/mysql/logs:/var/log \
-v /DATA/AppData/mysql/data:/var/lib/mysql \
-v /DATA/AppData/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=@gdsfhFSfhj43 \
biarms/mysql:5.7
mysql -uroot -p@gdsfhFSfhj43
grant all privileges on *.* to 'root'@'%' ;
mysql> grant all privileges on *.* to 'root'@'%' ;
Query OK, 0 rows affected (0.02 sec)
mysql> select Host,User,plugin from mysql.user;
+-----------+---------------+-----------------------+
| Host | User | plugin |
+-----------+---------------+-----------------------+
| localhost | root | mysql_native_password |
| localhost | mysql.session | mysql_native_password |
| localhost | mysql.sys | mysql_native_password |
| % | root | mysql_native_password |
+-----------+---------------+-----------------------+
4 rows in set (0.00 sec)
show variables like 'character%';
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
小怪
小爱音箱播放局域网NAS上的音乐
mkdir -p /opt/apps & nano /opt/apps/httpRandomMusic.py
# coding=utf-8
# http随机音乐播放器
# 给小爱音箱用于播放nas的音乐
# 手搓了个简易http服务
# Sparkle
# v3.3
import os, random, urllib, posixpath, shutil, subprocess
from http.server import HTTPServer, BaseHTTPRequestHandler
# 端口号
port = 65533
# 存音乐的目录
fileDir = '/DATA/Media/Music'
# 实时转码需要依赖ffmpeg的路径 如果为空就不转码
ffmpeg = 'ffmpeg'
fileList = None
fileIndex = 0
def updateFileList():
global fileList
global fileIndex
try:
os.chdir(fileDir)
except Exception as e:
print(e)
print('ERROR: 请检查目录是否存在或是否有权限访问')
exit()
fileIndex = 0
# for i in os.listdir(fileDir):
# if i.lower().split('.')[-1] in ['flac','mp3','wav','aac','m4a']:
# fileList.append(i)
fileList = list(filter(lambda x: x.lower().split('.')[-1] in ['flac','mp3','wav','aac','m4a'], os.listdir('.')))
fileList.sort(key=lambda x: os.path.getmtime(x))
fileList.reverse()
print(str(len(fileList)) + ' files')
class meHandler(BaseHTTPRequestHandler):
def translate_path(self, path):
path = path.split('?',1)[0]
path = path.split('#',1)[0]
trailing_slash = path.rstrip().endswith('/')
try:
path = urllib.parse.unquote(path, errors='surrogatepass')
except UnicodeDecodeError:
path = urllib.parse.unquote(path)
path = posixpath.normpath(path)
words = path.split('/')
words = filter(None, words)
path = fileDir
for word in words:
if os.path.dirname(word) or word in (os.curdir, os.pardir):
continue
path = os.path.join(path, word)
if trailing_slash:
path += '/'
return path
def return302(self, filename):
self.send_response(302)
self.send_header('Location', '/' + urllib.parse.quote(filename))
self.end_headers()
def do_GET(self):
global fileList
global fileIndex
print(self.path)
if self.path == '/':
self.return302(fileList[fileIndex])
fileIndex += 1
if fileIndex >= len(fileList):
fileIndex = 0
elif self.path == '/random':
updateFileList()
random.shuffle(fileList)
self.return302(fileList[0])
fileIndex = 1
elif self.path == '/frist':
updateFileList()
self.return302(fileList[0])
fileIndex = 1
else:
path = self.translate_path(self.path)
print(path)
if os.path.isfile(path):
self.send_response(200)
if ffmpeg and path.lower().split('.')[-1] not in ['wav','mp3']:
self.send_header("Content-type", 'audio/wav')
t = subprocess.getoutput('{} -i "{}" 2>&1 | {} Duration'.format(ffmpeg, path, 'findstr' if os.name == 'nt' else 'grep')).split()[1][:-1].split(':')
self.send_header("Content-Length", str((float(t[0]) * 3600 + float(t[1]) * 60 + float(t[2])) * 176400))
self.end_headers()
pipe = subprocess.Popen([ffmpeg, '-i', path, '-f', 'wav', '-'], stdout=subprocess.PIPE, bufsize=10 ** 8)
try:
shutil.copyfileobj(pipe.stdout, self.wfile)
finally:
self.wfile.flush()
pipe.terminate()
else:
self.send_header("Content-type", 'audio/mpeg')
with open(path, 'rb') as f:
self.send_header("Content-Length", str(os.fstat(f.fileno())[6]))
self.end_headers()
shutil.copyfileobj(f, self.wfile)
else:
self.send_response(404)
self.end_headers()
if os.system("nslookup op.lan"):
print('ERROR: 请将op.lan指向本机ip,否则小爱音箱可能无法访问')
updateFileList()
HTTPServer(("", port), meHandler).serve_forever()
新建sh脚本
nano /opt/apps/xiaomimusic.sh
添加一下内容
#!/bin/bash
python3 /opt/apps/httpRandomMusic.py &
添加启动服务
nano /lib/systemd/system/rc-local.service
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
添加启动脚本路径
nano /etc/rc.local
bash /opt/apps/xiaomimusic.sh
设置启动服务
#设置rc-local服务为开机自动启动
systemctl enable rc-local
#启动rc-local服务。
systemctl start rc-local.service
#重启rc-local服务
systemctl restart rc-local
查看rc-local服务状态systemctl status rc-local.service
验证部署
用其他设备浏览器访问 http://op.lan:65533 能正常播放
如果你可以进去小爱音响的shell,那么尝试 curl -v http://op.lan:65533
此时控制台会有响应的输出
如果能验证通过但还是用不了,请尝试重启,并确保dns真的成功劫持了,因为只要能解析就一定能用
指令
小爱同学
打开小怪
然后以下三条指令三选一 | |
---|---|
指令 | 功能 |
播放服务器的音乐 | 按着上次的进度继续播放(没有进度就是从头放) |
从头播放服务器的音乐 | 按修改时间倒序播放(先放最后放进文件夹的文件) |
随机播放服务器的音乐 | 随机播放(播放列表打乱,不会重复随机到同一首) |
2023.10.16玩客云直刷包-armbian支持DOCKER-USB-WIFI-推荐1.0主板刷这个
玩客云Armbian_20.11_Aml-s812_5.9.0-支持USB-WIFI最终完美版.img.xz
魔百和M401A刷入Armbian系统EMMC开启wifi
httpRandomMusic
armbian开机启动脚本使用方法
玩客云docker下刷openwrt
简单 Docker 安装入门教程 - Debian / Ubuntu 配置国内镜像源方法
[[Debian] 玩客云 debian bullseye kernel 5.10.68][15]