Température moyenne de la pièce: éliminer dans les calculs les valeurs en dehors des plages "normales"

Hello,
dans une pièce, j’ai 2 températures qui remontent : l’une d’un capteur classique, l’autre du module de fil pilote de radiateur qui reste tout le temps à -999°C car non utilisée.
Et je me retrouve avec une température moyenne délirante de temps en temps :

Est-ce qu’on pourrait éliminer dans les calculs les valeurs en-dessous du zéro absolu (-273,15 °C) ou une autre valeur très basse ?

Merci d’avance :grin:

Salut @mutmut,

C’est des capteurs de quelle intégration ?

1 zigbee et 1 zwavejs.

Ok, effectivement on peut éliminer les valeurs délirantes !

1 « J'aime »

Hello,
je reviens avec un check de plus à faire.
Dans ma température de Salon, j’ai une sonde zigbee, ma netatmo et mon dyson (via matterbridge).
Pour l’instant mon Dyson n’a pas de valeur (car j’ai désactivé le plugin idoïne de matterbridge) et j’obtiens ceci, avec une temp moyenne erronnée forcément :


Il y aurait moyen d’ajouter un check sur le device pour savoir si il est OK ou KO et exclure sa valuer si KO ?

Je précise que les 2 autres capteurs me renvoient 24,7°C et 25,5°C.

C’est déjà le cas, le widget « Température de la pièce » affiche une moyenne des températures reçues dans la pièce durant la dernière heure (source : Gladys/server/lib/device/temperature-sensor/temperature-sensor.getTemperatureInRoom.js at master · GladysAssistant/Gladys · GitHub).

Ton appareil KO n’enverra plus de valeur et sera exclu du calcul au bout d’une heure.

ça marche, merci pour l’info, je vais surveiller alors :slight_smile:

1 « J'aime »

J’ai travaillé sur une PR avec Claude Haiku et voici le résultat :

Par contre je n’arrive pas à lancer les tests via VSCode, j’ai des messages d’erreur de ce type et je n’y comprends absolument rien (n’étant pas dev, là j’ai vraiment du mal) :

DualStef:server stef$ pwd
/Users/stef/CloudStation/github/Gladys/server
DualStef:server stef$ npm test

> test
> cross-env NODE_ENV=test ./node_modules/mocha/bin/mocha --recursive ./test/bootstrap.test.js "./test/**/*.test.js" --exit

node:events:497
      throw er; // Unhandled 'error' event
      ^

Error: spawn ./node_modules/mocha/bin/mocha ENOENT
    at ChildProcess._handle.onexit (node:internal/child_process:285:19)
    at onErrorNT (node:internal/child_process:483:16)
    at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
Emitted 'error' event on ChildProcess instance at:
    at ChildProcess._handle.onexit (node:internal/child_process:291:12)
    at onErrorNT (node:internal/child_process:483:16)
    at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'spawn ./node_modules/mocha/bin/mocha',
  path: './node_modules/mocha/bin/mocha',
  spawnargs: [
    '--recursive',
    './test/bootstrap.test.js',
    './test/**/*.test.js',
    '--exit'
  ]
}

Node.js v22.21.1
DualStef:server stef$ pwd
/Users/stef/CloudStation/github/Gladys/server
DualStef:server stef$ npm run eslint

> eslint
> eslint .

(node:82347) ESLintIgnoreWarning: The ".eslintignore" file is no longer supported. Switch to using the "ignores" property in "eslint.config.js": https://eslint.org/docs/latest/use/configure/migration-guide#ignore-files
(Use `node --trace-warnings ...` to show where the warning was created)

Oops! Something went wrong! :(

ESLint: 10.0.0

ESLint couldn't find an eslint.config.(js|mjs|cjs) file.

From ESLint v9.0.0, the default configuration file is now eslint.config.js.
If you are using a .eslintrc.* file, please follow the migration guide
to update your configuration file to the new format:

https://eslint.org/docs/latest/use/configure/migration-guide

If you still have problems after following the migration guide, please stop by
https://eslint.org/chat/help to chat with the team.

@pierre-gilles si jamais tu peux m’aider, je ne dis pas non.

EDIT :
avec l’aide de copilot, j’i pu avancer un peu :

npx prettier --write lib/device/temperature-sensor/temperature-sensor.getTemperatureInRoom.js

Il manquait une virgule d’après ce que j’ai vu … mais ça ne change rien :

Merci d’avoir testé d’aider avec l’IA !

Attention avec Claude Haïku, c’est un vieux modèle qui est peu performant et pas très intelligent :sweat_smile:

Comparaison avec Claude Opus 4.6 :

Pour faire tourner prettier, il faut lancer « npm run prettier » dans le dossier server :wink:

Haïku 4.5, c’est github et vscode qui propose en free alors je prends, je n’ai pas de compte payant.
Et il faut l’aider un peu mais le résultat était pas mal je trouve.

Je l’avais fait déjà aussi et ça n’avait pas fonctionné … et maintenant ça marche mais ça a modifié 81 fichiers, c’est normal ? :roll_eyes:
Je dois faire quoi ? valider et commit ?

EDIT : bon j’avance doucement, j’ai discard tout et modifié mon fichier seulement. Maintenant c’est eslint que je dois retravailler.

EDIT2 : j’arrive à la fin de ma débrouillardise :grimacing:
Tout passe maintenant (prettier, eslint) sauf codecov/patch
D’après ce que j’ai demandé à Perplexity, il faudrait que j’ajoute des tests spécifiques dans le fichier server/test/lib/device/temperature-sensor/temperature-sensor.test.js.
J’ai regardé et je ne sais absolument pas ce que je dois y mettre comme code pour tester mes ajouts malgré le fait que je vois bien qu’il y a des tests déjà en place mais qui ne correspondent pas à ce que j’ai ajouté dans l’autre fichier.
Bref je veux bien un coup de main sur cette partie, merci d’avance.

J’ai un lien de parrainage Windsurf si tu veux : Referrals | Windsurf

C’est annulable à tout moment, il y a une période d’essai, et sinon au pire c’est juste 12€ (15$) pour un mois d’usage, et franchement vu la qualité des modèles les 12€ sont très largement rentabilisés :smiley:

Non, uniquement les fichiers que tu as modifié doivent être modifiés.

Exact !

Demande à l’IA d’écrire les tests :wink:

Mais bon, on arrive peut-être à la limite du vibe-coding, dans tous les cas il faut relire et savoir ce que tu fais… :grimacing:

@mutmut J’ai regardé la PR, et je pense que l’IA est à côté de la plaque, ce qu’elle a pondu est totalement over-engineered, le même développement pourrait être écrit en… 1 seule ligne :sweat_smile: (contre 56 dans ta PR!! 55 de trop !)

Avant de t’aider, j’aimerais comprendre ton besoin, car en relisant ton message original, je pense que même cette PR ne répondait pas à ta problématique !

Quelle est le problème exactement ?

Aucune idée si c’est over ou pas car je ne suis pas dev :frowning:

J’ai 2 modules fil-pilote en zwave qui remontent une température.
Cette température est bonne si il y a une sonde de branchée (ce n’est pas mon cas), sinon la température est de -999°C.
Comme j’ai mis ces modules dans des pièces avec des capteurs de températures zigbee, je me retrouve avec des moyennes délirantes (-489,6°C dans mon exemple).
Et avec ces valeurs délirantes, je ne peux pas piloter mes chauffages correctement en me basant sur cette température moyenne.

J’ai donc demandé à l’IA d’exclure les températures qui étaient hors bornes pour la moyenne, à savoir une température min et une maxi.

Ok ! Bizarre quand même cet appareil :joy:

J’ai fais une autre PR du coup, la solution tient en quelques lignes, il fallait juste modifier la requête SQL pour exclure les valeurs fantaisistes, plutôt que de rajouter beaucoup de codes JS :slight_smile: La solution de Claude Haiku était trop complexe et peu efficiente.

La PR :

Je merge ça, ça part dans la prochaine version de Gladys !

1 « J'aime »

Disponible dans Gladys Assistant 4.68 :

1 « J'aime »