Frient - détecteur de fumée -- commande sirene absente

bonjour,

Dongle popp mis à jour (25/10/21), plugin zigbee et détecteur de fumée Frient. (jeedom 4…)
Seules 2 informations sont remontées " fumée et température".
J’ai choisi ce détecteur justement pour gérer l’état de la batterie et commander la sirène. Je suis donc très déçu .
Y a t-il une possibilité d’obtenir ces 2 possibilités ?
Merci d’avance.
Guy

Batterie je t’invite à lire les sujet la dessus
Pour la sirène c’est toujours la même réponse ça n’a pas changé en 10min

Bonjour,
Je viens d’en acheter un pour tester avant d’en équiper ma maison.
Voici la doc du fabricant https://www.develcoproducts.com/media/1742/smszb-120-technical-manual-smoke-alarm.pdf.
Pour la sirène:


Voici les commandes à créer
AlarmeOn
35::ias_wd::start_warning::1::0::3::10::0::0
Modifier le siren level ne change rien mais s’il est a 0 pas de sirène
Warning duration en seconde
AlarmeOff
35::ias_wd::start_warning::0::0::0::0::0::0
Voici le détail de la lib Zigbee (Strob n’est pas configurable sur le Frient)

Par contre j’ai un mess d’erreur de temps en temps. Comme c’est un appareil sur batterie, il n’est pas toujours en écoute. @Loic Est il possible d’augmenter le timeout à 10s?

Erreur exécution de la commande [Cuisine][Détcteur Fumée][Alarme on] : Erreur lors de la requete : http://127.0.0.1:8089/device/command(PUT), data : {"ieee":"00:15:bc:00:31:00:c5:60","cmd":[{"endpoint":35,"cluster":"ias_wd","command":"start_warning","await":1,"args":[1,0,0,10,0,0]}],"allowQueue":false} erreur : {"state":"error","result":"[0xbedf:35:0x0502]: Message send failure","code":0}

Maintenant à voir ce que l’on peut faire avec ias …

Salut! Merci beaucoup pour ton apport!

Pourrais-tu m’expliquer comment tu as transformé les indication de la notice avec l’ID 0x00, le IAS WD,… en commande? Comme ça je pourrai comprendre la logique et appliquer moi-même la prochaine fois!

Sinon une petite erreur s’est glissée dans ton texte visiblement. Il manque un « : » après le 10. J’ai corrigé comme cela chez moi et ça fonctionne maintenant!

35::ias_wd::start_warning::1::0::3::10::0::0

J’ai corrigé la coquille. :face_with_monocle:
Pour retranscrire, je regarde sur le github de Zigpy. (cluster)
Pour le cluster 0x0502 → zigpy/security.py at dev · zigpy/zigpy · GitHub

J’avance un peu sur l’intégration de ce module.
J’aimerais pourvoir remonter l’alerte concernant la batterie (30 days left) et quand un test de sirène est réalisé pour me créer un rappel de faire un nouveau test après un délai (normalement tous les mois).

La commande 35::1280::cmd::1 me permet d’afficher le « Zone Status » voici le retour que j’ai quand je fais:

  • Test du détecteur: ZoneStatus.Test|Restore_reports|Supervision_reports
  • Alarme feu: ZoneStatus.Restore_reports|Supervision_reports|Alarm_1
  • La pile est neuve mais logiquement pour la batterie (j’ai pas de log): Battery|ZoneStatus.Restore_reports|Supervision_reports

Est ce que quelqu’un pourrait me dire s’il est possible quelque part dans le plugin zigbee (sans faire un scenario) de faire: si #valeur# contient « Battery » de mettre la valeur à 1 ou de mettre par ex: « Batterie faible » ?

Je vois dans le code de Loic qu’il converti le string en binaire comme ceci si je ne dis pas de bêtise, mais le problème ici si par exemple j’ajoutais simplement ZoneStatus.Battery’ => 1, je ne serais pas si c’est pour Alarm_1|Battery|Test.
Ou sinon peut être faire ZoneStatus.Battery’ => Batterie Faible mais je préfèrerais du binaire.

