OC3 Windstärkenberechnung und mögliche Lösung(en)

Kabellose und kabelgebundene Sender und Empfänger der klassischen Homematic-Serie

Moderator: Co-Administratoren

Benutzeravatar
cerna007
Beiträge: 183
Registriert: 28.11.2011, 08:03
Wohnort: 94xx / Schweiz

OC3 Windstärkenberechnung und mögliche Lösung(en)

Beitrag von cerna007 » 10.07.2012, 10:47

Hi zämme

Ich habe seit November 2011 einen HomeMatic Funk-Kombisensor OC3 im Einsatz.
Eigentlich bin ich mit dem Teil zufrieden, läuft noch mit dem ersten Batteriesatz.

Das Problem, was ich habe, ist bereits paar mal diskutiert gewesen und dürfte allseits bekannt sein: die Windstärke.

Bei mir äussert es sich so:
Windstärken 00-10 km/h: Die Messung verläuft sensitiv genug, die Geschwindigkeiten stimmen nach meiner Einschätzung. (+-10-15%)
Windstärken 10-20 km/h: Optimaler Bereich für Messungen, ich denke, dass der Sensor hier mehr oder minder genaue Daten liefert (+-10 %)
Windstärken ab 20 km/h: über 20 km/h folgen die Angaben zur Windgeschwindigkeit nicht mehr lineal der tatsächlichen Gewindigkeit, sondern eher negativ exponentiell.

Zur Veranschaulichung habe ich mal ein ungefähres Diagramm gepinselt...
Die dicke schwarze Linie ist das lineale Soll, so sollte die angezeigte Geschwindigkeit aussehen.
Die breite rote Linie soll die tatsächlich angezeigte Geschwindigkeit darstellen, inkl. Streuung...

Bild

Dieses Problem sollte u.A. dafür verantwortlich sein, dass ich noch nie Geschwindigkeiten über 37 km/h gemessen habe. (CCU-Historian ist vom Anfang an aktiviert - nochmals Danke an Matthias!)
Ein Auseinandernehmen des Windsensors, Kontrolle der Welle (ob diese gerade ist), ölen, Kontrolle der Kugellager hat nichts gebracht.
Bei gemessene und angezeigte 28 km/h ist ein lebendiger Wind vorhanden bei 35 km/h fliegt alles um die Ohren... das kann nicht sein. Eher ist die tatsächliche Windgeschwindigkeit bei angezeigter 35 km/h um die 50-60 km/h (ohne Böen)!

Nun dieses Problem wurde schon von vielen Forenteilnehmer festgestellt und diskutiert, aber noch nie per Programm / Script berichtigt.
Jetzt sollen wir mal davon abesehen, was der Sensor nicht kann, nämlich Böenerfassung

Meine Frage ist:

Kann jemand ein Script schreiben, welches die Windwerte wieder "begradigt", resp. wieder ungefähr lineal macht?
Ich stelle mir das mit einer Variable vor, z.B. Windpatch.
Dann in einem Programm oder Script soll folgendes geprüft und gemacht werden:
  • Wenn Wind < 20 km/h, dann Windpatch = Wind
    Wenn Wind > 20 km/h, dann Windpatch = (Wind-20)²+20
    Auslösen bei jedem neuen Windwert.
...oder so etwas...
...kann evtl. in das Originalscript geschrieben werden (in dem Regenmengen summiert werden?), gar die original Winddaten überschreiben?..

Kann das jemand elegant und schlank lösen? (ich leider nicht)
Eventuell anstatt mit einer fixen Zahl (hoch 2) mit einer Variablen exponieren, wie:
  • Wenn Wind > 20 km/h, dann Windpatch = (Wind-20)"hoch Variable X"+20)
so könnte jede(r) die Anpassung tunen, für die individuelle und gefühlte Ungenauigkeit mittels Variable einstellen.

Evtl. gar die Windwerte ab 20 km/h mehrstufig exponenzieren.. :roll:

Ich weiss, dass das eine "Verfälschung" von Daten ist, aber ich denke, dass es dann realistisch(er)e Werte ausgibt.


