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

『瀚思彼岸』» 智能家居第一站

 找回密码
 立即注册
查看: 2231|回复: 27

[插件发布] 彩云天气 完美插件版+不用插件的内置 rest sensor 版

  [复制链接]

9

主题

123

帖子

922

积分

论坛技术达人

积分
922
金钱
789
HASS币
0

教程狂人

发表于 2018-2-4 12:48:25 | 显示全部楼层 |阅读模式
本帖最后由 Yonsm 于 2018-2-4 12:56 编辑

如果不想用插件,可以看二楼,使用 HA 内置的 rest sensor 实现

对标 HA 内置 yr 天气插件的高质量 HA custom_component:
屏幕快照 2018-02-04 12.47.43.png
1. 代码在此(复制 homeassistant 的配置目录中 custom_components/sensor/caiyun.py下,无此目录请创建):

https://github.com/Yonsm/HAExtra/blob/master/custom_components/sensor/caiyun.py

2. 配置方法和 yr 类似,最简单的配置版本如下:
[Plain Text] 纯文本查看 复制代码
sensor:
- platform: caiyun

以上默认启用这些传感器:['weather', 'temperature', 'humidity', 'local_precipitation', 'aqi', 'pm25'];20分钟更新一次;自动使用 HA 中配置的地理位置

下面是完整的配置项,每个传感器均仔细挑选了 mdi 的图标,无需额外配置:
[Plain Text] 纯文本查看 复制代码
sensor:
  - platform: caiyun
    #name: CaiYun
    #scan_interval: 1200
    #latitude: 30.000
    #longitude: 120.000
    monitored_conditions: # Optional
      - weather
      - temperature
      - humidity
      - cloud_rate
      - pressure
      - wind_direction
      - wind_speed
      - local_precipitation
      - nearest_precipitation
      - precipitation_distance
      - aqi
      - pm25
      - pm10
      - o3
      - co
      - no2
      - so2

3. 【可选】上面配置好了之后就可以了,但默认是英文名称。建议 customize.yaml 中配置中文名称如下:
[Plain Text] 纯文本查看 复制代码
group.outside:
  friendly_name: 室外
sun.sun:
  friendly_name: 日照

sensor.caiyun_weather:
  friendly_name: 天气
sensor.caiyun_temperature:
  friendly_name: 室外气温
sensor.caiyun_humidity:
  friendly_name: 室外湿度
sensor.caiyun_cloud_rate:
  friendly_name: 云量
sensor.caiyun_pressure:
  friendly_name: 气压
sensor.caiyun_wind_direction:
  friendly_name: 风向
sensor.caiyun_wind_speed:
  friendly_name: 风速
sensor.caiyun_local_precipitation:
  friendly_name: 降水强度
sensor.caiyun_nearest_precipitation:
  friendly_name: 附近降水强度
sensor.caiyun_precipitation_distance:
  friendly_name: 附近降水距离
sensor.caiyun_aqi:
  friendly_name: 空气指数
sensor.caiyun_pm25:
  friendly_name: 室外颗粒物
  homebridge_name: 空气质量
sensor.caiyun_pm10:
  friendly_name: 室外大颗粒物
sensor.caiyun_o3:
  friendly_name: 室外臭氧
sensor.caiyun_co:
  friendly_name: 室外一氧化碳
sensor.caiyun_no2:
  friendly_name: 室外二氧化氮
sensor.caiyun_so2:
  friendly_name: 室外二氧化硫

4. 【可选】建议在 groups.yaml 中添加如下代码进行分组:
[Plain Text] 纯文本查看 复制代码
outside:
    entities:
      - sun.sun
      - sensor.caiyun_weather
      - sensor.caiyun_temperature
      - sensor.caiyun_humidity
      - sensor.caiyun_cloud_rate
      - sensor.caiyun_pressure
      - sensor.caiyun_wind_direction
      - sensor.caiyun_wind_speed
      - sensor.caiyun_local_precipitation
      - sensor.caiyun_nearest_precipitation
      - sensor.caiyun_precipitation_distance
      - sensor.caiyun_aqi
      - sensor.caiyun_pm25
      - sensor.caiyun_pm10
      - sensor.caiyun_o3
      - sensor.caiyun_co
      - sensor.caiyun_no2
      - sensor.caiyun_so2


