[CARTE] monitoring SMLIGHT SLZB

Bonjour à tous !

Je viens de faire évoluer mon Coordinateur Zigbee2MQTT d’une Conbee_II pour passer sur du dual protocole avec un SMLIGHT SLZB (un MR4U dans mon cas SMLIGHT SLZBMR4 — Smart Zigbee Gateway for Home Assistant | SMLIGHT).

J’avais besoin d’une carte me permettant de visualiser clairement et monitorer rapidement les entités liées à ce système dans mon Dashboard de Homelab. N’ayant rien trouvé sur les différents forum, j’ai créé la mienne :

Je l’ai dessinée et pensée pour qu’elle soit le plus dynamique possible :

1. En-tête et Statut Connectivité

  • Identité : Affiche le nom du modèle.
  • Mode de Connexion : Indique dynamiquement si le boîtier communique via Ethernet ou Wi-Fi.
  • État Internet : Une vérification binaire affiche « Internet OK » ou « Local ».
  • Indicateur Visuel : L’icône du routeur passe au Vert si le réseau fonctionne, sinon au Rouge.

2. Barre de Statut Rapide (Chips)

  • Modes Puces : Affiche en temps réel le protocole actif sur la puce 1 (EFR32) et la puce 2 (CC2652) (ex: Coordinator, Thread, Router).
  • Uptime : Calcule depuis combien de jours et d’heures le système tourne sans redémarrer.
  • Statut VPN : Affiche si le tunnel sécurisé est actif avec un code couleur (bleu/gris).

3. Monitoring Thermique (Triple Cœur)

  • Visualisation Temporelle : Un graphique (mini-graph-card) affiche l’historique des 24 dernières heures pour les trois composants.
  • Détail des Puces : Trois cartes individuelles affichent la température précise de l’ESP32 (Core), de la puce Zigbee 1 et de la puce Zigbee 2. Les noms de ces cartes changent dynamiquement selon le mode d’utilisation de la puce.

4. Gestion de la Mémoire et du Stockage

  • FileSystem Usage : Surveille l’occupation de la mémoire flash (stockage des fichiers système).
  • Utilisation Mémoire : Affiche l’utilisation de la mémoire vive en kilo-octets (kB).
  • Graphique de charge : Permet de détecter visuellement une éventuelle « fuite de mémoire » ou un stockage saturé.

5. Centre de Maintenance et Actions

  • Mises à jour intelligentes : Trois blocs conditionnels n’apparaissent que si un nouveau firmware est disponible pour le Core ou les puces radio. Ils proposent un bouton d’installation directe. (pas encore testé en conditions réelles - comportement à confirmer lors de la prochaine release de firmware cf. update 21/01/2026),
  • Contrôles Matériels :
    • Reset SLZB-MR4U : Redémarrage complet du boîtier (Hard Reset).
    • Reset Radio : Redémarrage logiciel des puces de communication sans couper le réseau.
    • Flash Mode : Bascule les puces en mode programmation (nécessite une confirmation).
  • Confort : Gestion du mode nuit des LEDs (pour ne pas être gêné dans l’obscurité), coupure totale des LEDs, et activation de la mise à jour automatique des firmwares Zigbee.

La carte doit pouvoir fonctionner, avec des petites modifications, que vous ayez un modèle simple ou multi protocole.

Je me suis dis que ça pouvait être utile à d’autre de la partager.

Les intégrations complémentaires nécessaires à cette carte :

  1. stack-in-card : Permet de regrouper toutes les cartes en un seul bloc visuel sans bordures entre elles.
  2. mushroom-cards : Fournit la base esthétique (Template card, Chips, Title card, Update card).
  3. mini-graph-card : Utilisée pour les graphiques de température et de mémoire.
  4. config-template-card : Crucial. C’est elle qui permet d’utiliser du JavaScript (${...}) pour rendre les noms de puces dynamiques dans les graphiques.
  5. card-mod (Optionnel mais recommandé) : Utile si vous souhaitez ajuster finement les marges ou les couleurs.

Une fois ces éléments installés, voici le .yaml :

type: custom:config-template-card
entities:
  - sensor.slzb_mr4u_zigbee_type
  - sensor.slzb_mr4u_zigbee_type_2