Vielen Dank und freundliche Grüsse aus der Schweiz
Grüsse aus der Schweiz, Miklos
--------------------------------------------
CCU1 mit CuxD nun nur noch als Reserve / Backup
CCU2 mit 3 x HM-CFG-LAN Adapter als Range-Extender, CuxD
--------------------------------------------
204 Kanäle in 92 Geräten und 17 CUxD-Kanäle in 2 CUxD-Geräten:
--------------------------------------------
2x HM-SwI-3-FM, 11x HM-LC-Sw1-FM, 1x HM-Sec-Key, 1x HM-OU-LED16, 5x HM-LC-Sw4-DR, 1x HM-LC-Sw2-FM, 6x HM-LC-Dim1T-CV, 4x HM-LC-Dim1T-FM, 1x HM-LC-RGBW-WM, 13x HM-Sec-SC, 6x HM-PB-2-WM55, 1x CUX28, 8x HM-Sec-MDIR, 4x HM-Sen-MDIR-O, 1x HM-Sen-MDIR-O-2, 2x HM-WDS30-OT2-SM, 1x HM-LC-Sw1-Ba-PCB, 3x HM-Sec-SD, 1x HM-Sec-SD-Team, 1x CUX06, 8x HM-CC-TC, 1x HM-WDS100-C6-O, 2x HM-ES-PMSw1-Pl, 1x HM-PB-2-WM55-2, 2x HM-RC-4-2, 1x HM-RC-Key4-2, 5x HM-PB-6-WM55, 1x HM-Sec-SCo
--------------------------------------------

Benutzeravatar
cerna007
Beiträge: 183
Registriert: 28.11.2011, 08:03
Wohnort: 94xx / Schweiz

Re: OC3 Windstärkenberechnung und mögliche Lösung(en)

Beitrag von cerna007 » 10.07.2012, 11:37

Sorry, "hoch 2" ist ein wenig übertrieben :), denn:

z.B. bei angezeigte 35 würde es dann wie folgt aussehen:
Windpatch = (35-20)² + 20 = 15² + 20 = 225 + 20 = 245 km/h :) das ist ein wenig zu viel :)

Also eher hoch 1,2 -1,5...
Grüsse aus der Schweiz, Miklos
--------------------------------------------
CCU1 mit CuxD nun nur noch als Reserve / Backup
CCU2 mit 3 x HM-CFG-LAN Adapter als Range-Extender, CuxD
--------------------------------------------
204 Kanäle in 92 Geräten und 17 CUxD-Kanäle in 2 CUxD-Geräten:
--------------------------------------------
2x HM-SwI-3-FM, 11x HM-LC-Sw1-FM, 1x HM-Sec-Key, 1x HM-OU-LED16, 5x HM-LC-Sw4-DR, 1x HM-LC-Sw2-FM, 6x HM-LC-Dim1T-CV, 4x HM-LC-Dim1T-FM, 1x HM-LC-RGBW-WM, 13x HM-Sec-SC, 6x HM-PB-2-WM55, 1x CUX28, 8x HM-Sec-MDIR, 4x HM-Sen-MDIR-O, 1x HM-Sen-MDIR-O-2, 2x HM-WDS30-OT2-SM, 1x HM-LC-Sw1-Ba-PCB, 3x HM-Sec-SD, 1x HM-Sec-SD-Team, 1x CUX06, 8x HM-CC-TC, 1x HM-WDS100-C6-O, 2x HM-ES-PMSw1-Pl, 1x HM-PB-2-WM55-2, 2x HM-RC-4-2, 1x HM-RC-Key4-2, 5x HM-PB-6-WM55, 1x HM-Sec-SCo
--------------------------------------------

Captain-S
Beiträge: 414
Registriert: 06.12.2009, 22:34

Re: OC3 Windstärkenberechnung und mögliche Lösung(en)

Beitrag von Captain-S » 10.07.2012, 11:50

Also mein höchster gemessener Wert mit dem OC3 waren 58 km/h im letzten Dezember.
Da war es schon sehr stürmisch, die reale Windgeschwindigkeit lag bestimmt um einiges höher.
Letzte Woche hatte ich auch schon einen Wert von 47 km/h zu beginn eines Gewitters.
Die Sensoren des OC3 befinden sich bei mir in ca. 2,5 m Höhe.
Ein direkter Vergleich mit einem geeichten Messsystem wäre hier interessant.

Benutzeravatar
cerna007
Beiträge: 183
Registriert: 28.11.2011, 08:03
Wohnort: 94xx / Schweiz

Re: OC3 Windstärkenberechnung und mögliche Lösung(en)

Beitrag von cerna007 » 10.07.2012, 12:00

Hi Captain-S

Nicht weit von uns (ca. 600 m entfernt) wird 'ne professionelle Anlage betrieben, welche genaue Daten liefert, daher weiss ich, dass unserer Sensor ab 20 km/h Misst liefert...
Zudem wie gesagt, bei gemäss Homematic 35 ist es so windig, dass unsere befestigte Trampoline schon mal wegflog, inkl. Gartenmöbel, lagen ganze Äste auf dem Boden, usw..
Standort Kombisensor ist frei (rumherum mind. 15 m Platz, nicht windgeschützt) in ca. 2,5 meter Höhe.

Darüber möchte ich keine Diskussion eröffnen, ob der Sensor genau ist oder nicht... Als ich mein Laubsauger zum testen verwendet habe (Black&Decker mit 270 km/h) zeigte der Sensor müde 66 km/h an....
Grüsse aus der Schweiz, Miklos
--------------------------------------------
CCU1 mit CuxD nun nur noch als Reserve / Backup
CCU2 mit 3 x HM-CFG-LAN Adapter als Range-Extender, CuxD
--------------------------------------------
204 Kanäle in 92 Geräten und 17 CUxD-Kanäle in 2 CUxD-Geräten:
--------------------------------------------
2x HM-SwI-3-FM, 11x HM-LC-Sw1-FM, 1x HM-Sec-Key, 1x HM-OU-LED16, 5x HM-LC-Sw4-DR, 1x HM-LC-Sw2-FM, 6x HM-LC-Dim1T-CV, 4x HM-LC-Dim1T-FM, 1x HM-LC-RGBW-WM, 13x HM-Sec-SC, 6x HM-PB-2-WM55, 1x CUX28, 8x HM-Sec-MDIR, 4x HM-Sen-MDIR-O, 1x HM-Sen-MDIR-O-2, 2x HM-WDS30-OT2-SM, 1x HM-LC-Sw1-Ba-PCB, 3x HM-Sec-SD, 1x HM-Sec-SD-Team, 1x CUX06, 8x HM-CC-TC, 1x HM-WDS100-C6-O, 2x HM-ES-PMSw1-Pl, 1x HM-PB-2-WM55-2, 2x HM-RC-4-2, 1x HM-RC-Key4-2, 5x HM-PB-6-WM55, 1x HM-Sec-SCo
--------------------------------------------

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: OC3 Windstärkenberechnung und mögliche Lösung(en)

Beitrag von paul53 » 10.07.2012, 14:57

Versuche es doch mal mit Interpolation, bei der Du die Eckpunkte und Steigungen beliebig anpassen kannst:

! Eckpunkte z.B.:
var A = 20;
var B = 26;
var C = 32;

! Steigungen z.B.:
var a = 0.3;
var b = 0.3;
var c = 0.5;

WindVar = Wind;
if (Wind > A) {WindVar = WindVar + (a * (Wind - A));}
if (Wind > B) {WindVar = WindVar + (b * (Wind - B));}
if (Wind > C) {WindVar = WindVar + (c * (Wind - C));}
Zuletzt geändert von paul53 am 10.07.2012, 17:15, insgesamt 1-mal geändert.
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Benutzeravatar
owagner
(verstorben)
Beiträge: 1193
Registriert: 13.05.2008, 19:49
Danksagung erhalten: 1 Mal

Re: OC3 Windstärkenberechnung und mögliche Lösung(en)

Beitrag von owagner » 10.07.2012, 15:15

Der Anemometer wird ein einfacher Schaltkontakt sein, der 1-2 mal pro Umdrehung schaltet. Denkbar ist, dass bei sehr hohen Geschwindigkeiten ein Schaltereignis aufgrund der Entprellung und/oder Samplefrequenz des Mikrocontrollereingangs verloren geht. Wenn dies der Fall wäre, müßte die gemessene Geschwindigkeit an diesem Punkt sogar sinken -- ist dies der Fall?

Captain-S
Beiträge: 414
Registriert: 06.12.2009, 22:34

Re: OC3 Windstärkenberechnung und mögliche Lösung(en)

Beitrag von Captain-S » 10.07.2012, 15:51

owagner hat geschrieben:Der Anemometer wird ein einfacher Schaltkontakt sein, der 1-2 mal pro Umdrehung schaltet. Denkbar ist, dass bei sehr hohen Geschwindigkeiten ein Schaltereignis aufgrund der Entprellung und/oder Samplefrequenz des Mikrocontrollereingangs verloren geht. Wenn dies der Fall wäre, müßte die gemessene Geschwindigkeit an diesem Punkt sogar sinken -- ist dies der Fall?
Nein, danach sieht es nicht aus...
Ich hab den OC3 hier in Verbindung mit der WDC7000, mit der Live-Abfrage-Funktion sendet der OC3
10 Sekunden lang jede Sekunde die aktuellen Werte. Damit kann man auch schnelle Windböen gut erfassen.
Je lauter der Wind draußen "pfeift" umso höher sind auch die Messwerte.

Benutzeravatar
cerna007
Beiträge: 183
Registriert: 28.11.2011, 08:03
Wohnort: 94xx / Schweiz

Re: OC3 Windstärkenberechnung und mögliche Lösung(en)

Beitrag von cerna007 » 10.07.2012, 16:07

paul53 hat geschrieben:Versuche es doch mal mit Interpolation, bei der Du die Eckpunkte und Steigungen beliebig anpassen kannst:

! Eckpunkte z.B.:
var A = 20;
var B = 26;
var C = 32;

! Steigungen z.B.:
var a = 0.3;
var b = 0.3;
var c = 0.5;

