WH1080 Reichweite / Empfangsmöglichkeiten

Begonnen von Ranseyer, 19 Mai 2017, 08:38:44

Vorheriges Thema - Nächstes Thema

pejonp

@ranseyer

Wenn du crc_aus=2 einstellst ist ja die Erkennung ok. Ich hoffe du kannst damit leben.;-)
Pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

SabineT

Ich hab übrigens bei mir event-min-interval auf 240 eingestellt, damit das Log nicht so voll geschrieben wird. Zumindest für windSpeed und windDirectionDegree eigentlich eine eigene Funktion schreiben um die Werte zu mitteln (ist bei der Windrichtung nicht ganz so einfach, weil ja die normale Average Funktion nicht verwendbar ist), wobei da aber halt nicht einfach die letzen x Werte dazu genommen werden dürfen sondern die Werte der letzten x Minuten, bei der Richtung auch noch von der Windgeschwindigkeit abhängig gewichtet.

SabineT

es empfiehlt sich auch ein userReading für den Regen anzulegen:
attr WH1080 userReadings rain_total monotonic { ReadingsVal("WH1080","rain",0);; }
weil "rain" auch mal reseten kann, ist bei meiner Station heute passiert.
Besser wäre natürlich, wenn das gleich im SD_WS09 Modul abgefangen würde...

pejonp

@SabineT

Vorschläge wie das rain-problem gelöst werden könnte ?

Pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

SabineT

Zitat von: pejonp am 24 Mai 2017, 17:33:27
@SabineT

Vorschläge wie das rain-problem gelöst werden könnte ?

Pejonp
welches rain-problem meinst du?

pejonp

Zitat von: SabineT am 23 Mai 2017, 22:10:27
es empfiehlt sich auch ein userReading für den Regen anzulegen:
attr WH1080 userReadings rain_total monotonic { ReadingsVal("WH1080","rain",0);; }
weil "rain" auch mal reseten kann, ist bei meiner Station heute passiert.
Besser wäre natürlich, wenn das gleich im SD_WS09 Modul abgefangen würde...

Das hier.

Pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

SabineT

Ich meine da, man müsste im SD_WS09 Modul die Funktion vom "monotonic" nachbilden.

Sinngemäß könnte ich mir das so vorstellen, hab das aber nicht getestet:

if ($rain < $last_rain) {
  $offset += $last_rain;
}
$rain_reading = $rain + $offset;
$last_rain = $rain;

$rain ist der Wert, den die Wetterstation meldet, $rain_reading dann der Wert für das Reading.
$offset und $last_rain müssten dann natürlich auch gespeichert werden um nach einem Neustart vom fhem nicht wieder bei 0 zu beginnen.
Wie gesagt, nicht getestet, nur mal schnell so hingeschrieben.

Mir reicht da aber jetzt mal mein userReading dafür.

Wichtiger wäre eigentlich, eine Average-Funktion für die Windrichtung. Ich hab mir mal angeschaut, wie das im pywws gelöst ist, aber das ist ja in python geschrieben, das lässt sich dann nicht so einfach in perl nachbilden (zumindest mit meinen perl Kenntnissen). Ein normales average geht da ja nicht, weil das nicht für einen Vektor verwendbar ist.

Neuhier

Wie kann ich die Tagesmenge Regen auslesen?

So, daß man um 00:00 Uhr den Wert ausliest, vom momentanen Wert ( oder 23:59:59 Uhr ) abzieht und einen neuen Wert erhält.
Hört sich billig an, ist es aber wohl doch nicht.
Rain-total ( s.o. ) ist auch nicht das, was ich suche.

Aus der Beschreibung in Wiki/ Reference werde ich nicht schlau.

SabineT

#23
Zitat von: Neuhier am 25 Juli 2017, 12:06:40
Wie kann ich die Tagesmenge Regen auslesen?

So, daß man um 00:00 Uhr den Wert ausliest, vom momentanen Wert ( oder 23:59:59 Uhr ) abzieht und einen neuen Wert erhält.
Hört sich billig an, ist es aber wohl doch nicht.
Rain-total ( s.o. ) ist auch nicht das, was ich suche.

Aus der Beschreibung in Wiki/ Reference werde ich nicht schlau.
schau dir mal https://fhem.de/commandref.html#statistics an, da bekommst du dann die Werte für Stunde, Tag, Monat und Jahr (aktuell und davor).
Das schaut dann so aus:

statRain_total       Hour: 0.0 Day: 0.0 Month: 30.7 Year: 85.4 (since: 2017-05-24 )   2017-07-25 21:13:01
statRain_totalLast   Hour: 0.0 Day: 5.1 Month: 50.1 Year: -                           2017-07-25 20:59:55

bzw. wenn du nicht rain_total verwendest dann halt statRain und statRain_Last

Das mit rain_total mache ich, weil bei mir die WH1080 schon mal bei einem Gewitter den Regenzähler zurück gesetzt hat und damit jede Statistik durcheinander kommt...

Neuhier

