Elark KB

Intégrations

Connecter un Shelly gen2 / gen3 / gen4 en MQTT

Les Shelly modernes (gen2, gen3 et gen4) supportent MQTT nativement. On va les pointer vers le broker Elark — leurs entités apparaissent ensuite dans l’app comme s’il s’agissait d’un ESPHome.

Lecture 7 min

Modèles concernés

  • Gen 2 : Shelly Plus 1, Plus 1PM, Plus 2PM, Plus i4, Plus Plug S, Plus H&T, Plus Smoke…
  • Gen 3 : Shelly 1 Gen3, 1PM Gen3, 2PM Gen3, 1 Mini Gen3, 1PM Mini Gen3, H&T Gen3…
  • Gen 4 : Shelly 1 Gen4, 2PM Gen4, Dimmer Gen4, EM Gen4, Pro 4PM Gen4…
  • Pro (rail DIN) : Shelly Pro 1, Pro 2, Pro 3, Pro 4PM, Pro EM, Pro Dimmer…
Les anciens Shelly « gen 1 » (Shelly 1, 1PM, 2.5, Dimmer 2, RGBW2…) supportent aussi MQTT, mais la procédure est différente — voir la section Shelly gen 1 en bas de page.

Étape 1 — Créer une passerelle Shelly dans Elark

  1. Dans l’app, ouvrez Passerelles MQTT+ Nouvelle passerelle.
  2. Choisissez Shelly dans la liste, donnez-lui un nom (« Mon installation Shelly » par exemple).
  3. Notez le topic racine — par défaut shellies. Vous pouvez le personnaliser si vous avez plusieurs installations.
  4. Validez.

Elark s’abonne maintenant aux topics shellies/# et créera un appareil pour chaque Shelly qui s’y présentera.

Étape 2 — Récupérer vos identifiants MQTT Elark

Depuis Paramètres › Identifiants par défaut, notez :

  • Serveur : mqtt.elark.cloud
  • Port : 8883 (TLS obligatoire)
  • Username : votre claim_code de passerelle (visible sur la fiche passerelle créée à l’étape 1)
  • Password : votre mot de passe MQTT (saisi dans Paramètres › Identifiants par défaut)

Étape 3 — Configurer le Shelly (interface web)

  1. Sur le LAN, ouvrez http://<ip-shelly> dans un navigateur (ou utilisez l’app Shelly Smart Control puis « Settings › Device IP »).
  2. Allez dans Settings › Connectivity › MQTT (gen2/3/4) ou Internet & Security › ADVANCED — DEVELOPER SETTINGS (Pro).
  3. Cochez Enable MQTT.
  4. Renseignez :
    • MQTT Server : mqtt.elark.cloud:8883
    • Username : votre claim_code de passerelle
    • Password : votre mot de passe MQTT Elark
    • Custom MQTT prefix : shellies/<nom-court> (ex. shellies/salon-tv) — c’est ce qui apparaîtra dans l’app.
    • Use Client TLS : Off
    • Enable SSL / TLS : On (avec validation du CA)
    • RPC status notifications over MQTT : On
    • Generic status update over MQTT : On
    • Enable “MQTT Control” : On indispensable pour piloter les relais depuis l’app et afficher la qualité du signal WiFi. Sans cette case, le Shelly publie ses états mais n’accepte aucune commande (le bouton bascule reste sans effet).
  5. Cliquez sur Save settings. Le Shelly redémarre et se connecte au broker Elark.
Le pilotage et le signal WiFi ne marchent pas ?

Dans 99 % des cas, c’est que « Enable MQTT Control » n’est pas coché sur le module. Cette unique option débloque à la fois le contrôle des relais (Elark → Shelly) et la remontée du signal WiFi / uptime en temps réel (Elark interroge le module via Shelly.GetStatus).

Étape 4 — Vérifier dans l’app Elark

Dans les 30 secondes, le Shelly apparaît dans Passerelles MQTT › Mon installation Shelly (cliquez sur « Voir devices »). Une fiche est aussi créée dans Mes appareils, avec :

  • les switches (relais),
  • les sensors (puissance, énergie, température…),
  • les covers (volets, sur les modèles 2PM),
  • les inputs (boutons connectés, Plus i4).

Toggle le relais depuis l’app : la lampe doit s’allumer en moins d’une seconde.

Affichage : cartes par phase + temps réel

Sur la fiche appareil, onglet Entités, les mesures sont désormais regroupées en cartes logiques. Pour un compteur d’énergie multi-phases (Shelly Pro 3EM, Pro EM 50…), chaque phase a sa carte — « Phase 1 », « Phase 2 », « Phase 3 » — avec tension, courant, puissance active/apparente et énergie regroupés. Les relais ont leur carte « Relais 0 », « Relais 1 », etc.

  • Interrupteurs pilotables : les relais s’affichent avec un vrai bouton bascule (plus seulement le texte « on » / « off ») — un clic publie la commande MQTT vers le Shelly.
  • Temps réel : les valeurs (puissance, tension…) et les états de relais se mettent à jour sans recharger la page, via WebSocket, dès que le Shelly publie un nouveau status.

