Intégration de multiprise LIDL Silvercrest

Une des réponses plus fait référence à une discussion ou la formule magique est « explicite »:

Je n’ai pas testé l’exécution, mais si tout va bien, ce qui suit devrait réaliser « la formule magique » à l’appairage et redémarrage de HA. Il y a aussi une partie écriture à la formule magique qui ne semble pas nécessaire dans le cas présent.

"""TS011F plug."""

import asyncio

from zigpy.profiles import zha
from zigpy.zcl.clusters.general import (
    Basic,
    GreenPowerProxy,
    Groups,
    Identify,
    OnOff,
    Ota,
    Scenes,
    Time,
)

from zhaquirks.const import (
    DEVICE_TYPE,
    ENDPOINTS,
    INPUT_CLUSTERS,
    MODEL,
    OUTPUT_CLUSTERS,
    PROFILE_ID,
)
from zhaquirks.tuya.ts011f_plug import Plug_3AC_4USB


class Lidl_Plug_3AC_4USB(Plug_3AC_4USB):
    """LIDL 3 outlet + 4 USB with restore power state support."""

    def __init__(self, *args, **kwargs):
        """Initialize with task."""
        super().__init__(*args, **kwargs)

        self._init_task = asyncio.create_task(self.init())

    async def init(self):
        """Initialize device so that all endpoints become available."""
        basic_cluster = self.endpoints[1].in_clusters[0]

        # The magic spell is needed only once.
        # TODO: Improve by doing this only once (successfully).

        # Magic spell - part 1
        attr_to_read = [4, 0, 1, 5, 7, 0xFFFE]
        await basic_cluster.read_attributes(attr_to_read)

        # Magic spell - part 2 (skipped - does not seem to be needed)
        # attr_to_write={0xffde:13}
        # basic_cluster.write_attributes(attr_to_write, tries=3)

    signature = {
        MODEL: "TS011F",
        ENDPOINTS: {
            # <SimpleDescriptor endpoint=1 profile=260 device_type=266
            # device_version=1
            # input_clusters=[0, 3, 4, 5, 6]
            # output_clusters=[10, 25]>
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.ON_OFF_PLUG_IN_UNIT,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    OnOff.cluster_id,
                ],
                OUTPUT_CLUSTERS: [Time.cluster_id, Ota.cluster_id],
            },
            # <SimpleDescriptor endpoint=242 profile=41440 device_type=97
            # device_version=1
            # input_clusters=[]
            # output_clusters=[33]>
            242: {
                PROFILE_ID: 41440,
                DEVICE_TYPE: 97,
                INPUT_CLUSTERS: [],
                OUTPUT_CLUSTERS: [GreenPowerProxy.cluster_id],
            },
        },
    }

Ça fonctionne nickel en version dev de z2m, donc cela devrait venir assez vite dans une prochaine mise à jour je pense !

1 « J'aime »

J’ai ajouté la formule magique de tuya dans zha-toolkit cela permet de l’appliquer à d’autres appareils aussi sans quirk (mais avec zha-toolkit).

En deux mots: installer zha-toolkit, aller dans « Outils de Développement » > « Services » . Choisir « 🧰 ZHA Toolkit Service: execute », Puis sélectionner comme commande « tuya_magic », cocher IEEE et choisir votre multiprise, puis exécuter.

1 « J'aime »

« Miraculeusement » le quirk que j’ai proposé semble fonctionner « trop bien » puisque la technique fonctionne aussi pour d’autres appareils.

[Device Support Request] LIDL Plug USB HG06338-FR _TZ3000_vzopcetz/TS011F · Issue #1428 · zigpy/zha-device-handlers · GitHub .

1 « J'aime »

Pour faire, ça, j’ai désactivé ZHA et installé z2m edge, avec une seule et unique clé, puis j’ai restauré mon backup afin de récup mon ancienne config. J’avais en effet pris le soin d’activer une prise sur les 3 pour un peu forcer la détection lors de mon retour sur zha

J’ai refait toute la manip de @le_top et ici aussi tout marche au poil!