if (Wind <= A){WindVar = Wind;}
if (Wind > A) {WinfVar = Wind + (a * (Wind - A));}
if (Wind > B) {WindVar = Wind + (a * (Wind - A)) + (b * (Wind - B));}
if (Wind > C) {WindVar = Wind + (a * (Wind - A)) + (b * (Wind - B) + (c * (Wind - C));}
Hi Paul

Ja genau so etwas könnte funktionieren... Wind ist dabei was? IEQxxxxxxx:WIND (?)
Auf den neuen HomeMatic und EQ-3 Webseiten finde ich die Scripthandbücher nicht mehr.. :(
Vielen Dank, falls Du es gerade aus dem FF weisst...

@owagner

Das ist natürlich auch möglich. Aber dann wie kann HomeMatic Angaben machen, wie Wind wird gemessen von 0-199 km/h? :)
Ob die Werte sinken oder nicht, kann ich nicht beurteilen...
Ich könnte noch kontrollieren, ob der Schaltkontakt richtig (in der selben Höhe) sitzt, wie der Signalgeber... darauf habe ich nicht geachtet.

Ansonsten sehen die Winddaten bei mir z.B. so aus (Auswertung des letzen Monats)
Dabei sollten mindestens 3x über dauerhaft 60km/h gemessen wurden sein, mit Windspitzen von +-80 km/h.
Wir Ihr seht, herrst bei uns praktisch nie Windstille... (ca. MüM 600, für Wind 'ne exponierte Lage, Hügelkuppe)
Grüsse aus der Schweiz, Miklos
--------------------------------------------
CCU1 mit CuxD nun nur noch als Reserve / Backup
CCU2 mit 3 x HM-CFG-LAN Adapter als Range-Extender, CuxD
--------------------------------------------
204 Kanäle in 92 Geräten und 17 CUxD-Kanäle in 2 CUxD-Geräten:
--------------------------------------------
2x HM-SwI-3-FM, 11x HM-LC-Sw1-FM, 1x HM-Sec-Key, 1x HM-OU-LED16, 5x HM-LC-Sw4-DR, 1x HM-LC-Sw2-FM, 6x HM-LC-Dim1T-CV, 4x HM-LC-Dim1T-FM, 1x HM-LC-RGBW-WM, 13x HM-Sec-SC, 6x HM-PB-2-WM55, 1x CUX28, 8x HM-Sec-MDIR, 4x HM-Sen-MDIR-O, 1x HM-Sen-MDIR-O-2, 2x HM-WDS30-OT2-SM, 1x HM-LC-Sw1-Ba-PCB, 3x HM-Sec-SD, 1x HM-Sec-SD-Team, 1x CUX06, 8x HM-CC-TC, 1x HM-WDS100-C6-O, 2x HM-ES-PMSw1-Pl, 1x HM-PB-2-WM55-2, 2x HM-RC-4-2, 1x HM-RC-Key4-2, 5x HM-PB-6-WM55, 1x HM-Sec-SCo
--------------------------------------------

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: OC3 Windstärkenberechnung und mögliche Lösung(en)

Beitrag von paul53 » 10.07.2012, 16:57

Ja, Wind ist der Meßwert vom OC3.

Bei Vergabe von Kanalnamen mit "Raum.Kanal", also hier z.B. mit "Aussen.Wetter", kann der Wert so im Script eingelesen werden:

! Raumname im Kanalnamen
string raum = "Aussen";

! Windgeschwindigkeit einlesen
real Wind = dom.GetObject(raum+".Wetter").DPByHssDP("WIND_SPEED").Value();

! Deklaration der Ergebnisvariablen
real WindVar;

Linearisierung von Wind nach WindVar wie vorher dargestellt ...

! Ausgabe in Systemvariable (Name z.B. "Aussen.Windgeschwindigkeit")
dom.GetObject(raum+".Windgeschwindigkeit").State(WindVar);
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Benutzeravatar
Daniel
Beiträge: 219
Registriert: 16.01.2012, 17:33

Re: OC3 Windstärkenberechnung und mögliche Lösung(en)

Beitrag von Daniel » 15.07.2012, 09:49

Morgen zusammen!

Ich habe das ganze jetzt mal komplett umgesetzt:

Code: Alles auswählen

! Korrigierte Windgeschwindigkeit von cerna007 und paul53, FHZ-Forum
! Windgeschwindigkeit einlesen
var wds = dom.GetObject("Dach: Wetterstation:1");
real Wind = wds.DPByHssDP("WIND_SPEED").Value();
! Deklaration der Ergebnisvariablen 
real WindVar;
! Eckpunkte z.B.:
var A = 20;
var B = 26;
var C = 32;
! Steigungen z.B.:
var a = 0.3;
var b = 0.3;
var c = 0.5;
! Die entsprechenden Korrekturen vornehmen
if (Wind <= A) {WindVar = Wind;}
if (Wind > A) {WindVar = Wind + (a * (Wind - A));}
if (Wind > B) {WindVar = Wind + (a * (Wind - A)) + (b * (Wind - B));}
if (Wind > C) {WindVar = Wind + (a * (Wind - A)) + (b * (Wind - B) + (c * (Wind - C)));}
! Korrigierte Windgeschwindigkeit in die Systemvariable schreiben
dom.GetObject(12918).State(WindVar);
Es muss eine Systemvariable vom Typ Zahl (0 - 199 km/h bzw. 0 - 388 km/h mit den aktuellen Konstanten) angelegt werden. Diese kann entweder ohne Kanalzuordnung oder mit Zuordnung zum OC3-Sensor angelegt werden. Ich bevorzuge den Zugriff auf die Systemvariablen über die ObjectID, die sich imo leider nur über den Quelltext im WebUI in Erfahrung bringen lässt.

Das WebUI-Programm muss dann so aussehen:
HomeMatic WebUI-2.jpg
Da ich generell die korrigierte Windgeschwindigkeit nutzen möchte, schreibe ich die Variable auch für Windgeschwindigkeiten von unter 20 km/h.

Frage: hat sich schon jemand näher mit den Korrektur-Konstanten beschäftigt? paul53, sind das schon Erfahrungswerte?
CCU2 mit 61+ Geräten, CCU-Historian und OpenHab auf einem Raspberry 2

Antworten

Zurück zu „HomeMatic Aktoren und Sensoren (klassisch)“