Durchschnittstemperatur des Raumes: Werte außerhalb der „normalen“ Bereiche aus den Berechnungen entfernen

Hallo,
in einem Raum habe ich zwei Temperaturen, die gemeldet werden: eine von einem herkömmlichen Sensor und die andere vom Heizkörperthermostatmodul, das immer bei -999°C bleibt, da es nicht verwendet wird.
Und ich erhalte manchmal eine völlig unrealistische Durchschnittstemperatur:

Könnte man bei den Berechnungen die Werte unter dem absoluten Nullpunkt (-273,15 °C) oder einem anderen sehr niedrigen Wert ausschließen?

Vielen Dank im Voraus :grin:

Hallo @mutmut,

Um welche Integrationssensoren handelt es sich?

1 Zigbee und 1 Z-WaveJS.

Ok, tatsächlich können wir die abwegigen Werte eliminieren!

Hallo,
je komme mit einem weiteren Check zurück, der zu erledigen ist.
In meiner Wohnzimmertemperatur habe ich einen Zigbee-Sensor, meine Netatmo und meinen Dyson (über Matterbridge).
Bisher hat mein Dyson keinen Wert (weil ich das entsprechende Plugin von Matterbridge deaktiviert habe) und ich erhalte dies, mit einem offensichtlich falschen Durchschnittswert:


Gibt es eine Möglichkeit, einen Check auf dem Gerät hinzuzufügen, um zu überprüfen, ob es OK oder KO ist, und seinen Wert auszuschließen, wenn es KO ist?

Ich möchte klarstellen, dass die beiden anderen Sensoren mir 24,7°C und 25,5°C zurückgeben.

Das ist bereits der Fall, das Widget „Raumtemperatur“ zeigt einen Durchschnitt der in dem Raum empfangenen Temperaturen während der letzten Stunde an (Quelle: Gladys/server/lib/device/temperature-sensor/temperature-sensor.getTemperatureInRoom.js at master · GladysAssistant/Gladys · GitHub).

Dein nicht in Ordnung Gerät wird keine Werte mehr senden und nach einer Stunde von der Berechnung ausgeschlossen werden.

Alles klar, danke für die Info, ich werde das dann mal beobachten :slight_smile:

Ich habe an einem PR mit Claude Haiku gearbeitet und hier ist das Ergebnis:

Allerdings schaffe ich es nicht, die Tests über VSCode auszuführen. Ich bekomme Fehler wie diese und verstehe absolut nichts (da ich kein Entwickler bin, tue ich mich hier wirklich schwer):

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 falls du mir helfen kannst, sage ich nicht nein.

EDIT:
Mit Hilfe von Copilot konnte ich ein wenig vorankommen:

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

Es fehlte ein Komma, soweit ich gesehen habe… aber es ändert nichts:

Danke, dass du beim Testen mit der KI geholfen hast!

Achtung, Claude Haïku ist ein altes Modell, das nicht sehr leistungsfähig und nicht besonders intelligent ist :sweat_smile:

Vergleich mit Claude Opus 4.6:

Um Prettier auszuführen, musst du « npm run prettier » im Ordner server starten :wink:

Haïku 4.5, das ist github und vscode, die es kostenlos anbieten, also nehme ich es, ich habe kein kostenpflichtiges Konto.
Und man muss ihm ein bisschen auf die Sprünge helfen, aber das Ergebnis war ganz gut, finde ich.

Das hatte ich schon gemacht und es hatte nicht funktioniert… und jetzt funktioniert es, aber es hat 81 Dateien geändert, ist das normal? :roll_eyes:
Was muss ich tun? Validieren und commit?

EDIT: okay, ich komme langsam voran, ich habe alles verworfen und nur meine Datei geändert. Jetzt muss ich noch eslint bearbeiten.

EDIT2: ich bin am Ende meiner Improvisationskünste :grimacing:
Jetzt funktioniert alles (prettier, eslint) außer codecov/patch
Laut dem, was ich Perplexity gefragt habe, müsste ich spezifische Tests in der Datei server/test/lib/device/temperature-sensor/temperature-sensor.test.js hinzufügen.
Ich habe mir das angesehen und weiß absolut nicht, welchen Code ich dort einfügen soll, um meine Ergänzungen zu testen, obwohl ich sehe, dass es bereits Tests gibt, die aber nicht dem entsprechen, was ich in der anderen Datei hinzugefügt habe.
Kurz gesagt, ich könnte etwas Hilfe bei diesem Teil gebrauchen, vielen Dank im Voraus.

Ich habe einen Windsurf-Referral-Link, wenn du möchtest: Discord

Es ist jederzeit kündbar, es gibt eine Testphase, und ansonsten sind es im schlimmsten Fall nur 12€ (15$) für einen Monat Nutzung, und ehrlich gesagt sind die 12€ bei der Qualität der Modelle mehr als rentabel :smiley:

Nein, nur die Dateien, die du geändert hast, sollten geändert werden.

Genau!

Frag die KI, die Tests zu schreiben :wink:

Aber gut, vielleicht kommen wir an die Grenze des Vibe-Codings, in jedem Fall muss man nachlesen und wissen, was man tut… :grimacing:

@mutmut Ich habe den PR überprüft und denke, dass die KI völlig daneben liegt. Was sie produziert hat, ist total überkompliziert. Die gleiche Entwicklung könnte in… einer einzigen Zeile geschrieben werden :sweat_smile: (gegenüber 56 in deinem PR!! 55 Zeilen zu viel!)

Bevor ich dir helfe, möchte ich dein Anliegen verstehen, denn beim Lesen deiner ursprünglichen Nachricht denke ich, dass dieser PR nicht einmal dein Problem gelöst hat!

Was ist das Problem genau?

Keine Ahnung, ob das over ist oder nicht, weil ich kein Dev bin :frowning:

Ich habe 2 Pilotkabelmodule in Z-Wave, die eine Temperatur melden.
Diese Temperatur ist korrekt, wenn ein Sensor angeschlossen ist (mein Fall ist das nicht), sonst beträgt die Temperatur -999°C.
Da ich diese Module in Räume mit Zigbee-Temperatursensoren gestellt habe, erhalte ich völlig verrückte Durchschnittswerte (-489,6°C in meinem Beispiel).
Und mit diesen verrückten Werten kann ich meine Heizungen nicht richtig basierend auf diesem Durchschnittswert steuern.

Ich habe also die KI gebeten, die Temperaturen, die außerhalb der Grenzen für den Durchschnitt liegen, auszuschließen, nämlich eine Mindest- und eine Maximaltemperatur.

Okay! Seltsame Vorrichtung trotzdem :joy:

Ich habe eine weitere PR gemacht, die Lösung besteht aus wenigen Zeilen, man musste nur die SQL-Abfrage ändern, um die Fantasiewerte auszuschließen, anstatt viel JS-Code hinzuzufügen :slight_smile: Die Lösung von Claude Haiku war zu komplex und ineffizient.

Die PR:

Ich merge das, es geht in die nächste Version von Gladys!

Verfügbar in Gladys Assistant 4.68: