Intégrer le matériels Shelly en MQTT à Home Assistant avec Shellies Discovery

Pour essayer de se débarrasser le plus possible du cloud, Shelly nous offre la possibilité de passer ses appareils en MQTT, mais le problème est qu’ils ne sont pas découvert automatiquement par Home Assistant connecté à notre broker Mosquitto favori. (même si ils communiquent bien avec le broker)

Nous allons donc voir comment faire en sorte qu’ils le soient.

Prérequis

  • Avoir HACS d’installé

Ajouter l’intégration Python Script dans Home Assistant.

Voici le lien officiel pour ajouter python script a votre systeme domotique préféré. Pour les anglophobes, voici la procédure.

Cette intégration vous permet d’écrire des scripts Python qui sont exposés en tant que services dans Home Assistant. Chaque fichier Python créé dans le dossier /python_scripts/ sera exposé en tant que service. Le contenu n’est pas mis en cache, vous pouvez donc facilement développer : éditez le fichier, enregistrez les modifications, appelez le service. Les scripts sont exécutés dans un environnement sandbox.

Configuration.yaml

Il vous faut ajouter cette ligne dans le fichier configuration.yaml.

python_script:

Ensuite via File Editor créer un dossier nommé python_scripts

Ajouter le script

Deux méthodes possibles:

  • Ajouter le fichier shellies_discovery.py dans le dossier créé ci dessus.
  • Passer par HACS (nous la détaillerons plus tard)

Méthode manuelle

Récupérer le fichier dans le GitHub puis ajouté le via File Editor (par exemple).

Ensuite redémarrer Home Assistant.

Méthode via HACS

Dans HACS, rechercher Shellies Discovery dans les Automations puis installer le.

shellies_discovery_hacs_automation

Ce dernier vous installera le fichier shellies_discovery.py dans le dossier python_script

Automation.yaml

Il vous reste a ajouter dans automation.yaml le code suivant.

Configuration minimal

- id: shellies_announce
  alias: 'Shellies Announce'
  trigger:
    - platform: homeassistant
      event: start
    - platform: time_pattern
      hours: "/1"  # Modifying this if you are using Shelly Motion can drain your device's battery quickly.
  action:
    service: mqtt.publish
    data:
      topic: shellies/command
      payload: announce

- id: 'shellies_discovery'
  alias: 'Shellies Discovery'
  mode: queued
  max: 999
  trigger:
    platform: mqtt
    topic: shellies/announce
  action:
    service: python_script.shellies_discovery
    data:
      id: '{{ trigger.payload_json.id }}'
      mac: '{{ trigger.payload_json.mac }}'
      fw_ver: '{{ trigger.payload_json.fw_ver }}'
      model: '{{ trigger.payload_json.model }}'
      mode: '{{ trigger.payload_json.mode | default }}'
      host: '{{ trigger.payload_json.ip }}'

Ensuite soit vous redémarré Home Assistant soit vous rechargé les automations et exécuté l’automatisation Shellies Announce.

Vous devriez voir apparaître dans Configuration → Intégration → MQTT → shelly XXXXX ou shelly + nom donné

Voici la liste des devices supportés ici

Sources.

Python Script HA Officiel (en)
Sujet Shelly Discovery Script (en)
GitHub Shellies Discovery (en)
Liste de sdevices compatibles (en)

Suivi :

  • 27/10/2021 création de l’article @McFly

Après avoir utilisé Shelly4Hass qui posait problèmes j’avais fait ça avec le script de découverte auto… Mais MQTT, si on n’en a pas besoin pour d’autres choses, crée une étape supplémentaire. Au final j’ai viré MQTT pour cet usage et j’utilise l’intégration Shelly native qui fonctionne très bien pour une vingtaine de Shelly’s… Dans l’idée de toujours faire au plus simple.

2 « J'aime »

C’est la solution la plus simple c’est sûr, mais c’est dans un optique de dépendre le moins possible de cloud.

Mais je te rejoint sur le fait sue si tu n’a pas besoin de MQTT tu va te rajouter un truc supplémentaires.

L’intégration de base ne dépend pas du cloud.

Pas du tout ? Il ne fautpas qu’il soit connecté en lode cloud ?

L’intégration passe en local mais cela n’empêche que tes devices echanges avec le cloud non ?

Non, tout se passe en local, les devices ne sont pas connectés au cloud.

1 « J'aime »

Ok je ne savais pas je regarderais

Je confirme, j’ai des Shelly avec Cloud disabled.

1 « J'aime »

Ce qui est bizarre c’est qu’il ne me les a pas détecté en automatique.

Je suis pas a la maison mais je regarde ca des que possible.

Merci pour l’info

Il ne détecte pas si Shelly4hass est installé. Dans les autres cas ça m’a toujours détecté sur tous mes HA…

Pas de shellyforhass chez moi jamais eu pourtant avant il était reconnu tout seul

Salut,

J’ai trouvé pourquoi il ne me les reconnaissait pas automatiquement, il faut activer Enable CoIoT dans Advanced - Developer Settings.

Pour infos : ces paramètres ne sont accessibles que via l’interface web en version desktop.

En ce qui me concerne je n’ai jamais eu à le faire et il me semble que c’est activé par défaut.

Oui je te confirme, c’est bien activé par défaut

Hélas ça ne fonctionne pas pour les modèles Pro et Plus.
Le 4Pro est reconnu dans l’intégration officielle avec pour l’instant quelques bugs (il ne fat surtout pas activer ses entités cachées (temp, etc…)

1 « J'aime »