card:
  type: custom:stack-in-card
  cards:
    - type: custom:mushroom-template-card
      primary: SLZB-MR4U
      secondary: >
        mode: {{ states('sensor.slzb_mr4u_connection_mode') }} |  {{ 'Internet
        OK' if is_state('binary_sensor.slzb_mr4u_internet', 'on') else 'Local'
        }}
      icon: mdi:router-wireless
      icon_color: >
        {{ 'green' if is_state('binary_sensor.slzb_mr4u_ethernet', 'on') or
        is_state('binary_sensor.slzb_mr4u_wi_fi', 'on') else 'red' }}
      fill_container: true
    - type: custom:mushroom-chips-card
      chips:
        - type: template
          icon: mdi:antenna
          content: "EFR32: {{ states('sensor.slzb_mr4u_zigbee_type') }}"
          icon_color: "#0051FF"
        - type: template
          icon: mdi:antenna
          content: "CC26: {{ states('sensor.slzb_mr4u_zigbee_type_2') }}"
          icon_color: amber
        - type: template
          icon: mdi:clock-outline
          content: >
            {% set uptime = states('sensor.slzb_mr4u_core_uptime') %}  {% if
            uptime not in ['unknown', 'unavailable', 'none'] %}
              {% set delta = now() - as_datetime(uptime) %}
              {{ delta.days }}j {{ (delta.seconds // 3600) }}h
            {% else %} ??? {% endif %}
        - type: template
          icon: mdi:vpn
          content: "VPN: {{states('binary_sensor.slzb_mr4u_vpn')}}"
          icon_color: >-
            {{ 'blue' if is_state('binary_sensor.slzb_mr4u_vpn', 'on') else
            'grey' }}
      alignment: center
    - type: custom:mushroom-title-card
      subtitle: Temperature
    - type: horizontal-stack
      cards:
        - type: custom:mushroom-template-card
          entity: sensor.slzb_mr4u_temperature_de_la_puce_principale
          primary: Core SLZB-MR4U
          secondary: "{{ states(entity) }} °C"
          icon: mdi:thermometer
          icon_color: "#ECFA8E"
          tap_action:
            action: more-info
        - type: custom:mushroom-template-card
          entity: sensor.slzb_mr4u_temperature_de_la_puce_zigbee
          primary: Temp. {{ states('sensor.slzb_mr4u_zigbee_type') }}
          secondary: "{{ states(entity) }} °C"
          icon: mdi:thermometer
          icon_color: "#0051FF"
          tap_action:
            action: more-info
        - type: custom:mushroom-template-card
          entity: sensor.slzb_mr4u_temperature_de_la_puce_zigbee_2
          primary: Temp. {{ states('sensor.slzb_mr4u_zigbee_type_2') }}
          secondary: "{{ states(entity) }} °C"
          icon: mdi:thermometer
          icon_color: "#FFC107"
          tap_action:
            action: more-info
    - type: custom:mini-graph-card
      entities:
        - entity: sensor.slzb_mr4u_temperature_de_la_puce_principale
          name: Core
          color: "#ECFA8E"
        - entity: sensor.slzb_mr4u_temperature_de_la_puce_zigbee
          name: ${states['sensor.slzb_mr4u_zigbee_type'].state}
          color: "#0051FF"
        - entity: sensor.slzb_mr4u_temperature_de_la_puce_zigbee_2
          name: ${states['sensor.slzb_mr4u_zigbee_type_2'].state}
          color: "#FFC107"
      line_width: 2
      height: 60
      hours_to_show: 24
      align_state: left
      show:
        icon: false
        legend: true
        state: false
        name: false
    - type: custom:mushroom-title-card
      subtitle: Memory
    - type: horizontal-stack
      cards:
        - type: custom:mushroom-template-card
          entity: sensor.slzb_mr4u_filesystem_usage
          primary: FileSystem Usage
          secondary: "{{ states('sensor.slzb_mr4u_filesystem_usage') }} kB"
          icon: mdi:harddisk
          icon_color: "#3498db"
          tap_action:
            action: more-info
        - type: custom:mushroom-template-card
          entity: sensor.slzb_mr4u_utilisation_de_la_memoire
          primary: Utilisation Mémoire
          secondary: "{{ states('sensor.slzb_mr4u_utilisation_de_la_memoire') }} kB"
          icon: mdi:database
          icon_color: "#9b59b6"
          tap_action:
            action: more-info
    - type: custom:mini-graph-card
      entities:
        - entity: sensor.slzb_mr4u_filesystem_usage
          name: FileSystem Usage
          color: "#3498db"
        - entity: sensor.slzb_mr4u_utilisation_de_la_memoire
          name: Utilisation Mémoire
          color: "#9b59b6"
      line_width: 2
      height: 40
      hours_to_show: 24
      align_state: left
      show:
        icon: false
        legend: false
        state: false
        name: false
    - type: custom:mushroom-title-card
      subtitle: Action
    - type: conditional
      conditions:
        - entity: update.slzb_mr4u_core_firmware
          state: "on"
      card:
        type: custom:mushroom-update-card
        entity: update.slzb_mr4u_core_firmware
        name: MAJ Core
        show_buttons_control: true
    - type: conditional
      conditions:
        - entity: update.slzb_mr4u_zigbee_firmware
          state: "on"
      card:
        type: custom:mushroom-update-card
        entity: update.slzb_mr4u_zigbee_firmware
        name: MAJ {states['sensor.slzb_mr4u_zigbee_type'].state}
        show_buttons_control: true
    - type: conditional
      conditions:
        - entity: update.slzb_mr4u_zigbee_firmware_2
          state: "on"
      card:
        type: custom:mushroom-update-card
        entity: update.slzb_mr4u_zigbee_firmware_2
        name: MAJ {states['sensor.slzb_mr4u_zigbee_type_2'].state}
        show_buttons_control: true
    - type: horizontal-stack
      cards:
        - type: custom:mushroom-template-card
          primary: Reset SLZB-MR4U
          icon: mdi:cog-refresh
          icon_color: red
          layout: vertical
          tap_action:
            action: call-service
            service: button.press
            target:
              entity_id: button.slzb_mr4u_core_restart
        - type: custom:mushroom-template-card
          primary: Reset Radio
          icon: mdi:wifi-refresh
          icon_color: amber
          layout: vertical
          tap_action:
            action: call-service
            service: button.press
            target:
              entity_id: button.slzb_mr4u_zigbee_restart
        - type: custom:mushroom-template-card
          primary: Flash Mode
          icon: mdi:memory-arrow-down
          icon_color: blue
          layout: vertical
          tap_action:
            action: call-service
            service: button.press
            target:
              entity_id: button.slzb_mr4u_zigbee_flash_mode
    - type: horizontal-stack
      cards:
        - type: custom:mushroom-entity-card
          entity: switch.slzb_mr4u_led_night_mode
          name: Nuit
        - type: custom:mushroom-entity-card
          entity: switch.slzb_mr4u_disable_leds
          name: LEDs Off
        - type: custom:mushroom-entity-card
          entity: switch.slzb_mr4u_auto_zigbee_update
          name: Auto-Up
          icon: mdi:refresh-auto

C’est mon tout premier poste, je suis à l’écoute pour m’améliorer alors n’hésitez pas à faire vos retours, vos idées d’améliorations et d’évolutions et surtout à partager vos cartes.

SUIVI DU PROJET - Mise à jour du 21/01/2026
Grâce à une mise à jour firmware disponible, j’ai pu tester en conditions réelles l’affichage des notifications de mise à jour. Cela m’a permis d’affiner la section ACTION avec plusieurs améliorations :

  • Optimisation visuelle : Meilleure mise en page pour les notifications de mise à jour (Core et Radio).
  • Accès rapide : Ajout d’un lien direct vers l’interface Web locale du SLZB-xxxx pour faciliter la maintenance.
  • Internationalisation : Le dépôt GitHub a été structuré avec des README en plusieurs langues (FR :france: / EN :united_kingdom: / IT :italy:).

Le code corrigé et les instructions sont disponibles sur la page du projet : https://github.com/eTim/homeassistant-smlight-slzb-card?tab=readme-ov-file#readme

12 « J'aime »

Superbe!!! Merci beaucoup pour tout ce travail :slight_smile: