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

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

[已解决] 关于lovelace版和风天气插件error的问题解决思路及解决办法

[复制链接]

3

主题

317

帖子

2665

积分

论坛积极会员

积分
2665
金钱
2348
HASS币
10
发表于 2020-2-7 17:34:02 | 显示全部楼层
usrusr22 发表于 2020-2-6 18:11
其实个行返回就是脱裤子放屁。直接返回值就行了。还要去表内检索一下并返回表内的值,非空对直接返回值就 ...

原本的写法只要字典中没有这个值,就会抛出异常,我去看了下和风的API,其实还有很多情况都没有,虽然说是很少见的。
虽然行数增加,但是不会抛出异常,我也没想到简单的写法,不知道你有什么高见
回复

使用道具 举报

0

主题

94

帖子

970

积分

高级会员

Rank: 4

积分
970
金钱
876
HASS币
0
发表于 2020-2-7 21:04:56 | 显示全部楼层
本帖最后由 usrusr22 于 2020-2-7 21:12 编辑
tcwj2008 发表于 2020-2-7 17:34
原本的写法只要字典中没有这个值,就会抛出异常,我去看了下和风的API,其实还有很多情况都没有,虽然说 ...

我把里直接返回了return self._condition,不进行字典处理。另外一数组下标报错那里,我加了判断如果字典中找不到,则把该次查询的结果显示为unknown,这样就算API返回来的值没有在字曲内会去显示unknown。并且JS那个卡片中也相应增加未知的矢量的素材及代码。
效果:如果API返回结果是当前插件字典中没有,则处理显示为 unknown 并在前端卡片显示红色 ? 号。当如果看到有这个 ? 号显示说明这周查询的数据是表内没有,反馈得知这周天气数据插件解析了自己去增加处理。而且不是插件一报错实体就崩了,后面的天气就不再更新了。
QQ截图20200207211152.png
回复

使用道具 举报

3

主题

112

帖子

1523

积分

金牌会员

Rank: 6Rank: 6

积分
1523
金钱
1411
HASS币
0
发表于 2020-2-24 22:38:51 | 显示全部楼层
感谢分享
回复

使用道具 举报

0

主题

23

帖子

195

积分

注册会员

Rank: 2

积分
195
金钱
172
HASS币
0
发表于 2020-3-1 11:53:20 | 显示全部楼层
本帖最后由 liaochong 于 2020-3-1 12:10 编辑

你好,我也遇到类似问题,但是又有些不一样。插件之前正常工作过一段时间,最近重启HA后就抛出错误:

Error while setting up platform hf_weather
Traceback (most recent call last):
  File "/home/homeassistant/.local/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 150, in _async_setup_platform
    await asyncio.wait_for(asyncio.shield(task), SLOW_SETUP_MAX_WAIT)
  File "/usr/lib/python3.7/asyncio/tasks.py", line 416, in wait_for
    return fut.result()
  File "/home/homeassistant/.homeassistant/custom_components/hf_weather/weather.py", line 86, in async_setup_platform
    yield from data.async_update(dt_util.now())
  File "/home/homeassistant/.homeassistant/custom_components/hf_weather/weather.py", line 407, in async_update
    [forec_cond[6], int(datemsg[6]["tmp"]["max"]), int(datemsg[6]["tmp"]["min"]), datemsg[6]["date"], datemsg[6]["pcpn"], datemsg[6]["pop"]]
IndexError: list index out of range

HA版本是0.102.3,是否可以帮忙分析一下,提前谢谢了。 已经起了Issue在作者的Github。
=================================

我自己解决了,也是返回值的问题:

weather.py 46行:
'rainy': ["毛毛雨", "小雨", "小到中雨", "中雨", "大雨", "阵雨", "极端降雨"],

感谢楼主启发。
回复

使用道具 举报

0

主题

169

帖子

625

积分

高级会员

Rank: 4

积分
625
金钱
456
HASS币
0
发表于 2020-3-7 16:32:32 | 显示全部楼层
大神收下膝盖
回复

使用道具 举报

10

主题

120

帖子

791

积分

高级会员

Rank: 4

积分
791
金钱
666
HASS币
20
发表于 2020-3-28 12:12:38 | 显示全部楼层
大赞!
本来想自己找问题,搜到了楼主这个就省事了。
回复

使用道具 举报

10

主题

120

帖子

791

积分

高级会员

Rank: 4

积分
791
金钱
666
HASS币
20
发表于 2020-3-28 18:06:55 | 显示全部楼层
tcwj2008 发表于 2020-1-22 14:56
然后我把161行的
return [k for k, v in CONDITION_CLASSES.items() if self._condition in v][0]
改成了

查分组是为了确定icon。这样一改就完善了。赞!
回复

使用道具 举报

1

主题

59

帖子

448

积分

中级会员

Rank: 3Rank: 3

积分
448
金钱
389
HASS币
0
发表于 2020-4-4 02:21:43 | 显示全部楼层
本帖最后由 hogan_wang 于 2020-4-4 02:22 编辑

根据和风给出的天气状况代码,补全了全部状况

#中英文参考
# https://www.home-assistant.io/integrations/weather/
# https://dev.heweather.com/docs/refer/condition

CONDITION_CLASSES = {
    'sunny': ["晴"],
    'cloudy': ["多云"],
    'partlycloudy': ["少云", "晴间多云", "阴"],
    'windy': ["有风", "微风", "和风", "清风"],
    'windy-variant': ["强风", "劲风", "疾风", "大风", "烈风"],
    'hurricane': ["飓风", "龙卷风", "热带风暴", "狂暴风", "风暴"],
    'rainy': ["雨", "毛毛雨", "细雨", "小雨", "小到中雨", "中雨", "中到大雨", "大雨", "大到暴雨", "阵雨", "极端降雨", "冻雨"],
    'pouring': ["暴雨", "暴雨到大暴雨", "大暴雨", "大暴雨到特大暴雨", "特大暴雨", "强阵雨"],
    'lightning-rainy': ["雷阵雨", "强雷阵雨"],
    'fog': ["雾", "薄雾", "霾", "浓雾", "强浓雾", "中度霾", "重度霾", "严重霾", "大雾", "特强浓雾"],
    'hail': ["雷阵雨伴有冰雹"],
    'snowy': ["小雪", "小到中雪", "中雪", "中到大雪", "大雪", "大到暴雪", "暴雪", "阵雪"],
    'snowy-rainy': ["雨夹雪", "雨雪天气", "阵雨夹雪"],
    'exceptional': ["扬沙", "浮尘", "沙尘暴", "强沙尘暴", "未知"],

回复

使用道具 举报

65

主题

853

帖子

3038

积分

论坛元老

Rank: 8Rank: 8

积分
3038
金钱
2180
HASS币
40
 楼主| 发表于 2020-4-7 10:42:29 | 显示全部楼层
hogan_wang 发表于 2020-4-4 02:21
根据和风给出的天气状况代码,补全了全部状况

#中英文参考

回复

使用道具 举报

2

主题

22

帖子

110

积分

注册会员

Rank: 2

积分
110
金钱
88
HASS币
0
发表于 2020-6-18 21:30:49 | 显示全部楼层
liaochong 发表于 2020-3-1 11:53
你好,我也遇到类似问题,但是又有些不一样。插件之前正常工作过一段时间,最近重启HA后就抛出错误:

Erro ...

麻烦问下。这返回值是怎么算的,我就最后一是[forec_cond[4], int(datemsg[4]["tmp"]["max"]), int(datemsg[4]["tmp"]["min"]), datemsg[4]["date"], datemsg[4]["pcpn"], datemsg[4]["pop"]]的错误,
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-7 10:16 , Processed in 0.107910 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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