FHEM Forum

FHEM - Hausautomations-Systeme => EnOcean => Thema gestartet von: anvoes am 05 November 2019, 23:49:17

Titel: Eltako FAH60: Softwarefehler Auslesen der Helligkeit zwischen 0 bis 100 lx
Beitrag von: anvoes am 05 November 2019, 23:49:17
Die Software im Module 10_EnOcean behandelt das Auslesen des Eltako FAH60 Helligkeitsensors nicht korrekt.

Der Kommentar im Code für die betreffende Stelle lautet:

      # Light Sensor (EEP A5-06-01)
      # [Eltako FAH60, FAH63, FIH63, Thermokon SR65 LI, untested]
      # $db[3] is the voltage where 0x00 = 0 V ... 0xFF = 5.1 V
      # $db[3] is the low illuminance for Eltako devices where
      # min 0x00 = 0 lx, max 0xFF = 100 lx, if $db[2] = 0


Richtigerwese (laut Eltako Gesamtkatalog 2020, Abschnitt T) muss es heissen:

      # Light Sensor (EEP A5-06-01)
      # [Eltako FAH60, FAH63, FIH63, Thermokon SR65 LI, untested]
      # $db[3] is the voltage where 0x00 = 0 V ... 0xFF = 5.1 V
      # $db[3] is the low illuminance for Eltako devices where
      # min 0x00 = 0 lx, max 0x64 = 100 lx, if $db[2] = 0


