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
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;
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
Danke, ich versuche mich dran
Horst
Bitte :)
wenn noch Fragen sind, so helfe ich dir gern auch das File zu erstellen.
Grüße
Gesendet von mobil -> Tapatalk Pro
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?
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
@@ -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
siehe auch hier
https://forum.fhem.de/index.php/topic,101425.msg982113.html#msg982113
Gruß Ralf
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
Hallo Jens,
kannst einen anderen Windsensor empfehlen?
Freu mich zumindest jetzt das ich >3m/s geliefert bekommen, gerade rechtzeitig zur Sturmsaison.
Gruß
Jochen
Hallo Jochen, der W132 ist der einzige Windsensor, den ich besitze. Daher kann ich zu Anderen nichts schreiben. Gruß Jens
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
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
Harst hatte vorher auf *10 und nicht *16 verwiesen, *10 ist richtig.
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
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
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
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
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
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
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