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

 找回密码
 立即注册
查看: 22362|回复: 21

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

[复制链接]

65

主题

853

帖子

3044

积分

论坛元老

Rank: 8Rank: 8

积分
3044
金钱
2184
HASS币
40
发表于 2020-1-10 15:40:57 | 显示全部楼层 |阅读模式
首先感谢 cnk700i 造福大家 制作了lovelace版和风天气曲线卡片
下面说说我在使用中遇到的问题,之前有在 https://bbs.hassbian.com/thread-7054-75-1.html 发帖反馈插件存在bug的情况:
Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 408, in _async_add_entity
    await entity.async_update_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 286, in async_update_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 320, in _async_write_ha_state
    state = self.state
  File "/usr/src/homeassistant/homeassistant/components/weather/__init__.py", line 188, in state
    return self.condition
  File "/config/custom_components/hf_weather/weather.py", line 161, in condition
    return [k for k, v in CONDITION_CLASSES.items() if self._condition in v][0]
IndexError: list index out of range
因为在升级HA到0.103的时候并没有注意到这些,总之是升级后和风card就显示不了了。所以错误的认为是ha不兼容造成的。
后来抽空闲暇的时候仔细看了下错误日志中
return [k for k, v in CONDITION_CLASSES.items() if self._condition in v][0]
IndexError: list index out of range
然后又去查看了一下weather.py中第161行的内容,顺藤摸瓜的找到了CONDITION_CLASSES
寻思着既然是数组超出范围,那么很有可能是这个数组中缺少了什么?! 于是去和风天气仔细对照api返回的json查找字段
CONDITION_CLASSES = {
    'sunny': ["晴"],
    'cloudy': ["多云"],
    'partlycloudy': ["少云", "晴间多云", "阴"],
    'windy': ["有风", "微风", "和风", "清风"],
    'windy-variant': ["强风", "疾风", "大风", "烈风"],
    'hurricane': ["飓风", "龙卷风", "热带风暴", "狂暴风", "风暴"],
    'rainy': ["毛毛雨", "小雨", "中雨", "大雨", "阵雨", "极端降雨"],
    'pouring': ["暴雨", "大暴雨", "特大暴雨", "强阵雨"],
    'lightning-rainy': ["雷阵雨", "强雷阵雨"],
    'fog': ["雾", "薄雾"],
    'hail': ["雷阵雨伴有冰雹"],
    'snowy': ["小雪", "中雪", "大雪", "暴雪", "阵雪"],
    'snowy-rainy': ["雨夹雪", "雨雪天气", "阵雨夹雪"],
}
这其中的天气状态显示并无大碍,但是在对应的 self._condition = all_result["now"]["cond"]["txt"] 中 结合json返回的txt信息,发现了倪端,原来是当天的天气正好是txt='雨'。。。。可是CONDITION_CLASSES 这其中并没有雨的概念啊!!!所以。。。。
那就自己加上呗!!
'rainy': ["雨", "毛毛雨", "小雨", "中雨", "大雨", "阵雨", "极端降雨"],
我是添加到这里了。。。。如果你喜欢添加到别处也可以哈
于是乎重启重新加载插件后,天气恢复了正常,这个世界又一次清净了。。。。

特发此贴,以见证自己曾经武断且错误的判断
并提醒自己万事没得巧,唯有用心盘 啊。。。。!


回复

使用道具 举报

22

主题

656

帖子

4576

积分

版主

Rank: 7Rank: 7Rank: 7

积分
4576
金钱
3905
HASS币
40
发表于 2020-1-10 16:39:25 | 显示全部楼层
好文,mark
回复

使用道具 举报

9

主题

251

帖子

4380

积分

元老级技术达人

积分
4380
金钱
4114
HASS币
100
发表于 2020-1-10 19:20:37 | 显示全部楼层
支持一下!!!
E5-2650L-V2+华南X79+16GB*2
回复

使用道具 举报

2

主题

19

帖子

134

积分

论坛分享达人

积分
134
金钱
115
HASS币
0
发表于 2020-1-11 04:50:20 | 显示全部楼层
刚好遇到问题
回复

使用道具 举报

39

主题

749

帖子

4833

积分

论坛元老

Freddy.

Rank: 8Rank: 8

积分
4833
金钱
4059
HASS币
0

最佳新人卓越贡献

发表于 2020-1-11 19:31:42 | 显示全部楼层
darksky不是挺好用的。。。
回复

使用道具 举报

0

主题

32

帖子

183

积分

注册会员

Rank: 2

积分
183
金钱
151
HASS币
0
发表于 2020-1-11 21:53:33 | 显示全部楼层
感谢分享
回复

使用道具 举报

65

主题

853

帖子

3044

积分

论坛元老

Rank: 8Rank: 8

积分
3044
金钱
2184
HASS币
40
 楼主| 发表于 2020-1-13 20:08:54 | 显示全部楼层
南柯醉一梦丶 发表于 2020-1-11 19:31
darksky不是挺好用的。。。

之前也是用的darksky和openweathermap
还是中文的好用哈
回复

使用道具 举报

3

主题

321

帖子

2891

积分

论坛积极会员

积分
2891
金钱
2570
HASS币
10
发表于 2020-1-22 14:56:19 | 显示全部楼层
本帖最后由 tcwj2008 于 2020-1-22 14:57 编辑

然后我把161行的
return [k for k, v in CONDITION_CLASSES.items() if self._condition in v][0]
改成了
for key in CONDITION_CLASSES.keys():
     if self._condition in CONDITION_CLASSES[key]:
        return key
这样就能正常触发下面的return 'unknown',这样万一API又多了什么新的中文关键词,也能正确触发unknown,不会报错
回复

使用道具 举报

9

主题

214

帖子

1097

积分

金牌会员

Rank: 6Rank: 6

积分
1097
金钱
883
HASS币
0
发表于 2020-1-28 21:59:08 | 显示全部楼层
楼主 厉害
回复

使用道具 举报

0

主题

98

帖子

1316

积分

金牌会员

Rank: 6Rank: 6

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

其实个行返回就是脱裤子放屁。直接返回值就行了。还要去表内检索一下并返回表内的值,非空对直接返回值就行了。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 17:19 , Processed in 0.158715 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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