Je domotise mon portail

Mes objectifs 

  • Avoir un bouton sur le dashboard qui permette d’actionner le portail (Ordre=On + pause + Off)
  • Avoir le retour de l’Ă©tat rĂ©el du portail (ouvert / fermĂ©)
  • Lier HA et Alexa pour pouvoir dire “Alexa ouvre le portail” par exemple

Contexte

J’ai un portail Came battant, Carte ZL180.

Présentation de la carte de commande

Tout va se passer au niveau des borniers de la carte de commande en bas Ă  droite, voici l’identification des bornes

Comment ouvrir/fermer le portail ?

C’est un contact sec qui peut ĂŞtre symbolisĂ© par cette sĂ©quence qui va ouvrir (ou fermer) le portail :

  • ON sur Borne 2 – Borne 7
  • pause 500ms
  • OFF sur Borne 2 – Borne 7

Ces éléments sont documentés page 8 de la notice :

Comment savoir si le portail est ouvert ou fermé ?

Je n’ai pas trouvĂ© de contact sec accessible qui donne cette information, j’ai utilisĂ© un dispositif de signalisation “portail ouvert” qui sous potentiel 24v entre les bornes 5 et 10 , cette information est documentĂ© page 6 de la notice :

PrĂ©fĂ©rant travailler avec des contacts sec on/off sans potentiel, c’est Ă  dire des circuits ouverts ou fermĂ©s, j’ai transformĂ© cette information 0/24v en on/off.

 

Pour rĂ©aliser ce montage, rien de plus simple, 4 câbles et un relais 24V. J’avais dĂ©ja un relais, j’ai donc utilisĂ© celui-lĂ , c’est un IEC255 qui ressemble Ă  cela :

J’ai assez de place dans le boitier platine du Came pour y placer ce relais en haut Ă  droite.

Voici le câblage avec le support :

Quel Ă©quipement domotique ?

A ce stade, il faut choisir quel Ă©quipement domotique va envoyer Ă  Home Assistant l’information de portail ouvert / portail fermĂ© et quel Ă©quipement est capable de commander un contact sec qui va dĂ©clencher l’ouverture. IdĂ©alement, le mĂŞme Ă©quipement pour faire les deux.

J’ai fait plusieurs essais, dans un premier temps avec un dĂ©tecteur porte/fenĂŞtre pour envoyer le portail ouvert/fermĂ©, en Zigbee mais je pense que la proximitĂ© du transfo posait souci, je ne sais pas, ce n’Ă©tait pas convainquant. Puis cet Ă©quipement ne permettait pas de commander un relais.

J’aurais vĂ©ritablement prĂ©fĂ©rĂ© utiliser le Zigbee car pour moi le Wifi n’est pas un protocole domotique.

Finalement, voici mon choix, très simple : Un Sonoff Basic 

Cet Ă©quipement qui valait moins de 4€ il n’y a pas longtemps coute entre 5 et 6€ au moment oĂą j’Ă©cris ceci sur AliExpress et dans les 14 € sur Amazon.

Attention, j’ai dĂ» un peu bricoler, souder mais pour ce prix, cela vaut le coup (et le coĂ»t).

Préparation du Sonoff Basic

Modifier le Sonoff Basic pour que la sortie soit un contact sec

Le Sonoff Basic, R2 dans mon cas est un Ă©quipement qui bascule un relais quand on lui envoie une commande On ou Off sur GPIO12.

esp1

Le souci dans cette configuration c’est que j’envoie le potentiel d’entrĂ©e donc 220V sur la sortie, entre les bornes de sortie, on a donc soit 0v soit 220v. Ce n’est pas ce dont j’ai besoin, j’ai juste besoin de fermer un circuit (court-circuit) entre les bornes de sortie. J’ai donc besoin de ce type de schĂ©ma :

esp2

Pour rĂ©aliser cette modification, j’ai rĂ©alisĂ© ce retex :

Relier les Ă©quipements

(cela peut ĂŞtre fait après la configuration logiciel, c’est au choix)

Voici le schéma complet 

Je n’ai pas oubliĂ© d’alimenter en 220v le Sonoff sur le bornier du bas et j’ai bien mis le relais sur son support noir.

Flasher le Sonoff Basic et lui installer ESP Home

Intégrer le Sonoff Basic dans Home Assistant

Une fois flashé dans ESP Home, le nouvel équipement est reconnu dans Home Assistant dans les intégrations

Je peux me lancer dans la configuration des entités.

Récupérer les informations sur esphome.io

Il est toujours mieux de récupérer à la source les informations, à défaut, beaucoup de sites, tutos ou forums peuvent donner les éléments de configuration nécessaires.

Pour mon Sonoff Basic, je vais sur 

Evidemment, je ne suis pas la doc, je change la led pour pouvoir la commander et je configure Rx et Tx pour avoir deux input de plus :

esphome:
  name: esphome-web-a8d117
  friendly_name: Portail

esp8266:
  board: esp8285

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xx"

ota:

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO0
      mode:
        input: true
        pullup: true
      inverted: true
    name: "Bouton"
  - platform: gpio
    pin:
      number: GPIO1
      mode:
        input: true
        pullup: true
      inverted: true
    name: "Tx"
  - platform: gpio
    pin:
      number: GPIO3
      mode:
        input: true
        pullup: true
      inverted: true
    name: "Rx"

switch:
  - platform: gpio
    name: "Relais"
    pin: GPIO12
    id: relay
    on_turn_on:
    - delay: 0.5s
    - switch.turn_off: relay
  - platform: gpio
    name: "Led"
    pin: GPIO13
    id: led

wifi:
  ssid: xxx
  password: xxx

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: xxx
    password: xxx

captive_portal:
    

Je garde le code ci-dessus comme rĂ©fĂ©rence pour d’autres Ă©quipements mais finalement pour ma domotisation de portail, je simplifie encore le code en supprimant tout ce qui n’est pas utile pour le projet :

esphome:
  name: esphome-web-a8d117
  friendly_name: Portail

esp8266:
  board: esp8285

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xx/xx="

ota:

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO1
      mode:
        input: true
        pullup: true
      inverted: true
    name: "Tx"

switch:
  - platform: gpio
    name: "Relais"
    pin: GPIO12
    id: relay
    on_turn_on:
    - delay: 0.5s
    - switch.turn_off: relay

wifi:
  ssid: xx
  password: xx

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: esp_portail
    password: xx

Installation du code sur le Sonoff

Ensuite je sauvegarde puis j’installe.

Une fois l’installation faite, le module se relance, il faut ĂŞtre un peu patient.

Nota : J’ai eu quelques soucis car les variables !secret n’Ă©taient pas configurĂ©es chez moi, j’ai mis en clair et cela a fonctionnĂ©. Les variables des secrets se configurent en haut Ă  droite de l’interface ESP Home.

  ssid: !secret wifi_ssid
  password: !secret wifi_password

RĂ©sultat de l’intĂ©gration

Comme tout s’est bien passĂ©, je me retrouve avec plusieurs entitĂ©s sur son ESP nouvellement crĂ©Ă©.

Configuration des Entités sur HA

Configuration du capteur Portail

J’utilise l’entrĂ©e Tx (GPIO01) pour dĂ©tecter le contact sec du portail.


Je renomme ce capteur en “Portail” et je lui affecte “Ouverture” pour avoir les Ă©tats  Ouvert / FermĂ©

Je change son id qui sera : binary_sensor.portail_ouvert_ferme

Je désactive les deux autres capteurs (Bouton et Rx) qui ne me sont pas utiles.

Configuration du contrĂ´le Commande du Portail

Il s’agit du switch relais que j’ai renommĂ© Commande du Portail avec id: switch.portail_relais

Configuration du Cover Portail

Il est nĂ©cessaire d’avoir un cover pour permettre 2 choses :

  • D’avoir l’Ă©tat qui remonte du capteur Portail (binary_sensor.portail_ouvert_ferme) cela alors que les commandes sont Ă  passer au contrĂ´le Commande du Portail (switch.portail_relais)
  • De gĂ©rer le turn_off qui sera en rĂ©alitĂ© un turn_on

Le code du cover placé dans covers.yaml est le suivant :

- platform: template
  covers:
    portail:
      device_class: window
      friendly_name: "Portail"
      unique_id: cover.portail
      value_template: "{{ is_state('binary_sensor.portail_ouvert_ferme', 'on') }}"
      open_cover:
        service: switch.turn_on
        target:
            entity_id: switch.portail_relais
      close_cover:
        service: switch.turn_on
        target:
            entity_id: switch.portail_relais
      icon_template: >-
        {% if is_state('binary_sensor.portail_ouvert_ferme', 'on') %}
          mdi:gate-open
        {% else %}
          mdi:gate
        {% endif %}

A noter que dans ce code, je gère l’icone Ă  utiliser. La couleur sera gĂ©rĂ©e dans la carte bouton au moment de l’affichage du bouton.

J’ai utilisĂ© la device_class: window car c’est la plus proche d’un portail (ouvert ou fermĂ©) mais les autres class rendent obligatoire un code Ă  4 chiffres en commande vocale ce que je ne souhaite pas si je veux demander Ă  Alexa d’ouvrir le portail.

CrĂ©ation d’une carte bouton

type: custom:button-card
show_name: false
tap_action:
  action: toggle
entity: cover.portail
state:
  - value: close
    color: gray
  - value: open
    color: red

Lier HA et Alexa pour commander Ă  la voix

Dire “Alexa ouvre le portail” est quand mĂŞme le graal de tout cela.

Il me reste a Ă©tablir le lien.

Pour cela je vais dans Paramètres/ Assistants vocaux

En bas à gauche, je clique sur x entité(s) exposée(s)

et je vis cherche mon cover.portail

C’est tout !

Bonus : Ping pour vĂ©rifier que l’Ă©quipement est en ligne

J’ai une confiance toute relative aux Ă©quipements en wifi (contrairement au Zigbee) et je me rassure en vĂ©rifiant de temps en temps leur connectivitĂ©.

Pour cela, rien de plus simple, un petit ping toutes les 5min via un binary_sensor qui me donner l’information sur mon Dashboard, je place cette config dans mon fichier binary_sensor.yaml

- platform: ping
  host: !secret ip_portail
  name: ping_portail

Evidemment, il faut bien configurer !secret ou remplacer par l’IP en brut.

La personnalisation de l’icone est abordĂ© sur un autre retex:

Une question ? une remarque ? un complément ?

Utilisez cette discussion pour Ă©voquer ce retex :