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

Tags: #<Tag:0x00007fc6b6ef41e0> #<Tag:0x00007fc6b6ef40c8>

Bonjour,

Je viens de passer mon Detecteur de fumé Frient d’une ConBee II avec le plug-in Deconz a un Dongle Popp avec le plug-in Zigbee (beta) et la j’ai perdu la possibilitée de commander la sirene, tres pratique pour relayer l’alerte entre plusieurs detecteurs.

Serait il possible d’integre les commandes de pilotage de la sirene dans le Plug in Zigbee tels que cela est fait dans le plugin Deconz.

Plug in Zigbee

{
    "ieee": "00:15:bc:00:31:00:a0:43",
    "nwk": 52606,
    "status": 2,
    "lqi": "188",
    "rssi": "-53",
    "last_seen": "1632043924.0418453",
    "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": "20210624 11:58"
                        },
                        {
                            "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": 0,
                            "name": "checkin_interval",
                            "value": 14400
                        }
                    ]
                },
                {
                    "id": 1280,
                    "name": "IAS Zone",
                    "attributes": [
                        {
                            "id": 16,
                            "name": "cie_addr",
                            "value": [
                                144,
                                65,
                                14,
                                254,
                                255,
                                39,
                                253,
                                132
                            ]
                        }
                    ]
                },
                {
                    "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": "20210624 11:58"
                        },
                        {
                            "id": 7,
                            "name": "power_source",
                            "value": 3
                        }
                    ]
                },
                {
                    "id": 3,
                    "name": "Identify",
                    "attributes": []
                },
                {
                    "id": 1026,
                    "name": "Temperature Measurement",
                    "attributes": [
                        {
                            "id": 0,
                            "name": "measured_value",
                            "value": 2425
                        }
                    ]
                }
            ]
        }
    ],
    "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"
}

image

Plug in Deconz

image

image

Merci
Nystao

Bonjour,

@Loic avait deja regardé ce Plug-in ici … mais sans identifier la pôssibilitée de pilotage de la sirene.

Possibilitée bien presente et fonctionnel avec Deconz.

Des utilisateurs de ce detecteur on reussi a piloter la sirene depuis le plug-in Zigbee ?
Ajout des commandes a la main (j’ai bien essayer, mais pas trouvé de commande qui marche)


Nystao

Bonjour,

@Loic
Pas de news sur l’integration possible dans le plug-in ZIGBEE ??

Bonjour
Non sinon tu aurais eu une mise a jour. C’est un module complexe donc à part tester sur le on/off ou en ias warning (sirène) sans la doc du fabricant je ne peux rien faire.

et en s’inspirant de ce qui est fait dans le plugin Deconz qui lui integre bien ces commandes ??

C’est pas si simple ça me demanderai des jours de boulot, je ne peux pas alouet autant de temps à un module.

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:
image
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)
image

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

image

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

image

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.