Protokolldefinition zum Datenaustausch WS980 zum PC

Rabatt

Dieser Beitrag bezieht sich auf das folgende Produkt: ELV WiFi-Wetterstation WS980WiFi, inkl. Funk-Außensensor (868 MHz), App, PC-Auswertesoftware

Bestell-Nr. 68-25 04 08

Zum Produkt
zur Übersicht31 Beiträge Thema abonnieren Neue Antwort
 vonAnzeigen  Sortieren 

Protokolldefinition zum Datenaustausch WS980 zum PC

von Petzoldt » 01.02.2019, 09:37 

Hallo,

ich würde die Daten gerne aus der Basisstation mit einem eigenen Programm (C#) auslesen um es in die Hausautomation zu integrieren. Das ist über das Programm WetherSmartIp und Export zu umständlich.

Die Daten können ja über Port 45000 angefordert werden. Die Frage ist nun, gibt es eine Beschreibung zum Protokoll?
Welcher Sensor welche Indexnummer hat und wie die einzelnen Werte Codiert sind?
Für die Temperaturen ist das recht einfach (2 Byte, der Wert in 1/10°C)
Gibt es eine Doku zum Protokoll?

Gruß Rainer
Petzoldt
Beiträge: 22
Registriert
01.02.2019

AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von RrPt » 03.02.2019, 21:42 

Hallo,

einiges habe ich nun schon herausbekommen:

wenn mann folgende Daten { 0xff, 0xff, 0x12, 0x00, 0x04, 0x16 } per UDP Broadcast Port 46000 sendet, so antwortet die Wetterstation mit ihrem Namen, IP und Port.
Damit kann man dann eine TCP Verbindung aufbauen.
Sendet man dorthin { 0xff, 0xff, 0x0b, 0x00, 0x06, 0x04, 0x04, 0x19 }, so antwortet die WS mit den aktuellen Sensordaten.
Diese sind binär codiert und werden über einen Index identifiziert:
1: TempIn = 21,1°C
2: TempOut = 20,4°C
3: TempTau = 10,0°C
4: TempX = 20,4°C
5: TempHitzeIdx = 20,4°C
6: FeuchteIn = 48,0%
7: FeuchteOut = 51,0%
8: Druck1 = 981,5hPa
9: Druck2 = 981,5hPa
10: Windrichtung = 170,0°
11: Windgeschw = 0,0m/s
12: WindBö = 0,0m/s
14: Regen/h = 0,0mm
16: Regen/d = 0,0mm
17: Regen/w = 25,4mm
18: Regen/M = 203,3mm
19: Regen/J = 503,3mm
20: Regen/T = 703,3mm
21: Licht = 0,0lux
22: ??? =136960,0
Über andere Befehle erhält man Min- und Max-Werte sowie weitere mir bisher unbekannte Daten.

Kennt jemand das Protokoll?
Oder verwendet eine andere Wetterstation das gleiche oder ein ähnliches Protokoll?

Gruß Rainer
RrPt
Beiträge: 22
Registriert
01.02.2019
Dieser Beitrag wurde von 1 Foren-Nutzern als besonders hilfreich ausgezeichnet.

AW: AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von choenig » 06.02.2019, 21:38 

Hi,

vielen Dank für die Auflistung, hat mir einiges an Arbeit gespart happy

Zu den letzen Werten:

Bei mir sieht es so aus, als ob es eine 22 und eine 23 gibt:

... 22 0 1 23 0 224 27

Aber zuordnen konnte ich das bisher auch nicht.

LG
Christian
choenig
Beiträge: 11
Registriert
14.04.2016

AW: AW: AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von RrPt » 07.02.2019, 12:54 

Hallo,

ja, 22 und 23 je 2 Bytes.
Ich vermute ja den UV-Index, den habe ich noch nirgens.

Was ist das letzte Byte ein CRC-Check?

Rainer
RrPt
Beiträge: 22
Registriert
01.02.2019

AW: AW: AW: AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von choenig » 07.02.2019, 20:39 

Hi,

> ja, 22 und 23 je 2 Bytes.
> Ich vermute ja den UV-Index, den habe ich noch nirgens.

UV und Solar Radiation.

Heute Mittag passte die 22 ganz gut zu Solar Radiation, aber jetzt zeigt die '2' an, während folgendes an Wundergroud gesendet wird:

indoortempf=72.7&tempf=43.3&dewptf=36.0&windchillf=43.3&indoorhumidity=39&humidity=75&windspeedmph=0.2&windgustmph=1.1&winddir=67&absbaromin=29.75&baromin=29.75&rainin=0.00&dailyrainin=0.07&weeklyrainin=0.09&monthlyrainin=0.32&yearlyrainin=0.42&solarradiation=0.00&UV=0&dateutc=2019-02-07%2019:25:09&softwaretype=EasyWeatherV1.3.1&action=updateraw&realtime=1&rtfreq=5

An einen CRC-Check dachte ich auch. Alle Pakete, die ich aufgezeichnet habe, hatten sowas, ausser die Antwort mit der Firmware:

-> ffff500353
<- ffff501511456173795765617468657256312e332e31
0000 ff ff 50 15 11 45 61 73 79 57 65 61 74 68 65 72 ÿÿP..EasyWeather
0010 56 31 2e 33 2e 31 V1.3.1

LG
Christian
choenig
Beiträge: 11
Registriert
14.04.2016

AW: AW: AW: AW: AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von RrPt » 08.02.2019, 18:55 

Hallo Christian,

welche Befehle hast du denn bisher herausgefunden.
Ich kenne folgende:

befActValues = { 0xff, 0xff, 0x0b, 0x00, 0x06, 0x04, 0x04, 0x19 }; // Aktuell
befMaxValues = { 0xff, 0xff, 0x0b, 0x00, 0x06, 0x05, 0x05, 0x1b }; // MAX
befMinValues = { 0xff, 0xff, 0x0b, 0x00, 0x06, 0x06, 0x06, 0x1d }; // Min

Gruß Rainer
RrPt
Beiträge: 22
Registriert
01.02.2019
Dieser Beitrag wurde von 1 Foren-Nutzern als besonders hilfreich ausgezeichnet.

AW: AW: AW: AW: AW: AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von RrPt » 08.02.2019, 19:43 

ok, Version kann ich nun auch abfragen.

Bei mir kommt 1.2.2, bei eriner letzten Woche gekauften Wetterstation.
Wie kommst du auf 1.3.1?
Gibt es eine Updatemöglichkeit?

Rainer
RrPt
Beiträge: 22
Registriert
01.02.2019

AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von choenig » 09.02.2019, 08:42 

Moin,

das Update auf 1.3.1 habe ich mit der iOS-App "WS View" gemacht.

Ich habe angefangen, aus den Erkenntnissen ein FHEM-Modul für die WS980 zu schreiben, daher habe ich die anderen Daten noch nicht wirklich weiter analysiert.

Werde ich aber vermutlich tun, sobald ich sie dann in das Modul einbaue, dann werde ich meine Findings auch hier weiter posten. happy

LG
Christian
choenig
Beiträge: 11
Registriert
14.04.2016

AW: AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von RrPt » 09.02.2019, 15:29 

Hi,
danke für den Tipp, habe nun auch V1.3.1 :-)
Wenn ich neue Erkenntnisse habe poste ich auch hier ...

