I- Choix du module domotique Shelly 1 :

  • Après avoir piloté l'ouverture et la fermeture de ma porte de garage avec un module Wemos Lolin32 Lite sous firmware ESP Easy Mega, j'ai voulu faire évoluer mon système en utilisant un module Shelly 1 plus compact et nécessitant moins de bricolage. Cette solution peut aussi être très rapidement mise en place.
    Plus d'info sur le Shelly1 sur la page suivante https://shelly.cloud/products/shelly-1-smart-home-automation-relay/.
  • L'autre avantage du Shelly 1, contrairement au Sonoff Mini, c'est qu'il est possible de commander un contact sec à travers son relais, ce qui est nécessaire pour pouvoir actionner le moteur de ma porte de garage qui fonctionne par impulsions : un appui pour ouvrir, un autre appui pour arrêter, un nouvel appui pour refermer et ainsi de suite.
  • Il est possible d'y connecter un détecteur (voire deux mais je n'ai pas testé) en passant par les broches de flashage. Ce détecteur est obligatoire pour connaître la position dans laquelle est notre portail : ouvert ou fermé. J'utilise pour cela un contacteur à aimant qui est en position fermée (les 2 aimants se touchent) lorsque le portail est fermée. Dès qu'il s'ouvre, les aimants se décollent, le circuit est alors ouvert et cela change son état.
  • Ce module peut aussi être alimenté en 12v, entre 24 et 60V ou en 220V. Là aussi, c'est un autre avantage permettant beaucoup de flexibilité.

II- Choix du firmware Tasmota :

  • Pour des questions d'uniformisation avec tous mes autres modules et aussi de simplicité, j'ai opté pour le firmware Tasmota qui est vraiment très complet et en constante évolution. Site documentation : https://tasmota.github.io/docs/
    Site officiel : https://github.com/arendst/tasmota/
  • L'avantage de Tasmota est aussi de pouvoir utiliser directement les modules via leur interface Web en se connectant avec un navigateur Internet et en renseignant leur IP locale. Du coup, si votre serveur domotique est en rade (et ça arrivera) vous pourrez toujours avoir accès aux modules et les commander voire même les programmer avec la fonction Timer.
  • Les modules sous Tasmota s'intègrent très facilement dans différentes solutions domotiques comme Home Assistant, OpenHAB, Domoticz, ... Ma préférence va vers Home Assistant car les modules sous Tasmota sont automatiquement détectés grâce aux messages MQTT (ce qui n'était pas le cas avec mon module sous ESP Easy Mega).
  •  Il faut tout d'abord flasher le module Shelly pour lui installer le firmware Tasmota (voir cet article où je détaille comment faire mais l'arrivée de l'outil Tasmotizer pour faire cela a simplifié énormément la procédure : plus besoin d'IDE Arduino ou de l'outil esptool.py).
  • Pour avoir des infos sur le module Shelly 1 avec Tasmota voir ces pages : https://templates.blakadder.com/shelly_1.html et aussi https://tasmota.github.io/docs/devices/Shelly-1/.

III- Branchements :

  • IMPORTANT : Il est impératif de bien régler la tension qui alimentera le module Shelly 1 sous peine de le détruire. Pour cela, il faut positionner le cavalier sur les 2 broches permettant ce réglage.
    Sur le schéma ci-contre, le cavalier vert correspond à une alimentation en 220V AC.

  • J'utilise les broches GND et Rx/Gpio3 pour y brancher mon contacteur de porte. Ces broches étant très petites, j'ai utilisé des câbles de prototypages mâles à embouts carrés (les embouts ronds ont du mal à passer et d'ailleurs ne sont pas utilisables pour le flashage qui nécessite le branchement des 5 broches).

  • Je branche 2 fils sur les bornes 0 et 1 qui iront sur les bornes du contact sec (24 V) de la carte électronique du boîtier commandant le moteur du portail.

  • Sur les bornes N et L, je branche, un câble avec une fiche de courant qui se branchera sur une prise en 220V.

  • Je n'utilise pas la borne SW car je commande mon portail via des télécommandes radio et que je n'ai pas d'interrupteur mural pour le faire. Mais si j'en avais un, c'est ici que je le brancherais.

REMARQUE : Il est possible de brancher le détecteur d'ouverture sur la borne SW à condition d'alimenter le Shelly 1 avec du 12 Volts. NE PAS LE FAIRE si le Shelly 1 est alimenter en 220 Volts comme dans mon projet car c'est dangereux ! Cette vidéo l'explique très bien https://invidious.fdn.fr/watch?v=WEZUxXNiERQ.

 

 

 

 

IV- Réglages dans Tasmota :

Pour info, la version du firmware installé au moment au j'écris est la 8.4.0.
Pour avoir les détails des commandes à taper dans la console pour paramétrer le module : https://tasmota.github.io/docs/Commands/
 
Après le flashage du module, il est impératif de procéder à son paramétrage.
 

A- Réglages WIFI et adresse IP fixe

Au premier démarrage, il faut se connecter au nouveau point d'accès Wifi qui se nomme "Tasmota-xxxx" et saisir via un navigateur Internet l'adresse IP : http://192.168.4.1. On arrive alors sur l'interface Web (Web UI) d'administration du module.
On a 3 minutes pour renseigner la borne wifi (SSID + mot de passe) à laquelle se connectera le module. On peut même indiquer un deuxième point d'accès de secours. On ne change rien d'autre et on valide. Le module va redémarrer et se connecter au réseau local wifi avec une nouvelle adresse IP sur le même segment réseau (192.168.1.x pour chez moi). Il faut maintenant scanner le réseau pour retrouver la nouvelle adresse IP du module. Sous Ubuntu, dans une console d'émulateur de terminal, je tape la commande qui me liste tous les appareils connectés au réseau :
nmap -sP 192.168.1.0/24

Une fois que l'on connaît cette nouvelle adresse, on la saisit dans son navigateur pour arriver à nouveau sur l'interface d'administration. On clique sur le menu "Console" et on tape les lignes de commande suivantes qui vont fixer les réglages réseau pour ce Shelly1 (il s'agit de mes réglages à moi, à vous de les adapter) :

