Frage zu TFA_RAIN

Begonnen von LaberBlah, 04 März 2016, 17:16:42

Vorheriges Thema - Nächstes Thema

LaberBlah

Hallo zusammen,

ich habe einen TFA Dostmann Regensensor. Der wird von Rfxtrx433 erkannt und auch in FHEM angelegt.
Allerdings bekomme ich im FHEM lediglich eine Value "Total Rain" angezeigt. Die verändert sich auch.

Allerdings, wenn ich den code im Perl Modul richtig interpretiere, dann sollte da bei akutem Regen auch die momentane Niederschlagsmenge übertragen werden (zumindest interpetier ich das so, dass es hierfür Platzhalter im Protokoll gibt)

Nun meine Frage: Hab ich irgendwas falsch verstanden, oder hab ich irgendwas falsch gemacht?

Viele Grüße,

Stephan

Willi

Hallo,

bei diesem Sensor liefert die Firmware nur total rain zurück.
Bei den Sensoren RGR126/682/918/928 und PCR800 gibt es noch zusätzlich eine rain rate.

Du kannst Dir allerdings in den fhem-Grafiken auch das Delta pro Stunden und pro Tag anzeigen lassen (delta-h und delta-d).

Grüße

Willi
FHEM@Q600(debian) mit DS9490R (1Wire) | FHEM@Sheevaplug(debian) mit RFXCOM-Receiver(80002), CULv3 & USB-WDE1 | FHEM@odroid mit CULv2 & RFXtrx433

LaberBlah

Vielen Dank für den Tipp mit dem Delta.
Ansonsten hab ich mir bereits einen Workaround gebastelt über die 46_TRX_WEATHER.pm:

Recht weit oben:

my $old_train =0;
my $old_traintime;


Und dann in der Subroutine:


sub TRX_WEATHER_common_rain {
  [...]
  if ($dev_type ne "TX5_RAIN") {
        my $train = ($bytes->[7]*256*256 + $bytes->[8]*256 + $bytes->[9])/10; # total rain
        push @res, {
                device => $dev_str,
                type => 'train',
                current => $train,
                units => 'mm',
        };
        if ($dev_type eq "TFA_RAIN") {
                use Time::Local;
                if ($old_train==0) {
                        $old_train=$train;
                        $old_traintime=timegm(gmtime());
                }
                if ($train > $old_train) {
                        my $rain_diff = $train - $old_train;
                        my $thetimenow=timegm(gmtime());
                        my $time_diff=$thetimenow - $old_traintime;
                        $rain = $rain_diff / $time_diff * 3600;
                        $old_train=$train;
                        $old_traintime=timegm(gmtime());
                }
                push @res, {
                       device => $dev_str,
                       type => 'rain',
                       current => $rain,
                       units => 'mm/h',
                 };
        }
  }
  [...]
}


Darf gerne verwendet werden.