Configuration en masse (Shelly Pro / API)

Pour configurer plusieurs Shelly d’un coup, utilisez la HTTP RPC API. Exemple pour un Shelly Plus 1 :

curl -X POST http://<ip-shelly>/rpc/MQTT.SetConfig \
  -H "Content-Type: application/json" \
  -d '{
    "config": {
      "enable": true,
      "server": "mqtt.elark.cloud:8883",
      "user": "<claim_code_passerelle>",
      "ssl_ca": "*",
      "topic_prefix": "shellies/<id-court>",
      "rpc_ntf": true,
      "status_ntf": true,
      "enable_control": true
    }
  }'

# Puis stocker le mot de passe (séparé pour éviter le log)
curl -X POST http://<ip-shelly>/rpc/MQTT.SetConfig \
  -d '{"config": {"pass": "<mqtt_password>"}}'

# Reboot
curl -X POST http://<ip-shelly>/rpc/Shelly.Reboot

Discovery automatique

Elark suit le format Shelly status standard (shellies/<id>/status/...). Pas besoin d’activer le Home Assistant discovery — Elark le détecte tout seul.

Si vous renommez un Shelly via son interface web (champ « Device Name »), l’étiquette est mise à jour automatiquement dans l’app sans intervention.

Shelly gen 1 (Shelly 1, 1PM, 2.5, Dimmer 2, RGBW2…)

Le firmware gen 1 a une UI MQTT plus simple. Dans Internet & Security › ADVANCED — DEVELOPER SETTINGS :

  1. Cochez Enable action execution via MQTT.
  2. Username : votre claim_code de passerelle.
  3. Password : votre mot de passe MQTT Elark.
  4. Server : mqtt.elark.cloud:8883.
  5. Cochez Use Custom MQTT Server et Custom MQTT prefix = shellies/<nom>.
  6. Cochez SSL/TLS.
  7. Save → l’appareil redémarre.

Les topics utilisés sont shellies/<nom>/relay/0, shellies/<nom>/relay/0/command, etc. Elark les comprend nativement.

Dépannage

  • Le Shelly n’apparaît pas : vérifiez que le port 8883 n’est pas bloqué par votre pare-feu sortant. Testez avec mosquitto_pub -h mqtt.elark.cloud -p 8883 --cafile /etc/ssl/certs/ca-certificates.crt -u <claim> -P <pwd> -t test -m hi.
  • Le Shelly se déconnecte toutes les minutes : c’est souvent un mot de passe incorrect (le Shelly retente sans backoff). Re-saisissez le mot de passe dans Settings › Identifiants par défaut puis dans l’interface du Shelly.
  • Un seul switch alors que j’ai un Plus 2PM : assurez-vous que les deux canaux sont activés dans Inputs & outputs sur l’interface Shelly.

Scripts JavaScript (Gen2+)

Sur la fiche d’un module Shelly Gen2/Pro/Gen4, l’onglet Scripts permet de gérer les scripts JavaScript officiellement supportés par Shelly, directement depuis Elark :

  • Découverte automatique : les scripts déjà présents sur le module sont listés avec leur état (en cours / arrêté) et le démarrage automatique au boot.
  • Éditeur de code (type VSCode) avec coloration syntaxique et templates prêts à l’emploi (bascule sur entrée, régulation par température, extinction temporisée…).
  • Déploiement en un clic : Elark exécute pour vous Script.CreateScript.PutCode Script.SetConfig (démarrage auto) → Script.Start via RPC MQTT.
  • Historique des versions déployées (relecture / restauration dans l’éditeur).
  • Déploiement multi-modules : un même script sur plusieurs Shelly à la fois, avec des variables propres à chaque module. Ex. un script de volet roulant déployé sur 3 modules avec VR=1, VR=2, VR=3 — Elark injecte let VR = N; en tête du script sur chaque module (création ou mise à jour du script du même nom).
  • Console (sous les scripts) : affiche en temps réel les logs remontés par le module (print() / console.log() de vos scripts + logs système) et permet de tester une expression dans un script en cours (Script.Eval). Cliquez d’abord sur « Activer les logs » (active le debug MQTT du module ; un redémarrage peut être nécessaire).

Exemple : « quand l’entrée input:0 change, bascule le relais switch:0 » :

Shelly.addEventHandler(function (event) {
  if (event.component === "input:0") {
    Shelly.call("Switch.Toggle", { id: 0 });
  }
});

Pré-requis : le module doit être joignable et « Enable MQTT Control » activé (cf. étape 3) — c’est ce qui autorise Elark à piloter le module via RPC.