FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: DerD am 09 November 2026, 09:32:58

Titel: Anpassung 14_SD_WS.pm bei sehr hoher Luftfeuchte
Beitrag von: DerD am 09 November 2026, 09:32:58
Hallo zusammen,

physikalisch korrekt wird derzeit bei >100% LF ein Fehler zurückgegeben. Nun haben die Sensoren ja aber eine Toleranz, und in unserer Nebelecke sagt mein Sensor heute 101% LF. Also eigentlich alles korrekt und auch korrekt mir eine Fehlermeldung zuzuwerfen.

Ich kann das natürlich bei mir anpassen - bis zum nächsten Update. Wäre es denn möglich das auf 105% aufzuweiten?

Also den Code im Modul statt

    if ($hum > 100) {
      Log3 $name, 3, "$ioname: SD_WS_Parse $deviceCode - ERROR humidity $hum";
      return ""; 
    }


ein

    if ($hum > 105) {
      Log3 $name, 3, "$ioname: SD_WS_Parse $deviceCode - ERROR humidity $hum";
      return ""; 
    } elsif ($hum > 100) {
      $hum = 100;
    }

Titel: Aw: Anpassung 14_SD_WS.pm bei sehr hoher Luftfeuchte
Beitrag von: JoWiemann am 09 November 2026, 19:13:13
Hallo,

ich würde hier keine Fallunterscheidung machen. Im Log den Fehler dokumentieren und 100 zurückgeben. Ansonsten fallen weiteren Berechnungen, wie z.B. der Taupunkt auf die Nase.

Grüße Jörg
Titel: Aw: Anpassung 14_SD_WS.pm bei sehr hoher Luftfeuchte
Beitrag von: DerD am 11 November 2026, 16:45:24
Hallo Jörg,

ich verstehe dann nicht so ganz wie du es meinst.
Aktuell wird ja nur ein Fehler geloggt aber eben kein Wert, auch nicht die 100, zurückgegeben.
Titel: Aw: Anpassung 14_SD_WS.pm bei sehr hoher Luftfeuchte
Beitrag von: JoWiemann am 11 November 2026, 20:17:08
Zitat von: DerD am 11 November 2026, 16:45:24Hallo Jörg,

ich verstehe dann nicht so ganz wie du es meinst.
Aktuell wird ja nur ein Fehler geloggt aber eben kein Wert, auch nicht die 100, zurückgegeben.

Hallo Dieter,

ich habe jetzt ins Modul geschaut und würde den Code wie folgt ändern:
  if (defined $hum) {
    if ($hum < 1 || $hum > 100) {
      Log3 $name, 3, "$ioname: SD_WS_Parse $deviceCode - ERROR humidity $hum";
      return -1; 
    }
  }
Du kannst dann für Deinen speziellen Fall ein userReading definieren, dass den Wert auf -1 auf 100 korrigiert. Grundsätzlich deuten Werte außerhalb des Intervalls [1..100] auf einen fehlerhaften Sensor hin. Von daher würde ich hier keine Toleranz einbauen wollen. Ist aber nur meine Meinung.

Grüße Jörg
Titel: Aw: Anpassung 14_SD_WS.pm bei sehr hoher Luftfeuchte
Beitrag von: DerD am 12 November 2026, 19:24:13
Hallo Jörg,

ich würde das anders schreiben, bei einem Sensor für LF deuten Werte über 100 oder unter 0 auf einen defekten oder dummen Sensor hin. Ich habe leider zweiteres. Da hat einer für die Firmware einfach nicht aufgepasst und lässt größere Werte durch. Wenn man die Toleranzen der Sensoren von +/-5 oder 10% kennt, heißt das ja praktisch nichts.

Dein Vorschlag unterscheidet nun leider nicht zwischen zu tief (Null darf zudem ja dennoch sein) und zu hoch, wäre daher folgendes Ansatz möglich?

if (defined $hum) {
    if ($hum < 0) {
        Log3 $name, 3, "$ioname: SD_WS_Parse $deviceCode - ERROR humidity $hum";
        return -1;
    }
    elsif ($hum > 100) {
        Log3 $name, 3, "$ioname: SD_WS_Parse $deviceCode - ERROR humidity $hum";
        return 101;
    }
}
Titel: Aw: Anpassung 14_SD_WS.pm bei sehr hoher Luftfeuchte
Beitrag von: Ralf9 am 13 November 2026, 00:26:05
Welche ProtokollID hat der Sensor?

Gruß Ralf
Titel: Aw: Anpassung 14_SD_WS.pm bei sehr hoher Luftfeuchte
Beitrag von: DerD am 13 November 2026, 09:56:25
37
Titel: Aw: Anpassung 14_SD_WS.pm bei sehr hoher Luftfeuchte
Beitrag von: Ralf9 am 13 November 2026, 10:53:44
Da davon bis jetzt nur die ID 37 betroffen ist müsste es reichen dies nur für die ID 37 einzubauen.

In der 14_SD_WS.pm:
if ($protocol eq "37") {    # Bresser 7009994
...
$hum = SD_WS_binaryToNumber($bitData,24,31);

if ($hum > 100 && $hum < 106) {
  $hum = 100;
}