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

 找回密码
 立即注册
查看: 1413|回复: 16

[技术探讨] 请求 Python 大佬帮帮忙!!!

[复制链接]

3

主题

40

帖子

303

积分

中级会员

Rank: 3Rank: 3

积分
303
金钱
263
HASS币
0
发表于 2024-7-3 10:12:52 | 显示全部楼层 |阅读模式
本帖最后由 17620402030 于 2024-7-3 10:26 编辑

请求 Python 大佬帮帮忙!!!

配置情况:在阿里云 Docker 中安装了 Home Assistant(Core 2024.6.4),且已安装并启用 PythonScriptsPro - 1.0.2 集成。

在 Home Assistant 中,新建 Python 文件,旨在将经纬度通过百度转换成中文地址,然后通过 states.set 新建名为“百度地址”的实体并进行赋值。

然而,在进行 http get 操作时总是出错,不清楚究竟是环境问题还是代码问题,诚求大佬帮忙分析。



import requests
import json
import hass.states  
# 假设已经正确导入了 Home Assistant 的 states 模块

# 替换为你在百度地图开放平台申请的 ak,为字符串添加引号
ak = "TwvTSt10wfCiVK5mTQFxb6sX"

def get_chinese_address(latitude, longitude):
    url = f'http://api.map.baidu.com/reverse_geocoding/v3/?ak={ak}&output=json&coordtype=wgs84ll&location={latitude},{longitude}'
    response = requests.get(url)
    if response.status_code == 200:
        data = json.loads(response.text)
        if data['status'] == 0:
            return data['result']['formatted_address']
    return '获取地址失败'

latitude = 39.9042
longitude = 116.4074

# 获取中文地址
chinese_address = get_chinese_address(latitude, longitude)

# 使用 hass.states.set 进行赋值
hass.states.set('sensor.baidudizhi', chinese_address, {'friendly_name': '百度地址'})
回复

使用道具 举报

20

主题

135

帖子

797

积分

高级会员

Rank: 4

积分
797
金钱
662
HASS币
0
发表于 2024-7-3 11:23:31 | 显示全部楼层
本帖最后由 flamestsui 于 2024-7-3 11:28 编辑

代码没问题,Ak有问题我还没安装“Python Scripts Pro”
我安装试试
Snipaste_2024-07-03_11-22-51.jpg

回复

使用道具 举报

15

主题

108

帖子

1351

积分

论坛技术达人

积分
1351
金钱
1238
HASS币
20

教程狂人

发表于 2024-7-3 11:39:53 | 显示全部楼层
高德地图的 nodered节点支持相关功能
回复

使用道具 举报

5

主题

129

帖子

617

积分

高级会员

Rank: 4

积分
617
金钱
488
HASS币
0
发表于 2024-7-3 13:08:34 | 显示全部楼层
如在使用V3.0 时“鉴权失败“ 可在”控制台“->"查看应用"->“设置” 确认是否已获得“全球逆地理编码服务”权限。我看文档是这样说的
你开通了权限吗
回复

使用道具 举报

6

主题

153

帖子

578

积分

高级会员

Rank: 4

积分
578
金钱
425
HASS币
0
发表于 2024-7-3 13:28:38 | 显示全部楼层
本帖最后由 yjl 于 2024-7-3 14:43 编辑

1、你没有提供具体的报错信息,我手头也没有python环境,但是将你的Url用浏览器访问了一下,返回值的状态是200,但是提示AK有误,如图。
2、代码本身逻辑也有点问题,return前面没有else,而是直接return '获取地址失败',所以你这个函数就只会返回字符串 '获取地址失败'。你可以将最后这个retrun和内层的if对齐,或者放在前面加个else和外层if对齐,具体看response返回内容。
以上两点请参考。
screenshot-1719983909557.png
总为浮云能避日,长安不见使人愁
回复

使用道具 举报

3

主题

40

帖子

303

积分

中级会员

Rank: 3Rank: 3

积分
303
金钱
263
HASS币
0
 楼主| 发表于 2024-7-3 19:10:30 | 显示全部楼层
flamestsui 发表于 2024-7-3 11:23
代码没问题,Ak有问题我还没安装“Python Scripts Pro”
我安装试试

感谢大佬关注帮助

有效正确ak = "TwvTSt10wfCiU8G8BFMZVK5mTQFxb6sX"

https://api.map.baidu.com/revers ... mp;location=39.9042,116.4074
浏览器能获取有效反馈

以下最简单py文件,亦错误。
import requests
import hass.states


url = "https://api.map.baidu.com/reverse_geocoding/v3/?ak=TwvTSt10wfCiU8G8BFMZVK5mTQFxb6sX&output=json&coordtype=wgs84ll&location=39.9042,116.4074"
response = requests.get(url)
hass.states.set('sensor.baidudizhi', response, {'friendly_name': '百度地址'})



错误码
日志记录器: homeassistant.components.python_script.ll123.py
来源: components/python_script/__init__.py:270
集成: Python Scripts (文档, 问题)
首次出现: 18:25:58 (1 次总计出现)
上次记录: 18:25:58

Error executing script
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/python_script/__init__.py", line 270, in execute
    exec(compiled.code, restricted_globals)  # noqa: S102
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "ll123.py", line 1, in <module>
ImportError: __import__ not found


回复

使用道具 举报

3

主题

40

帖子

303

积分

中级会员

Rank: 3Rank: 3

积分
303
金钱
263
HASS币
0
 楼主| 发表于 2024-7-3 19:14:53 | 显示全部楼层
花开堪折枝 发表于 2024-7-3 11:39
高德地图的 nodered节点支持相关功能

主要是后续还有增加其它功能
回复

使用道具 举报

3

主题

40

帖子

303

积分

中级会员

Rank: 3Rank: 3

积分
303
金钱
263
HASS币
0
 楼主| 发表于 2024-7-3 19:15:58 | 显示全部楼层
windowsgood 发表于 2024-7-3 13:08
如在使用V3.0 时“鉴权失败“ 可在”控制台“->"查看应用"->“设置” 确认是否已获得“全球逆地理编码服务 ...

百度那边没有问题
感谢大佬关注帮助

有效正确ak = "TwvTSt10wfCiU8G8BFMZVK5mTQFxb6sX"

https://api.map.baidu.com/revers ... mp;location=39.9042,116.4074
浏览器能获取有效反馈

以下最简单py文件,亦错误。
import requests
import hass.states


url = "https://api.map.baidu.com/reverse_geocoding/v3/?ak=TwvTSt10wfCiU8G8BFMZVK5mTQFxb6sX&output=json&coordtype=wgs84ll&location=39.9042,116.4074"
response = requests.get(url)
hass.states.set('sensor.baidudizhi', response, {'friendly_name': '百度地址'})



错误码
日志记录器: homeassistant.components.python_script.ll123.py
来源: components/python_script/__init__.py:270
集成: Python Scripts (文档, 问题)
首次出现: 18:25:58 (1 次总计出现)
上次记录: 18:25:58

Error executing script
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/python_script/__init__.py", line 270, in execute
    exec(compiled.code, restricted_globals)  # noqa: S102
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "ll123.py", line 1, in <module>
ImportError: __import__ not found


回复

使用道具 举报

3

主题

40

帖子

303

积分

中级会员

Rank: 3Rank: 3

积分
303
金钱
263
HASS币
0
 楼主| 发表于 2024-7-3 19:18:06 | 显示全部楼层
yjl 发表于 2024-7-3 13:28
1、你没有提供具体的报错信息,我手头也没有python环境,但是将你的Url用浏览器访问了一下,返回值的状态是 ...

感谢大佬关注帮助

有效正确ak = "TwvTSt10wfCiU8G8BFMZVK5mTQFxb6sX"

https://api.map.baidu.com/revers ... mp;location=39.9042,116.4074
浏览器能获取有效反馈

以下最简单py文件,亦错误。
import requests
import hass.states


url = "https://api.map.baidu.com/reverse_geocoding/v3/?ak=TwvTSt10wfCiU8G8BFMZVK5mTQFxb6sX&output=json&coordtype=wgs84ll&location=39.9042,116.4074"
response = requests.get(url)
hass.states.set('sensor.baidudizhi', response, {'friendly_name': '百度地址'})



错误码
日志记录器: homeassistant.components.python_script.ll123.py
来源: components/python_script/__init__.py:270
集成: Python Scripts (文档, 问题)
首次出现: 18:25:58 (1 次总计出现)
上次记录: 18:25:58

Error executing script
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/python_script/__init__.py", line 270, in execute
    exec(compiled.code, restricted_globals)  # noqa: S102
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "ll123.py", line 1, in <module>
ImportError: __import__ not found


回复

使用道具 举报

6

主题

153

帖子

578

积分

高级会员

Rank: 4

积分
578
金钱
425
HASS币
0
发表于 2024-7-3 19:51:49 | 显示全部楼层
17620402030 发表于 2024-7-3 19:18
感谢大佬关注帮助

有效正确ak = "TwvTSt10wfCiU8G8BFMZVK5mTQFxb6sX"

应该是环境问题了,python中要import外部模块(库)时需要先在环境中安装pip install该模块,从报错信息看,应该是缺少外部模块,先安装一下要使用的模块,在逐步排查
总为浮云能避日,长安不见使人愁
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 15:47 , Processed in 0.174615 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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