HM-WDS100-C6-O Funk-Kombi-Sensor OC3
HM-WDS100-C6-O Funk-Kombi-Sensor OC3 | |
---|---|
Allgemein | |
Protokoll | |
Typ | |
Kategorie | |
Technische Details | |
Kommunikation | |
Kanäle | |
Betriebsspannung | |
Leistungsaufnahme | |
Versorgung | |
Abmessungen | |
Sonstiges | |
Modulname | |
Hersteller |
Der Funk-Kombi-Sensor OC3 (HM-WDS100-C6-O) ist eine HomeMatic Funk-Wetterstation für den Außeneinsatz zur Messung von Temperatur, relativer Luftfeuchte, Windrichtung, Windstärke, Regenmenge und Helligkeit.
Features
- Batteriebetrieb (3 x Mignon/LR6/AA)
- Funkfrequenz 868,3 MHz
- Temperaturmessbereich -29,9°C bis 79,9°C (± 0,8°C)
- Relative Luftfeuchte 1 % bis 99 % (±5 %)
- Windgeschwindigkeit 1 km/h bis 199,9 km/h
- Windrichtungsmesser 0° bis 355° (±5°)
- Schwankung der Windrichtung 0°/22,5°/45°/67,5°
- Regenmengenmesser 0 mm bis 999 mm
- Regen-Soforterkennung
- Sturm-Soforterkennung
- Helligkeit gemessen über Photodiode mit einheitenlosen Wert 1-255
- Sonnenschein-Dauer gezählt als Minuten oberhalb der Helligkeitsschwelle von 30 (Default)
- Datenübermittlung alle 120 bis 180 Sekunden
- Übermittlung des Batteriestatus
Hinweise zum Betrieb mit Fhem
Das Pairing sollte wie unter HomeMatic Devices pairen beschrieben durchgeführt werden. Hierfür muss die von außen erreichbare Anlerntaste betätigt werden.
Konfiguration (fhem.cfg)
define Wetterstation CUL_HM 338893 attr Wetterstation IODev CUL_HM attr Wetterstation autoReadReg 5_readMissing attr Wetterstation expert 2_full attr Wetterstation firmware 1.4 attr Wetterstation model HM-WDS100-C6-O attr Wetterstation serialNr LEQ1442799 attr Wetterstation stateFormat Temperatur: temperature °C, Feuchtigkeit: humidity %,<br>Taupunkt: dewpoint °C, Helligkeit: brightness,<br>Regen: rain mm/qm, Wind: windSpeed km/h,<br>Richtung: windDirectionText attr Wetterstation subType THSensor
Event-Monitor
Wetterstation T: 17.5 H: 82 W: 0 R: 553.715 IR: 0 WD: 10 WDR: 67.5 S: 106 B: 16 Wetterstation temperature: 17.5 Wetterstation humidity: 82 Wetterstation windSpeed: 0 Wetterstation windDirection: 10 Wetterstation windDirRange: 67.5 Wetterstation rain: 553.715 Wetterstation isRaining: 0 Wetterstation sunshine: 106
Parameterliste
list: register | range | peer | description 0: intKeyVisib | literal | | visibility of internal channel options:visib,invisib 0: pairCentral | 0 to 16777215 | | pairing to central 1: stormLowThresh | 0 to 255 | | Storm lower threshold 1: stormUpThresh | 0 to 255 | | Storm upper threshold
Log-Einträge
2015-08-13_12:47:18 Wetterstation T: 28.6 H: 57 W: 7 R: 145.14 IR: 0 WD: 80 WDR: 67.5 S: 8 B: 140 2015-08-13_12:47:18 Wetterstation brightness: 140 2015-08-13_12:47:18 Wetterstation humidity: 57 2015-08-13_12:47:18 Wetterstation isRaining: 0 2015-08-13_12:47:18 Wetterstation rain: 145.14 2015-08-13_12:47:18 Wetterstation sunshine: 8 2015-08-13_12:47:18 Wetterstation temperature: 28.6 2015-08-13_12:47:18 Wetterstation windDirRange: 67.5 2015-08-13_12:47:18 Wetterstation windDirection: 80 2015-08-13_12:47:18 Wetterstation windSpeed: 70
Anwendungsbeispiele
Anbindung an OpenWeathermap
Das hier verwendete "inoffizielle" 98_openweathermap.pm-Modul muss manuell aus dem Contrib-Verzeichnis des Fhem-SVN heruntergeladen und in das Modulverzeichnis der eigenen Fhem-Installation kopiert werden.
Zunächst eine Funktion zur Berechnung der Differenz der gemessenen Regenmengen in 99_myUtils anlegen (abgeleitet von einer Funktion zur Mittelwertberechnung):
# myDiff # berechnet die Differenz aus der ersten Zeile eines LogFiles und der letzten Zeile eines LogFiles über einen Zeitraum zwischen einem Zeitpunkt in der Vergangenheit und dem Zeitpunkt des Aufrufs sub myDiff($$$) { my ($offset,$logfile,$cspec) = @_; my $period_s = strftime "%Y-%m-%d\x5f%H:%M:%S", localtime(time-$offset); my $period_e = strftime "%Y-%m-%d\x5f%H:%M:%S", localtime; my $oll = $attr{global}{verbose}; $attr{global}{verbose} = 0; my @logdata = split("\n", fhem("get $logfile - - $period_s $period_e $cspec")); $attr{global}{verbose} = $oll; my ($cnt, $first, $last, $diff) = (0)x4; foreach (@logdata){ my @line = split(" ", $_); if(defined $line[1] && "$line[1]" ne ""){ $cnt += 1; if ($cnt == 1) { $first = $line[1]; } $last = $line[1]; } } $diff = $last - $first; Log 4, ("myDiff: File: $logfile, Field: $cspec, Period: $period_s bis $period_e, First: $first, Last: $last, Diff: $diff"); return $diff; }
Danach in der fhem.cfg folgendes hinzufügen (inklusive Umrechnung der Windmesswerte von km/h in m/s):
define RegenmengeOffset dummy define RegenmengeTag dummy define RegenmengeLast1Hours dummy define RegenmengeLast3Hours dummy define RegenmengeLast24Hours dummy define WindSpeed_mps dummy define RegenmengeNotify notify OC3:rain.* {\ my $menge = (ReadingsVal("OC3", "rain", 0) - ReadingsVal("RegenmengeOffset", "state", 0));;\ my $last1hours = myDiff("3600", "FileLog_OC3", "10:::");;\ my $last3hours = myDiff("10800", "FileLog_OC3", "10:::");;\ my $last24hours = myDiff("86400", "FileLog_OC3", "10:::");;\ fhem("set RegenmengeTag $menge");;\ fhem("set RegenmengeLast1Hours $last1hours");;\ fhem("set RegenmengeLast3Hours $last3hours");;\ fhem("set RegenmengeLast24Hours $last24hours");;\ } define RegenmengeOffsetReset at *00:00:00 {\ my $offset = ReadingsVal("OC3", "rain", 0);;\ fhem("set RegenmengeOffset $offset");; \ } define WindSpeedNotify notify OC3:windSpeed.* {\ my $windspeed = (ReadingsVal("OC3", "windSpeed", 0) / 3.6);;\ $windspeed = int(100 * $windspeed + 0.5) / 100;;\ fhem("set WindSpeed_mps $windspeed") \ }
Dann können die Werte mit dem 98_openweathermap.pm - Modul aus Contrib übertragen werden:
... attr owo owoSrc03 rain_today:RegenmengeTag:state attr owo owoSrc04 wind_speed:WindSpeed_mps:state attr owo owoSrc05 rain_1h:RegenmengeLast1Hours:state attr owo owoSrc06 rain_24h:RegenmengeLast24Hours:state ...
Sturmerkennung
Die Sensor-interne Sturmerkennung hat den Vorteil, dass bei Über-/Unterschreiten von konfigurierbaren Schwellwerten sofort ein Event generiert wird bzw. ein gepeerter Aktor sofort getriggert wird und somit eine Sturmerkennung nicht nachgelagert über das Reading "windSpeed" erfolgen muss (der Sensor sendet seine Werte sonst nur ca. alle 2-3 Minuten).
Folgende Schritte zur Nutzung und Anpassung der internen Sturmerkennung sind durchzuführen:
1. Peeren des Kanal 1 des Sensors (WGEG_SENW) mit einem Aktor (VCCU_Chan03, in diesem Beispiel also der virtuelle Kanal 3 einer VCCU):
set WGEG_SENW peerChan 1 VCCU_Chan03 single set
Damit werden neben der Peerkonfiguration auch folgende Readings im Sensor-Device erzeugt
R-VCCU_Chan03-stormLowThresh 5 R-VCCU_Chan03-stormUpThresh 25
2. Diese Schwellwerte können nun mit z.B.
set WGEG_SENW regSet stormUpThresh 15 VCCU_Chan03
angepaßt werden (s. Commandref zu regSet).
Bekannte Probleme
Der Zähler sunshine läuft nach gut 4 Stunden über, an Sonnentagen läuft dieser Zähler u.U. sogar mehr als einmal über.
Fhem hat bislang (noch) nicht die Möglichkeit implementiert, die Mengenmessung zu justieren. In Einzelfällen sind im Werksauslieferungszustand konstante Messabweichungen von 10% beobachtet worden.