🏠

HomeAssistantに頭痛ーるの気圧データを表示する

2024/10/11に公開

はじめに

Home Assistantのダッシュボードを作成した際に自身で工夫したエンティティの設定方法を記事化しました。
この記事では頭痛ーるのHPからJSONデータを取得し、気圧情報を取り込む設定を説明します。

頭痛ーる

https://zutool.jp/api/getweatherstatus/{prefectures_id+place_id} の情報を取得します。
{prefectures_id+place_id}はChromeの開発者ツールで、頭痛ーるのHPにて気圧予報の地域変更した際のURLリクエストをモニタリングするといった方法で特定してください。

  • 例:神奈川県横浜市
    14100

設定

configuration.yaml

rest:

# https://zutool.jp/api/getweatherstatus/
# resourceの {prefectures_id+place_id} は要置換
  - scan_interval: 10800
    resource: 'https://zutool.jp/api/getweatherstatus/{prefectures_id+place_id}'
    sensor:
      - name: zutool_pressure
        unique_id: zutool_pressure
        value_template: "{{ value_json['today'][ as_timestamp(now()) | timestamp_custom('%H', True) | int ].pressure }}"
        device_class: pressure
        unit_of_measurement: hPa
      - name: zutool_pressure_level
        unique_id: zutool_pressure_level
        value_template: "{{ value_json['today'][ as_timestamp(now()) | timestamp_custom('%H', True) | int ].pressure_level }}"

sensors.yaml

- platform: template
  sensors:

# 頭痛ーる
# https://zutool.jp/api/getweatherstatus/
    zutool_pressure_level_icon:
      unique_id: zutool_pressure_level_icon
      friendly_name: Zutool Pressure Level
      value_template: >-
        {% if is_state('sensor.zutool_pressure_level', '0') %}
          通常
        {% elif is_state('sensor.zutool_pressure_level', '1') %}
          通常
        {% elif is_state('sensor.zutool_pressure_level', '2') %}
          注意
        {% elif is_state('sensor.zutool_pressure_level', '3') %}
          警戒
        {% elif is_state('sensor.zutool_pressure_level', '4') %}
          超警戒
        {% endif %}
      icon_template: >-
        {% if is_state('sensor.zutool_pressure_level', '0') %}
          mdi:signal-cellular-outline
        {% elif is_state('sensor.zutool_pressure_level', '1') %}
          mdi:signal-cellular-1
        {% elif is_state('sensor.zutool_pressure_level', '2') %}
          mdi:signal-cellular-2
        {% elif is_state('sensor.zutool_pressure_level', '3') %}
          mdi:signal-cellular-3
        {% elif is_state('sensor.zutool_pressure_level', '4') %}
          mdi:bomb
        {% endif %}

表示例

zutool_pressure_level_icon

type: custom:mushroom-chips-card
chips:
  - type: entity
    content_info: name
    icon_color: orange
    entity: sensor.zutool_pressure_level_icon
    name: 頭痛ーる

Discussion