Skip to content

Instantly share code, notes, and snippets.

@topdng
Created February 26, 2025 06:40
Show Gist options
  • Select an option

  • Save topdng/36492394cd6eeee495ffd3fa5fcf02f5 to your computer and use it in GitHub Desktop.

Select an option

Save topdng/36492394cd6eeee495ffd3fa5fcf02f5 to your computer and use it in GitHub Desktop.

Revisions

  1. topdng created this gist Feb 26, 2025.
    401 changes: 401 additions & 0 deletions yaml.yaml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,401 @@
    views:
    - title: HVAC
    path: hvac
    type: sections
    sections:
    - type: grid
    cards:
    - type: heading
    heading: HVAC
    heading_style: title
    - type: custom:mini-graph-card
    entities:
    - entity: climate.upstairs_thermostat_thermostat
    attribute: current_temperature
    - entity: climate.downstairs_thermostat_thermostat
    attribute: current_temperature
    show:
    fill: false
    icon: false
    points_per_hour: 0.5
    hours_to_show: 270
    name: Upstairs Temperature
    - type: custom:mini-graph-card
    name: Total Thermostat Heating
    entities:
    - entity: sensor.total_heating_hours_today
    show_state: true
    color: gray
    hours_to_show: 536
    lower_bound: 0
    group_by: date
    aggregate_func: max
    show:
    labels: true
    graph: bar
    average: true
    extrema: true
    - type: grid
    cards:
    - type: heading
    heading: Weather
    heading_style: title
    - type: custom:apexcharts-card
    graph_span: 9d
    experimental:
    color_threshold: true
    show:
    last_updated: true
    span:
    start: day
    offset: '-1d'
    header:
    show: true
    title: Hourly Temperature Forecast
    show_states: true
    colorize_states: true
    now:
    show: true
    color: red
    label: Now
    series:
    - entity: sensor.outside_temperature_and_humidity_temperature
    extend_to: now
    name: Outside Temperature
    show:
    legend_value: false
    - entity: sensor.pirate_weather_hourly
    extend_to: false
    name: Temperature Forecast
    data_generator: |
    return entity.attributes.forecast.map(forecast => {
    return [new Date(forecast.datetime).getTime(), forecast.temperature];
    });
    color_threshold:
    - value: 50
    color: steelblue
    - value: 60
    color: midnightblue
    - value: 75
    color: orange
    - value: 85
    color: orangered
    - value: 100
    color: red
    show:
    extremas: true
    legend_value: false
    in_header: after_now
    - entity: sensor.pirate_weather_hourly
    extend_to: false
    name: Apparent Temperature
    data_generator: |
    return entity.attributes.forecast.map(forecast => {
    return [new Date(forecast.datetime).getTime(), forecast.apparent_temperature];
    });
    stroke_width: 1
    show:
    extremas: true
    legend_value: false
    in_header: after_now
    chart_type: line
    yaxis:
    - min: 30
    max: 120
    apex_config:
    grid:
    show: false
    - type: custom:apexcharts-card
    graph_span: 9d
    experimental:
    color_threshold: true
    show:
    last_updated: true
    span:
    start: day
    offset: '-1d'
    header:
    show: true
    title: Hourly Humidity Forecast
    show_states: true
    colorize_states: true
    now:
    show: true
    color: red
    label: Now
    series:
    - entity: sensor.outside_temperature_and_humidity_humidity
    extend_to: false
    name: Humidity
    show:
    legend_value: false
    - entity: sensor.pirate_weather_hourly
    extend_to: false
    name: Humidity
    data_generator: |
    return entity.attributes.forecast.map(forecast => {
    return [new Date(forecast.datetime).getTime(), forecast.humidity];
    });
    show:
    extremas: true
    legend_value: false
    in_header: after_now
    chart_type: line
    yaxis:
    - min: 0
    max: 110
    apex_config:
    grid:
    show: false
    - type: custom:apexcharts-card
    graph_span: 8d
    experimental:
    color_threshold: true
    show:
    last_updated: true
    span:
    start: day
    header:
    show: true
    title: Hourly Cloud Cover Forecast
    show_states: true
    colorize_states: true
    now:
    show: true
    color: red
    label: Now
    series:
    - entity: sensor.pirate_weather_hourly
    extend_to: false
    type: area
    stroke_width: 0
    name: Cloud Cover
    data_generator: |
    return entity.attributes.forecast.map(forecast => {
    return [new Date(forecast.datetime).getTime(), forecast.cloud_coverage];
    });
    color_threshold:
    - value: 0
    color: steelblue
    - value: 60
    color: gray
    show:
    extremas: true
    legend_value: false
    in_header: after_now
    yaxis:
    - min: 0
    max: 100
    apex_config:
    grid:
    show: false
    - type: custom:apexcharts-card
    graph_span: 8d
    experimental:
    color_threshold: true
    show:
    last_updated: true
    span:
    start: day
    header:
    show: true
    title: Hourly Precipitation Forecast
    show_states: true
    colorize_states: true
    now:
    show: true
    color: red
    label: Now
    series:
    - entity: sensor.pirate_weather_hourly
    extend_to: false
    name: Precipitation
    data_generator: |
    return entity.attributes.forecast.map(forecast => {
    return [new Date(forecast.datetime).getTime(), forecast.precipitation_probability];
    });
    color_threshold:
    - value: 50
    color: steelblue
    - value: 60
    color: midnightblue
    - value: 75
    color: orange
    - value: 85
    color: orangered
    - value: 100
    color: red
    show:
    extremas: true
    legend_value: false
    in_header: after_now
    chart_type: line
    yaxis:
    - min: 0
    max: 100
    apex_config:
    grid:
    show: false
    - type: custom:apexcharts-card
    graph_span: 8d
    experimental:
    color_threshold: true
    show:
    last_updated: true
    span:
    start: day
    header:
    show: true
    title: Hourly Wind Forecast
    show_states: true
    colorize_states: true
    now:
    show: true
    color: red
    label: Now
    series:
    - entity: sensor.pirate_weather_hourly
    extend_to: false
    name: Wind Gust
    data_generator: |
    return entity.attributes.forecast.map(forecast => {
    return [new Date(forecast.datetime).getTime(), forecast.wind_gust_speed];
    });
    show:
    extremas: true
    legend_value: false
    in_header: after_now
    - entity: sensor.pirate_weather_hourly
    extend_to: false
    name: Wind Speed
    data_generator: |
    return entity.attributes.forecast.map(forecast => {
    return [new Date(forecast.datetime).getTime(), forecast.wind_speed];
    });
    show:
    extremas: true
    legend_value: false
    in_header: after_now
    chart_type: line
    yaxis:
    - min: 0
    max: 50
    apex_config:
    grid:
    show: false
    - type: custom:apexcharts-card
    graph_span: 8d
    experimental:
    color_threshold: true
    show:
    last_updated: true
    span:
    start: day
    header:
    show: true
    title: Hourly UV Index Forecast
    show_states: true
    colorize_states: true
    now:
    show: true
    color: red
    label: Now
    series:
    - entity: sensor.pirate_weather_hourly
    extend_to: false
    name: UV Index
    data_generator: |
    return entity.attributes.forecast
    .filter(forecast => forecast.uv_index <= 13) // Only include UV index values <= 13
    .map(forecast => {
    return [new Date(forecast.datetime).getTime(), forecast.uv_index];
    });
    color_threshold:
    - value: 0
    color: steelblue
    - value: 11
    color: red
    show:
    extremas: true
    legend_value: false
    in_header: after_now
    chart_type: line
    yaxis:
    - min: 0
    max: 12
    apex_config:
    grid:
    show: false
    - type: custom:apexcharts-card
    graph_span: 8d
    experimental:
    color_threshold: true
    show:
    last_updated: true
    span:
    start: day
    header:
    show: true
    title: Hourly Dewpoint Forecast
    show_states: true
    colorize_states: true
    now:
    show: true
    color: red
    label: Now
    series:
    - entity: sensor.pirate_weather_hourly
    extend_to: false
    name: Dewpoint
    data_generator: |
    return entity.attributes.forecast.map(forecast => {
    return [new Date(forecast.datetime).getTime(), forecast.dew_point];
    });
    show:
    extremas: true
    legend_value: false
    in_header: after_now
    chart_type: line
    yaxis:
    - min: 0
    max: 100
    apex_config:
    grid:
    show: false
    - type: custom:apexcharts-card
    graph_span: 8d
    experimental:
    color_threshold: true
    show:
    last_updated: true
    span:
    start: day
    header:
    show: true
    title: Hourly Pressure Forecast
    show_states: true
    colorize_states: true
    now:
    show: true
    color: red
    label: Now
    series:
    - entity: sensor.pirate_weather_hourly
    extend_to: false
    name: Pressure
    data_generator: |
    return entity.attributes.forecast.map(forecast => {
    return [new Date(forecast.datetime).getTime(), forecast.pressure];
    });
    show:
    extremas: true
    legend_value: false
    in_header: after_now
    chart_type: line
    yaxis:
    - min: 29
    max: 31
    apex_config:
    grid:
    show: false
    column_span: 2