YAML

alias: __Zendure_New_Automation v4
description: ""
triggers:
  - trigger: time_pattern
    seconds: /30
conditions: []
actions:
  - sequence: []
  - alias: HP ou HC ?
    choose:
      - conditions:
          - condition: state
            entity_id: sensor.linky_current_price
            state:
              - HEURE PLEINE
        sequence:
          - alias: Etat de QCELLS
            choose:
              - conditions:
                  - condition: state
                    entity_id: sensor.qcells_etat
                    state:
                      - Standby
                sequence:
                  - alias: >-
                      Si il est à -10% (vide) alors on compense si nécessaire
                      avec SF2400
                    choose:
                      - conditions:
                          - condition: and
                            conditions:
                              - type: is_battery_level
                                condition: device
                                device_id: afda895cc1812b99521eb78710326b89
                                entity_id: f25a2fe7b99ed232a00fd0c82cb205e2
                                domain: sensor
                                below: 11
                              - condition: numeric_state
                                entity_id: sensor.te31njn8n387601_l3_p
                                above: 50
                        sequence:
                          - sequence:
                              - if:
                                  - condition: device
                                    device_id: a9bed78637a3d4199888177480ba0f4b
                                    domain: select
                                    entity_id: faa8306ea0f42cc0b510209a0e408c8e
                                    type: selected_option
                                    option: Input mode
                                then:
                                  - device_id: a9bed78637a3d4199888177480ba0f4b
                                    domain: select
                                    entity_id: faa8306ea0f42cc0b510209a0e408c8e
                                    type: select_option
                                    option: Output mode
                                alias: >-
                                  SF2400 - Changement d'état IN to Out si
                                  necessaire
                              - action: number.set_value
                                target:
                                  entity_id: number.eeb4aep1p032084_outputlimit
                                data:
                                  value: >
                                    {% set current =
                                    states('sensor.te31njn8n387601_l3_p') |
                                    float(0) %} {% set output =
                                    states('number.eeb4aep1p032084_outputlimit')
                                    | float(0) %}

                                    {% if -50 <= current <= 50 %}
                                      {{ output | round(0) }}

                                    {% else %}
                                      {% set delta = 0.7 * current %}
                                      {% set cible = output + delta %}
                                      {% set result = cible - 50 if cible > 0 else cible %}
                                      {{ [result, 900] | min | round(0) }}
                                    {% endif %}
                          - sequence:
                              - if:
                                  - condition: device
                                    device_id: a9bed78637a3d4199888177480ba0f4b
                                    domain: select
                                    entity_id: faa8306ea0f42cc0b510209a0e408c8e
                                    type: selected_option
                                    option: Input mode
                                then:
                                  - device_id: a9bed78637a3d4199888177480ba0f4b
                                    domain: select
                                    entity_id: faa8306ea0f42cc0b510209a0e408c8e
                                    type: select_option
                                    option: Output mode
                                alias: >-
                                  SF2400 - Changement d'état IN to Out si
                                  necessaire
                              - action: number.set_value
                                target:
                                  entity_id: number.eeb4aep1p032084_outputlimit
                                data:
                                  value: >
                                    {% set current =
                                    states('sensor.te31njn8n387601_l3_p') |
                                    float(0) %} {% set output =
                                    states('number.eeb4aep1p032084_outputlimit')
                                    | float(0) %}

                                    {% if -50 <= current <= 50 %}
                                      {{ output | round(0) }}

                                    {% else %}
                                      {% set delta = 0.7 * current %}
                                      {% set cible = output + delta %}
                                      {% set result = cible - 50 if cible > 0 else cible %}
                                      {{ [result, 900] | min | round(0) }}
                                    {% endif %}
                            enabled: false
                        alias: Si 3CT > 50W, on compense avec xW pour arriver à 50W
                      - conditions:
                          - condition: numeric_state
                            entity_id: sensor.te31njn8n387601_l3_p
                            below: -200
                          - type: is_battery_level
                            condition: device
                            device_id: afda895cc1812b99521eb78710326b89
                            entity_id: f25a2fe7b99ed232a00fd0c82cb205e2
                            domain: sensor
                            above: 90
                            alias: QCELLs > 90%
                        sequence:
                          - alias: >-
                              On demarre la charge de SF2400 avec 0.3 de ce
                              qu'on inject en trop
                            sequence:
                              - device_id: a9bed78637a3d4199888177480ba0f4b
                                domain: select
                                entity_id: faa8306ea0f42cc0b510209a0e408c8e
                                type: select_option
                                option: Input mode
                              - device_id: a9bed78637a3d4199888177480ba0f4b
                                domain: number
                                entity_id: f2984ee0e6ebcf40e208c5a0d56b90d8
                                type: set_value
                                value: 0
                              - action: number.set_value
                                target:
                                  entity_id: number.eeb4aep1p032084_inputlimit
                                data:
                                  value: >
                                    {% set current =
                                    states('sensor.te31njn8n387601_l3_p') |
                                    float(0) %} {% set input =
                                    states('number.eeb4aep1p032084_inputlimit')
                                    | float(0) %}

                                    {% if -50 <= current <= 50 %}
                                      {{ input | round(0) }}

                                    {% else %}
                                      {% set current = current * -1 %}
                                      {% set delta = 0.3 * current %}
                                      {% set cible = input + delta %}
                                      {% set result = cible - 50 if cible > 0 else cible %}
                                      {{ [result, 900] | min | round(0) }}
                                    {% endif %}
                              - device_id: a9bed78637a3d4199888177480ba0f4b
                                domain: number
                                entity_id: 446540682f8a0142e01a5f8a2272926d
                                type: set_value
                                value: 200
                                enabled: false
                        alias: QCELLs full
                alias: QCELLS en Standby
              - conditions:
                  - condition: state
                    entity_id: sensor.qcells_etat
                    state:
                      - En charge
                sequence:
                  - alias: Si surplus de production
                    choose:
                      - conditions:
                          - condition: and
                            conditions:
                              - condition: numeric_state
                                entity_id: sensor.qcells_inverter_production_2
                                below: 20
                              - type: is_power
                                condition: device
                                device_id: 181b299767530862f68a9d7f84c40146
                                entity_id: 04b888d40622ee63c389a1da5046b77f
                                domain: sensor
                                below: -50
                        sequence:
                          - alias: Faut-il lancer la charge du SF2400 ?
                            choose:
                              - conditions:
                                  - condition: device
                                    device_id: a9bed78637a3d4199888177480ba0f4b
                                    domain: select
                                    entity_id: faa8306ea0f42cc0b510209a0e408c8e
                                    type: selected_option
                                    option: Output mode
                                sequence:
                                  - target:
                                      entity_id: number.eeb4aep1p032084_outputlimit
                                    data:
                                      value: >
                                        {% set current =
                                        states('sensor.te31njn8n387601_l3_p') |
                                        float %} {% set output =
                                        states('number.eeb4aep1p032084_outputlimit')
                                        | float %}

                                        {% if -50 <= current <= 50 %}
                                          {{ output | round(0) }}

                                        {% else %}
                                          {% set surplus = current * -1 %}
                                          {% set delta = 0.7 * surplus %}
                                          {{ (output - delta) | round(0) }}
                                        {% endif %}
                                    action: number.set_value
                                alias: >-
                                  SF2400 est-il en output, auquel ca il faut
                                  réduire son injection
                              - conditions: []
                                sequence:
                                  - sequence:
                                      - alias: >-
                                          SF2400 - Changement d'état OUT to IN si
                                          necessaire
                                        if:
                                          - condition: device
                                            device_id: a9bed78637a3d4199888177480ba0f4b
                                            domain: select
                                            entity_id: faa8306ea0f42cc0b510209a0e408c8e
                                            type: selected_option
                                            option: Output mode
                                        then:
                                          - device_id: a9bed78637a3d4199888177480ba0f4b
                                            domain: select
                                            entity_id: faa8306ea0f42cc0b510209a0e408c8e
                                            type: select_option
                                            option: Input mode
                                      - target:
                                          entity_id: number.eeb4aep1p032084_inputlimit
                                        data:
                                          value: >
                                            {% set current =
                                            states('sensor.te31njn8n387601_l3_p') |
                                            float %} {% set input =
                                            states('number.eeb4aep1p032084_inputlimit')
                                            | float %}

                                            {% if -50 <= current <= 50 %}
                                              {{ input | round(0) }}

                                            {% else %}
                                              {% set surplus = current * -1 %}
                                              {% set delta = 0.7 * surplus %}
                                              {{ (input + delta) | round(0) }}
                                            {% endif %}
                                        action: number.set_value
                        alias: 3CT negatif < -50W vérification sur QCELLS inject
                      - conditions:
                          - condition: or
                            conditions:
                              - condition: and
                                conditions:
                                  - condition: numeric_state
                                    entity_id: sensor.qcells_inverter_production_2
                                    below: 10
                                  - condition: device
                                    device_id: a9bed78637a3d4199888177480ba0f4b
                                    domain: select
                                    entity_id: faa8306ea0f42cc0b510209a0e408c8e
                                    type: selected_option
                                    option: Output mode
                              - condition: and
                                conditions:
                                  - condition: numeric_state
                                    entity_id: sensor.qcells_inverter_production_2
                                    below: sensor.qcells_production_solaire
                                enabled: false
                        sequence:
                          - target:
                              entity_id: number.eeb4aep1p032084_outputlimit
                            data:
                              value: >
                                {% set current =
                                states('sensor.te31njn8n387601_l3_p') | float
                                %}  {% set output =
                                states('number.eeb4aep1p032084_outputlimit') |
                                float %} {% set qcell =
                                states('sensor.qcells_inverter_production_2') |
                                float %}

                                {% if qcell <= 10 %}
                                  {{ output | round(0) }}

                                {% else %}
                                  {% set surplus = current * -1 %}
                                  {% set delta = 0.1 * output %}
                                  {{ (output - delta) | round(0) }}
                                {% endif %}
                            action: number.set_value
                alias: QCELLS en Charge
              - conditions:
                  - condition: state
                    entity_id: sensor.qcells_etat
                    state:
                      - En décharge
                sequence:
                  - choose:
                      - conditions:
                          - alias: >-
                              QCELLs à plus de 90%, on réduit la charge de
                              SF2400 si en charge
                            condition: and
                            conditions:
                              - condition: and
                                conditions: []
                              - condition: numeric_state
                                entity_id: sensor.qcells_batterie_level
                                above: 90
                              - condition: device
                                device_id: a9bed78637a3d4199888177480ba0f4b
                                domain: select
                                entity_id: faa8306ea0f42cc0b510209a0e408c8e
                                type: selected_option
                                option: Input mode
                        sequence:
                          - action: number.set_value
                            target:
                              entity_id: number.eeb4aep1p032084_inputlimit
                            data:
                              value: >
                                {% set current =
                                states('sensor.te31njn8n387601_l3_p') | float(0)
                                %} 

                                {% set input =
                                states('number.eeb4aep1p032084_inputlimit') |
                                float(0) %}

                                {% if -50 <= current <= 50 %}
                                  {{ input | round(0) }}

                                {% else %}
                                  {% set delta = 0.7 * current * -1 %}
                                  {% set cible = input - delta %}
                                  {% set result = cible - 50 if cible > 0 else cible %}
                                  {{ [result, 900] | min | round(0) }}
                                {% endif %}
                      - conditions:
                          - condition: numeric_state
                            entity_id: sensor.te31njn8n387601_l3_p
                            above: 50
                          - type: is_power
                            condition: device
                            device_id: afda895cc1812b99521eb78710326b89
                            entity_id: ef2eee2418adb0259f2f29dbd7ed8206
                            domain: sensor
                            above: 1900
                        sequence:
                          - sequence:
                              - if:
                                  - condition: device
                                    device_id: a9bed78637a3d4199888177480ba0f4b
                                    domain: select
                                    entity_id: faa8306ea0f42cc0b510209a0e408c8e
                                    type: selected_option
                                    option: Input mode
                                then:
                                  - device_id: a9bed78637a3d4199888177480ba0f4b
                                    domain: select
                                    entity_id: faa8306ea0f42cc0b510209a0e408c8e
                                    type: select_option
                                    option: Output mode
                                alias: >-
                                  SF2400 - Changement d'état IN to Out si
                                  necessaire
                              - action: number.set_value
                                target:
                                  entity_id: number.eeb4aep1p032084_outputlimit
                                data:
                                  value: >
                                    {% set current =
                                    states('sensor.te31njn8n387601_l3_p') |
                                    float(0) %} {% set output =
                                    states('number.eeb4aep1p032084_outputlimit')
                                    | float(0) %}

                                    {% if -50 <= current <= 50 %}
                                      {{ output | round(0) }}

                                    {% else %}
                                      {% set delta = 0.7 * current %}
                                      {% set cible = output + delta %}
                                      {% set result = cible - 50 if cible > 0 else cible %}
                                      {{ [result, 900] | min | round(0) }}
                                    {% endif %}
                        alias: >-
                          Qcells en Décharge mais on tire toujours de l'EDF, on
                          compense avec SF2400
                      - conditions:
                          - type: is_power
                            condition: device
                            device_id: a9bed78637a3d4199888177480ba0f4b
                            entity_id: b220a07315cd6e8c253e8c771528fd3e
                            domain: sensor
                            above: 50
                        sequence:
                          - sequence:
                              - action: number.set_value
                                target:
                                  entity_id: number.eeb4aep1p032084_outputlimit
                                data:
                                  value: >
                                    {% set current =
                                    states('sensor.te31njn8n387601_l3_p') |
                                    float(0) %} 

                                    {% set output =
                                    states('number.eeb4aep1p032084_outputlimit')
                                    | float(0) %}


                                    {% set delta = 0.3 * output %}

                                    {% set cible = output - delta %}

                                    {% set result = cible - 50 if cible > 0 else
                                    cible %}


                                    {% if -50 <= result <= 50 %}
                                      {{ output | round(0) }}

                                    {% else %}
                                      {{ [result, 900] | min | round(0) }}
                                    {% endif %}
                        alias: QCELLs est en Decharge mais SF aussi, on reduit SF
                alias: QCELLS en Decharge
        alias: Si HP
      - conditions:
          - condition: state
            entity_id: sensor.linky_current_price
            state:
              - HEURE CREUSE
        sequence:
          - alias: Faut-il lancer la charge du SF2400 ?
            choose:
              - conditions:
                  - condition: state
                    entity_id: sensor.qcells_etat
                    state:
                      - En décharge
                sequence:
                  - sequence:
                      - target:
                          entity_id: number.eeb4aep1p032084_inputlimit
                        data:
                          value: "0"
                        action: number.set_value
                alias: >-
                  QCELLs est en Décharge alors mettre le SF2400 en input mais à
                  0W !
              - conditions:
                  - condition: and
                    conditions:
                      - condition: state
                        entity_id: sensor.qcells_etat
                        state:
                          - Standby
                        alias: Si Qcells est Standby
                      - condition: numeric_state
                        entity_id: sensor.qcells_batterie_level
                        below: 11
                        alias: Si QCells < 11%
                      - type: is_battery_level
                        condition: device
                        device_id: a9bed78637a3d4199888177480ba0f4b
                        entity_id: 23f1ec717c4dcf6732d11bfaac92d296
                        domain: sensor
                        below: 35
                        alias: Si SF2400 < 35%
                sequence:
                  - sequence:
                      - alias: SF2400 - Changement d'état OUT to IN si necessaire
                        if:
                          - condition: device
                            device_id: a9bed78637a3d4199888177480ba0f4b
                            domain: select
                            entity_id: faa8306ea0f42cc0b510209a0e408c8e
                            type: selected_option
                            option: Output mode
                        then:
                          - device_id: a9bed78637a3d4199888177480ba0f4b
                            domain: select
                            entity_id: faa8306ea0f42cc0b510209a0e408c8e
                            type: select_option
                            option: Input mode
                      - target:
                          entity_id: number.eeb4aep1p032084_inputlimit
                        data:
                          value: "900"
                        action: number.set_value
                      - if:
                          - condition: numeric_state
                            entity_id: number.eeb4aep1p032084_inputlimit
                            below: 800
                        then:
                          - device_id: a9bed78637a3d4199888177480ba0f4b
                            domain: number
                            entity_id: 446540682f8a0142e01a5f8a2272926d
                            type: set_value
                            value: 900
                alias: Charge SF2400 Si Qcells vide et SF2400 <35%
              - conditions:
                  - type: is_battery_level
                    condition: device
                    device_id: a9bed78637a3d4199888177480ba0f4b
                    entity_id: 23f1ec717c4dcf6732d11bfaac92d296
                    domain: sensor
                    above: 89
                sequence:
                  - sequence:
                      - alias: SF2400 - Changement d'état IN to OUT si necessaire
                        if:
                          - condition: device
                            device_id: a9bed78637a3d4199888177480ba0f4b
                            domain: select
                            entity_id: faa8306ea0f42cc0b510209a0e408c8e
                            type: selected_option
                            option: Input mode
                        then:
                          - device_id: a9bed78637a3d4199888177480ba0f4b
                            domain: select
                            entity_id: faa8306ea0f42cc0b510209a0e408c8e
                            type: select_option
                            option: Output mode
                      - target:
                          entity_id: number.eeb4aep1p032084_outputlimit
                        data:
                          value: "300"
                        action: number.set_value
                alias: SF2400 est à >=90%
              - conditions:
                  - condition: and
                    conditions:
                      - condition: device
                        device_id: a9bed78637a3d4199888177480ba0f4b
                        domain: select
                        entity_id: faa8306ea0f42cc0b510209a0e408c8e
                        type: selected_option
                        option: Output mode
                        alias: "SF2400 Mode : output"
                      - type: is_battery_level
                        condition: device
                        device_id: a9bed78637a3d4199888177480ba0f4b
                        entity_id: 23f1ec717c4dcf6732d11bfaac92d296
                        domain: sensor
                        below: 41
                        alias: SF2400 Bat <=41%
                    alias: SF2400 <=41% et AC Output
                sequence:
                  - sequence:
                      - target:
                          entity_id: number.eeb4aep1p032084_outputlimit
                        data:
                          value: "0"
                        action: number.set_value
                        alias: "SF2400 Stop decharge : Output 0W"
                    alias: Stop decharge SF2400
                alias: SF2400 est à <=40% et si il etait en décharge, on stop
        alias: Si HC
mode: single


Revision #1
Created 2026-05-17 19:05:26 UTC by Geoffrey
Updated 2026-05-17 19:05:38 UTC by Geoffrey