Tuya PJ-ZGD01 automatisation portail

Bonjour,

N’ayant pas trouvé d’exemples qui me convenaient, je partage ici ce que j’ai mis en place
A préciser que je commande le portail via tableau de bord (iphone) tout en conservant les télécommandes d’origine (matériel FAAC 391)
L’automatisation repositionne le trigger du PJ-ZGD01 en fonction du mode ouverture ./ fermeture souhaité et de l’état du capteur contact (ouvert / fermé)
Mon capteur de position est positionné de telle sorte qu’il est actif (True) lorsque le portail est fermé.
Rappel principe module PJ-ZGD01:

  • capteur position sur false (dans mon cas portail ouvert) => trigger déclenche impulsion de commande lorsqu’il passe de true (activé) à false (désactivé)
  • capteur position sur true (dans mon cas portail fermé) => trigger déclenche impulsion de commande lorsqu’il passe de false (désactivé) à true (activé).

Entités créées:

  • input_boolean =>portail fermeture => bouton commande fermeture
  • input_boolean =>portail ouverture => bouton commande ouverture
  • timer fermeture => correspond au temps de fermeture du portail (pour moi tempo 30s)
  • timer ouverture => correspond au temps d’ouverture du portail (pour moi tempo 26s)
  • input select (liste déroulante) => pour état du portail , fermé , ouvert , fermeture en cours, ouverture en cours

entités liées au module:

  • binary-sensor => contact lorsque portail fermé (contact aimant raccordé au module)
  • portail_trigger => commande du module déclenchant une impulsion pour commande porte

le code fermeture intègre la fermeture automatique du portail au coucher du soleil

Première publication => donc surement pas la meilleure manière de faire

Commande fermeture:

alias: Portail commande fermeture
description: ""
triggers:
  - entity_id:
      - input_boolean.portail_fermeture
    to: "on"
    trigger: state
  - trigger: sun
    event: sunset
    offset: "00:30:00"
conditions: []
actions:
  - if:
      - condition: state
        entity_id: binary_sensor.portail_garage_door_contact
        state: "on"
      - condition: state
        entity_id: timer.timer_portail_ouverture
        state: idle
      - condition: state
        entity_id: timer.timer_portail_fermeture
        state: idle
    then:
      - if:
          - condition: state
            entity_id: switch.portail_trigger
            state: "on"
        then:
          - action: switch.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: switch.portail_trigger
        else:
          - action: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.portail_trigger
          - delay:
              hours: 0
              minutes: 0
              seconds: 0
              milliseconds: 250
          - action: switch.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: switch.portail_trigger
      - action: timer.start
        metadata: {}
        data: {}
        target:
          entity_id: timer.timer_portail_fermeture
      - delay:
          hours: 0
          minutes: 0
          seconds: 30
          milliseconds: 0
  - action: input_boolean.turn_off
    metadata: {}
    data: {}
    target:
      entity_id: input_boolean.portail_fermeture
mode: single

commande ouverture:

alias: Portail commande ouverture
description: ""
triggers:
  - entity_id:
      - input_boolean.portail_ouverture
    to: "on"
    trigger: state
conditions: []
actions:
  - if:
      - condition: state
        entity_id: binary_sensor.portail_garage_door_contact
        state: "off"
      - condition: state
        entity_id: timer.timer_portail_fermeture
        state: idle
      - condition: state
        entity_id: timer.timer_portail_ouverture
        state: idle
    then:
      - if:
          - condition: state
            entity_id: switch.portail_trigger
            state: "off"
        then:
          - action: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.portail_trigger
        else:
          - action: switch.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: switch.portail_trigger
          - delay:
              hours: 0
              minutes: 0
              seconds: 0
              milliseconds: 250
          - action: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.portail_trigger
      - action: timer.start
        metadata: {}
        data: {}
        target:
          entity_id: timer.timer_portail_ouverture
      - delay:
          hours: 0
          minutes: 0
          seconds: 26
          milliseconds: 0
  - action: input_boolean.turn_off
    metadata: {}
    data: {}
    target:
      entity_id: input_boolean.portail_ouverture
mode: single

tableau de bord:
images tableau de bord dans 3 états différents:
principe :

  • contact fermé actionné = affichage position portail = accès au bouton ouverture
  • après commande ouverture ou fermeture = affichage du timer correspondant
  • à la fin du timer ouverture ou fermeture => affichage du switch de commande fermeture ou ouverture

capture_1
Capture_2

Capture_3

code tableau de bord:

type: custom:mod-card
style: |
  ha-card {
    border: 1px solid blue;
    padding: 6px !important;
    }
card:
  type: vertical-stack
  cards:
    - type: entities
      entities:
        - entity: binary_sensor.portail_garage_door_contact
          tap_action:
            action: none
          name: Portail
          card_mod:
            style:
              hui-generic-entity-row $: |
                state-badge {
                  display: none;                   
                }                 
                :host {
                  font-size: 23px; 
                }
                state {
                  alignment:right;
                }
                name {
                  alignment:left;
                }
                .info {
                  margin-left: 4px !important;
                }
      card_mod:
        style: |
          ha-card {
            --ha-card-background: transparent;
            --ha-card-border-width: 0px;
            --ha-card-padding-left: 4px
          }
    - type: conditional
      conditions:
        - condition: state
          entity: timer.timer_portail_ouverture
          state: active
      card:
        type: custom:timer-bar-card
        entity: timer.timer_portail_ouverture
        name: ouverture
        tap_action:
          action: none
        hold_action:
          action: none
        card_mod:
          style:
            hui-generic-entity-row $: |
              :host {
                max-height: 20px
              } 
    - type: conditional
      conditions:
        - condition: state
          entity: timer.timer_portail_fermeture
          state: active
      card:
        type: custom:timer-bar-card
        entity: timer.timer_portail_fermeture
        name: fermeture
        tap_action:
          action: none
        hold_action:
          action: none
        card_mod:
          style:
            hui-generic-entity-row $: |
              :host {
                max-height: 20px
              } 
    - type: conditional
      conditions:
        - condition: state
          entity: binary_sensor.portail_garage_door_contact
          state: "off"
        - condition: state
          entity: timer.timer_portail_ouverture
          state: idle
        - condition: state
          entity: timer.timer_portail_fermeture
          state: idle
      card:
        type: entities
        entities:
          - entity: input_boolean.portail_ouverture
            name: Ouverture
            tap_action:
              action: none
            hold_action:
              action: none
            icon: mdi:garage
            card_mod:
              style:
                hui-generic-entity-row $: |
                  :host {
                    max-height: 20px
                  } 
    - type: conditional
      conditions:
        - condition: state
          entity: binary_sensor.portail_garage_door_contact
          state: "on"
        - condition: state
          entity: timer.timer_portail_ouverture
          state: idle
        - condition: state
          entity: timer.timer_portail_fermeture
          state: idle
      card:
        type: entities
        entities:
          - entity: input_boolean.portail_fermeture
            name: Fermeture
            tap_action:
              action: none
            hold_action:
              action: none
            icon: mdi:garage-open
            card_mod:
              style:
                hui-generic-entity-row $: |
                  :host {
                    max-height: 20px
                  }