Danke für den Tip/ die Anleitung.

Hat mir heute morgen auch die Statistik verdorben: von 78 schlagartig auf 0.
Mich stört aber schon länger, daß die Werte einfach aufaddiert werden.

Probiere Deinen Vorschlag morgen mal aus.

pejonp

Zitat von: SabineT am 24 Mai 2017, 21:27:38
Ich meine da, man müsste im SD_WS09 Modul die Funktion vom "monotonic" nachbilden.
Sinngemäß könnte ich mir das so vorstellen, hab das aber nicht getestet:

if ($rain < $last_rain) {
  $offset += $last_rain;
}
$rain_reading = $rain + $offset;
$last_rain = $rain;

$rain ist der Wert, den die Wetterstation meldet, $rain_reading dann der Wert für das Reading.
$offset und $last_rain müssten dann natürlich auch gespeichert werden um nach einem Neustart vom fhem nicht wieder bei 0 zu beginnen.
....
Hallo SabineT,

kannst du das mal so aufbereiten das ich das ins Modul übernehmen kann. Danke.

pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

SabineT

Zitat von: pejonp am 16 September 2017, 09:29:48
Hallo SabineT,

kannst du das mal so aufbereiten das ich das ins Modul übernehmen kann. Danke.

pejonp
Ich hab mal versucht das aktuelle 14_SD_WS09.pm von dev-r33 entsprechend zu erweitern.

Hier dazu das Ergebnis von diff -c
bash-3.2$ diff -c 14_SD_WS09.pm.org 14_SD_WS09.pm
*** 14_SD_WS09.pm.org 2017-09-16 13:40:19.000000000 +0200
--- 14_SD_WS09.pm 2017-09-16 14:24:57.000000000 +0200
***************
*** 382,388 ****
          #Log3 $iohash, 4, "SD_WS09_Wind bft : Ws:$windSpeed_bft  Wg:$windguest_bft " ;
          Log3 $iohash, 4, "SD_WS09_Wind $windstat[5] " ;
           
!           
       
        $hash->{lastReceive} = time();
      $def->{lastMSG} = $rawData;
--- 382,396 ----
          #Log3 $iohash, 4, "SD_WS09_Wind bft : Ws:$windSpeed_bft  Wg:$windguest_bft " ;
          Log3 $iohash, 4, "SD_WS09_Wind $windstat[5] " ;
           
!       
!        # Resets des rain counters abfangen:
!        # wenn der aktuelle Wert < letzter Wert ist, dann fand ein reset statt   
!        # die Differenz "letzer Wert - aktueller Wert" wird dann als offset für zukünftige Ausgaben zu rain addiert
!        # offset wird auch im Reading ".rain_offset" gespeichert
!         my $last_rain = ReadingsVal($hash->{NAME}, "rain", 0);
!         my $rain_offset = ReadingsVal($hash->{NAME}, ".rain_offset", 0);
!         $rain_offset += $last_rain if($rain < $last_rain);
!         my $rain_total = $rain + $rain_offset;
       
        $hash->{lastReceive} = time();
      $def->{lastMSG} = $rawData;
***************
*** 402,407 ****
--- 410,417 ----
            readingsBulkUpdate($hash, "battery", $bat)   if ($bat ne "");
            #zusätzlich Daten für Wetterstation
            readingsBulkUpdate($hash, "rain", $rain );
+           readingsBulkUpdate($hash, ".rain_offset", $rain_offset ); # Zwischenspeicher für den offset
+           readingsBulkUpdate($hash, "rain_total", $rain_total ); # monoton steigender Wert von rain
            readingsBulkUpdate($hash, "windGust", $windguest );
            readingsBulkUpdate($hash, "windSpeed", $windSpeed );
            readingsBulkUpdate($hash, "windGust_kmh", $windguest_kmh );


Fehlermeldung bekomme ich keine im fhem-log, ob bei einem Reset des rain counters der Wetterstation dann rain_total richtig weiter zählt konnte ich aber nicht testen und extra einen Reset provozieren will ich nicht.
Den Originalwert rain lasse ich mit der Änderung aber unangetastet, sollte also meine Änderung nicht richtig arbeiten wird lediglich in rain_total was falsches geschrieben.

lg, Sabine

pejonp

SabineT
Du kannst ja im Modul die bit-Anzahl für Rain verringern. Und wenn es regnet es prüfen. Da brauchst du nichts zurücksetzen.

Pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

SabineT

Zitat von: pejonp am 16 September 2017, 15:51:24
SabineT
Du kannst ja im Modul die bit-Anzahl für Rain verringern. Und wenn es regnet es prüfen. Da brauchst du nichts zurücksetzen.

Pejonp
Naja, ich hab kein Testsystem dafür und am Produktivsystem will ich da keine Experimente machen.
Ausserdem ist der derzeitige Zählerstand von rain 0x478 (aktueller Stand von rain / 0.3). Wenn ich da also auf 11 bit begrenze müsste ich 271,2mm Regen abwarten bis der Zähler überlaufen würde.