评分

参与人数 2金钱 +30 收起 理由
uavana + 10 膜拜大神!
Jones + 20 在下对你的景仰犹如滔滔长江之水,连绵不绝.

查看全部评分

回复

使用道具 举报

9

主题

123

帖子

922

积分

论坛技术达人

积分
922
金钱
789
HASS币
0

教程狂人

 楼主| 发表于 2018-2-4 12:49:29 | 显示全部楼层
本帖最后由 Yonsm 于 2018-2-4 22:11 编辑

最简单的版本是直接利用 HA 内置的 rest+template sensor:
1. 复制如下配置到你的 comfiguration.yaml 的 sensor: 下面;
2. 修改经纬度“120.000,30.000”为你的经纬度;
3. 可选:在customize.yaml 中把 sensor.outside 设置为 hidden: true,并且重新命名各项指标。

[Plain Text] 纯文本查看 复制代码
sensor:
  - platform: rest
    name: Outside
    resource: http://api.caiyunapp.com/v2/UR8ASaplvIwavDfR/120.000,30.000/realtime.json   
    scan_interval: 1200
    headers:
      User-Agent: ColorfulCloudsPro/3.2.0 (iPhone; iOS 11.2.2; Scale/2.00)
    value_template: >-
          {% if value_json.status == 'ok' %}
            有效
          {% else %}
            无效
          {% endif %}
    json_attributes:
      - result
  - platform: template
    sensors:
      outside_weather:
        friendly_name: Outside Weather
        value_template: >-
          {% set skycon = states.sensor.outside.attributes.result.skycon %}
          {% if skycon == 'CLEAR_DAY' %}
            晴天
          {% elif skycon == 'CLEAR_NIGHT' %}
            晴夜
          {% elif skycon == 'PARTLY_CLOUDY_DAY' %}
            多云
          {% elif skycon == 'PARTLY_CLOUDY_NIGHT' %}
            多云
          {% elif skycon == 'CLOUDY' %}
            阴
          {% elif skycon == 'RAIN' %}
            雨
          {% elif skycon == 'SNOW' %}
            雪
          {% elif skycon == 'WIND' %}
            风
          {% elif skycon == 'FOG' %}
            雾
          {% elif skycon == 'HAZE' %}
            霾
          {% elif skycon == 'SLEET' %}
            冻雨
          {% else %}
            未知
          {% endif %}
        icon_template: >-
          {% set skycon = states.sensor.outside.attributes.result.skycon %}
          {% if skycon == 'CLEAR_DAY' %}
            mdi:weather-sunny
          {% elif skycon == 'CLEAR_NIGHT' %}
            mdi:weather-night
          {% elif skycon == 'PARTLY_CLOUDY_DAY' %}
            mdi:weather-partlycloudy
          {% elif skycon == 'PARTLY_CLOUDY_NIGHT' %}
            mdi:weather-windy-variant
          {% elif skycon == 'CLOUDY' %}
            mdi:weather-cloudy
          {% elif skycon == 'RAIN' %}
            mdi:weather-rainy
          {% elif skycon == 'SNOW' %}
            mdi:weather-snowy
          {% elif skycon == 'WIND' %}
            mdi:weather-windy
          {% elif skycon == 'FOG' %}
            mdi:weather-fog
          {% elif skycon == 'HAZE' %}
            mdi:weather-hail
          {% elif skycon == 'SLEET' %}
            mdi:weather-snowy-rainy
          {% else %}
            mdi:help-circle-outline
          {% endif %}
      outside_temperature:
        friendly_name: Outside Temperature
        value_template: '{{ states.sensor.outside.attributes.result.temperature }}'
        unit_of_measurement: °C
      outside_humidity:
        friendly_name: Outside Humidity
        value_template: '{{ states.sensor.outside.attributes.result.humidity | multiply(100) | round(0) }}'
        unit_of_measurement: '%'
      outside_pm25:
        friendly_name: Outside PM2.5
        value_template: '{{ states.sensor.outside.attributes.result.pm25 | round(0) }}'
        unit_of_measurement: ug/m3
      outside_aqi:
        friendly_name: Outside AQI
        value_template: '{{ states.sensor.outside.attributes.result.aqi | round(0) }}'
      rainfall_intensity:
        friendly_name: Rainfall Intensity
        value_template: '{{ states.sensor.outside.attributes.result.precipitation.local.intensity | round(2)}}'