J’ai supprimé la prise dans ZHA, réappairée et elle était de nouveau reconnue comme "simple switch’.

J’ai donc créé le dossier zha_quirks avec les nouveaux paramètres, j’ai obtenu une visibilité sur les 3 switches qui ne fonctionnaient que d’une seule unité.

J’ai par la suite utilisé ZHA toolkit, et hop, ça a marché directement, simple et efficace (quand on le sait :stuck_out_tongue: )

Un grand merci, même si je ne comprends pas toutes les manips, elles marchent et finalement, c’est un peu ça qu’on veut, nous utilisateurs :slight_smile:

Merci pour le test, c’est une super nouvelle.

Le quirk qu tu as essayé est sûrement cette version: https://raw.githubusercontent.com/zigpy/zha-device-handlers/1e53551c3698a6a8cde222042d8fdd3be7ef0072/zhaquirks/lidl/ts011f_plug.py qu’il vaut mieux utiliser en attendant que ce code soit réorganisé et validé suite à ces modifications.

Snion, oui zha–oolkit c’est simple et efficace (même si j’y suis pour qqchse), et cela peut servir à d’autres manipulations aussi.

C’est en bonne voie pour un quirk « officiel »

2 « J'aime »

@le_top
Je crois que tu portes bien ton pseudo ici !!!
Mille fois merci. Tout fonctionne comme l’écris @chiboule .
Les 3 boutons s’affichent bien et sont indépendants.

Je découvre ton zha-toolkit et je dois dire que je n’avais pas vu qu’il existait… C’est un travail au top !! :wink:

1 « J'aime »

Salut à tous.
J’ai ajouté le quirks, et sa fonctionne à merveille !
Je n’ai juste pas le onOff qui commande le général.

Merci pour le travail fournis :muscle:

Bonjour, j’ai testé Zha toolkit. Mais une fois la commande exécutée je ne constate aucun changement. J’ai loupé une étape ?

Alors j’ai que une entité qui agit maintenant que sur une prise. Les deux autres ne se sont pas créés.
Vous avez une piste à me suggérer?
Merci

@Bugracer

Soit vous ajoutez le quirk proposé ci-dessus pour la multiprise à votre environnement.
Soit vous appairez la multiprise à nouveau, cela devrait provoquer la découverte de la nouvelle « signature » zigbee de la multiprise.

La formule magique transforme la signature zigbee de la multiprise d’un seul « endpoint » à 3 « endpoint ». Mais ZHA ne le sait pas et ne fait pas de démarche pour le découvrir - la découverte est réalisé seulement au moment de l’association (appairage). Donc normalement la réassociation fonctionne (d’après ce que j’ai pu lire, la multiprise maintiendra sa configuration).
Le quirk est une technique qui permet de présenter une autre signature que celle découverte par ZHA, et dans le cas présent le quirk présente 3 endpoints même s’il y en a un seul au départ.

@le_top merci de ta réponse. En utilisant toolkit, Et en appairant à nouveau la multiprise la configuration redevient par défaut ( les 3 prises en même temps).

Pour l’autre méthode « quirk », je n’es pas assez de connaissance (ou placé le code, comment le déclarer…).

Bonjour,
As-tu fais ceci ?

  • Créer un sous-répertoire dans le répertoire configuration portant le nom de « zha_quirks »
  • Créer un fichier du nom de « lidl_tfs011f_plug.py » et y mettre le code suivant :
"""LIDL TS011F plug."""

import asyncio

from zigpy.profiles import zha
from zigpy.zcl.clusters.general import (
    Basic,
    GreenPowerProxy,
    Groups,
    Identify,
    OnOff,
    Ota,
    Scenes,
    Time,
)

from zhaquirks.const import (
    DEVICE_TYPE,
    ENDPOINTS,
    INPUT_CLUSTERS,
    MODEL,
    OUTPUT_CLUSTERS,
    PROFILE_ID,
)
from zhaquirks.tuya.ts011f_plug import Plug_3AC_4USB


