Schedule State Card – Visualisation avancée des plannings (nécessite schedule_state)

Voici mon sensor pour schedule

  - platform: schedule_state
    name: Chauffage Pierre
    default_state: "eco"
    events:
      - start: "10:30"
        end: "22:00"
        state: "eco"
        condition:
          - condition: state
            entity_id: input_boolean.vacances_pierre
            state: "off"
          - condition: time
            weekday: [mon, tue, wed]

      - start: "10:30"
        end: "22:00"
        state: "comfort"
        condition:
          - condition: state
            entity_id: input_boolean.vacances_pierre
            state: "off"
          - condition: time
            weekday: [thu, fri, sat, sun]

      - start: "00:00"
        end: "10:30"
        state: "frost"
        condition:
          condition: time
          weekday: [mon, tue, wed, thu, fri, sat, sun]

      - start: "22:00"
        end: "00:00"
        state: "frost"
        condition:
          condition: time
          weekday: [mon, tue, wed, thu, fri, sat, sun]

      - start: "10:30"
        end: "22:00"
        state: "comfort"
        condition:
          - condition: state
            entity_id: input_boolean.vacances_pierre
            state: "on"
          - condition: time
            weekday: [mon, tue, wed, thu, fri, sat, sun]

Hum…

On est bien d’accord que si ta valeur par défaut, c’est eco
Cette partie là ne sert à rien :

      - start: "10:30"
        end: "22:00"
        state: "eco"
        condition:
          - condition: state
            entity_id: input_boolean.vacances_pierre
            state: "off"
          - condition: time
            weekday: [mon, tue, wed]

Elle ne fait au mieux que mettre ecolà ou c’est déjà eco et comme c’est la première, elle se fait écraser par toutes les suivantes

Ensuite que tu mets confort quand tu n’es pas en vacances pour jeudi/vendredi/samedi/dimanche

        - start: "10:30"
          end: "22:00"
          state: "comfort"
          condition:
            - condition: state
              entity_id: input_boolean.vacances_pierre
              state: "off"
            - condition: time
              weekday: [thu, fri, sat, sun]

et que tu mets confort quand tu es en vacances pour tous les jours.

        - start: "10:30"
          end: "22:00"
          state: "comfort"
          condition:
            - condition: state
              entity_id: input_boolean.vacances_pierre
              state: "on"
            - condition: time
              weekday: [mon, tue, wed, thu, fri, sat, sun]

Autrement dit, que tu sois en vacances ou pas, tu es toujours en confort pour jeudi/vendredi/samedi/dimanche, de 10:30 à 22:00

Et que finalement de 22:30 à 10:30 tu es en toujours en frost

      - start: "00:00"
        end: "10:30"
        state: "frost"
        condition:
          condition: time
          weekday: [mon, tue, wed, thu, fri, sat, sun]

      - start: "22:00"
        end: "00:00"
        state: "frost"
        condition:
          condition: time
          weekday: [mon, tue, wed, thu, fri, sat, sun]

Du coup, moi je fait ça

  - platform: schedule_state
    name: Chauffage Pierre
    default_state: "eco"
    allow_wrap: true
    events:
      - start: "10:30"
        end: "22:00"
        state: "comfort"
        condition:
          - condition: time
            weekday: [thu, fri, sat, sun]

      - start: "22:00"
        end: "10:30"
        state: "frost"

      - start: "10:30"
        end: "22:00"
        state: "comfort"
        condition:
          - condition: state
            entity_id: input_boolean.vacances_pierre
            state: "on"
          - condition: time
            weekday: [mon, tue, wed]

On est d’accord ?

Bonjour,
Merci tu as tout a fait raison, il est vrai que quand j’ai commencé a faire mon sensor j’ai pris au fur et à mesure de mon idée mais je n’ai pas cherché à optimiser le code.
Maintenant il y a 2 petites chose sur ce planning :

  • il n’a pas écrit les condition alors qu’il y a en a, pour le jours.
  • Su mon planning j’avais justement une vue d’ensemble de mes différentes règles avec les condition de jours et du booléen suivant le mode vacances. Ca me résumait bien ma logique de programmation. Mais en fait c’est comme les couleurs c’est juste personnel aussi. Mais par contre ton code est plus simple.

