Page 1 sur 1
Comptage via GPIO
Publié : 12 juil. 2024, 07:28
par Kohntark
Salut,
Je galère sur un truc qui semble tout con.
Je souhaite compter les impulsions d’un pluviomètre (ampoule reed) via GPIO.
Pb :
Certaines impulsions ne sont pas comptées par Domoticz, parfois une dizaine d’affilée (lorsque je teste en manuel à raison de 1...3 basculements par seconde, mais ces « loupés » sont également présents à une fréquence bien moins élevée)
Ce que j’ai vérifié :
- les impulsions données par l’ampoule reed => OK
- la charge du Raspberry => OK
- changer de GPIO, etc …
Et surtout, lorsque je fais un « pinctrl poll XX » le Raspberry « voit » toutes les impulsions.
Ce n’est donc pas une histoire de longueur de câble ou de pull-up, mais bien un soucis au niveau de Domoticz.
Infos :
Domoticz 2024.6 (build 16150)
Generic sysfs GPIO
Raspberry Pi 4
Debian 12
Si quelqu’un a une idée ?
Merci d’avance

Re: Comptage via GPIO
Publié : 12 juil. 2024, 08:59
par psubiaco
Salut,
Domoticz gère parfois une file d'attente d'événements très longue : pour chaque événement il exécute des scripts. De plus, lorsqu'il effectue une sauvegarde de la base de données, tous les événements sont gelés.
Je suggère d'utiliser un module qui compte les impulsions : par exemple les modules DomBus peuvent compter jusqu'à une fréquence de 500 Hz.
J'utilise avec succès DomBus avec un compteur d'eau de 150 à 200 Hz, tout comme certains compteurs de puissance/énergie à sortie pulsée.
DomBus12 est très très bon marché et fonctionne très bien, mais presque tous les modules DomBus ont des entrées E/S (qui peuvent être utilisées comme compteur, bien sûr). Connectez simplement la sortie Reed entre une E/S et GND, connectez le module via un câble d'alarme à 4 fils à un adaptateur RS485/USB et à une alimentation 12 V.
Installez le plugin python pour DomBus, redémarrez Domoticz, puis entrez dans le panneau des commutateurs, définissez une adresse unique pour le module Dombus, choisissez le port d'E/S sur lequel vous avez connecté le capteur Reed et configurez-le comme compteur en écrivant IN_COUNTER dans l'appareil. Description.
https://www.creasol.it/fr/products/domotics
Exemple : Dombus12 connecté à 3 sorties pulsées (compteurs d'énergie)

- AN_energy_meter_dombus12_800.png (282.1 Kio) Consulté 32613 fois
Exemple 2 : Dombus37 connecté à un débitmètre d'eau

- creDomBus37_hotwater.png (451.53 Kio) Consulté 32612 fois
Re: Comptage via GPIO
Publié : 12 juil. 2024, 10:41
par Kohntark
Merci pour ta réponse.
Domoticz gère parfois une file d'attente d'événements très longue : pour chaque événement il exécute des scripts. De plus, lorsqu'il effectue une sauvegarde de la base de données, tous les événements sont gelés.
S’il s’agissait d’un buffer alors le comptage finirait par s’incrémenter, hors ce n’est pas le cas.
Idem pour les backups et autres « cron » qui tournent.
Là, je perds constamment des impulsions, quelque-soit la fréquence.
Par ailleurs je ne souhaite pas ajouter de matériel (coût, complexité, consommation électrique, …) pour un truc aussi simple (mais je garde ton lien au frais, ça pourrait potentiellement me servir dans le futur)
Cordialement-
Modération
Publié : 12 juil. 2024, 12:40
par Keros
Sujet déplacé dans la section dédiée au DIY.
Re: Comptage via GPIO
Publié : 13 juil. 2024, 14:18
par Kohntark
Bon, vu que ça me démange et que j’aimerai comprendre le pourquoi du comment, j’ai fait quelques tests.
J’ai simulé, via un générateur de fonction, un signal carré (duty 50%), répété 20 fois.
Côté Domoticz c’est un script DZEvent tout con qui incrémente un compteur en fonction des impulsions envoyées au GPIO.
Le Raspberry semble ne louper aucune impulsion (lorsque l’on fait un «
pinctrl poll xx »)
A 1Hz on voit déjà que Domoticz loupe des impulsions. A 2Hz c'est encore plus significatif. Au delà il n'y a plus d'incrémentation (ou presque)
Clairement j'ai loupé quelque chose, je ne veux pas croire que Domoticz est incapable de gérer un simple contact qui commute 2 fois par seconde.
... un truc de config quelque part ?
Merci à ceux qui me mettront sur la piste

Modération
Publié : 13 juil. 2024, 19:09
par Keros
En hébergeant les images à l'extérieur du forum, il y a de fort risques qu'elles ne soient plus disponibles dans quelque temps comme
ici,
là ou encore
là. Est-ce que tu peux éditer ton message et suivre les indications données dans la section
Bien utiliser le forum ? Merci
Re: Comptage via GPIO
Publié : 15 juil. 2024, 11:42
par Kohntark
Bon, force est de constater que la gestion des GPIO dans Domoticz est une grosse daube (et je ne parle même pas du kernel 6.6)
Afin d’éliminer toute problématique qui pourrait venir de mon installation existante, j’ai installé from scratch un Raspberry PI OS (Bookworm 6.6.31+rpt-rpi-v8) sur un PI400 ainsi que Domoticz.(Version: 2024.7) ... mêmes résultats.
Donc, clairement, Domoticz est incapabale de gérer les GPIO dès 1Hz (duty 50%), en tout cas nativement.
Pourtant, dans le code source, on trouve bien la gestion des exceptions, un “sysfsdebounce” qui descend à 1 ms (WTF ?) ... d’après moi c’est buggé.
Sans doute est-ce lié à l’utilisation de Sysfs (qui est obsolète)
Bref, l’une des solutions possibles est (peut-être) de passer par Node Red.
J’ai fait quelques tests et les résultats sont sans appel : Aucune perte d’impulsion.
Ca passe à 25Hz avec un duty à 20%, largement suffisant pour une utilisation Domotique.
Reste plus qu’à claquer quelques dumrmy pour récupérer (enfin) ce pluviomètre.
Ça devrait le faire

Re: Comptage via GPIO
Publié : 15 juil. 2024, 18:46
par higgins91
petite question, as-tu mesuré le délais entre 2 bascules de ton pluviomètre quand il pleut ?
Quand j'ai refait le miens avec un arduino wemos, j'ai mesuré en gros 1.1mm d'eau par bascule. A part sur une averse qui doit arriver dans les Antilles, je ne pense pas qu'on atteigne le rythme de 1cm d'eau en moins de 10 secondes....
Donc pas sur de l'utilité de descendre sous la seconde pour compter les bascule ?
Re: Comptage via GPIO
Publié : 15 juil. 2024, 21:41
par Kohntark
Salut,
Non, je ne l’ai pas testé lorsqu’il pleut.
Je ne me souviens plus des valeurs correspondant à une bascule.
En fait, je me suis aperçu du problème en souhaitant l'étalonner (verser un volume d’eau connu et compter le nombre d’impulsions)
Tu as sans doute raison sur la fréquence, puisque je n’habite pas aux Antilles

Mais, mais … le problème n’est pas seulement le nombre de basculements par seconde, mais aussi (et surtout) la durée de l’impulsion.
J’ai constaté que Domoticz (mes relevés précédents), avec son utilisation de sysfs, n’était pas fiable, même avec des impulsions à 500 ms (1Hz 50 % duty)
Hors mon pluviomètre émet des impulsions qui doivent avoisiner les 100ms.
J’espère que les prochaines versions de Domoticz corrigeront cette problématique car en l’état l’utilisation des GPIO est dans bien des cas impossible (à moins que j’ai loupé quelque chose, mé j’vois pas)
Re: Comptage via GPIO
Publié : 15 juil. 2024, 23:18
par Kohntark
Pour résumer ce post et le clore :
Domoticz (2024.7) ne semble pas en mesure de gérer l’acquisition d’impulsions inférieures à 500ms (sur Raspberry 4), même lorsque les interruptions sont activées et avec un sysfsdebounce au minimum.
Il est donc nécessaire de déléguer la gestion des GPIO.
Pour ma part je suis passé par Node-Red et le résultat est parfait, même avec des impulsions à 8ms.
(en gros j'implémente un compteur dans Node-Red que je publie ensuite en MQTT vers Domoticz)