Gruß Rainer
RrPt
Beiträge: 22
Registriert
01.02.2019

AW: AW: AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von choenig » 09.02.2019, 16:07 

Hi,

Um nochmal auf die 22 und 23 zurückzukommen:

... 22 0 1 23 0 224 27

Ich bin mir inzwischen ziemlich sicher, das das byte nach der 23 (die 2. '0') der UV-Index ist, allerdings weiss ich nicht, was das 2. byte soll. Und die 22 ist mir nach wie vor vollkommen unklar.

LG
Christian
choenig
Beiträge: 11
Registriert
14.04.2016

AW: AW: AW: AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von choenig » 09.02.2019, 16:45 

Und hier noch die letzten findings:

Das 5. Byte in den Antworten gibt (meist) die Gesamtlänge der Antwort an, exkl. der ersten zwei FF-Bytes.

Das letze Byte ist eine Checksumme: Und zwar sind es die letzen zwei Stellen des Ergebnisses der Addition aller Bytes wieder exkl. der ersten zwei FF-Bytes.

LG
Christian
choenig
Beiträge: 11
Registriert
14.04.2016

AW: AW: AW: AW: AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von RrPt » 09.02.2019, 16:51 

22 hat auf jeden Fall was mit Licht zu tun.
Wenn ich die Aufzeichnung vergleiche, so sieht der Verlauf fast identisch aus. val21/val22 liegt immer zwischen 121...129

LG Rainer
RrPt
Beiträge: 22
Registriert
01.02.2019

AW: AW: AW: AW: AW: AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von RrPt » 09.02.2019, 17:49 

das mit der Prüfsumme stimmt bei mir noch nicht ....
meine Summe ist immer viel kleiner
RrPt
Beiträge: 22
Registriert
01.02.2019

AW: AW: AW: AW: AW: AW: AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von choenig » 09.02.2019, 21:22 

Interessant, bei mir passt es einwandfrei.

Z.B. hier:
-> ffff0b0006040419
<- ffff0b0050040100d302005e03000d04005e05005e062407390827a60927 \
a60a006d0b00080c000a0e00000000100000000011000000051200000040 \
1300000059140000005915000077e216001b1700d709
choenig
Beiträge: 11
Registriert
14.04.2016

AW: AW: AW: AW: AW: AW: AW: AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von choenig » 10.02.2019, 10:04 

Und noch eine Erkenntnis (todayMax und todayMin):

Die folgenden Requests kenn' ich und kann ich parsen:

### Request current Firmware
-> ffff500353

### Request current values
-> ffff0b0006040419

### Request historyMax
-> ffff0b000605051b

### Request historyMin
-> ffff0b000606061d

### Request todayMax
-> ffff0b000607071f

### Request todayMin
-> ffff0b0006080821

Das 'historyMax'- und 'historyMin'- Format ist analog zu 'current'.
Bei 'todayMax' und 'todayMin' sind jeweils noch die Uhrzeiten als zwei Bytes hinten an die jeweiligen Werte angehängt. Die Indizes lauten hier nicht 0x01, sondern 0x41.

LG und einen schönen Sonntag.
Christian
choenig
Beiträge: 11
Registriert
14.04.2016

AW: AW: AW: AW: AW: AW: AW: AW: AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von RrPt » 10.02.2019, 13:40 

Hi,
danke für die Info.
Checksum passt nun.

Neue Infos zu val22 und val23:

val22: 2 Bytes UV-Raw value
val23: 2 Bytes UV-Index Raw value

aus val23 kann der UV-Index folgendermaßen berechnet werden:

[code]
byte GetUvIdx(double? value)
{
if (!value.HasValue) return 0;
int[] UvIdxBorders = new int[] { 0, 99, 540, 1000, 1400, 1843, 2292, 2734, 3138, 3648, 4196, 4707, 5209, 5735, 6276, 6778 };
for (byte i = 0; i < UvIdxBorders.Length; i++)
{
if (value < UvIdxBorders[i]) return (byte)(i - 1);
}
return 15;
}
[/code]

Gruß Rainer
RrPt
Beiträge: 22
Registriert
01.02.2019

AW: AW: AW: AW: AW: AW: AW: AW: AW: AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von Stefan Gubler » 10.02.2019, 17:34 

Das hört sich ja interessant an.

Ich habe da einen anderen Weg genommen:
über die App WS-View kann man die Webservices konfigurieren. An welche URLs die Wetterstation die Daten schickt.
Leider nicht direkt. Dazu müsste man das Kommunikationsprotokoll der WS-View abhorchen.

Aber über die WS-View App kann man die Anbieter wunderground.com, weathercloud.net, weatherobservationwebsite konfigurieren.

Wenn man nun über die persönliche Internet Firewall, ein Static-Routing auf einen eigenen Server einrichtet, so kann man die Daten welche die Wetterstation sendet umleiten:

rtupdate.wunderground.com
54.68.202.145
54.68.5.241

GET /weatherstation/updateweatherstation.php?ID=XXXXXXX&PASSWORD=YYYYYY&indoortempf=77.4&tempf=36.5&dewptf=33.8&windchillf=33.4&indoorhumidity=33&humidity=90&windspeedmph=3.8&windgustmph=4.5&winddir=234&absbaromin=28.18&baromin=28.18&rainin=0.07&dailyrainin=0.01&weeklyrainin=0.01&monthlyrainin=0.20&yearlyrainin=0.35&solarradiation=0.00&UV=0&dateutc=2019-02-02%2023:13:57&softwaretype=EasyWeatherV1.3.1&action=updateraw&realtime=1&rtfreq=5 HTTP/1.0




wow.metoffice.gov.uk
23.102.25.149

GET http://wow.metoffice.gov.uk/automaticreading?siteid=XXXXXXX&siteAuthenticationKey=YYYYYYY&dateutc=2019-02-03%2000:05:27&winddir=274&windspeedmph=1.3&windgustmph=2.2&humidity=90&dewptf=34.0&tempf=36.7&dailyrainin=0.05&baromin=28.20&softwaretype=EasyWeatherV1.3.1 HTTP/1.0


XXXXX entspricht dem Stationsnamen oder useraccount und YYYYY dann dem Passwort.

Leider hatte ich noch keine Zeit ein Server Programm zu erstellen, dass die Daten annimmt und in eine Datenbank schreibt.


Interessant wäre natürlich wenn die Wetterstation direkt konfigurierbar wäre oder direkt per http get abgefragt werden könnte. Dazu müsste der Datenverkehr der WS-View App belauscht werden.





Stefan Gubler
Beiträge: 56
Registriert
29.01.2017
Dieser Beitrag wurde von 1 Foren-Nutzern als besonders hilfreich ausgezeichnet.

Protokolldefinition zum Datenaustausch WS980 zum PC

von RrPt » 10.02.2019, 17:55 

Hallo,

also ich habe das Programm WeatherSmartIP von elv benutzt. Das kommuniziert direkt mit der Wetterstation über TCP Port 45000.
Mit WireShark kann man dann die Kommunikation mitschneiden.
So habe ich das meiste herausbekommen.
Die Parametrierung geht auch über das Programm, habe ich aber noch nicht analysiert.

Auch die WS-View App (Android)nutzt tcp Port 45000 für die direkte Kommunikation. Dorther stammt die Bestimmung des UV-Index. s.o.

Wetterserver will ich nicht benutzen und auch keinen eigenen simulieren.

Mein Ziel ist die Intergration in meine Hausautomation (C#, Eigenentwicklung) .

Gruß
Rainer
RrPt
Beiträge: 22
Registriert
01.02.2019

AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von choenig » 10.02.2019, 20:40 

Hallo zusammen,

zunächst @Rainer:
Sehr interessant mit val22 und val23. Magst Du noch mehr erläutern, wie Du an die Werte/Infos gekommen bist? Inwiefern hat WS-View da geholfen?

Ich hab' den Rest auch mit WeatherSmartIP und Wireshark gemacht happy

@Stefan:
Den Ansatz wollte ich auch zunächst verfolgen, ist mir aber zu kompliziert wink. Insbesondere jetzt, wo ich alles, was ich brauch' auch direkt auslesen kann.

LG
Christian
choenig
Beiträge: 11
Registriert
14.04.2016

AW: AW: Protokolldefinition zum Datenaustausch WS980 zum PC

von choenig » 10.02.2019, 21:30 

Ich habe deine Werte zum errechnen des UV-Index mal an Google übergeben und habe einen schönen Treffer:

https://github.com/matthewwall/weewx-wh23xx/blob/master/bin/user/wh23xx.py

Hier steht alles, was wir wissen wollen happy

LG
Christian
choenig
Beiträge: 11
Registriert
14.04.2016
 vonAnzeigen  Sortieren 
zur Übersicht31 Beiträge Neue Antwort