IPAddress1 192.168.1.83
IPAddress2 192.168.1.1
IPAddress3 255.255.255.0
IPAddress4 192.168.1.1

On n'oublie pas de redémarrer en tapant (on peut aussi le faire via l'interface d'administration) :

Restart 1

Il ne reste plus qu'à se reconnecter avec son navigateur à la nouvelle adresse IP que l'on vient de fixer et de continuer le paramétrage.

B- Menu "Configuration" -> "Configuration du modèle" :

  • On se base sur le modèle existant "Shelly 1 (46)" et je l'ai nommé "Garage".

  • J'ai affecté aux GPIO 0, 1, 3 et 12 la fonction "Utilisateur (255)", ce qui permettra de personnaliser ces broches dans la configuration du module par la suite.

  • J'ai utilisé le GPIO 12 pour y affecter un Relais2 virtuel car c'est la seule solution que j'ai trouvée pour dissocier la broche GPIO 3 du Relais1. Peut-être qu'une autre broche conviendrait mieux mais avec celle-ci le système fonctionne 😉.

  • Je n'oublie pas d'enregistrer.

 

 

C- Menu "Configuration" -> "Configuration du module" :

Shelly1 Garage Config Module

 

  • Je choisis comme Type de module, le modèle "Garage (0)" crée précédemment.

  • J'affecte le GPIO 3 en tant qu' "Inter.2 (10)" (interrupteur2 ou switch2) et le GPIO 12 en tant que "Relais2 (22)".

  • Je n'oublie pas d'enregistrer.

 

 

 

 

 

 

D- Menu "Configuration" -> "AUTRES paramètres" :

Shelly1 Garage Config Autres

 

  • On coche le mot de passe pour accéder à cette interface et on en saisit un robuste. Il ne faudrait pas que quelqu'un connecté au réseau interne puisse mettre le bazar ou puisse ouvrir la porte du garage trop facilement.

  • On coche la case MQTT activé car toute la communication avec le serveur domotique se fera par ce biais.

  • On indique le nom de l'appareil "Device Name" de façon à le reconnaître facilement parmi tous les autres modules Tasmota.

  • On indique les surnoms (friendly_name) des 2 relais de notre module. J'ai nommé le premier "relais1" (quelle originalité) et le deuxième (qui est virtuel) "position" car il est attaché au contacteur d'ouverture.

  • On n'oublie pas d'enregistrer.

 

 

 

 

 

 

 

 

 

 

 Shelly1 Garage Config MQTT

 

E- Menu "Configuration" -> "Configuration MQTT" :

  • Il faut maintenant indiquer les paramètres de connexion au broker MQTT qui tourne sur mon NAS Synology.

  • Il faut donc indiquer l'adresse IP du NAS, son port (1883 par défaut), sans oublier le nom d'utilisateur et son éventuel mot de passe.

  • On indique aussi un nom de topic parlant et court : ici "portail".

F- Commandes à taper dans la console de Tasmota

Maintenant tout le reste se fera via la console de Tasmota accesible via le menu principal.

  • Comme on passe par une broche serie (GPIO3), il faut désactiver les "serial logs" avec la commande :
