[TUTO] Domotiser la charge de ses batteries (electro portatif, robot tondeuse...)

La bubble-card en question:

type: custom:bubble-card
card_type: button
entity: switch.chargeur_velo
name: Velo
sub_button:
  main:
    - name: Activer
      show_arrow: true
      show_background: true
      show_icon: true
      state_background: false
      entity: switch.chargeur_velo
      show_name: true
      show_last_changed: false
      show_last_updated: false
      show_attribute: false
      show_state: false
      scrolling_effect: false
  bottom: []
modules:
  - get_state_attribute
force_icon: true
show_state: true
show_attribute: true
scrolling_effect: false
grid_options:
  columns: 12
  rows: auto
get_state_attribute:
  - entity: sensor.chargeur_velo_power
  - entity: sensor.velo_power_cycle
show_icon: true
show_name: true
button_type: switch
show_last_changed: false
show_last_updated: false

et pour les info de conso, c’est là :

Mais en résumé, il faut 2 automatisation, une qui détecte la fin de charge et une autre le début de la charge :
Voici l’automatisation qui détecte la fin de charge : (je fait exprès d’arrête la charge un peut avant, genre la batterie doit être chargé a 98-99% :

alias: "Velo en Charge : Fin"
description: ""
triggers:
  - type: power
    device_id: f35b09b9ca7ec46170e81c8d18c9c55f
    entity_id: 1473d8f386dc9fd5af8959b5619a37ac
    domain: sensor
    below: 30
    for:
      hours: 0
      minutes: 5
      seconds: 0
    trigger: device
conditions:
  - condition: state
    entity_id: input_boolean.velo_en_charge
    state: "on"
actions:
  - action: switch.turn_off
    metadata: {}
    data: {}
    target:
      entity_id: switch.chargeur_velo
  - action: input_boolean.turn_off
    data: {}
    target:
      entity_id: input_boolean.velo_en_charge
  - variables:
      time: >-
        {{ ( now() -
        (state_attr("automation.charger_velo_start","last_triggered"))).seconds
        | int }}
      hours: "{{ ((time % 86400) / 3600) | int }}"
      minutes: "{{ ((time % 3600) / 60) | round | int }}"
  - action: notify.mobile_app_xxx
    metadata: {}
    data:
      title: Batterie Vélo Pleine
      message: >-
        Le cycle de charge s"est déroulé de {{
        ((state_attr("automation.charger_velo_start", "last_triggered"))|
        as_local).strftime("%Hh%M") }} à {{ now().strftime("%Hh%M") }}\n Soit
        une durée de {{ "{:01}h{:02}m".format(hours, minutes) }}\n Le cycle a
        consommé {{ (states("sensor.velo_power_cycle") | float (default=0) ) |
        round }}Wh({{ (states("sensor.velo_power_cycle") | float (default=0) *
        (states("sensor.edf_tempo_info") | float(default=0) /1000 ) ) | round(2)
        }}€)
  - action: notify.send_message
    metadata: {}
    data:
      message: >-
        {{ now().strftime("%d/%m/%Y") }} ; {{
        ((state_attr("automation.charger_velo_start", "last_triggered")) |
        as_local).strftime("%Hh%M") }} ; {{ now().strftime("%Hh%M") }} ; {{
        "{:01}h{:02}m".format(hours, minutes) }} ; {{
        (states("sensor.velo_power_cycle") | float (default=0) ) | round }}Wh ;
        {{ (states("sensor.velo_power_cycle") | float(default=0) *
        (states("sensor.edf_tempo_info")| float(default=0) ) / 1000 ) | round(2)
        }}€ ;
    target:
      entity_id: notify.velo
  - action: switch.turn_off
    metadata: {}
    data: {}
    target:
      entity_id: switch.interrupteur_garage_right
mode: single

et celle qui détecte le début de la charge :

alias: "Velo en Charge : Début"
description: >-
  Debut de la chargeur du velo, on est a 0 la conso et on pourras recuperer le
  debut de la charge via state_attr("automation.charger_velo_start",
  "last_triggered")
triggers:
  - type: power
    device_id: f35b09b9ca7ec46170e81c8d18c9c55f
    entity_id: 1473d8f386dc9fd5af8959b5619a37ac
    domain: sensor
    above: 100
    for:
      hours: 0
      minutes: 1
      seconds: 0
    trigger: device
conditions:
  - condition: state
    entity_id: input_boolean.velo_en_charge
    state: "off"
actions:
  - action: utility_meter.calibrate
    metadata: {}
    data:
      value: "0"
    target:
      entity_id: sensor.velo_power_cycle
  - action: input_boolean.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: input_boolean.velo_en_charge
mode: single

PS: le notify.velo enregistre dans un fichier csv like

1 « J'aime »