Faire remonter infos détecteur de fumée TUYA TS0205 Zigbee

Bonjour à tous et toutes,

Je viens de connecter une détecteur de fumées que j’avais commandé il y a quelques temps ( le modèle TUYA TS0205 , connécté en zigbee avec Zigbee2MQTT .
J’ulise une clé sonoff pour gerer cela , en tout j’ai 30 devices enregistrés et cela fonctionne nickel , SAUF , le détecteur de fumée.

Dans Zigbee2MQTT j’ai bien des infos qui remontent, mais si je vais sur les sensors ( smoke , batterie , inter ouvert/fermé … ) j’ai un état inconnue pour chacun d’eux …

Avez vous une idée pour refaire monter ces infos ??

Merci


Bonjour, à priori, ton détecteur de fumée perd devient inconnu et donc n’envoie plus d’informations. Tu devrais commencer par le réappairer en suivant les étapes ci-dessous :

Couplage

Appuyez sur le bouton environ 5 secondes jusqu’à ce que la lumière passe du rouge au vert. Relâchez le bouton (il devrait biper deux fois maintenant). Le voyant vert commence à clignoter. Appuyez à nouveau une fois.

j’ai déjà procédé au réappairage une dizaine de fois , tout se passe comme tu décris , tout semble fonctionner , je le vois bien sur Zigbee2MQTT , je peux même voir l’état des capteurs mais seulement dans le menu Zigbee2MQTT , c’est comme si un lien n’était pas fonctionnel entre Zigbee2MQTT et les sensors dans HA …

Je ne peux pas dire grand chose de plus, j’ai un détecteur de fumée TuYa mais pas le même modèle. Essaie éventuellement de mettre des piles neuves…
L’as-tu testé avec une passerelle TuYa ?

je répond à moi même,

Je ne sais pas si ça a un lien , mais après avoir activé le sensor de qualité de réception LQI ( qui était désactivé par defaut ) , tout s’est mis à fonctionner. à chaque activation d’un nouveau sensor il y a comme un reset du device ( il devient indisponible pour quelques secondes ) c’est peut être ce reset qui a tout remis en place…

Le sujet est donc résolu ,

Merci pour l’aide , c’est sympa !

Je ne pense pas que cela puisse avoir un lien, tu n’as fait qu’afficher une entité (LQI) qui ne l’était pas :

image

Mais l’essentiel est que tes informations remontent correctement. Il faut juste espérer qu’il sonnera en cas de détection de fumée :upside_down_face:

Si ca un lien, car quand tu active une entité non affichée, ca déco-reco tout les entités MQTT. Ca actualise tout .

même problème chez moi, as tu trouvé une solution ?

@Cyril_81 s’est répondu a lui même et même s’il n’a pas mis son sujet en résolu, à priori, c’était OK pour lui

J’ai testé la manip mais ça ne fonctionne pas même en activant le LQI. je pense que c’est dans Z2M que ça ne fonctionne pas bien :

Bonjour, pour l’instant il semble falloir utiliser le convertisseur suivant : Smoke detector "TS0205 _TZ3210_up3pngle" go to offline · Issue #19910 · Koenkk/zigbee2mqtt · GitHub

Bonjour,

Il faudrait d’abord que tu précise exactement quel est le matériel concerné, qu’est ce qui ne fonctionne pas chez toi et qu’est ce qui fonctionne…

L’external converter cité par @Antigrav a été écrit pour un problème de passage hors ligne. Si c’est le cas chez toi, tu peux le tester : il faudra copier ce qui suit dans un fichier .txt (notepad par exemple) :

const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const reporting = require('zigbee-herdsman-converters/lib/reporting');
const extend = require('zigbee-herdsman-converters/lib/extend');
const e = exposes.presets;
const ea = exposes.access;
const tuya = require('zigbee-herdsman-converters/lib/tuya');

const definition = {
    fingerprint: [{modelID: 'TS0205', manufacturerName: '_TZ3210_up3pngle'}],
    model: 'TS0205_new',
    vendor: 'TuYa',
    description: 'Smoke sensor',
    fromZigbee: [fz.ias_smoke_alarm_1, fz.battery, fz.ignore_basic_report],
    toZigbee: [],
    configure: async (device, coordinatorEndpoint, logger) => {
        try {
            const endpoint = device.getEndpoint(1);
            await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
            await reporting.batteryPercentageRemaining(endpoint);
            //await reporting.batteryVoltage(endpoint);
        } catch (error) {/* Fails for some*/}
    },
    exposes: [e.smoke(), e.battery_low(), e.battery(), e.tamper()],
    whiteLabel: [
        {vendor: 'Tesla Smart', model: 'TSL-SEN-SMOKE'},
        {vendor: 'Dongguan Daying Electornics Technology', model: 'YG400A (Zigbee)'},
    ],
};

module.exports = definition;

Renommer ton fichier en .js (converter_essai.js par exemple) puis l’uploader dans le répertoire de zigbee2mqtt (avec File Editor par exemple)

Une fois cela fait, il faudra faire un appel à ce fichier dans le fichier « configuration.yaml » du répertoire zigbee2mqtt :

Il faudra donc éditer ce fichier (File Editor) et ajouter les lignes suivantes :

external_converters:
  - converter_essai.js

Après avoir redémarrer HA, l’external converter sera pris en compte et pourra potentiellement régler le problème de passage hors ligne (en réglant la disponibilité à une durée de plus de 4 heures).

bonjour, est-ce que le problème avec ce détecteur de fumé a été résolu pour tout le monde ?
Pour savoir si je confirme ma commande :smiley:

Bonjour,
J’ai le même problème , le « smoke sensor » devient « Hors ligne » au bout de quelques heures. Si on appuie sur le bouton pour faire un test, alors il redevient « En ligne »

Modèle Zigbee : TS0205
Constructeur Zigbee : _TZ3210_up3pngle

Je n’ai pas trouvé de solution jusqu’à présent…

Chez moi ça fonctionne même si ce détecteur semble avoir un fonctionnement différent de mes autres appareils Zigbee.

J’ai par contre utilisé ce « custom quirks » (Car utilisation de ZHA) :

"""Smoke Sensor."""
import zigpy.profiles.zha
from zigpy.quirks import CustomCluster, CustomDevice
import zigpy.types as t
from zigpy.zcl.clusters.general import Basic, PowerConfiguration, Groups, Identify, OnOff, Ota, Scenes, Time
from zigpy.zcl.clusters.security import IasZone
from zigpy.zcl.clusters.lightlink import LightLink

from zhaquirks import Bus
from zhaquirks.const import (
    DEVICE_TYPE,
    ENDPOINTS,
    INPUT_CLUSTERS,
    MODELS_INFO,
    OUTPUT_CLUSTERS,
    PROFILE_ID,
    ZONE_STATUS,
    ZONE_TYPE,
)
from zhaquirks.tuya import TuyaManufCluster, TuyaManufClusterAttributes


TUYA_SMOKE_DETECTED_ATTR = 0x0401  # [0]/[1] [Detected]/[Clear]!


class TuyaSmokeDetectorCluster(TuyaManufClusterAttributes):
    """Manufacturer Specific Cluster of the TS0601 smoke detector."""

    attributes = {
        TUYA_SMOKE_DETECTED_ATTR: ("smoke_detected", t.uint8_t, True),
    }

    def _update_attribute(self, attrid, value):
        super()._update_attribute(attrid, value)
        if attrid == TUYA_SMOKE_DETECTED_ATTR:
            if value == 0:
                self.endpoint.device.ias_bus.listener_event(
                    "update_zone_status", IasZone.ZoneStatus.Alarm_1
                )
            else:
                self.endpoint.device.ias_bus.listener_event("update_zone_status", 0)
        else:
            _LOGGER.warning(
                "[0x%04x:%s:0x%04x] unhandled attribute: 0x%04x",
                self.endpoint.device.nwk,
                self.endpoint.endpoint_id,
                self.cluster_id,
                attrid,
            )


class TuyaIasZone(CustomCluster, IasZone):
    """IAS Zone."""

    _CONSTANT_ATTRIBUTES = {ZONE_TYPE: IasZone.ZoneType.Fire_Sensor}

    def __init__(self, *args, **kwargs):
        """Init."""
        super().__init__(*args, **kwargs)
        self.endpoint.device.ias_bus.add_listener(self)

    def update_zone_status(self, value):
        """Update IAS status."""
        super()._update_attribute(ZONE_STATUS, value)


class TuyaSmokeDetector0205(CustomDevice):
    """TS0601 Smoke detector quirk."""

    def __init__(self, *args, **kwargs):
        """Init."""
        self.ias_bus = Bus()
        super().__init__(*args, **kwargs)

    signature = {
        MODELS_INFO: [
            ("_TZ3210_up3pngle", "TS0205"),
        ],
        ENDPOINTS: {
            1: {
                PROFILE_ID: zigpy.profiles.zha.PROFILE_ID,
                DEVICE_TYPE: zigpy.profiles.zha.DeviceType.IAS_ZONE,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    PowerConfiguration.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    IasZone.cluster_id,
                ],
                OUTPUT_CLUSTERS: [
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Time.cluster_id,
                    OnOff.cluster_id,
                    Ota.cluster_id,
                    LightLink.cluster_id,
                ],
            },
        },
    }

    replacement = {
        ENDPOINTS: {
            1: {
                PROFILE_ID: zigpy.profiles.zha.PROFILE_ID,
                DEVICE_TYPE: zigpy.profiles.zha.DeviceType.IAS_ZONE,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    PowerConfiguration.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    TuyaIasZone,
                ],
                OUTPUT_CLUSTERS: [
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Time.cluster_id,
                    OnOff.cluster_id,
                    Ota.cluster_id,
                    LightLink.cluster_id,
                ],
            },
        },
    }

Puis les remontées se passent bien même si l’appareil ne semble pas connecté en permanence (Une simple allumette permet de faire un test) :

j’ai le même problème et accessoirement j’aurais aimé pouvoir déclencher la sirène manuellement pour par exemple si de la fumée est détecté par un les autres sonnent

moi le problem c’est que les changement d’état de remonte pas dans z2m, j’appuis sur le bouton ou que je fait de la fumée je suis obliger de actualiser