Page 1 sur 1

Supprimer le log pour un appareil trop verbeux

Publié : 07 févr. 2025, 15:06
par f-d-m
Bonjour,
J'ai relié ma centrale d'alarme à ma domotique Domoticz.
J'utilise l'alarme pour informer Domoticz de la présence dans la maison, et pour cela lors de passages devant les détecteurs l'alarme envoie une commande http à Domoticz pour activer un switch virtuel, afin de mettre des futurs automatismes pour l'éclairage ou le chauffage.

C'est mis en place des deux côtés et ça fonctionne.

Le problème c'est que le log est pollué avec des milliers de lignes identiques chaque fois qu'on est détecté.

Exemple:

Code : Tout sélectionner

2025-02-07 14:44:05.199 Status: User: x(IP: 192.168.x.x) initiated a switch command (116/Présence Maison/On)
2025-02-07 14:44:05.214 virtual: Light/Switch (Présence Maison)
2025-02-07 14:44:10.243 virtual: Light/Switch (Présence Maison) 
La 3è ligne se produit 5 secondes plus tard parce que j'ai mis un "off" automatique sur le device.

Alors j'ai tenté le coup en employant la commande:

Code : Tout sélectionner

/json.htm?type=command&param=udevice&idx=116&nvalue=1;0
et magie, il n'y a plus rien.. sauf le "auto-off" qui est programmé 5 secondes plus tard qui est quand même loggué. Comme le dit la documentation, avec param=udevice, aucune action dépendante de ce switch ne serait activée. Donc c'est plus ou moins un coup dans l'eau.

Est-ce quelqu'un parmi vous a une grande idée pour réduire le log au silence, dans le cas d'un device trop verbeux ?

Re: Supprimer le log pour un appareil trop verbeux

Publié : 07 févr. 2025, 15:44
par lost
Bonjour,

Pourquoi ne pas utiliser, en info de présence/absence, l'état d'activation de l'alarme? Normalement quand on est là elle est inactive et inversement? Ce serait plus simple de limiter cela à la source à mon sens.

Là, l'info de détection va dans les logs et il n'est à ma connaissance pas possible de désactiver cela par interrupteur ou autre. Juste globalement.

Il y a peut-être aussi moyen de faire mieux que d'envoyer un état systématiquement via l'api HTTP/JSON, même s'il n'a pas changé (soit en prenant en compte le dernier état envoyé et ne le faire que s'il a changé, sinon en lisant l'état du switch avant d'envoyer, seulement si pas déjà l'état actuel)? Après ça dépendra de ce qu'offre le côté source de l'info (alarme) comme possibilité.

Maintenant, j'ai également des trucs qui reportent de manière très verbeuses et ce n'est pas un si gros pb: En particulier le wattmètre qui est en entrée de tableau elec qui envoie des mesures (avec les logs correspondants) dès que W/I/V/CosPhy changent de 1% et je pourrais certes changer ce seuil, mais comme j'intègre les mesures de W sur 10mn glissantes pour calculer des moyennes sur ces tranches de temps et avoir des graphes plus réalistes de ma conso journalière que les bêtes échantillons de période 5mn que domoticz utilise nativement et qui ne représentent pas grand chose pour des valeurs qui varient bcp sur ces 5mn (c'est pas une température ou une hygro), je ne peux pas trop régler ce pb à la source sauf à perdre en précision pour mes moyennes!

Au moins quand y'a un truc qui ne semble pas fonctionner comme il faut on a tout le contexte, par contre il faut contenir la taille du log (j'ai un cron qui fait un truncate périodiquement sur le log domoticz) si on l'envoie dans un fichier et envoyer cela sur un tmpfs en ram (genre /tmp) bien dimensionné afin de ne pas affecter la carte mémoire d'un PI.

Tout ce qui est emmerdant à renvoyer des infos inchangées, c'est que les last_update ne veulent alors plus rien dire. Mais si on n'en a pas l'usage...

Re: Supprimer le log pour un appareil trop verbeux

Publié : 08 févr. 2025, 10:10
par f-d-m
Merci @lost !