SerialLog 0 
  • Pour éviter un déclenchement au redémarrage du module :
PowerOnState 0
SwitchRetain 1
  • Pour donner des noms explicites aux boutons de la Web UI (qui correspondent respectivement à l'état des relais 1 et 2):
WebButton1 Actionner Portail
WebButton2 État
  • Le relais 1 ne doit être actionné que brièvement pour envoyer l'impulsion qui commandera le moteur. Il doit donc agir comme un bouton poussoir pendant un temps court (ici 1,5 secondes) :
PulseTime1 15
  • L'interrupteur1 est défini comme un bouton poussoir (dans ma configuration, je ne pense pas que ça ait une importance) :
SwitchMode1 3
  • Pour régler l'heure en tenant compte des heures d'hiver et d'été :
TimeZone 99
  • Pour indiquer la localisation :
Latitude 43.xxxxxxx
Longitude 2.xxxxxxx
  • Désactive la sauvegarde de l'état des relais et de s'en servir lors d'un restart (on peut aussi taper "so"  à la place de "setoption") :
SetOption0 0
  • Pour éviter un reset si on appuie longtemps sur le bouton :
SetOption1 1
  • Pour une détection automatique du module dans Home Assistant :
SetOption19 1
  • Pour afficher dans la Web UI, l'adresse IP et le nom d'hôte :
SetOption53 1
  • Pour envoyer la commande tele/%topic%/STATE en plus de stat/%topic%/RESULT pour les commandes State, Power et n'importe quelle autre commande allumant une lumière :
SetOption59 1

Shelly1 Garage WebUI

 

G- Aspect final de la Web UI

Voici donc comment se présente l'interface du module Shelly, une fois tous les réglages effectués, quand on s'y connecte via un navigateur Internet.

On voit son nom (hostname) et son adresse IP.

On a 2 boutons correspondant aux 2 relais. Le premier bouton, comme son nom l'indique, permet d'actionner le portail. Le 2e bouton  "État" correspond au relais virtuel permettant de connaître la position du détecteur d'ouverture.
Ici le détecteur est en position ON qui correspond à la position fermée : les 2 aimants se touchent, le circuit est fermé.

 

 

V- Réglages dans Home Assistant :

Maintenant on va s'attaquer à la partie dans Home Assistant. Je ne développerai pas l'utilisation de HA mais je fournis juste mes fichiers de configuration.
Voir cette page spécifique où je donne d'autres infos sur ma configuration de Home Assistant.

Pour avoir des infos sur Home Assistant voir :

A- Fichiers de configuration yaml

On crée un nouveau fichier /config/covers.yaml et on y colle ce code :

- platform: mqtt
  name: Garage
  command_topic: "portail/cmnd/POWER1"
  payload_open: "ON"
  payload_close: "ON"
  payload_stop: "ON"
  state_topic: "portail/stat/POWER2"
  state_open: "OFF"
  state_closed: "ON"
  optimistic: false
  retain: false

- platform: template
  covers:
    garagedoor:
      friendly_name: Portail Garage
      value_template: '{{ states.cover.Garage.state == "OFF" }}'
      icon_template: '{% if states.cover.Garage.state == "OFF" %}hass:garage-open{% else %}hass:garage{% endif %}'
      open_cover:
        - condition: state
          entity_id: cover.Garage
          state: 'FERMÉ'
        - service: cover.open_cover
          entity_id: cover.Garage
      close_cover:
        - condition: state
          entity_id: cover.Garage
          state: 'OUVERT'
        - service: cover.close_cover
          entity_id: cover.Garage

Pour que ce fichier soit pris en compte dans Home Assistant, il faut rajouter cette ligne dans le fichier "configuration.yaml" :

cover: !include covers.yaml

B- Résultat

Voici donc ce qu'on peut obtenir dans Home Assistant avec tous ces réglages :

Shelly1 Garage HA fermé        Shelly1 Garage HA ouvert

On remarque qu'en fonction de l'état d'ouverture, on ne peut agir que dans un sens (ce qui correspond à la motorisation de mon portail) : si le portail est fermé, on ne peut que l'arrêter ou l'ouvrir ; par contre si le portail est ouvert, on ne peut que l'arrêter ou le fermer.

L'icône associée varie elle aussi en fonction de l'état du portail, tout comme le badge en haut avec le cercle rouge.

C- Notifications

Il est intéressant d'être notifié en cas d'ouverture du portail. Comme on peut le voir sur cette page https://www.home-assistant.io/integrations/#notifications, HA propose d'envoyer des notifications sur une pléthore de plateformes : ça va de la simple notification, à l'envoi d'un courriel, d'un SMS (avec Free par exemple), d'un message via Mastodon ou Matrix (c'est un signe qui montre là la richesse de HA par rapport à Jeedom), sans oublier évidemment les habituels GAFAM ...

Du coup, j'ai testé la notification sur Tchap qui est une instance Matrix réservée aux personnels de l'Éducation Nationale (dont je fais partie). Je me suis donc créé un salon privé auquel il n'y a que moi qui ait accès mais malgré mes recherches (format username : "@prenom.nom-ac-montpellier:agent.education.tchap.gouv.fr", ...), IMPOSSIBLE de me connecter à Tchap. Il faudrait tester avec une autre instance Matrix...
Info pour paramétrer son composant Matrix dans son fichier configuration.yaml : https://www.home-assistant.io/integrations/matrix/

Du coup, j'ai testé la notification par courriel en m'appuyant sur cette page : https://www.home-assistant.io/integrations/smtp/. Il est impératif que le serveur SMTP soit correctement paramétré sinon il n'apparaîtra pas dans la liste des services "notify" ! Vérifiez bien l'encryption "tls" ou "starttls", le n° de port, les identifiants de connexion...
Voici les lignes insérées dans le fichier /config/automations.yaml :

- id: '1596201708722'
  alias: Notif Ouverture Portail Garage
  description: Permet d'envoyer un courriel lorsque le portail s'ouvre.
  trigger:
  - device_id: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    domain: switch
    entity_id: switch.shelly1_2_garage_ip83_position
    platform: device
    type: turned_off
  condition: []
  action:
  - data:
      message: La porte du garage vient de s'ouvrir !!
      title: '[MonHA] Portail Garage OUVERT'
    service: notify.courriel
  mode: single

 Évolution de la notification via l'automatisation suivante :

alias: Notification Portail Garage FERMÉ
description: Indique que le portail a été fermé.
trigger:
  - platform: device
    type: turned_on
    device_id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    entity_id: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
    domain: switch
    for:
      hours: 0
      minutes: 0
      seconds: 0
condition:
  - condition: template
    enabled: true
    value_template: |-
      {% for state in (states.automation
         | selectattr('attributes.last_triggered', 'defined')
         | selectattr('attributes.last_triggered')
         | sort(attribute='attributes.last_triggered', reverse=true)) [0:1] -%}
         {{ state.name != state_attr('automation.notification_portail_garage_ferme', 'friendly_name') }}
      {% endfor %} 
action:
  - service: notify.mobile_app_m2002j9g
    data:
      message: Portail du garage est fermé !
      title: Garage fermé
      data:
        tag: Alerte Garage
  - service: notify.courriel
    data:
      title: Garage fermé
      message: Portail du garage est fermé !
mode: single

Remarque sur l'automatisation ci-dessus : à cause de faux positifs depuis une mise à jour de Home Asssistant (détection de changement d'état comme si l'état avait changé alors que ce n'est pas le cas) la condition permet d'éviter l'envoi de cette notification si la dernière notification était la même.

VI- Pilotage avec son ordiphone Android :

Il peut être utile de pouvoir directement ouvrir son portail à partir de son ordiphone connecté au wifi de la maison (pas à distance).
Il est possible d'envoyer directement une requête via un navigateur Internet en saisissant une adresse particulière qu'on appelle une requête web. Plus d'info ici : https://tasmota.github.io/docs/Commands/#with-web-requests.
La commande sera de la forme : http://adresse_IP_module_Shelly/cm?cmnd=Power%20On

Pour les téléphone Android il existe l'application Automate de LlamaLab que j'utilise notamment pour piloter mon ampli Yamaha (voir cet article : [Yamaha Ampli RX-V677] Pilotage par le réseau via l'API xml de Yamaha).
Du coup, il est possible de rajouter une icône sur la page d'accueil de l'ordiphone pour déclencher l'ouverture ou la fermeture à l'aide de la brique Dialog Web. Cette brique possède une option "Show window" permettant d'agir directement ou au contraire de confirmer la notification (ce qui fait une étape supplémentaire mais évite un déclenchement intempestif).
Voici le schéma très simple que j'utilise :

Shelly1 Garage Automate

 

VII- Conclusion :

Cette nouvelle installation m'a permis d'approfondir ma connaissance du firmware Tasmota qui est vraiment très abouti avec un nombre de fonctionnalités impressionant.

Ça a aussi été l'occasion de découvrir Home Assistant qui est vraiment un outil très intéressant mais qui demande de taper des lignes de code. Par contre, il y a beaucoup d'informations sur le net qui permettent de s'en dépatouiller. C'est désormais ma solution domotique à la place de Jeedom qui avec son système de plugins payants de niveau et suivi inégaux est de moins en moins intéressant.

Liens utiles :