Dementsprechend wäre der Code abzuändern von


      if ($manufID eq "00D") {
        if($db[2] == 0) {
          $lux = sprintf "%d", $db[3] * 100 / 255;
        } else {
          $lux = sprintf "%d", $db[2] * 116.48 + 300;
        }
      } else {


in


      if ($manufID eq "00D") {
        if($db[2] == 0) {
          $lux = sprintf "%d", $db[3];
        } else {
          $lux = sprintf "%d", $db[2] * 116.48 + 300;
        }
      } else {


Danke und Grüße,

Andreas
Titel: Antw:Eltako FAH60: Softwarefehler Auslesen der Helligkeit zwischen 0 bis 100 lx
Beitrag von: klaus.schauer am 06 November 2019, 20:28:08
Danke für den Hinweis. Die Skalierung basiert auf den Eltako-Protokollbeschreibungen bis 2014. Ab 2015 wurde dies wohl geändert. Ich werde eine Unterscheidung mit Hilfe des Attributs "model" einarbeiten. Für die neueren Sensoren muss dann das Attribut "model" manuell auf "Eltako_FAH60" gesetzt werden.
Titel: Antw:Eltako FAH60: Softwarefehler Auslesen der Helligkeit zwischen 0 bis 100 lx
Beitrag von: anvoes am 09 November 2019, 17:42:31
Während meiner Versuche mit dem FAH60 ist mir aufgefallen, dass im Fall, dass die Helligkeit zwischen 300 lx und 30.000 lx liegt, das Datenbyte 4 dennoch Werte enthält, obwohl laut Eltako Handbuch in diesem Fall dieses Byte ungültig ist.

Da ich aber beim ersten Hinsehen den Eindruck hatte, dass die Daten im Byte 4 dennoch sinnvolle Werte enthält und möglicherweise undokumentierter Weise die Spannung des Solarmoduls bzw. des Kondensators darstellen könnte, habe ich dies einfach mal ausprobiert und den Code in 10_EnOcean.pm dahingehend geändert. Und tatsächlich, es kommt eine scheinbar sinnvolle Kurve heraus. Dabei habe ich angenommen, dass der Messbereich zwischen 0V und 5V liegt. Aufgrund der fehlenden Spezifikation weiß ich natürlich nicht, ob dem auch wirklich so ist.

Da ich weiterhin ausschließen wollte, dass der gemessene Wert eine zur Helligkeit korrelierter Scheinwert ist, habe ich einen Test gemacht und das Solarpanel für einige Stunden abgeklebt. Tatsächlich ging nach einiger Zeit der gemessene Spannungswert nach unten. Schlussendlich kam ich aber zu der Überzeugung, dass es sich tatsächlich um den Spannungswert handelt, als ich nach ein paar Stunden die Abdeckung vor dem Solarpanel wieder entfernt habe und der Spannungswert schlagartig nach oben ging, obwohl es bereits Abenddämmerung war und es an der Helligkeit nicht liegen konnte.

Ich habe diesem Post einen Screenshot mit den Kurven angehängt und den Zeitpunkt der Abdeckung des Solarpanels mit (1) und den Zeitpunkt der Freigabe des Solarpanels mit (2) markiert.

Falls jemand dies selbst ausprobieren möchte kommt hier der Auszug aus 10_EnOcean.pm mit meiner kleinen Änderung. (@Klaus: was hältst Du davon die Änderungen im Code aufzunehmen? Ich weiß, es wäre die Verwendung eines undokumentierten Feature, aber aufgrund meiner Tests bin ich überzeugt, dass es keine Scheinmessung ist.)

      # Light Sensor (EEP A5-06-01)
      # [Eltako FAH60, FAH63, FIH63, Thermokon SR65 LI, untested]
      # $db[3] is the voltage where 0x00 = 0 V ... 0xFF = 5.1 V
      # $db[3] is the low illuminance for Eltako devices where
      # min 0x00 = 0 lx, max 0xFF = 100 lx, if $db[2] = 0
      # $db[2] is the illuminance (ILL2) where min 0x00 = 300 lx, max 0xFF = 30000 lx
      # $db[1] is the illuminance (ILL1) where min 0x00 = 600 lx, max 0xFF = 60000 lx
      # $db[0]_bit_0 is Range select where 0 = ILL1, 1 = ILL2
      my $lux;
      my $voltage = "unknown";
      if ($manufID eq "00D") {
        if($db[2] == 0) {
          $lux = sprintf "%d", $db[3];
          $voltage = sprintf "%0.1f", 0;
        } else {
          $lux = sprintf "%d", $db[2] * 116.48 + 300;
          $voltage = sprintf "%0.1f", $db[3] * 0.02;
        }
      } else {
        $voltage = sprintf "%0.1f", $db[3] * 0.02;
        if($db[0] & 1) {
          $lux = sprintf "%d", $db[2] * 116.48 + 300;
        } else {
          $lux = sprintf "%d", $db[1] * 232.94 + 600;
        }
      }
      push @event, "3:voltage:$voltage";
      push @event, "3:brightness:$lux";
      push @event, "3:state:$lux";
Titel: Antw:Eltako FAH60: Softwarefehler Auslesen der Helligkeit zwischen 0 bis 100 lx
Beitrag von: klaus.schauer am 12 November 2019, 18:25:38
Undokumentierte Funktionen oder Datenfelder wurden bisher grundsätzlich nicht in Fhem übernommen. Im Zweifelsfall hilft im konkreten Fall eine Anfrage beim Eltako-Support, um die beabsichtigte Nutzung des Datenfelder durch den Hersteller zu klären.
Titel: Antw:Eltako FAH60: Softwarefehler Auslesen der Helligkeit zwischen 0 bis 100 lx
Beitrag von: anvoes am 19 November 2019, 22:35:22
Ok, verstehe ich.

Zu diesem Thema ist mir gerade eben noch ein weiterer Fehler aufgefallen. Laut Eltako ist kodiert das Byte2 mit 0x00-0xFF den Wertebereich 300-30.000 lux. Das kann aber nicht sein, da falls das Byte2 == 0 ist, dies ja der Marker ist, dass das Byte3 auszuwerten ist welches den Bereich 0-100 lux kodiert. Also fällt der Wert 0 für das Byte2 weg und es müsste dementsprechend richtigerweise heißen, dass das Byte2 mit 0x01-0xFF den Bereich 300-30.00 lux kodiert. Ich hatte mich schon seit langem gewundert, weshalb ich nie Werte zwischen 300-415 lux bekomme (416 lux ist immer der erste Wert - und der ist wohl tatsächlich 300 lux). Zumindest ist mir nun klar woran das liegt.

Ich habe zu beiden Themen den Hersteller angeschrieben und um Klärung gebeten.
Titel: Antw:Eltako FAH60: Softwarefehler Auslesen der Helligkeit zwischen 0 bis 100 lx
Beitrag von: anvoes am 21 November 2019, 17:05:57
Ich habe mittlerweile Informationen von der Entwicklungsabteilung bei Eltako bekommen und fasse wie folgt zusammen:

Falls notwendig kann ich aus den E-Mails mit der Entwicklung zitieren.
Titel: Antw:Eltako FAH60: Softwarefehler Auslesen der Helligkeit zwischen 0 bis 100 lx
Beitrag von: klaus.schauer am 21 November 2019, 19:50:10
Na dann brauchen wir nur noch einen halbwegs passenden Wertebereich und die Skalierung des Spannungswertes sowie idealerweise auch Schwellwerte für den Batteriestatus wie ok, low, empty.