Les conditions de jours ne s’affichent pas si elles sont seules parce que c’est implicite avec les boutons, tu es sur la vue de vendredi, donc tu ne visualise que ce qui s’applique au vendredi
Et s’il y a une condition en plus, elles s’affichent bien :

Pour le reste, si effectivement c’est une question de préférence, ça a quand même un impact sur les calculs, plus le planning est complexe, plus il consomme (et saute de valeur en valeur ou répète )


En fait quelqu’un qui n’a pas créé le planning sur cette image il ne sait pas que si le mode vacances n’est pas activé et que le jeu, ven, sam, dim le mode confort est requis. Il faut cliquer sur les jours et pas en visualisant les règles. Comme je dit c’est une approche personnel de voir les choses. Cela n’enlève en rien la qualité de cette carte que j’ai adopté pour mon chauffage et dont je ne changerais pas.

Merci

Il n’y a pas de souci, en fait je réfléchis à comment faire un truc qui marche pour tous.
Parce que autant quand il n’y avait que la vue par jour, ça avait du sens (pour limiter les infos redondantes) autant avec la vue entité, c’est moins pertinent puisqu’on voit les 7 jours.

Ah oui faut que je regarde comment cela donne la vue en entités avec la nouvelle version.
Je pense que ta carte ainsi faite peut correspondre à tout le monde, c’est que des fois on est dans sa propre logique.

Bonjour @Pulpy-Luke

Je dois passer à côté de quelque chose d’évident :kissing_face:
je n’y arrive pas et je sens que je vais passer pour un c… qui a mal lu la doc, et pourtant …

type: custom:schedule-state-card
entities:
  - entity: sensor.planning_chauffage_cuisine
    name: Cuisine
    icon: mdi:thermometer
  - entity: sensor.planning_chauffage_sdb_rdc
    name: Salle de Bain RDC
    icon: mdi:thermometer
  - entity: sensor.planning_chauffage_salle_salon
    name: Salle Salon
    icon: mdi:thermometer
title: ""
colors:
  active_layer: "var(--primary-color, #2196F3)"
  inactive_layer: "var(--secondary-text-color, #BDBDBD)"
  combined_folded_layer: "var(--warning-color, #FF9800)"
  combined_unfolded_layer: "var(--primary-color, #2196F3)"
  cursor: "var(--label-badge-yellow, #FDD835)"
show_state_in_title: false
color_overrides:
  16|°C:
    color: "#2196F3"
    textColor: "#ffffff"
  19|°C:
    color: "#F29932"
    textColor: "#ffffff"
  20|°C:
    color: "#F2342A"
    textColor: "#ffffff"

sensor:
  - platform: schedule_state
    name: "Planning Chauffage Cuisine"
    default_state: "{{ states('input_number.consigne_cuisine_eco') }}"
    events:
      - start: "06:00"
        end: "11:00"
        state: "{{ states('input_number.consigne_cuisine_boost') }}"
      - start: "11:00"
        end: "22:00"
        state: "{{ states('input_number.consigne_cuisine_confort') }}"

  - platform: schedule_state
    name: "Planning Chauffage Salle_Salon"
    default_state: "{{ states('input_number.consigne_salle_salon_eco') }}"
    events:
      - start: "06:00"
        end: "11:00"
        state: "{{ states('input_number.consigne_salle_salon_boost') }}"
      - start: "11:00"
        end: "22:00"
        state: "{{ states('input_number.consigne_salle_salon_confort') }}"

  - platform: schedule_state
    name: "Planning Chauffage Sdb RDC"
    default_state: "{{ states('input_number.consigne_sdbrdc_eco') }}"
    events:
      - start: "06:00"
        end: "11:00"
        state: "{{ states('input_number.consigne_sdbrdc_boost') }}"
      - start: "11:00"
        end: "22:00"
        state: "{{ states('input_number.consigne_sdbrdc_confort') }}"

Tu as pas d’unités sur l’affichage, donc laisse vide cette partie dans l’éditeur

Ah oui merci !

j’ai ajouté ça dans mon configuration.yaml

homeassistant:
  customize:
    sensor.planning_chauffage_cuisine:
      unit_of_measurement: "°C"
    sensor.planning_chauffage_salle_salon:
      unit_of_measurement: "°C"
    sensor.planning_chauffage_sdb_rdc:
      unit_of_measurement: "°C"

Tu peux définir l’unité dans le schedule_state directement

- platform: schedule_state
  name: Consigne SdBH
  refresh: "0:05:00"
  default_state:"{{ states('input_number.consigne_eco') }}"
  extra_attributes:
    unit_of_measurement: "°C"
1 « J'aime »

Bonsoir,

j’ai enfin trouvé le temps d’intégrer ton magnifique travail.
Pas eu de souci particulier, si ce n’est pas la customisation.

Impossible d’appliquer un card_mod j’ai l’impression sur ta carte…
Je ne comprends pas pourquoi.

Un simple :

type: custom:schedule-state-card
entities:
  - entity: sensor.pac_present
    name: Pompe à chaleur
    icon: mdi:calendar-clock
title: Pompe à Chaleur
colors:
  active_layer: "var(--primary-color, #2196F3)"
  inactive_layer: "var(--secondary-text-color, #BDBDBD)"
  combined_folded_layer: "var(--warning-color, #FF9800)"
  combined_unfolded_layer: "var(--primary-color, #2196F3)"
  cursor: "var(--label-badge-yellow, #FDD835)"
show_state_in_title: true
card_mod:
  style: |
    ha-card {
      background: red !important;
    }

se transforme en :

Est-ce en raison de la balise style que tu ajoutes au dessus de ta carte ?
Ou bien de la class type-undefined ?

Note : la couleur c’est pour l’exemple, car passer par un thème serait mieux.
Dans mon cas je l’intègre dans un button-card lui même sur un picture-element et je vais avoir besoin de jouer sur le margin.

Merci pour ces compliments.

Coté customisation, la couleur de fond du thème HA s’applique automatiquement. Donc si tu as un fond rouge, vert ou blanc, il s’applique.

Pour l’intégration dans un button-card+picture-element, j’avoue ne pas bien comprendre l’objectif.
Tu va te retrouver avec un sacré empilement de carte ?!

En effet, mais le but est d’architecturer une popup.
Je vais voir du coup pour l’insérer dans une autre carte qui accepte mod_card pour pouvoir gérer le margin.

Ok donc dans une popup.
Voilà ce que fais :

action: fire-dom-event
browser_mod:
  service: browser_mod.popup
  data:
    content:
      type: custom:schedule-state-card
      entities:
      - entity: sensor.tarif_actuel_ttc
        name: Coût Kwh
        icon: mdi:transmission-tower

Par contre, attentio ça prends vite beaucoup de place, surtout quand on dépile.
Du coup, j’ai aussi une sous-vue

J’ai un peu plus que ça à l’affichage dans ma popup, d’ou le problème de positionnement. :grin:
Je ferai un screen demain si je n’oublie pas.


Voici la bête.

Salut,

Tu n’as pas plutôt un bout de code ?
Et les infos relatives à ton thème également ?

C’est pas un thème justement (card mod), première erreur… :face_exhaling:
Faut que je me forme sur le sujet pour faire avec un thème perso.

Mais ce que je ne pourrais pas faire par thème c’est ajuster la position.

Tu veux reproduire le souci c’est ça ?

Reproduire/comprendre oui
ajuster les positions avec card_mod c’est pas forcément le mieux en plus