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 :