回复

使用道具 举报

0

主题

247

帖子

949

积分

高级会员

Rank: 4

积分
949
金钱
702
HASS币
0
发表于 2018-2-4 17:53:17 | 显示全部楼层
抓紧大神的衣角不松手
回复

使用道具 举报

23

主题

667

帖子

2166

积分

超级版主

Rank: 8Rank: 8

积分
2166
金钱
1489
HASS币
0

教程狂人论坛风云人物

发表于 2018-2-4 18:02:52 | 显示全部楼层
膜拜大神!
2018.6.1,所有回复可见已取消,祝大家爬楼愉快!
回复

使用道具 举报

76

主题

2239

帖子

7177

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
7177
金钱
4908
HASS币
34
发表于 2018-2-4 19:12:17 | 显示全部楼层
Yonsm 发表于 2018-2-4 12:49
最简单的版本是直接利用 HA 内置的 rest+template sensor:
1. 复制如下配置到你的 comfiguration.yaml 的  ...

Y神,这个改坐标的,貌似测试不成功呢
回复

使用道具 举报

76

主题

2239

帖子

7177

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
7177
金钱
4908
HASS币
34
发表于 2018-2-4 19:24:59 | 显示全部楼层
http://api.caiyunapp.com/v2/UR8ASaplvIwavDfR/120.000]http://api.caiyunapp.com/v2/UR8ASaplvIwavDfR/120.000,30.000/realtime.json

120.000后面有个方括号,这个是正常的么?

评分

参与人数 1金钱 +2 收起 理由
Yonsm + 2 论坛编辑器的问题,一不小心就自动识别链接.

查看全部评分

回复

使用道具 举报

2

主题

63

帖子

283

积分

论坛技术达人

积分
283
金钱
215
HASS币
0
发表于 2018-2-8 16:26:43 | 显示全部楼层
本帖最后由 sirrom 于 2018-2-8 16:28 编辑

用2楼的简单版本,一次性成功。谢谢楼主!

                               
登录/注册后可看大图
weather.png
回复

使用道具 举报

76

主题

2239

帖子

7177

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
7177
金钱
4908
HASS币
34
发表于 2018-2-8 17:11:59 | 显示全部楼层
另外楼主,这只是实时天气呀,没有预报功能啊?彩云其实最牛的是它的分钟级预报
回复

使用道具 举报

20

主题

336

帖子

1353

积分

论坛分享达人

积分
1353
金钱
1017
HASS币
0
发表于 2018-2-11 21:35:50 | 显示全部楼层
谢谢楼主。
非常喜欢这种简洁轻便的版本。
回复

使用道具 举报

9

主题

238

帖子

1085

积分

论坛分享达人

积分
1085
金钱
842
HASS币
0
发表于 2018-3-5 12:59:46 | 显示全部楼层
大神,把预告完善下吧,这个有些刁
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2018-8-20 09:32 , Processed in 0.318519 second(s), 46 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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