P00f: mes dashboards, intégrations et automatisations

Coucou!

Je vous présente fièrement mes dashboards actuels. La plupart sont encore en chantier… d’ailleurs pas sûr que le chantier prenne fin un jour :sweat_smile:

D’abord quelques détails sur mon install:

  • Panneaux PV 2.4kWc avec micro-onduleurs Hoymiles et OpenDTU;
  • Voiture élec;
  • Chargeur de voiture dynamique avec MQTT (SmartEVSE)
  • Chauffe-eau élec avec routeur solaire MQTT (celui de Cyril Poissonnier);
  • Récepteur « radar » de trafic aérien(ADS-B);
  • Presque tous mes devices en Zigbee

Mon dashboard principal

Avec la super carte power-flow-card-plus et un graphique trouvé sur le net, qui affiche les prévisions de la journée et la vraie production.

Solaire

Quand les panneaux produisent, une jauge apparaît pour chacun.
J’ai une prédiction très précise de la production (via l’intétration Solcast).
J’ai une carte Template mushroom qui me calcule le pourcentage max que je peux espérer charger dans la voiture ce jour-ci au solaire seulement.
Une carte des jours Tempo via l’intégration RTE et un yaml trouvé quelque part
Une carte qui me calcule les économies faites grâce au solaire jusqu’à présent, en tenant compte du prix de l’électricité au moment de la production.

Voiture

Celui là est un peu long à expliquer et il est tard :nerd_face:. Mais il y a beaucoup d’automatisations en jeu pour optimiser la charge et contourner certaines limitations du SmartEVSE.

Chauffe-Eau

Affichage temps réel et contrôle du routeur solaire.
Une automatisation pour calculer la puissance et l’envoyer au routeur via MQTT.
Une autre pour réinitialiser le contacteur du routeur au tableau électrique s’il venait à planter, ce qui arrive malheureusement souvent.
Graphique de la température mesurée et de la puissance.

Météo / Qualité de l’air

Fusion de différents capteurs et intégrations.

Internet / Réseau

Sources:

  • Intégration Routeur Asus
  • Intégration Speedtest (1 test par jour)
    Je suis en train d’essayer d’écrire une intégration pour mon routeur 5G Zyxel, afin d’avoir les stats radio notamment.

Batteries

Panneaux (WIP)

Récepteur ADS-B

Sources:

  • tar1090 (local)
  • Flightaware (internet)

Santé

Intégration Garmin.

Code source: Home Assistant Garmin Dashboard with Mushroom · GitHub

Suivi du trafic aérien

Webview de tar1090 (adsb-ultrafeeder)

Énergie (dashboard par défaut)

Mesure mes stats du jour, très bonnes par ailleurs :point_up: :nerd_face:

8 « J'aime »

Très sympa
le genre minimaliste que j’aime assez qui reste un maximum dans le standard.
Quelques template plus tard et un jolie travail super dashboard

1 « J'aime »

Je dis que les personnes qui gèrent si bien l’énergie devraient avoir une réduction d’impôt :slight_smile:
Bob

4 « J'aime »

Je suis preneur de ta vue si tu veux bien
Merci beaucoup

Bien sûr :wink:
J’ai ajouté le code source dans le message original.

1 « J'aime »

Merci beaucoup

Il reste a enregistrer les valeurs pour les statistiques :wink:

1 « J'aime »

Très beau dashboard bravo ! Je vais te prendre quelques idées.

J’avais du temps libre, j’ai donc fait un diagramme de mes intégrations :grinning:

Chaque item représenté est intégré d’une manière ou d’une autre dans HA.

À part ça, en projets récents:

  • Passage de HA/mosquitto/Z2M en mode Docker (supervisé via Portainer) en remplacement du mode Supervised, qui va bientôt devenir obsolète

  • Ajout de influxDB comme base de données, et ajout de Grafana pour faire de beaux graphes des données de HA.

  • Ajout de l’intégration Tractive pour le traceur GPS de mon chat; agrégation des positions dans InfluxDB, et création d’une heatmap dans Grafana. Puis intégration du panneau Grafana dans un dashboard HA:

1 « J'aime »

Bonsoir P00f, pourrais tu partager le code de ta partie “solaire” stp ? merci :slight_smile:

Hello, le voilà :slight_smile:

Il a pas mal bougé, et il est pas forcément “portable” facilement. Voilà à quoi il ressemble actuellement:

Résumé
title: Energy
path: energy
icon: mdi:flash
type: sections
sections:
  - type: grid
    cards:
      - type: heading
        heading: Production
        heading_style: title
        icon: mdi:sun-angle
      - type: gauge
        entity: sensor.face_est_power
        name: East
        unit: W
        max: 1200
        min: 0
        needle: false
        grid_options:
          rows: 2
          columns: 4
        visibility:
          - condition: state
            entity: sensor.onduleur_1_power
            state_not: unavailable
      - type: gauge
        entity: sensor.face_sud_power
        name: South
        unit: W
        max: 1200
        min: 0
        needle: false
        grid_options:
          rows: 2
          columns: 4
        visibility:
          - condition: state
            entity: sensor.face_sud_power
            state_not: unavailable
      - type: gauge
        entity: sensor.onduleur_1_power
        name: West
        unit: W
        max: 1200
        min: 0
        needle: false
        grid_options:
          rows: 2
          columns: 4
        visibility:
          - condition: state
            entity: sensor.onduleur_1_power
            state_not: unavailable
      - graph: none
        type: sensor
        entity: sensor.solar_yield_day_properly_formatted
        name: Today's yield
        unit: kWh
        icon: mdi:solar-power
        detail: 1
      - type: custom:mushroom-entity-card
        entity: sensor.solcast_pv_forecast_peak_forecast_today
        primary_info: state
        secondary_info: name
        name: Peak today
      - type: custom:mushroom-entity-card
        entity: sensor.solcast_pv_forecast_peak_forecast_tomorrow
        primary_info: state
        secondary_info: name
        name: Peak tomorrow
      - type: heading
        heading: Forecast
        heading_style: title
        icon: mdi:timer-sand
        badges:
          - type: entity
            entity: sensor.solcast_pv_forecast_api_last_polled
      - type: entities
        entities:
          - entity: sensor.solcast_pv_forecast_forecast_remaining_today
            icon: mdi:clock
            name: Today (remaining)
          - entity: sensor.solcast_pv_forecast_forecast_tomorrow
            name: Tomorrow
            icon: mdi:calendar-blank
            secondary_info: "{{ states(entity.entity_id) | round(0) }}"
          - entity: sensor.solcast_pv_forecast_forecast_day_3
            name: D+2
            icon: mdi:calendar-plus
            secondary_info: "{{ states(entity.entity_id) | round(0) }}"
          - entity: sensor.solcast_pv_forecast_forecast_day_4
            name: D+3
            icon: mdi:calendar-plus-outline
            secondary_info: "{{ states(entity.entity_id) | round(0) }}"
      - chart_type: bar
        period: month
        type: statistics-graph
        entities:
          - entity: sensor.total_solar_yield_template_sensor_with_history
            name: Production
          - entity: sensor.mybattery_battery_energy_in
            name: VBattery charge
          - entity: sensor.mybattery_battery_energy_out
            name: VBattery discharge
        stat_types:
          - change
        days_to_show: 365
        visibility:
          - condition: screen
            media_query: "(min-width: 768px)"
  - type: grid
    columns: 1
    cards:
      - type: heading
        heading: Battery
        heading_style: title
        icon: mdi:car-battery
      - type: gauge
        entity: sensor.me3000sp_battery
        severity:
          green: 40
          yellow: 25
          red: 15
        name: State
        grid_options:
          columns: 6
          rows: 2
      - type: custom:mushroom-entity-card
        entity: sensor.me3000sp_battery_soh
        name: Health
        primary_info: state
        secondary_info: name
      - type: custom:mushroom-entity-card
        entity: sensor.me3000sp_device_state
        name: State
        primary_info: state
        secondary_info: name
      - type: custom:mushroom-template-card
        secondary: Battery life
        icon: mdi:clock
        primary: >
          {% set capacity_kwh = 5 *
          (states('number.me3000sp_battery_discharge_depth')|float(0)) / 100 %}

          {% set soc = states('sensor.me3000sp_battery') | float(0) %}

          {% set power_w = states('sensor.me3000sp_battery_power') | float(0) *
          -1 %}


          {% set available_kwh = capacity_kwh * ((soc - 20) / 100) %}


          {% if power_w > 0 %}
            {% set hours = available_kwh * 1000 / power_w %}
            {% if hours < 2 %}
              {% set minutes = (hours * 60) | round(0) %}
              {{ minutes }} minutes left
            {% else %}
              {{ hours | round(0) }} hours left
            {% endif %}
          {% else %}
            Unknown
          {% endif %}
        icon_color: blue
        visibility:
          - condition: or
            conditions:
              - condition: state
                entity: sensor.me3000sp_device_state
                state: Emergency power supply
              - condition: state
                entity: sensor.me3000sp_device_state
                state: Discharging
      - type: custom:mushroom-template-card
        icon: mdi:clock
        primary: |
          {% set capacity_kwh = 5  %}
          {% set soc = states('sensor.me3000sp_battery') | float(0) %}
          {% set power_w = states('sensor.me3000sp_battery_power') | float(0) %}
          {% set remaining_kwh = capacity_kwh - capacity_kwh * (soc / 100) %}

          {% if power_w > 0 %}
            {{ (remaining_kwh * 1000 / power_w) | round(0) }} 
            {% if (remaining_kwh * 1000 / power_w) | round(0) == 1 %}
            hour
            {% else %}
            hours
            {% endif %}
            {% if (remaining_kwh * 1000 % power_w) > 0.2 %}
              {{ (remaining_kwh * 1000 % power_w / 60 ) | round(0) }} minutes
            
            {% endif %}

          {% else %}
            Unknown
          {% endif %}
        icon_color: blue
        visibility:
          - condition: state
            entity: sensor.me3000sp_device_state
            state: Charging
        secondary: Time until full
      - type: custom:mushroom-entity-card
        entity: sensor.me3000sp_battery_cycles
        name: Cycles
        primary_info: state
        secondary_info: name
      - type: custom:mushroom-entity-card
        entity: sensor.me3000sp_battery_temperature
        name: Temperature
        primary_info: state
        secondary_info: name
      - type: heading
        heading: Inverter
        heading_style: title
        icon: mdi:math-norm-box
      - type: custom:mushroom-select-card
        entity: select.me3000sp_work_mode
        name: Mode
        layout: horizontal
      - type: tile
        entity: sensor.me3000sp_temperature
        name: Temp
        features_position: bottom
        vertical: false
      - type: tile
        entity: sensor.me3000sp_dc_temperature
        name: DC
        features_position: bottom
        vertical: false
      - type: heading
        heading: Day stats
        heading_style: title
        icon: mdi:chart-bar
      - type: tile
        entity: sensor.me3000sp_today_energy_import
        name: Import
      - type: tile
        entity: sensor.me3000sp_today_energy_export
        name: Export
      - type: tile
        entity: sensor.me3000sp_today_load_consumption
        name: Load
      - type: tile
        entity: sensor.me3000sp_today_production
        name: Production
      - type: tile
        entity: sensor.me3000sp_today_production_time
        name: Prod. Time
      - type: tile
        entity: sensor.me3000sp_today_losses
        name: Losses
      - type: tile
        entity: sensor.me3000sp_today_battery_charge
        name: Charge (Today)
      - type: tile
        entity: sensor.me3000sp_today_battery_discharge
        name: Discharge (Today)
      - type: heading
        heading: All-time stats
        heading_style: title
        icon: mdi:chart-bar
      - type: tile
        entity: sensor.me3000sp_total_energy_import
        name: Import
      - type: tile
        entity: sensor.me3000sp_total_energy_export
        name: Export
      - type: tile
        entity: sensor.me3000sp_total_load_consumption
        name: Load
      - type: tile
        entity: sensor.me3000sp_total_production
        name: Production
      - type: tile
        entity: sensor.me3000sp_total_production_time
        name: Prod. Time
      - type: tile
        entity: sensor.me3000sp_total_losses
        name: Losses
      - type: tile
        entity: sensor.me3000sp_total_battery_charge
        name: Charge (Total)
      - type: tile
        entity: sensor.me3000sp_total_battery_discharge
        name: Discharge (Total)
  - type: grid
    cards:
      - type: heading
        heading: Costs
        heading_style: title
        icon: mdi:currency-eur
      - type: custom:mushroom-entity-card
        entity: sensor.solar_savings_template
        fill_container: false
        primary_info: state
        secondary_info: name
        name: Saved with Solar
      - type: custom:mushroom-entity-card
        entity: sensor.conso_enedis_mois_courant
        primary_info: state
        secondary_info: name
        name: From grid this month
      - chart_type: bar
        period: month
        type: statistics-graph
        entities:
          - entity: sensor.solar_savings_template
            name: Savings
        stat_types:
          - change
        days_to_show: 90
      - type: heading
        icon: mdi:factory
        heading: Carbon Intensity
        heading_style: title
      - type: gauge
        entity: sensor.electricity_maps_co2_intensity
        name: CO² Intensity
        grid_options:
          columns: 6
          rows: auto
        unit: " "
      - type: gauge
        entity: sensor.electricity_maps_grid_fossil_fuel_percentage
        name: Fossil Souces
        needle: false
        grid_options:
          columns: 6
          rows: auto
      - type: heading
        heading: Virtual Battery
        heading_style: title
        icon: mdi:car-battery
      - type: custom:mushroom-entity-card
        entity: sensor.mybattery
        primary_info: state
        secondary_info: name
        name: Stored Energy
        icon: mdi:battery-50
      - type: custom:mushroom-template-card
        entity: sensor.mybattery
        primary_info: state
        secondary_info: name
        icon: mdi:currency-eur
        primary: "{{ ((states('sensor.mybattery') | float) * (0.20-0.08)) | int}} €"
        secondary: Stored value
        icon_color: blue
        tap_action:
          action: none
      - type: custom:mushroom-template-card
        entity: sensor.mybattery
        primary_info: state
        secondary_info: name
        icon: mdi:currency-eur
        primary: "{{ ((states('sensor.mybattery') | float) * (0.08)) | int}} €"
        secondary: Cost to empty battery
        icon_color: blue
      - type: vertical-stack
        cards:
          - type: custom:bubble-card
            card_type: pop-up
            auto_close: ""
            hash: "#forecast-refresh-pop-up"
            name: Refreshing
            trigger:
              - condition: state
                entity: input_boolean.action_running
                state: "on"
            show_header: true
            icon: mdi:timer-sand
            show_icon: true
            hide_backdrop: true
            margin_top_desktop: 80vh
            bg_opacity: "88"
badges:
  - type: entity
    show_name: true
    show_state: false
    show_icon: true
    entity: sensor.solcast_pv_forecast_api_last_polled
    name: Update Forecast
    tap_action:
      action: perform-action
      perform_action: automation.trigger
      target:
        entity_id: automation.automation_update_solcast_solar_forecast
      data:
        skip_condition: true
    icon: mdi:reload
  - type: entity
    show_name: true
    show_state: true
    show_icon: true
    entity: select.me3000sp_work_mode
    name: Inverter Mode
    tap_action:
      action: perform-action
      perform_action: select.select_next
      target:
        entity_id: select.me3000sp_work_mode
      data:
        cycle: true
  - type: custom:mushroom-template-badge
    content: >-
      {{states('sensor.rte_tempo_couleur_actuelle_visuel')}}
      {{states('sensor.rte_tempo_prochaine_couleur_visuel')}} 
    icon: ""
    color: ""
    label: Tempo
    tap_action:
      action: navigate
      navigation_path: /dashboard-home/energy
  - type: custom:mushroom-template-badge
    icon: mdi:battery-charging-30
    color: blue
    entity: sensor.mybattery
    content: "{{ states('sensor.mybattery') | int}} kWh"
    tap_action:
      action: more-info

1 « J'aime »