landaisbenj a écrit :lost a écrit :
Une autre façon de faire est de donner un poids aux capteurs, de les additionner sur une tranche de temps glissante et déclencher sur un seuil atteint.
Je sais pas si il y a un interet d'avoir un seuil different si tu compte le nombre ? Ou peutetre pour la presence d'animaux.
En fait, cela me sert en effet surtout pour les capteurs extérieurs.
Mes PIR intérieurs semblent fiables et ont un poids de base égal à celui de déclenchement immédiat de l'alarme.
L'autre subtilité est que dehors, je n'ai qu'un PIR car un seul angle protégé des variations lumineuses, surtout. Sans parler des passages de chats (surtout)/fouines/hérissons...
J'ai donc surtout des caméras... ce qui est PIRe (!!) encore niveau déclenchements même en baissant fortement les sensibilités et adaptant les zones de detection de mvt!
En réalité ces caméras alimentent un détecteur de mvt switch vituel dans domoticz et sont vues comme un PIR en interne. C'est un service écrit en python qui fait le job et en plus d'un poids de base, prends en compte le nb d'images capturées (check par tranche de 10s) recues sur un FTP du PI afin de calculer un poids global. Poids de base et un diviseur du nb d'images pour calculer un poids global sont configurables par cam (ainsi qu'un message vocal, cf + loin) via un fichier YML. Si on est présent une synthèse vocale dit ou ca bouge (une seule fois par tranche de 5mn par cam, histoire d'éviter le spam vocal continu quand on est dehors), sinon ce service ne déclenche pas directement d'alarme (juste passer à on le PIR en début de script et off en fin + update poids global) mais envoie les lots d'images compressées/chiffrées sur un compte gmail dédié (ce que Domoticz ne sait pas faire et je refuse d'envoyer des images de chez moi, même dehors, en clair).
C'est donc un peu plus complexe mais en fait, ces cam ne font qu'alimenter un switch virtuel et additionner le poids du aux captures dans une variable utilisateur poids d'alarme global via l'API HTTP/JSON. Ca ajoute un service mais côté domoticz et ses scripts alarme en Lua ca ne change pas grand chose.
Car pour le reste, tout switch (virtuel ou réel) mouvement qui change d'état déclenche un script device Lua qui va regarder ces poids et en notre absence, déclencher la sirène si le seuil est atteint.
Pour les poids de base, c'est une convention de nommage. Tous les pirXXX déclenchent immédiatement car poids = seuil, ainsi que les opnXXX (capteurs ouverture porte). Les prmXXX (PIRs installé dehors pour surveiller un périmètre) ont un poids de base au quart du seuil et les camXXX on un poids de base de 1 (auquel s'ajoute le poids dû aux captures calculé côté python).
Ainsi, j'ajoute un nouveau capteur je n'ai pas à toucher aux scripts tant le nommage du switch respecte le préfixe de la convention de nommage! Idée très pratique trouvée dans le wiki.
Sinon, c'est encore un poil plus complexe côté déclenchement alarme car il y a un seuil intermédiaire (qui ne va concerner en pratique que les prm/cam) qui va faire une alarme courte (5s, manière de dire "vu" à un intrus en repérage sans emmerder trop le voisinage si c'est juste un chat qui traîne un peu inhabituellement là ou il faut pas) et non envoyer la sirène pour 2mn.
Pour l'anecdote, les caméras étant planquées et filmant à travers des trous de cache en bois, j'ai eu des mésanges qui ont fait sonner en venant s'y accrocher car elles se disaient probablement "chouette, un trou pour faire un nid... ah merde, y'a un objectif"! Les animaux, c'est vraiment un challenge...
Ca s'est fait un peu au fur et à mesure, faudrait d'ailleurs que je refonde ça proprement mais ca marche bien ainsi et j'aime pas trop Lua qui est pénible à tester et Python ca va un peu mieux, mais l'absence de délimiteur de bloc et se baser sur l’indentation est une stupidité qui m'indispose: Je comprends qu'on aime bien les indentations correctes facilitant la lecture, mais y obliger ainsi c'est juste bête et méchant: Parfois le problème est vu à l'analyse syntaxique et signalé avant exécution, mais tout ne peut être vu sans délimiteur. Et on peut ainsi, selon les config d'éditeurs étant passé sur le source, se retrouver avec des lignes de marge visuellement dans un bloc mais qui à l’exécution seront en dehors. Troquer sa fixette de présentation contre un biais aussi dangereux dans un langage de programmation c'est amha un peu inquiétant niveau santé mentale du créateur de ce langage...
Le support python dans Domoticz progresse, ouvrant la possibilité d'unifier cela un jour (surtout que j'ai pas abordé le côté détection de notre présence, un autre service python)... ou d'en faire un plug-in une fois que ce sera bien stable.
Là c'est trop bazar pour publier des sources. Ce serait trop de questions/support. Même moi quand je veux ajouter un truc après 6 mois je peine un peu, c'est pourquoi j'expose juste l'idée.