FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: Harst am 09 März 2019, 20:25:39

Titel: CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: Harst am 09 März 2019, 20:25:39
Es ist ziemlich windig draußen, aber die vom W132 gelieferten Werte sind nie über 3 m/s.
Als ich in den Quellen gesehen habe, dass folgendes berechnet wird (Zeile 1019 un 1034):

              $windSpeed = (hex($aReverse[6]) + hex($aReverse[7])) * 0.2;

das dürfte falsch sein, denn
              $windSpeed = (hex($aReverse[6])*16 + hex($aReverse[7])) * 0.2;
erscheint mir der gewollte Wert.

Kann das sein?

Horst
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: Harst am 11 März 2019, 08:09:29
Das Wochenende war richtig windig. Allerdings waren meine Korrekturen wohl falsch, denn dann ergaben sich 48 m/s oder 170 km/h. Das Datenblatt gibt 30 m/s als Maximum an. Bei 0.2 Auflösung scheint mir, dass die 8 Bit vom Wert aus 2 Digit zu bestehen.

  $windSpeed = (hex($aReverse[6])*10 + hex($aReverse[7])) * 0.2;
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: HomeAuto_User am 16 März 2019, 09:44:18
Guten Morgen,
wenn deine Erkenntnisse belegbar sind und du diese getestet hast, so kannst du einen offiziellen Patch einreichen. Somit wird die Änderung ,,beantragt" das der Maintainer dies einarbeitet. Nach diesem Schritt ist es im offiziellen System.

Notwendig dafür:
- eine PatchDatei von deiner Arbeitskopie zur Orginaldatei
- im entsprechenden Faden des Maintainer dies reinstellen (am besten Threadthema mit Bezeichnung Patch + Modulname versehen)
- parallel dazu kurze Info an Maintainer ist immer gut
- abwarten ob er es übernimmt und ins SVN übernimmt

so wäre der richtige Weg ohne sich fremd zu vergreifen.


Gesendet von mobil -> Tapatalk Pro
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: Harst am 16 März 2019, 11:29:45
Danke, ich versuche mich dran

Horst
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: HomeAuto_User am 16 März 2019, 14:04:09
Bitte :)
wenn noch Fragen sind, so helfe ich dir gern auch das File zu erstellen.

Grüße


Gesendet von mobil -> Tapatalk Pro
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: andies am 16 März 2019, 15:37:17
Zitat von: HomeAuto_User am 16 März 2019, 14:04:09
wenn noch Fragen sind, so helfe ich dir gern auch das File zu erstellen.
Ich bräuchte mal Hilfe. Es geht um bjoernh (Maintainer), der vermutlich in TCM97001.pm in Zeile 1757 den folgenden Code hat
         Log3 "Unknown", 2, "$iodev: CUL_TCM97001 Unknown device Unknown, please define it";

und ich würde
      Log3 "global", 2, "$iodev: CUL_TCM97001 Unknown device Unknown, please define it";

vorschlagen. Wo und wie reiche ich das ein bzw wo kann ich da was nachlesen?
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: jochen.baur@web.de am 15 Oktober 2019, 22:54:26
Hallo,

ich wollte das Gerät schon durch ein neues ersetzen, weil ich auch nur max 3m/s erreichen.
Der Patch ist wohl noch nicht eingeflossen.
Hab eben die Datei manuell angepasst. Wie kommt der Patch in das Paket damit beim nächsten Update nicht wieder die Korrektur überschrieben wird?

Gruß
Jochen
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: Harst am 15 Oktober 2019, 23:05:54
@@ -1019 +1019 @@ CUL_TCM97001_Parse($$)
-              $windSpeed = (hex($aReverse[6]) + hex($aReverse[7])) * 0.2;
+              $windSpeed = (hex($aReverse[6])*10 + hex($aReverse[7])) * 0.2;
@@ -1034 +1034 @@ CUL_TCM97001_Parse($$)
-              $windGuest = (hex($aReverse[6]) + hex($aReverse[7])) * 0.2;
+              $windGuest = (hex($aReverse[6])*10 + hex($aReverse[7])) * 0.2;

Das ist mein Patch dazu.

Horst
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: Ralf9 am 16 Oktober 2019, 08:56:36
siehe auch hier
https://forum.fhem.de/index.php/topic,101425.msg982113.html#msg982113

Gruß Ralf
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: JensS am 16 Oktober 2019, 09:05:35
Es freut mich, dass ihr euch des W132 erbarmt und dieser bald richtige Werte liefern wird.
Im SVN steht aber leider noch die 14_CUL_TCM97001.pm vom 2.7.19.

Gruß Jens
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: jochen.baur@web.de am 16 Oktober 2019, 12:07:53
Hallo Jens,

kannst einen anderen Windsensor empfehlen?
Freu mich zumindest jetzt das ich >3m/s geliefert bekommen, gerade rechtzeitig zur Sturmsaison.

Gruß
Jochen
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: JensS am 16 Oktober 2019, 20:41:40
Hallo Jochen, der W132 ist der einzige Windsensor, den ich besitze. Daher kann ich zu Anderen nichts schreiben. Gruß Jens
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: Ralf9 am 01 November 2019, 12:33:58
Hallo,

Könnt Ihr mal diesen Änderungswunsch für die Windrichtung anschauen:
https://forum.fhem.de/index.php/topic,101425.msg982113.html#msg982113


Für $windSpeed und $windGuest gibt es 2 verschiedene Änderungswünsche.

Zitat von: Harst am 15 Oktober 2019, 23:05:54
@@ -1019 +1019 @@ CUL_TCM97001_Parse($$)
-              $windSpeed = (hex($aReverse[6]) + hex($aReverse[7])) * 0.2;
+              $windSpeed = (hex($aReverse[6])*10 + hex($aReverse[7])) * 0.2;
@@ -1034 +1034 @@ CUL_TCM97001_Parse($$)
-              $windGuest = (hex($aReverse[6]) + hex($aReverse[7])) * 0.2;
+              $windGuest = (hex($aReverse[6])*10 + hex($aReverse[7])) * 0.2;


Zitat von: FrankL am 08 Oktober 2019, 20:59:43
Weiterhin denke ich, dass die Windgeschwindigkeiten bei Geschwindigkeiten über 3 m/s (entspricht Bitvalue > 15 * 0,2) falsch bzw zu niedrig berechnet werden. Allerdings habe ich keine Möglichkeit das praktisch zu testen. Ich habe hier das oben angebenene Datenblatt angeschaut. Demnach müssten folgende Zeilen meines Erachtens bei der Berechnung korrigiert werden:

Zeile 1022 alt:
$windSpeed = (hex($aReverse[6]) + hex($aReverse[7])) * 0.2;
Zeile 1022 neu:
$windSpeed = (hex($aReverse[6]) + hex($aReverse[7]) * 16) * 0.2;
Zeile 1037 alt:
$windGuest = (hex($aReverse[6]) + hex($aReverse[7])) * 0.2;
Zeile 1037 neu:
$windGuest = (hex($aReverse[6]) + hex($aReverse[7]) * 16) * 0.2;

Gruß Ralf
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: Harst am 01 November 2019, 12:47:32
Hallo,
das habe ich schon vor Monaten als Fehlerkorrektur eingereicht. Ist an meinem Sensor getestet und mit der Doku des Sensors konform (Beschreibung der Maximalgeschwindigkeit des Sensors passt ins Schema).

Der Patch wurde zwar zugesagt, aber leider nie eingespielt.

Horst
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: andies am 01 November 2019, 12:50:02
Harst hatte vorher auf *10 und nicht *16 verwiesen, *10 ist richtig.
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: JensS am 01 November 2019, 16:06:52
Laut DWD weht in meiner Nähe gerade SO-Wind mit 13 km/h.
aktuelle Messwerte CUL_TCM97001 (nacheinander gemessen)
Wert Originalmodul: 1,4 m/s bzw. 5,04 km/h
Wert Harst *10: 8 m/s bzw. 28,8 km/h
Wert FrankL: 0,8 m/s bzw. 2.88 km/h
Der Wert vom Wetterdienst scheint zu passen - es weht eine leichte Brise.

Gruß Jens
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: HomeAuto_User am 01 November 2019, 16:13:59
Zitat von: dirigent am 01 November 2019, 16:06:52
Laut DWD weht in meiner Nähe gerade SO-Wind mit 13 km/h.
aktuelle Messwerte CUL_TCM97001 (nacheinander gemessen)
Wert Originalmodul: 1,4 m/s bzw. 5,04 km/h
Wert Harst *10: 8 m/s bzw. 28,8 km/h
Wert FrankL: 0,8 m/s bzw. 2.88 km/h
Der Wert vom Wetterdienst scheint zu passen - es weht eine leichte Brise.

Gruß Jens

Hallo Jens,
ich denke solch einen Vergleich kann man nur machen, wenn man ein geeichtes Messgerät bei sich an die Stelle vom Sensor hält.
Das ganze so zu vergleichen wäre auch wieder nur die halbe Wahrheit.

Mir fehlt leider die Hardware des Sensors, so könnte ich dies vergleichen mit einem geeichten Messgerät.

MfG
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: JensS am 01 November 2019, 16:24:37
Du hast Recht, ein geeichtes Messgerät wäre notwendig. Was mich wundert ist, dass die Werte so verschieden sind. Im Originalmodul wird es nicht mehr als 3m/s. Mit der Änderung von Harst springt der Wert bei normalen Wind schon mal auf 72km/h. Die Änderung von FrankL scheint es auch nicht zu sein. Dort sind die Werte bei starkem Wind immer unter 10km/h. Eventuell stimmt die Referenzquelle zur Berechnung nicht.?

Gruß Jens
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: Ralf9 am 01 November 2019, 19:08:44
Falls dies hier stimmt
http://www.tfd.hu/tfdhu/files/wsprotocol/auriol_protocol_v20.pdf
dann ist
hex($aReverse[6] -> Bit 3-0
hex($aReverse[7]  -> Bit 7-4
also
$windSpeed = (hex($aReverse[6]) + hex($aReverse[7]) * 16) * 0.2;

Nach dem auriol_protocol_v20.pdf passt beim Modul im SVN die Windrichtung nicht.
Ich habe es bei mir mal angepasst, dies müsste mit einem Kompass recht einfach nachgeprüft werden können:
@@ -425,9 +425,10 @@
   my $channel = undef;
   # für zusätzliche Sensoren
   #my @winddir_name=("N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW");
-  my @winddir_name=("N","N","NE","E","SE","S","SW","W","NW");  #W132 Only these values were seen:0 (N), 45 (NE), 90 (E), 135 (SE), 180 (S), 225 (SW), 270 (W), 315 (NW).
+  my @winddir_name=("N","NE","E","SE","S","SW","W","NW","N");  #W132 Only these values were seen:0 (N), 45 (NE), 90 (E), 135 (SE), 180 (S), 225 (SW), 270 (W), 315 (NW).
   my $windSpeed = 0;
-  my $windDirection = 0  ;
+  my $windDirection = 0;
+  my $windDirectionDegree = 0;
   my $windDirectionText = "N";
   my $windgrad = 0  ;
   my $windGuest = 0;
@@ -1035,11 +1036,12 @@
           # *   F = Checksum
             if ((hex($amsg[3])== 0xE)|| (hex($amsg[3])== 0xF)) { # Windguest
               $windGuest = (hex($aReverse[6]) + hex($aReverse[7])) * 0.2;
-              $windDirection =  (hex($a[5]) >> 1) | (hex($a[4]) & 0x1);
+              $windDirectionDegree = (hex($a[3]) & 0x1)+ ((hex($aReverse[4])*2) + (hex($aReverse[5]))*32);
+              $windDirection = int($windDirectionDegree/45);
               $windDirectionText = $winddir_name[$windDirection];
               $haswind = TRUE;
               $model="W132";
-              Log3 $hash,4, "$iodev: CUL_TCM97001_04: $model windGuest: $windGuest aR: $aReverse[6] $aReverse[7]  winddir:$windDirection aR:$aReverse[4] $aReverse[5] txt:$windDirectionText";
+              Log3 $hash,4, "$iodev: CUL_TCM97001_04: $model windGuest: $windGuest aR: $aReverse[6] $aReverse[7] winddirDegree:$windDirectionDegree winddir:$windDirection:$windDirectionText";
             }
           # * Format for Rain
           # *   AAAAAAAA BBBB CCCC DDDD DDDD DDDD DDDD EEEE
@@ -1677,7 +1679,7 @@
     if ($haswind == TRUE) {
           readingsBulkUpdate($def, "windGust", $windGuest );
           readingsBulkUpdate($def, "windDirection", $windDirection );
-          #readingsBulkUpdate($def, "windDirectionDegree", $windDirection * 360 / 16);     
+          readingsBulkUpdate($def, "windDirectionDegree", $windDirectionDegree );
           readingsBulkUpdate($def, "windDirectionText", $windDirectionText );
           $state = "Wg: $windGuest "." Wd: $windDirectionText ";
           $haswind = FALSE;


Gruß Ralf
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: Harst am 01 November 2019, 22:25:27
Hallo Ralf,

ich hatte das *10 hergeleitet, aber Deine Version scheint zu stimmen. Ich habe bei mir einen Datensatz gefunden in den Logs, dort ich genau der Grenzbereich drin
DMSG: s856800083000
DMSG: s856800F07000
DMSG: s85680088D000
Die Werte sind in kurzem zeitlichen Abstand.
Die falsche Richtungsangabe könnte daher kommen, dass man den Sensor unten oder oben montieren kann.

Kannst Du die windSpeed-Änderungen auch für WindGust machen? Dort ist dasselbe Problem

Horst
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: Ralf9 am 02 November 2019, 01:07:51
ZitatKannst Du die windSpeed-Änderungen auch für WindGust machen?
Ja ich mache die Änderungen für WindSpeed und  WindGust.

ZitatDie falsche Richtungsangabe könnte daher kommen, dass man den Sensor unten oder oben montieren kann.
Dann macht es evtl Sinn für diejenigen, die den Sensor falsch rum montiert haben, es konfigurierbar zu machen.
              if (AttrVal($name, "windDirectionInverse", 0)) {
                 $windDirectionDegree = 360 - $windDirectionDegree;
              }


Gruß Ralf
Titel: Antw:CUL_TCM97001 liefert für W132 "falsche Werte
Beitrag von: Ralf9 am 07 November 2019, 23:04:04
Ich habe die Anpassungen für Ventus W132/W044 Wind und Rain bei mir eingebaut

https://github.com/Ralf9/14_CUL_TCM97001/commit/456be178e27a353b62a388bfa3a9cb10d53df004
https://github.com/Ralf9/14_CUL_TCM97001/blob/dev/fhem/FHEM/14_CUL_TCM97001.pm



Zitat von: andies am 16 März 2019, 15:37:17
         Log3 "Unknown", 2, "$iodev: CUL_TCM97001 Unknown device Unknown, please define it";

und ich würde
      Log3 "global", 2, "$iodev: CUL_TCM97001 Unknown device Unknown, please define it";

vorschlagen.

alternativ wäre auch möglich:
Log3 $iodev, 2, "$iodev: CUL_TCM97001 Unknown device Unknown msg:s$msg, please define it";

Gruß Ralf