$CONVERT_VALUE = array(
	'ZoneStatus.Alarm_1' => 1,
	'ZoneStatus.Restore_reports' => 0,
	'ZoneStatus.0' => 0,
.......
);

$FIND_VALUE = array(
	'Alarm_1' => 1,
	'Alarm_2' => 1
);

Merci

Bonjour,

J’allais également investir dans ce détecteur pour sa double fonction… par chance je suis tombé sur cette discussion !

@AntFleu
Merci pour ta contribution !
Tu confirmes donc que les commandes de la sirène peuvent être créées manuellement grâce à ta méthode et qu’elles sont opérationnelles ?

@Loic
Sera-t-il possible de les intégrer directement dans le plugin afin qu’elles soient créées automatiquement lors de l’intégration du module ?

Merci

Bonjour,
je peux sans probleme il me faut juste :

  • le json brute du module
  • les 2 commandes a rajouter (enfin surtout leur logical id)

Bonjour @Loic,

{
    "ieee": "00:15:bc:00:31:00:ba:77",
    "nwk": 17855,
    "status": 2,
    "lqi": "152",
    "rssi": "-62",
    "last_seen": "1637861329.8474033",
    "node_descriptor": "02:40:00:15:10:50:50:00:00:2a:50:00:00",
    "endpoints": [
        {
            "id": 1,
            "status": 1,
            "device_type": 1,
            "profile_id": 49353,
            "manufacturer": null,
            "model": null,
            "output_clusters": [],
            "input_clusters": [
                {
                    "id": 3,
                    "name": "Identify",
                    "attributes": []
                },
                {
                    "id": 5,
                    "name": "Scenes",
                    "attributes": []
                },
                {
                    "id": 6,
                    "name": "On\/Off",
                    "attributes": []
                }
            ]
        },
        {
            "id": 35,
            "status": 1,
            "device_type": 1026,
            "profile_id": 260,
            "manufacturer": "frient A\/S",
            "model": "SMSZB-120",
            "output_clusters": [
                {
                    "id": 10,
                    "name": "Time",
                    "attributes": []
                },
                {
                    "id": 25,
                    "name": "Ota",
                    "attributes": []
                }
            ],
            "input_clusters": [
                {
                    "id": 0,
                    "name": "Basic",
                    "attributes": [
                        {
                            "id": 0,
                            "name": "zcl_version",
                            "value": 1
                        },
                        {
                            "id": 4,
                            "name": "manufacturer",
                            "value": "frient A\/S"
                        },
                        {
                            "id": 5,
                            "name": "model",
                            "value": "SMSZB-120"
                        },
                        {
                            "id": 6,
                            "name": "date_code",
                            "value": "20210820 00:14"
                        },
                        {
                            "id": 7,
                            "name": "power_source",
                            "value": 3
                        }
                    ]
                },
                {
                    "id": 1,
                    "name": "Power Configuration",
                    "attributes": [
                        {
                            "id": 32,
                            "name": "battery_voltage",
                            "value": 31
                        },
                        {
                            "id": 62,
                            "name": "battery_alarm_state",
                            "value": 0
                        }
                    ]
                },
                {
                    "id": 3,
                    "name": "Identify",
                    "attributes": []
                },
                {
                    "id": 15,
                    "name": "Binary Input (Basic)",
                    "attributes": [
                        {
                            "id": 85,
                            "name": "present_value",
                            "value": 0
                        },
                        {
                            "id": 111,
                            "name": "status_flags",
                            "value": 0
                        }
                    ]
                },
                {
                    "id": 32,
                    "name": "Poll Control",
                    "attributes": []
                },
                {
                    "id": 1280,
                    "name": "IAS Zone",
                    "attributes": [
                        {
                            "id": 0,
                            "name": "zone_state",
                            "value": 1
                        },
                        {
                            "id": 1,
                            "name": "zone_type",
                            "value": 40
                        },
                        {
                            "id": 2,
                            "name": "zone_status",
                            "value": 48
                        },
                        {
                            "id": 17,
                            "name": "zone_id",
                            "value": 0
                        }
                    ]
                },
                {
                    "id": 1282,
                    "name": "IAS Warning Device",
                    "attributes": []
                }
            ]
        },
        {
            "id": 38,
            "status": 1,
            "device_type": 770,
            "profile_id": 260,
            "manufacturer": "frient A\/S",
            "model": "SMSZB-120",
            "output_clusters": [
                {
                    "id": 3,
                    "name": "Identify",
                    "attributes": []
                }
            ],
            "input_clusters": [
                {
                    "id": 0,
                    "name": "Basic",
                    "attributes": [
                        {
                            "id": 0,
                            "name": "zcl_version",
                            "value": 1
                        },
                        {
                            "id": 4,
                            "name": "manufacturer",
                            "value": "frient A\/S"
                        },
                        {
                            "id": 5,
                            "name": "model",
                            "value": "SMSZB-120"
                        },
                        {
                            "id": 6,
                            "name": "date_code",
                            "value": "20210820 00:14"
                        },
                        {
                            "id": 7,
                            "name": "power_source",
                            "value": 3
                        }
                    ]
                },
                {
                    "id": 3,
                    "name": "Identify",
                    "attributes": []
                },
                {
                    "id": 1026,
                    "name": "Temperature Measurement",
                    "attributes": [
                        {
                            "id": 0,
                            "name": "measured_value",
                            "value": 2075
                        }
                    ]
                }
            ]
        }
    ],
    "signature": {
        "manufacturer": "frient A\/S",
        "model": "SMSZB-120",
        "node_desc": {
            "logical_type": 2,
            "complex_descriptor_available": 0,
            "user_descriptor_available": 0,
            "reserved": 0,
            "aps_flags": 0,
            "frequency_band": 8,
            "mac_capability_flags": 0,
            "manufacturer_code": 4117,
            "maximum_buffer_size": 80,
            "maximum_incoming_transfer_size": 80,
            "server_mask": 10752,
            "maximum_outgoing_transfer_size": 80,
            "descriptor_capability_field": 0
        },
        "endpoints": {
            "1": {
                "profile_id": 49353,
                "device_type": 1,
                "input_clusters": [
                    3,
                    5,
                    6
                ],
                "output_clusters": []
            },
            "35": {
                "profile_id": 260,
                "device_type": 1026,
                "input_clusters": [
                    0,
                    1,
                    3,
                    15,
                    32,
                    1280,
                    1282
                ],
                "output_clusters": [
                    10,
                    25
                ]
            },
            "38": {
                "profile_id": 260,
                "device_type": 770,
                "input_clusters": [
                    0,
                    3,
                    1026
                ],
                "output_clusters": [
                    3
                ]
            }
        }
    },
    "class": "zigpy.device"
}

Les commandes:
SirenOn: 35::ias_wd::start_warning::1::0::3::10::0::0 (10 correspond au délai en seconde ou la sirène sonnera max 240s)
SirenOff: 35::ias_wd::start_warning::0::0::0::0::0::0

As tu possibilité d’augmenter le timeout à 10s pour cet équipement? Car je pense comme il est sur batterie, il n’est pas toujours en écoute et pendant mes tests de temps en temps j’avais ce message d’erreur.

Erreur exécution de la commande [Cuisine][Détcteur Fumée][Alarme on] : Erreur lors de la requete : http://127.0.0.1:8089/device/command(PUT), data : {"ieee":"00:15:bc:00:31:00:c5:60","cmd":[{"endpoint":35,"cluster":"ias_wd","command":"start_warning","await":1,"args":[1,0,0,10,0,0]}],"allowQueue":false} erreur : {"state":"error","result":"[0xbedf:35:0x0502]: Message send failure","code":0}

Autre chose comme je l’indique plus haut Frient - détecteur de fumée – commande sirene absente - Plugins / Protocole domotique - Communauté Jeedom. Est ce que tu pourrais gérer le « zone status » pour ces évènements?

  • Test du détecteur: ZoneStatus.Test|Restore_reports|Supervision_reports
  • Alarme feu: ZoneStatus.Restore_reports|Supervision_reports|Alarm_1
  • La pile est neuve mais logiquement pour la batterie (j’ai pas de log): Battery|ZoneStatus.Restore_reports|Supervision_reports
[2021-11-21 14:58:54][DEBUG] : {"devices":{"00:15:bc:00:31:00:ba:77":{"35":{"1280":{"cmd":{"1":{"value":"ZoneStatus.Test|Restore_reports|Supervision_reports","cluster_name":"IAS Zone"},"1.1":{"value":"bitmap8.0","cluster_name":"IAS Zone"},"1.2":{"value":"0","cluster_name":"IAS Zone"},"1.3":{"value":"0","cluster_name":"IAS Zone"}}}}}}}
[2021-11-21 14:58:54][DEBUG] : Search command for 00:15:bc:00:31:00:ba:77 logicalId : 35::1280::cmd::1 => ZoneStatus.Test|Restore_reports|Supervision_reports convert to ZoneStatus.Test|Restore_reports|Supervision_reports
[2021-11-21 14:58:54][DEBUG] : Search command for 00:15:bc:00:31:00:ba:77 logicalId : 35::1280::cmd::1.1 => bitmap8.0 convert to 0
[2021-11-21 14:58:54][DEBUG] : Search command for 00:15:bc:00:31:00:ba:77 logicalId : 35::1280::cmd::1.2 => 0 convert to 0
[2021-11-21 14:58:54][DEBUG] : Search command for 00:15:bc:00:31:00:ba:77 logicalId : 35::1280::cmd::1.3 => 0 convert to 0

Actuellement, il me semble que tu gères uniquement Alarm_1 seul.

Aussi pour info le détecteur envoie tout les 10 min

[2021-11-21 14:58:59][DEBUG] : {"devices":{"00:15:bc:00:31:00:ba:77":{"35":{"1280":{"cmd":{"1":{"value":"ZoneStatus.Restore_reports|Supervision_reports","cluster_name":"IAS Zone"},"1.1":{"value":"bitmap8.0","cluster_name":"IAS Zone"},"1.2":{"value":"0","cluster_name":"IAS Zone"},"1.3":{"value":"0","cluster_name":"IAS Zone"}}}}}}}
[2021-11-21 14:58:59][DEBUG] : Search command for 00:15:bc:00:31:00:ba:77 logicalId : 35::1280::cmd::1 => ZoneStatus.Restore_reports|Supervision_reports convert to ZoneStatus.Restore_reports|Supervision_reports
[2021-11-21 14:58:59][DEBUG] : Search command for 00:15:bc:00:31:00:ba:77 logicalId : 35::1280::cmd::1.1 => bitmap8.0 convert to 0
[2021-11-21 14:58:59][DEBUG] : Search command for 00:15:bc:00:31:00:ba:77 logicalId : 35::1280::cmd::1.2 => 0 convert to 0
[2021-11-21 14:58:59][DEBUG] : Search command for 00:15:bc:00:31:00:ba:77 logicalId : 35::1280::cmd::1.3 => 0 convert to 0

Merci :pray:

Ok merci je rajouterais les commandes demain sur la configuration.

Pour les 10s c’est pas possible, de mémoire c’est la clef qui gere ca, la seule solution c’est agir sur le poll cluster pour forcer le module a se réveiller plus souvent (mais il consommera plus de pile…)

J’ai pas compris pour le zone status par contre… De ce que je vois Alarm_1 ca doit renvoyé 1 et sinon 0. Ca correspond bien a 1 en cas de detection de fumée et 0 sinon je vois pas quoi rajouter de plus

Merci @Loic

Je ne pense que se soit lié à la clé en recherchant rapidement ils arrivent à jouer sur le timeout côté zigbee2mqtt. Je vais chercher côté zigpy et reviens vers toi si je trouve qqchose. Mais pas terrible de jouer avec le pool cluster (déjà qu’il se réveille déjà souvent) pas envie de changer les piles trop souvent.

Pour le zone status, ce qui m’intéresse c’est:
Le bit concernant le test (test du bon fonctionnement du détecteur de fumée) pour me faire un rappel de tester le détecteur après x jours (normalement tous les mois)par rapport au dernier test réalisé.
Et le bit battery ou le détecteur envoie une alerte 30 jours avant que la batterie soit vide.

Ce que dit la lib zigbee

Et dans zigpy


class ZoneStatus(t.bitmap16):
        """ZoneStatus attribute."""

        Alarm_1 = 0x0001
        Alarm_2 = 0x0002
        Tamper = 0x0004
        Battery = 0x0008
        Supervision_reports = 0x0010
        Restore_reports = 0x0020
        Trouble = 0x0040
        AC_mains = 0x0080
        Test = 0x0100
        Battery_Defect = 0x0200


Si tu pouvais peut-être renvoyer comme tu le fais déjà pour alarm_1=1 gérer les autres alarm_2=2,tamper=3,…… ou retourner un string test,Battery_defect….

J’espère que je suis plus claire :grinning:
Merci pour le temp passé.

Ben si tu trouves pour le timeout je suis preneur je vais chercher mais de mémoire j’ai pas la main dessus enfin pas quand c’est message send failure
Pour la commande de mémoire avec un ::raw tu peux récupérer la chaîne de caractères directement

Cool merci je vais tester ça prochainement

J’ai regardé le code de zigpy pour le timeout de ce que j’ai compris :

  • module alimenté : 5s
  • module sur batterie : 28s

Je suis pas sur que ca soit simple de modifier les valeurs en question malheureusement mais surtout 28s c’est deja enorme je trouve pas sur que mettre plus corrige quoique se soit.

Bonjour @Loic,

Je viens de refaire des essais et les commandes ne fonctionnaient plus.
La dernière fois, j’avais fait des tests après avoir fait un test de déclanchement avec fumée et du coup j’étais en ShortPoll Intervall.
Dans la doc, LongPool Interval est à 7,5s par défaut et tu le forces à 290s.


Quel en est la raison? Pour éviter de saturer le réseau?
Si je met à blanc le champ longPool, tu mets 20 (5s) par défaut dans ton code. Si je reset le détecteur il est bien à 30 (7,5s)

Avec 7,5s, je n’ai pas eu le message d’erreur même en m’acharnant. :+1:

Erreur exécution de la commande [Cuisine][Détcteur Fumée][Alarme on] : Erreur lors de la requete : http://127.0.0.1:8089/device/command(PUT), data : {"ieee":"00:15:bc:00:31:00:c5:60","cmd":[{"endpoint":35,"cluster":"ias_wd","command":"start_warning","await":1,"args":[1,0,0,10,0,0]}],"allowQueue":false} erreur : {"state":"error","result":"[0xbedf:35:0x0502]: Message send failure","code":0}

humhum… Je le mets a cette valeur sinon le module bouffe ses piles très très très rapidement… j’avoue la je sais pas quoi faire, je peux remettre a la valeur par défaut mais chez mois ça tien seulement quelques semaine avec cet valeur.

Dans la doc il parle de 3 ans. Il ne spécifie rien par rapport au pool control uniquement le report à 5 min

Sur mes 3 détecteurs, je vais en passer 2 à 30 et je reviens vers toi si j’ai plus de pile dans 3 semaine

Après j’ai peut-être eu un modèle avec un soucis firmware on verra suite à tes tests.

Bonjour @AntFleu, @Arnabosc, et tous les autres,
Merci pour vos contributions.
Heureux possesseur de plusieurs de ces détecteurs, je souhaiterais également interagir sur les sirènes.
J’ai essayé de créer ces commandes sans succès…
Auriez-vous une ou des copies d’écran de ces créations de commandes ?
D’avances, merci de vos retours.
A plus

Voici
image

Et il faut modifier le long pool control, pour remettre la valeur par défaut du module.
Soit tu mets 30 directement. (cela peut mettre du temps pour être à jour)
Soit tu le mets à Blanc, tu reset le module et tu le réinclus. (instantané)

Pour contrôler, tu dois avoir 30 quand tu interroge la valeur du longpool control. Si tu as un message d’erreur c’est que la nouvelle valeur n’est pas encore appliqué.