-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Heiman WarningDevice (8804) #240
Comments
Après un peu de gratouille dans l'histo Git, c'est le commit 1bd04fa qui pose problème. Les commandes strobe_ON_Buzzer_ON et STROBE_ON marchaient bien, mais elles ont été supprimées dans la dernière version du plugin. Je ne connais pas les dessous de la lib et je suis une buse en PHP mais est-ce qu'il serait possible de faire en sorte que ce pilotage du device redevienne possible ? Fonctions de bases attendues :
Si on a ces 4 commandes, on peut ensuite faire faire ce qu'on veut au device et recréer d'éventuels "buzzer_2sec" via un scenario. |
Il faut supprimer les commandes qui ne fonctionnent plus à l'aide du bouton "-" à droite de la ligne de commande. |
Ça c'est effectivement la solution si j'avais créé mon équipement avec l'ancienne version et si j'essayais de m'en servir avec la nouvelle, mais là c'est pas le cas. J'ai bien recréé mon équipement "from scratch" avec la nouvelle version. J'ai regardé un peu le contenu de la zigate.class.php et les specs Zigbee, est-ce que tu peux me confirmer 2-3 trucs ? D'après ce que je comprends, la commande zigbee est créée à l'aide de la méthode "public function _create_action($endpoint_id, $action, $name, $subtype, $value = null)" et les valeurs "utiles" sont :
Suivant si on est warning ou squawk, le struct utilisé comme payload n'est pas le même : En warning, les huits premiers bits définissent le signal (mode, clignotement, volume sonore), les 16 suivants la durée en secondes, les 8 d'après je sais pas trop ( uStrobeDutyCycle) et les 8 derniers le niveau de clignotement : typedef struct En alerte c'est plus simple, la payload est sur 8 bits : typedef struct Le premier bit correspond au On/Off de la sirène, le bits 4 au On/Off du clignotement et les bits 6 et 7 au volume sonore. C'est bien sur ce principe là que tu t'es basé aussi ? Si c'est bien le cas je ne comprends pas trop les lignes (surtout les $value 'armed' et 'disarmed') : Je m'attendrais plutôt une payload de type 11010001 pour Armed et 00000000 pour Disarmed Et pour les commandes de type warning, on dirait que tu ne passes en $value que la durée (60 pour 'buzzer_60sec' par exemple) alors que je m'attendais à y voir une payload plus complexe. Du coup j'y comprends rien :) |
Ce n'est pas directement le payload de la zigate qui est utilisé par le plugin, on utilise une bibliothèque intermédiaire pour simplifier les choses. def action_ias_squawk(self, addr, endpoint,
mode='armed',
strobe=True,
level='low',
direction=0, manufacturer_code=0):
'''
mode: armed or disarmed
strobe: True or False
level: low, medium, high, veryhigh
''' https://github.com/doudz/zigate/blob/master/zigate/core.py#L2213-L2222 pour le warning def action_ias_warning(self, addr, endpoint,
mode='burglar', strobe=True, level='low',
duration=60, strobe_cycle=10, strobe_level='low',
direction=0, manufacturer_code=0):
'''
mode: stop, burglar, fire, emergency, policepanic, firepanic, emergencypanic
duration: seconds
level: low, medium, high, veryhigh
strobe_cycle: duty-cycle of the strobe pulse, expressed as a percentage in 10% steps
strobe_level: level of the strobe (pulse) low, medium, high, veryhigh
''' |
OK, au temps pour moi, j'avais zappé la bibliothèque intermédiaire.
|
J'ai ce même modèle de sirène. |
ça pourrait m'aider de lancer les commandes et de me fournir le log en mettant le démon en mode debug |
Je confirme la présence d'un bug |
OK ça me rassure, je comprenais plus rien. Tant qu'à mettre le nez dedans, est-ce qu'il serait possible :
|
Après vérif pour squawk |
Moi j'ai pas tout à fait ça : |
Bonjour, une idée (à la louche) d'une date de résolution ? |
Le code de base fonctionne, mais ce que je souhaiterai faire c'est donner la possibilité à l'utilisateur de modifier les commandes proposées par défaut pour ajuster par exemple le durée de fonctionnement de la sirène, etc. |
Bonjour, j'ai également cette sirène utilisée avec la Zigate et Jeedom sur Raspberry Pi3B+. En effet, j'ai les mêmes résultats de commande que @pickwick86 . Est-ce qu'il y a eu une correction du code depuis ? J'ai essayé de faire une boucle afin que la sirène clignote x fois plus longtemps. Eh bien ça clignote beaucoup plus longtemps que ça ne devrait selon le nombre de répétition spécifiée. |
Hello,
[Device (5d4a) 00158d0003a4077f, Device (1ec5) 00158d0003fb74dd, Heiman WarningDevice (5d95) 000d6f0014f70d33] Il me retourne une liste de devices, je suis content :D
Heiman WarningDevice (5d95) 000d6f0014f70d33
En regardant les méthodes du device, je suis tombé sur action_ias_warning et action_ias_squawk
Il se passe rien...
Outch mes oreilles ! J'essaye de faire clignoter la lumière sans la sirène avec action_ias_warning
Il se passe rien encore une fois, je cherche sur google et je tombe sur le forum zigate.fr, cette sirène est évoqué et un patch du firmware rend possible son utilisation la version 3.1a. J'imagine que mon firmware est à jour sinon la sirène n'aurait pas sonnée. Mais lorsqu'on regarde les derniers post, ils parlent que cela est fonctionnel sur Domoticz. lien: https://zigate.fr/forum/topic/sirene-compatible-zigate-zigbee/?part=4 Je regarde le code de Domoticz en me disant que les fonctions doivent être proche et c'est le cas effectivement ! Et effectivement y'as des fonctions cool, dont strobe_only, qui fait appel à warningmode( nwkid, ep, 'stop' ) qui lui même appel à self._write_IASWD( nwkid, ep, warning_mode, warning_duration, strobe_duty, strobe_level) Par contre si on regarde le code de la fonction warningMode le calcul de warning_mode est différent que celui dont fait référence @doudz. Si notre device est un WarningDevice le calcul est différent:
Dans les autres cas le calcul est celui qui est fait par @doudz
Alors je tente, je met un gros magic number dans le code pour tester. Et miracle, ça clignote sans que ça sonne. On peut jouer sur la durée du clignotement, son rapport cyclique, etc. Voici ma modif en crade pour tester:
Petite explication pour les arguments de la fonctions
J'essayerais pour l'alarme plus tard y'as pas de raison. Si jamais, j'ai un code propre qui fonctionne correctement, je proposerais l'évol à @doudz |
Merci pour les essais mais le code actuel dit comme ceci |
En effet, je teste ça ce soir ^^ Par contre pour ceux qui se pose la question, c'est normal que l'alarme se coupe avec la fonction action_ias_squawk. Voici ce que dit la doc de NXP: The IAS WD cluster allows a device which detects warning conditions (e.g. fire) to trigger a warning on an IAS Warning Device which, in turn, initiates a physical alarm such as a siren and/or strobe. The IAS Warning Device hosts the cluster server and the triggering device hosts the cluster client. Two types of warning can be initiated:
Pour ceux qui ont la flemme de lire Squawk mode c'est pour émettre un son court typiquement lorsqu'on active ou désactive l'alarme. Et Warning c'est pour la faire sonner en continue, la durée est un uint_16 en secondes ce qui fait pratiquement 18h à sonner. Je pense que tu auras eu le temps de rentrer chez toi. |
@doudz Je viens de tester en effet ceci corrige le strobe Par contre, je n'arrive pas à activer l'alarme. J'ai refais une passe sur la datasheet de NXP JN-UG-3077 v2.1 chapitre 28 page 558 dans le tableau, on voit les valeurs suivantes :
Par rapport à ce qu'on voit dans le code je pense que les msb et lsb ont été inversés. En modifiant la ligne J'ai les modes burglar, fire, emergency qui font bien sonner l'alarme, c'est gagné :). Par contre, c'est la même à chaque fois, j'ai pas vu de différence. Les modes panic ne font pas sonner l'alarme, je pense que c'est pas implémenté dans la sirène tout comme le niveau sonore qui n'a aucun effet. Il me reste plus qu'a faire le faire marcher dans home assistant :s |
En faite c'est assez simple, voici ce que j'ai fais si ça intéresse du monde:
Et voilà, je peux me créer autant de script que je veux avec des valeurs prédéfinies. Merci @doudz pour ton taff c'est cool 👍 |
@fredericbcv c'est un peu off topic puisque ça concerne home assistant, mais tu ne peux pas indiquer le paramètre |
Ok c'est bon à savoir, merci |
Et du coup pour utiliser la sirène dans Jeedom ? |
J'utilise pas Jeedom mais Home Assistant, mais je pense que si tu appliques les même modifs que moi, il y'a moyen que cela corriges tes commandes prédéfinies dans Jeedom. |
@pickwick86 Hello, j'ai regardé doudz à pris en compte le correctif que j'avais proposé. Il manquait une partie sur ias_sqwak et warning mais c'est mineur. Si ça se trouve si tu met à jour le package python zigate, tu corriges ton problème. @doudz J'ai créé une pull request sur le reste de la modif |
Description du bug
Toutes les commandes gérées par la sirène Heiman ne sont pas reconnues.
Les commandes détectées ne fonctionnent pas toutes
Pour Reproduire
Etapes pour reproduire le problème:
Sur un jeedom à jour (dernière version stable + dernier plugin zigate stable), j'ai mis le plugin en mode inclusion et appuyé sur le bouton de ma sirène pour l’appairer.
Toutes les commandes ne sont pas affichées (pas de gestion du strobe alors que lors d'une précédente tentative elles étaient là).
Les commandes de type "Buzzer X secondes" ne fonctionnent pas. (Seule la commande "Armed" fait buzzer pendant une seconde)
Screenshots
Informations:
The text was updated successfully, but these errors were encountered: