Eltako FWS61 mit WS Wetterstation

Begonnen von g.carls, 05 April 2014, 21:23:45

Vorheriges Thema - Nächstes Thema

g.carls

Hallo,

das Eltako FWS61 versendet Telegramme, die nicht konform zu Enocean EEP A5-13-01 sind.
Eltako kodiert den isRaining Status abweichend von EEP A5-13-02 und weiterhin liefert das FWS61 keinen Wert für dayNight.

Telegramm 1
Bei "kein Regen" ist $db0== 0x18
Bei "Regen" ist $db0 == 0xA0

Telegramm 2 (EEP A5-13-02  - Sun-Intensity) wird korrekt verarbeitet ($db0 == 0x28)


Test ohne Regen liefert folgende Telegramme:
2014.04.05 20:41:52 5: EnOcean EnO_sensor_0087ACA0 PacketType:1 RORG:A5 DATA:00000028 ID:0087ACA0 STATUS:00
2014.04.05 20:41:52 5: EnOcean EnO_sensor_0087ACA0 PacketType:1 RORG:A5 DATA:00790018 ID:0087ACA0 STATUS:00

Test mit feuchtem Sensor:
2014.04.05 20:48:04 5: EnOcean EnO_sensor_0087ACA0 PacketType:1 RORG:A5 DATA:2D79001A ID:0087ACA0 STATUS:00
2014.04.05 20:48:04 5: EnOcean EnO_sensor_0087ACA0 PacketType:1 RORG:A5 DATA:2D79001A ID:0087ACA0 STATUS:00
2014.04.05 20:48:07 5: EnOcean EnO_sensor_0087ACA0 PacketType:1 RORG:A5 DATA:1E79001A ID:0087ACA0 STATUS:00
2014.04.05 20:48:28 5: EnOcean EnO_sensor_0087ACA0 PacketType:1 RORG:A5 DATA:4F79001A ID:0087ACA0 STATUS:00

In 10_EnOcean_5416 ist daher eine Fallunterscheidung bei EEP A5-13-02 für die manufID "00D" notwendig.
Ich hab das einmal in der beigefügten 10_EnOcean_5416 eingebaut und erfolgreich getestet.

Ich würde mich freuen, wenn das in 10_Enocean.pm übernommen wird.

Besten Dank!

Viele Grüße, Guido

klaus.schauer

Zitat von: g.carls am 05 April 2014, 21:23:45
das Eltako FWS61 versendet Telegramme, die nicht konform zu Enocean EEP A5-13-01 sind.
Eltako kodiert den isRaining Status abweichend von EEP A5-13-02 und weiterhin liefert das FWS61 keinen Wert für dayNight.

Telegramm 1
Bei "kein Regen" ist $db0== 0x18
Bei "Regen" ist $db0 == 0xA0

Telegramm 2 (EEP A5-13-02  - Sun-Intensity) wird korrekt verarbeitet ($db0 == 0x28)


Test ohne Regen liefert folgende Telegramme:
2014.04.05 20:41:52 5: EnOcean EnO_sensor_0087ACA0 PacketType:1 RORG:A5 DATA:00000028 ID:0087ACA0 STATUS:00
2014.04.05 20:41:52 5: EnOcean EnO_sensor_0087ACA0 PacketType:1 RORG:A5 DATA:00790018 ID:0087ACA0 STATUS:00

Test mit feuchtem Sensor:
2014.04.05 20:48:04 5: EnOcean EnO_sensor_0087ACA0 PacketType:1 RORG:A5 DATA:2D79001A ID:0087ACA0 STATUS:00
2014.04.05 20:48:04 5: EnOcean EnO_sensor_0087ACA0 PacketType:1 RORG:A5 DATA:2D79001A ID:0087ACA0 STATUS:00
2014.04.05 20:48:07 5: EnOcean EnO_sensor_0087ACA0 PacketType:1 RORG:A5 DATA:1E79001A ID:0087ACA0 STATUS:00
2014.04.05 20:48:28 5: EnOcean EnO_sensor_0087ACA0 PacketType:1 RORG:A5 DATA:4F79001A ID:0087ACA0 STATUS:00

In 10_EnOcean_5416 ist daher eine Fallunterscheidung bei EEP A5-13-02 für die manufID "00D" notwendig.
Ich hab das einmal in der beigefügten 10_EnOcean_5416 eingebaut und erfolgreich getestet.
Lt . den Telegrammen sendet FWS61 das Telegramm 1 mit db0 = 0x18 oder 0x1A doch EEP A5-13-01 konform, oder?!

Wir können natürlich die nicht unterstützte Day/Night Anzeige ausblenden. Ich habe eine Sonderbehandlung für nicht versorgte Reading in den Profilen bisher i. d. R. vermieden. Z. B. der neuen Profilgruppe EEP D2-01-00 - D2-01-11 werden immer alle Befehle und Readings angeboten, obwohl diese von den einzelnen Profilen nie alle vollständig verarbeitet werden. Damit möchte ich den Programmcode und die Komplexität möglichst klein halten.

Bei der Day/Night Anzeige ist die einzelne Fallunterscheidung sicher kein Problem. Falls gewünscht, kann der Schönheitsfehler natürlich beseitigt werden.

g.carls

Du hast Recht und Eltako hat das Regen-Bit richtig gesetzt.
Ich hab mir nach deinem Hinweis den Code nochmals angesehen:
Der Regen wird aktuell nicht erkannt, weil die falschen Bits für dayNight und isRaining ausgewertet werden:

my $dayNight = $db[0] & 2 ? "night" : "day";
my $isRaining = $db[0] & 1 ? "yes" : "no";

gem EEP muss das ganze um ein Bit verschoben geprüft werden, denn Bit 0 hat keine Bedeutung:

my $dayNight = $db[0] & 4 ? "night" : "day";
my $isRaining = $db[0] & 2 ? "yes" : "no";

Eltakos FWS61 unterstützt dayNight jedoch nicht.

Viele Grüße,

Guido


klaus.schauer

Danke für die Fehleranalyse. Werde ich ändern.

Die Eltako Wetterstation wollte ich mir auch schon mal zulegen. Ist das Gerät brauchbar und zuverlässig?

g.carls

Ich hab die Korrekturen erfolgreich testen können und hab den Wettersensor nun in Betrieb genommen.
Anbei findest Du einen Screenshot einiger Verlaufsdiagramme für die unterschiedlichen Messwerte der Eltako WS Wetterstation.
Hier ein paar Vor- und Nachteile des Gerätes:

Es misst die Windgeschwindigkeit mit einem thermischen Windsensor, hat also keine mechanisch beweglichen Teile wie ein Schalenanemometer.
Ich war sehr überrascht wie empfindlich solch ein Sensor ist. Dieser Sensor reagiert bereits wenn man ihn leicht anhaucht. Da keine Mechanik, gibt es auch keinen Verschleiss oder mechanische Fehlerquellen. Der Sensor liefert keine Windrichtung.
Zur Genauigkeit kann dieser Technik kann ich nicht viel sagen. Diese reicht jedoch um Trigger zum Hochfahren der Jalousien bei Sturm zu konfigurieren.
Meteorologen haben aber wahrscheinlich höhere Anforderungen.
Das Gleiche gilt für Temperatur- und Helligkeitssensoren für drei Himmelsrichtungen. Diese haben alle nur 8Bit Auflösung, die jedoch vollkommen ausreichend ist, um z.B. bei zu starker Sonneneinstrahlung aus einer bestimmten Himmelsrichtung die Jalousien in dieser Himmelsrichtung zu schliessen.
Der Dämmerungssensor (brightness-Reading) ermöglicht wiederum sehr einfach zwischen Tag und Nacht zu unterscheiden (siehe Screenshot).
Das dayNight Reading wird hingegen nicht unterstützt. Da die brightness Messkurve fast eine saubere Rechteckfunktion ist (siehe Screenshot), ist das aber auch nicht notwendig.

Viele Grüße,
Guido


g.carls

Beispielkonfiguration für die Eltako WS Wetterstation:

#
# Eltako Wetterstation
#
#
define E_WS1 EnOcean 0087ACA0
attr E_WS1 IODev TCM120
attr E_WS1 alias Wetterstation
attr E_WS1 event-min-interval .*:120
attr E_WS1 event-on-change-reading .*
attr E_WS1 event-on-update-reading .*
attr E_WS1 group Wetterdaten
attr E_WS1 manufID 00D
attr E_WS1 room 1.02 WS
attr E_WS1 subType environmentApp
attr E_WS1 verbose 3



define WS1_BRIGHTNESS readingsProxy E_WS1:brightness
attr WS1_BRIGHTNESS alias Dämmerung
attr WS1_BRIGHTNESS group Wetterdaten
attr WS1_BRIGHTNESS room 1.02 WS
attr WS1_BRIGHTNESS stateFormat { sprintf("%d lux", ReadingsVal("E_WS1","brightness",0));; }

define WS1_ISRAINING readingsProxy E_WS1:isRaining
attr WS1_ISRAINING alias Regen
attr WS1_ISRAINING group Wetterdaten
attr WS1_ISRAINING room 1.02 WS

define WS1_SUN_EAST readingsProxy E_WS1:sunEast
attr WS1_SUN_EAST alias Sonneneinstrahlung Osten
attr WS1_SUN_EAST group Wetterdaten
attr WS1_SUN_EAST room 1.02 WS
attr WS1_SUN_EAST stateFormat { sprintf("%d lux", ReadingsVal("E_WS1","sunEast",0));; }

define WS1_SUN_SOUTH readingsProxy E_WS1:sunSouth
attr WS1_SUN_SOUTH alias Sonneneinstrahlung Süden
attr WS1_SUN_SOUTH group Wetterdaten
attr WS1_SUN_SOUTH room 1.02 WS
attr WS1_SUN_SOUTH stateFormat { sprintf("%d lux", ReadingsVal("E_WS1","sunSouth",0));; }

define WS1_SUN_WEST readingsProxy E_WS1:sunWest
attr WS1_SUN_WEST alias Sonneneinstrahlung Westen
attr WS1_SUN_WEST group Wetterdaten
attr WS1_SUN_WEST room 1.02 WS
attr WS1_SUN_WEST stateFormat { sprintf("%d lux", ReadingsVal("E_WS1","sunWest",0));; }

define WS1_TEMPERATURE readingsProxy E_WS1:temperature
attr WS1_TEMPERATURE alias Aussentemperatur
attr WS1_TEMPERATURE group Wetterdaten
attr WS1_TEMPERATURE room 1.02 WS
attr WS1_TEMPERATURE stateFormat { sprintf("%.2f °C", ReadingsVal("E_WS1","temperature",0));; }


define WS1_WINDSPEED readingsProxy E_WS1:windSpeed
attr WS1_WINDSPEED alias Windgeschwindigkeit
attr WS1_WINDSPEED group Wetterdaten
attr WS1_WINDSPEED room 1.02 WS
attr WS1_WINDSPEED stateFormat { sprintf("%d m/s", ReadingsVal("E_WS1","windSpeed",0));; }

define PL_WS1_SUN_EXPOSURE SVG myDbLog:myDbSunExposure:HISTORY
attr PL_WS1_SUN_EXPOSURE group Wetterdiagramme
attr PL_WS1_SUN_EXPOSURE label "Osten: $data{min1}, max: $data{max1}, last: $data{currval1}"::"Süden: $data{min2}, max: $data{max2}, last: $data{currval2}"::"Westen: $data{min3}, max: $data{max3}, last: $data{currval3}"
attr PL_WS1_SUN_EXPOSURE plotfunction E_WS1
attr PL_WS1_SUN_EXPOSURE room 1.02 WS
attr PL_WS1_SUN_EXPOSURE title "Sun Exposure"

define PL_WS1_DAWN SVG myDbLog:myDbDawn:HISTORY
attr PL_WS1_DAWN group Wetterdiagramme
attr PL_WS1_DAWN label "Dämmerung: $data{min1}, max: $data{max1}, last: $data{currval1}"
attr PL_WS1_DAWN plotfunction E_WS1
attr PL_WS1_DAWN room 1.02 WS
attr PL_WS1_DAWN title "Dämmerung"

define PL_WS1_WINDSPEED SVG myDbLog:myDbWindspeed:HISTORY
attr PL_WS1_WINDSPEED group Wetterdiagramme
attr PL_WS1_WINDSPEED label "Windspeed: $data{min1}, max: $data{max1}, last: $data{currval1}"
attr PL_WS1_WINDSPEED plotfunction E_WS1
attr PL_WS1_WINDSPEED room 1.02 WS
attr PL_WS1_WINDSPEED title "Windspeed"

define PL_WS1_TEMPERATURE SVG myDbLog:myDbTemperatur:HISTORY
attr PL_WS1_TEMPERATURE group Wetterdiagramme
attr PL_WS1_TEMPERATURE label "Temperatur: $data{min1}, max: $data{max1}, last: $data{currval1}"
attr PL_WS1_TEMPERATURE plotfunction E_WS1
attr PL_WS1_TEMPERATURE room 1.02 WS
attr PL_WS1_TEMPERATURE title "Aussentemperatur"

define PL_WS1_ISRAINING SVG myDbLog:myDbIsRaining:HISTORY
attr PL_WS1_ISRAINING group Wetterdiagramme
attr PL_WS1_ISRAINING label "Regen: $data{min1}, max: $data{max1}, last: $data{currval1}"
attr PL_WS1_ISRAINING plotfunction E_WS1
attr PL_WS1_ISRAINING room 1.02 WS
attr PL_WS1_ISRAINING title "Regen"