Je retiens ceci:
lost a écrit : 07 févr. 2025, 15:44 l'info de détection va dans les logs et il n'est à ma connaissance pas possible de désactiver cela par interrupteur ou autre
Tant pis on fera avec.
lost a écrit : 07 févr. 2025, 15:44 j'intègre les mesures de W sur 10mn glissantes pour calculer des moyennes sur ces tranches de temps
Tu fais ça avec Domoticz ou bien avec des scripts externes ?
Par exemple j'ai mis une alerte de porte de garage laissée ouverte "trop longtemps", de l'ordre de 1/4h, je me suis résolu à scripter ça en allant chercher son statut ouvert/fermé toutes les 5 minutes. Je n'ai pas trouvé comment faire ça avec Dz et c'est sans doute tout con.
lost a écrit : 07 févr. 2025, 15:44 bien dimensionné afin de ne pas affecter la carte mémoire d'un PI.
Bon, je lui ai collé un petit SSD il y a 3 ou 4 ans. Mon espérance de vie restante est inférieure à celle du SSD !

Code : Tout sélectionner

231 SSD_Life_Left           0x0000   096   096   000    Old_age   Offline      -       96

Re: Supprimer le log pour un appareil trop verbeux

Publié : 09 févr. 2025, 07:39
par lost
f-d-m a écrit : 08 févr. 2025, 10:10 Tu fais ça avec Domoticz ou bien avec des scripts externes ?
C'est un script Lua qui fait l'intégration discrète mesure*durée (utilisant un virtuel en une variable utilisateur) afin de calculer une moyenne sur une tranche de temps cible de 10mn (>5mn, période ou domotics échantillonne en BDD/graphes, donc on ne perds aucune moyenne et on a une image temporelle fiable de sa conso).
Ce n'est hélas pas une fonctionnalité que domoticz intègre nativement...

Re: Supprimer le log pour un appareil trop verbeux

Publié : 09 févr. 2025, 11:54
par Flying Domotic
Pour revenir à la question initiale, je pense que désactiver "Log level: Info" et "Etat" sur les paramètres du matériel "Dummy (Does nothing, use for virtual switches only)" dans l'onglet "Configuration" > "Matériel" peut aider.

"Info" semble lister les changements des dispositifs, et "Etat" les lignes "User xxx initiated ..."

Ces paramètres agissent sur la totalité des dispositifs virtuels. Si supprimer les messages pour tous n'est pas acceptable, on peut créer un second matériel de type "Dummy", et ne désactiver les paramètres que pour celui là (auquel on peut ajouter habilement "non tracé" dans le nom). Il suffit ensuite de créer les dispositifs qu'on souhaite silencieux avec ce matériel (plutôt que celui existant initialement, qui trace tout).

Re: Supprimer le log pour un appareil trop verbeux

Publié : 10 févr. 2025, 00:06
par f-d-m
Flying Domotic a écrit : 09 févr. 2025, 11:54 ...on peut créer un second matériel de type "Dummy", et ne désactiver les paramètres que pour celui là...
Merci pour cette bonne idée, ça fonctionne ! Pour ce nouveau hardware de type Dummy, j'ai désactivé les niveaux de log Info et Status, et j'ai créé un virtual switch "Test cuisine (nolog)".

Les messages de ce type "2025-02-09 23:44:44.743 virtual: Light/Switch (nom du switch)" n'apparaissent plus.

Il reste encore la sollicitation http qui loggue en couleur verte :
2025-02-09 23:53:41.292 Status: User: x (IP: 192.168.x.x) initiated a switch command (187/Test cuisine (nolog)/On)

alors que lors de l'emploi de param=udevice rien n'est affiché...

Je crois que je vais arrêter de vous embêter avec ça :? merci à vous ! ;)

Re: Supprimer le log pour un appareil trop verbeux

Publié : 10 févr. 2025, 02:30
par Flying Domotic
Zarbi ... En principe, Status aurait dû le supprimer. Il faudrait voir le code, il y a peut être un raccourci (comprendre un bug) lorsque la commande est temporisée ...