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

 找回密码
 立即注册
楼主: wz1st

[基础教程] hacs-Pyscript基础教程

  [复制链接]

4

主题

60

帖子

516

积分

论坛技术达人

积分
516
金钱
446
HASS币
40
 楼主| 发表于 2024-4-1 10:17:07 | 显示全部楼层
lj407 发表于 2024-4-1 09:59
我抄您作业时候把小爱音箱的实体名字、alist的ip改成了自己的,res_data没数据是我漏改了哪里吗……还是 ...

alist要开搜索功能
技术宅拯救世界~~~
回复

使用道具 举报

4

主题

60

帖子

516

积分

论坛技术达人

积分
516
金钱
446
HASS币
40
 楼主| 发表于 2024-4-1 10:19:19 | 显示全部楼层
lj407 发表于 2024-4-1 09:59
我抄您作业时候把小爱音箱的实体名字、alist的ip改成了自己的,res_data没数据是我漏改了哪里吗……还是 ...

微信截图_20240401101857.png
技术宅拯救世界~~~
回复

使用道具 举报

39

主题

477

帖子

2693

积分

金牌会员

Rank: 6Rank: 6

积分
2693
金钱
2216
HASS币
10
发表于 2024-4-1 19:52:17 | 显示全部楼层
搞过,不太会玩,学习学习
回复

使用道具 举报

2

主题

44

帖子

205

积分

中级会员

Rank: 3Rank: 3

积分
205
金钱
161
HASS币
0
发表于 2024-4-2 08:56:12 | 显示全部楼层
本帖最后由 lj407 于 2024-4-2 09:02 编辑

顶起来。alist开了搜索以后,ha日志里不报错了,但是小爱pro的表现是:“请听xx试听版”说到一半被打断,然后头上光圈一直在闪,就像等着对话一样,没有任何声音。这时候你再喊小爱同学它也能正常回应。由于在addon里装vscode失败了ha日志也没报错不知如何debug,厚颜跑来继续请教大佬
回复

使用道具 举报

4

主题

60

帖子

516

积分

论坛技术达人

积分
516
金钱
446
HASS币
40
 楼主| 发表于 2024-4-2 10:33:54 | 显示全部楼层
lj407 发表于 2024-4-2 08:56
顶起来。alist开了搜索以后,ha日志里不报错了,但是小爱pro的表现是:“请听xx试听版”说到一半被打断,然 ...

微信截图_20240402103033.png
加上29行这个  看下日志,应该会打印一个链接,访问下看看能下载对应音乐不
技术宅拯救世界~~~
回复

使用道具 举报

2

主题

44

帖子

205

积分

中级会员

Rank: 3Rank: 3

积分
205
金钱
161
HASS币
0
发表于 2024-4-2 12:16:03 | 显示全部楼层
好像也没打印出链接来……

此错误来自自定义集成。

Logger: custom_components.pyscript.file.点歌
Source: custom_components/pyscript/global_ctx.py:341
Integration: Pyscript Python scripting (documentation, issues)
First occurred: 11:03:46 (5 occurrences)
Last logged: 12:01:42

Exception in </config/pyscript/点歌.py> line 29: log.error(media_content_id) ^ NameError: name 'media_content_id' is not defined
回复

使用道具 举报

4

主题

60

帖子

516

积分

论坛技术达人

积分
516
金钱
446
HASS币
40
 楼主| 发表于 2024-4-2 13:39:32 | 显示全部楼层
lj407 发表于 2024-4-2 12:16
好像也没打印出链接来……

此错误来自自定义集成。

15行后加log.error(res_data)
技术宅拯救世界~~~
回复

使用道具 举报

2

主题

44

帖子

205

积分

中级会员

Rank: 3Rank: 3

积分
205
金钱
161
HASS币
0
发表于 2024-4-2 14:18:15 | 显示全部楼层
此错误来自自定义集成。

Logger: custom_components.pyscript.file.点歌
Source: custom_components/pyscript/global_ctx.py:341
Integration: Pyscript Python scripting (documentation, issues)
First occurred: 11:03:46 (7 occurrences)
Last logged: 14:16:59

Exception in </config/pyscript/点歌.py> line 29: log.error(media_content_id) ^ NameError: name 'media_content_id' is not defined
Exception in </config/pyscript/点歌.py> line 30: log.error(media_content_id) ^ NameError: name 'media_content_id' is not defined
回复

使用道具 举报

2

主题

44

帖子

205

积分

中级会员

Rank: 3Rank: 3

积分
205
金钱
161
HASS币
0
发表于 2024-4-2 14:30:29 | 显示全部楼层
本帖最后由 lj407 于 2024-4-2 14:32 编辑

本人太小白了,感觉还是全部贴出来好免得有大佬意想不到的低级错误……
import requests, functools
import json, asyncio
from urllib.parse import quote
from datetime import datetime, timezone

async def async_http_request(url, data):
    search_url = url + '/api/fs/search'
    # service.call("media_player", "media_pause", entity_id=["media_player.xiaomi_lx06_72af_play_control", "media_player.yun_yin_le_xiao_ai_yin_xiang_9476"])
    media_player.media_pause(entity_id=["media_player.xiaomi_lx06_72af_play_control", "media_player.yun_yin_le_xiao_ai_yin_xiang_9476"])
    await asyncio.sleep(1)
    post_request = functools.partial(requests.post, search_url, data=data, headers={'Content-Type': 'application/json'})
    response = await hass.async_add_executor_job(post_request)
    res_data = response._content.decode('utf-8')

    json_data = json.loads(res_data)
    log.error(res_data)
    json_u = json_data['data']['content']

    if not json_u or len(json_u) == 0:
        return 'search error'

    music_url = url + '/d' + json_u[0]['parent'] + '/' + quote(json_u[0]['name'])
    music_addr = music_url.strip()


    media_content_id = music_addr
    media_content_type = "music"

    # service.call("media_player", "play_media", entity_id="media_player.xiao_ai_yin_xiang_9476", media_content_id=media_content_id, media_content_type=media_content_type)
log.error(media_content_id)
media_player.play_media(entity_id="media_player.xiao_ai_yin_xiang_9476", media_content_id=media_content_id, media_content_type=media_content_type)


@state_trigger("sensor.xiaomi_lx06_72af_conversation.timestamp")
async def get_conversation():
    xiaoai_state_dict = state.getattr(sensor.xiaomi_lx06_72af_conversation)
    if "content" not in xiaoai_state_dict:
        log.error("获取内容失败")
        return
    if xiaoai_state_dict["timestamp"] is None:
        return
    utc_dt = datetime.fromisoformat(str(xiaoai_state_dict["timestamp"])).astimezone(timezone.utc)
    state_timestamp = int(utc_dt.timestamp())

    utc_now = datetime.now(timezone.utc)
    now_timestamp = int(utc_now.timestamp())

    if now_timestamp - state_timestamp > 15:
        return

    xiaoai_stt = xiaoai_state_dict["content"]
    if xiaoai_stt is not None and "本地播放" in xiaoai_stt:
        music_msg = xiaoai_stt.replace("本地播放","").replace("的"," ").replace("歌曲","").replace("歌","")
        url = 'http://192.168.0.121:5244'

        data = {"parent":"/","keywords":music_msg,"scope":0,"page":1,"per_page":100,"password":""}
        json_data = json.dumps(data)
        # await asyncio.sleep(1)
        async_http_request(url, json_data)



回复

使用道具 举报

0

主题

11

帖子

44

积分

新手上路

Rank: 1

积分
44
金钱
33
HASS币
0
发表于 2024-4-2 14:32:56 | 显示全部楼层
学习学习
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-2 20:10 , Processed in 0.056026 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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