class Lidl_Plug_3AC_4USB(Plug_3AC_4USB):
    """LIDL 3 outlet + 4 USB with restore power state support."""

    def __init__(self, *args, **kwargs):
        """Initialize with task."""
        super().__init__(*args, **kwargs)

        self._init_plug_task = asyncio.create_task(self.spell())

    async def spell(self) -> None:
        """Initialize device so that all endpoints become available."""
        basic_cluster = self.endpoints[1].in_clusters[0]

        # The magic spell is needed only once.
        # TODO: Improve by doing this only once (successfully).

        # Magic spell - part 1
        attr_to_read = [4, 0, 1, 5, 7, 0xFFFE]
        await basic_cluster.read_attributes(attr_to_read)

        # Magic spell - part 2 (skipped - does not seem to be needed)
        # attr_to_write={0xffde:13}
        # basic_cluster.write_attributes(attr_to_write)

    signature = {
        MODEL: "TS011F",
        ENDPOINTS: {
            # <SimpleDescriptor endpoint=1 profile=260 device_type=266
            # device_version=1
            # input_clusters=[0, 3, 4, 5, 6]
            # output_clusters=[10, 25]>
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.ON_OFF_PLUG_IN_UNIT,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    OnOff.cluster_id,
                ],
                OUTPUT_CLUSTERS: [Time.cluster_id, Ota.cluster_id],
            },
            # <SimpleDescriptor endpoint=242 profile=41440 device_type=97
            # device_version=1
            # input_clusters=[]
            # output_clusters=[33]>
            242: {
                PROFILE_ID: 41440,
                DEVICE_TYPE: 97,
                INPUT_CLUSTERS: [],
                OUTPUT_CLUSTERS: [GreenPowerProxy.cluster_id],
            },
        },
    }

  • Redémarrer.
  • Copier ceci dans le fichier « configuration.yaml » :
zha:
  enable_quirks: true
  custom_quirks_path: /config/zha_quirks

zha_toolkit:
  • Redémarrer.
  • Appairer la prise avec ZHA

@le_top @Yo_han merci à vous. Cela fonctionne parfaitement !!!

1 « J'aime »

Bonjour,

Je ne suis pas très bon (je dirai même nul :-)) donc je vais attendre une nouvelle release au lieu de tout faire foirer.

J’avais juste une question:

  • Est-ce un problème hardware ou software ? Dans le sens que si un jour je réinstalle une des multi-prises qui est actuellement bien reconnue, va-t-elle être reconnue correctement ou va-t-elle avoir le même type de problème ?

D’avance merci à tout le monde et bonne journée

Fabrizio

Bonjour,

Les possesseurs de la multiprise lidl HG06338-FR ont-ils rencontré des problèmes ?
pour ma part je m’aperçois quel s’allume toute seul … Z2M la voie éteinte par contre …
une idée ?

Elle s’allume seule avant ou après la manip?

C’est pas tout à fait un problème, en gros , on a 2 versions différentes de multiprises et ZHA les reconnait toutes les deux comme étant le même modèle.

Par conséquent, l’ancien modèle fonctionne normalement (on peut allumer/éteindre chaque prise de manière indépendante), sur le second modèle, les 3 prises fonctionnent comme un bloc, impossible de les faire fonctionner indépendandamment (sauf suite à la fameuse manip décrite plus haut)j
Le jour ou ZHA sera mis à jour, les 2 prises seront bien reconnues distinctement et fonctionneront sans aucune manip supplémentaire.

Concernant ta question, en réalité je ne l’ai pas bien comprise dans le sens ou, tu nous dis que tu ne souhaites pas faire de manipulation (sous entendu que tu as le second modele et donc, uniquement un switch unique qui allume ou éteint la prise entierement) et un peu plus bas tu dis qu’elle est bien reconnue (et donc pas besoin d’apporter une modification si elle est actuellement bien reconnue).

Dis-nous en plus :slight_smile:

la MAJ d’avril de Z2M résoudra le problème. Les 3 prises sont d’érables independemment