请选择 进入手机版 | 继续访问电脑版

『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 202|回复: 5

[基础教程] 小米音箱DIY指令探索(二)

[复制链接]

5

主题

20

帖子

243

积分

论坛技术达人

积分
243
金钱
223
HASS币
0
发表于 2021-9-15 10:22:23 | 显示全部楼层 |阅读模式
本帖最后由 rainmote 于 2021-9-15 10:31 编辑

接着上一篇探索,发现/var/log/messages有STT/TTS的日志记录,那就非常方便了,使用mosquitto_pub把监控到的日志发送到HASS的MQTT里,然后用node-red做自定义流程,和之前看到的帖子原理类似。这里就避免了逆向修改等复杂操作。
音箱自带了mosquitto_sub / mosquitto_pub相关命令,所以不需要从openwrt里编译相关程序。

#!/bin/sh

HOST_TYPE=lx05a
HOST_INDEX=1

# MQTT config
MQ_HOST=192.168.100.2
MQ_PORT=1883
MQ_USER="admin"
MQ_PASSWD="password"
MQ_STT_TOPIC=/xiaomi/$HOST_TYPE/$HOST_INDEX/stt
MQ_STT_RESP_TOPIC=/xiaomi/$HOST_TYPE/$HOST_INDEX/stt/resp
MQ_TTS_TOPIC=/xiaomi/$HOST_TYPE/$HOST_INDEX/tts


# log config
MONITOR_FILE=/var/log/messages
LOG_FILE=/tmp/stt.log


export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)
export PATH=$PATH:$(pwd)

PUB_CMD=mosquitto_pub

stop_meida_player ()
{
    ubus -t 1 call mediaplayer player_wakeup {"action":"stop"}
}

# while inotifywait -e modify $MONITOR_FILE;
# do
#     line=$(tail -n1 $MONITOR_FILE)
#     if echo "$line" | grep 'speech_recognizer.asr' | grep -q 'final=true'; then
#         stt=$(echo "$line" | sed 's/.*asr=\([^,]*\).*dialog_id=\(.*\)/\2 \1/g')
#         echo "Q: $stt" >> $LOG_FILE
#         # id=$(echo "$stt" | awk '{print $1}')
#         # text=$(echo "$stt" | awk '{print $2}')
#         $PUB_CMD -t $MQ_STT_TOPIC -m "$stt" -h $MQ_HOST -p $MQ_PORT -u $MQ_USER -P $MQ_PASSWD
#     elif echo "$line" | grep 'speech_synthesizer.dialog_id'; then
#         res=$(echo "$line" | sed 's/.*dialog_id=\([^,]*\).*tts=\(.*\)/\1 \2/g')
#         echo "A: $res" >> $LOG_FILE
#         $PUB_CMD -t $MQ_STT_RESP_TOPIC -m "$res" -h $MQ_HOST -p $MQ_PORT -u $MQ_USER -P $MQ_PASSWD
#     fi
# done

tail -f $MONITOR_FILE | \
while read -r line;
do
    if echo "$line" | grep 'speech_recognizer.asr' | grep -q 'final=true'; then
        stt=$(echo "$line" | sed 's/.*asr=\([^,]*\).*dialog_id=\(.*\)/\2 \1/g')
        echo "Q: $stt" >> $LOG_FILE
        # id=$(echo "$stt" | awk '{print $1}')
        # text=$(echo "$stt" | awk '{print $2}')
        set -x
        $PUB_CMD -t $MQ_STT_TOPIC -m "$stt" -h $MQ_HOST -p $MQ_PORT -u $MQ_USER -P $MQ_PASSWD
        set +x
    elif echo "$line" | grep 'speech_synthesizer.dialog_id'; then
        res=$(echo "$line" | sed 's/.*dialog_id=\([^,]*\).*tts=\(.*\)/\1 \2/g')
        echo "A: $res" >> $LOG_FILE
        set -x
        $PUB_CMD -t $MQ_STT_RESP_TOPIC -m "$res" -h $MQ_HOST -p $MQ_PORT -u $MQ_USER -P $MQ_PASSWD
        set +x
    fi
done



订阅相关topic收到stt/tts的文本内容
➜  xiaomi bash sub.sh STT
935a91c98d4fda0ac78d523f15157414 今天天气怎么样
ccbe7482ae2c7d8a82743452dc1b7798 明天天气怎么样
6aae8841de1d6da693a37c1811cc6a26 电视频道调至CCTV十三
fad741e90e8ff928add983d5133fe230 关闭电视

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
➜  xiaomi bash sub.sh STT_RESP
935a91c98d4fda0ac78d523f15157414 杭州西湖今天阴转小雨,现在阴,下午1点有小雨,记得带伞,23度到27度,和昨天差不多,空气质量指数40,空气挺好的
ccbe7482ae2c7d8a82743452dc1b7798 杭州西湖明天小雨转多云,记得带好雨具,22度到28度,西北风2级,空气质量非常好。
6aae8841de1d6da693a37c1811cc6a26 在你的账号下没有发现电视,请先在电视上登录账号吧
fad741e90e8ff928add983d5133fe230 在你的账号下没有发现电视,请先在电视上登录账号吧


后面就是接入node-red做自定义流程。





评分

参与人数 1金钱 +5 收起 理由
Tao173 + 5 膜拜大神!

查看全部评分

回复

使用道具 举报

6

主题

87

帖子

801

积分

高级会员

Rank: 4

积分
801
金钱
714
HASS币
0
发表于 2021-9-15 11:12:13 | 显示全部楼层
虽然看不懂,还是支持一下
回复

使用道具 举报

12

主题

172

帖子

1152

积分

金牌会员

Rank: 6Rank: 6

积分
1152
金钱
980
HASS币
30
发表于 2021-9-15 12:20:51 | 显示全部楼层
太高深了,,,,,我只能看看了。。。。
回复

使用道具 举报

25

主题

1144

帖子

3076

积分

论坛元老

Rank: 8Rank: 8

积分
3076
金钱
1932
HASS币
40
QQ
发表于 2021-9-15 12:36:59 | 显示全部楼层
我只看看,不说话/
我不生产技术,我只是技术的搬运工。
回复

使用道具 举报

3

主题

162

帖子

2341

积分

论坛技术达人

积分
2341
金钱
2174
HASS币
10
发表于 2021-9-15 15:10:51 | 显示全部楼层
不错 可以玩点花样
回复

使用道具 举报

6

主题

99

帖子

334

积分

中级会员

Rank: 3Rank: 3

积分
334
金钱
235
HASS币
0
发表于 2021-9-15 15:19:06 | 显示全部楼层
小米音箱DIY指令探索(一)

https://bbs.hassbian.com/thread-14039-1-1.html
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2021-9-24 11:13 , Processed in 0.074293 second(s), 29 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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