Forum: Mikrocontroller und Digitale Elektronik VENTUS W177 Funkprotokoll Datenprotokoll Protokoll Wetterstation gesucht


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Geschätztes Forum,

das Übertagungsprotokoll dieser Wetterstation suche ich.

Kann jemand helfen?

Danke

Bernhard

von Wolfgang (Gast)


Lesenswert?


von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Wolfgang schrieb:
> Beitrag "Re: Ventus Wetterstation Daten anzapfen"

Wolfgang, Danke für Deine Tipps

und so sieht das das Protokoll in der Praxis aus...

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Ein Mitschnitt der Impulsabstände als Excel-Datei Beispiel.

Nach jedem Impuls wurde die Zeit zum vorhergenden Impuls protokolliert.

Impulsabstände von 2,2ms, 4,4ms und 9,9ms wurden registriert.

: Bearbeitet durch User
von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Ein grundlegendes Problem quält mich schon seit Tagen.

Wann beginnt nach einem 10ms langen Synchronimpuls die Zeit für einen

Bit-Impuls, direkt nach einem Synchronimpuls, oder ein Impuls später?

von Wolfgang (Gast)


Angehängte Dateien:

Lesenswert?

Bernhard S. schrieb:
> Ein grundlegendes Problem quält mich schon seit Tagen.

Was quält dich?
Ich weiß jetzt nicht, wie du bei der Bestimmung der Werte in des 
Excel-Tabelle vorgegangen bist, aber die Daten sehen doch sehr gut aus: 
Immer 36 Bit, so wie in der Protokollbeschreibung auf S.5 unter "1.4 
General packet format" und auf S.6 unter "2.1 Transmission schedule" 
beschrieben.
Nach jedem Batteriewechsel ändert sich die "Random Id", deine Batterie 
hat über 2.6V, du hattest bei der Aufzeichnung Windstille und die 
Windrichtungen werden als N=0°, E=90°, S=180° und W=270° kodiert.

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Danke Wolfgang, Lob!

Sehr gute Zuarbeit,

jede Impulslänge bzw. Impulsabstand ist eine Bitinformation.

Manches kann so einfach sein :-)

von Dieter Fauth (Gast)


Lesenswert?

Hi,
Bin nicht 100% sicher, aber mein Regenmesser hat einen ähnlichen Namen 
und wird perfekt mit rtl_433 dekodiert.

Brauchst ein "Software Defined Radio" als Empfänger, 10..20 EUR.
Läuft auch auf Raspberry.

LG, Dieter

von Wolfgang (Gast)


Lesenswert?

Dieter Fauth schrieb:
> Brauchst ein "Software Defined Radio" als Empfänger, 10..20 EUR.
> Läuft auch auf Raspberry.

Das mag sich rechnen, wenn der Raspberry sowieso läuft und die 
Stromaufnahme egal ist.
Ein SDR und einen Raspberry an Stelle eines einfachen AM-Funkmoduls und 
eines ATtiny ist ansonsten Perlen vor die Säue.

von Bernhard S. (bernhard)


Lesenswert?

Dieter Fauth schrieb:
> Brauchst ein "Software Defined Radio" als Empfänger, 10..20 EUR.
> Läuft auch auf Raspberry.

Ein ATtiny45 für 20 Ct. schafft das auch ;-)

von Dieter Fauth (Gast)


Lesenswert?

Full ack.
Aber das Protokoll ist in den Quellen von rtl433 enthalten.
Das kann ein guter Start sein...

LG, Dieter Fauth

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Und so sieht es in der Praxis an einem RFC10 aus.

In den ersten 50ms muss sich der Empfänger erst auf das HF-Signal 
einschwingen, dann wird wunderschön das HF-Signal vom Sender 
demoduliert.

Abstand zw. Sender und Empfänger ca. 0,5 Meter.

In diesem Beispiel ist der Synchronimpuls gut erkennbar.

: Bearbeitet durch User
von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Manchmal sieht's auch so aus.

Decoderung schwierig :(

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Ich verzweifle gerade an der Checksumme (CRC),

n8=(15-n0-n1-n2-n3-n4-n5-n6-n7) & 0xF

auf dieses Ergebnis komme ich nicht, was mache ich falsch?

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Protokoll mit CRC-Berechnug.

Manfred, Danke für Deine Tipps.

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Das 433MHz Empfangsmodul der Wetterstation.

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Der Ventus Sniffer, ein interessantes Tool.

Die empfangenen und gültigen Pakete (CRC) werden angezeigt, beginnend 
mit der ID(Byte 0).

Die ID lässt sich ändern, ID=Null, dann erfolgt keine ID-Prüfung und 
alle empfangenen Pakete aller Sensoren werden angezeigt.

Bei korrekten Winddaten, kurzer Pipton.

Hinweis:

Ein alleiniger CRC-Check reicht nicht aus, Nutzdaten incl. ID können 
trotzdem falsch sein.

LED-grün: Daten ok
LED-gelb: RX-Impulse
LED-rot:  ID-Error
LED-rot:  10ms Synchron Impuls erkannt

: Bearbeitet durch User
von grundschüler (Gast)



Lesenswert?

ich häng mich hier mal dran. Habe auch so ein Windmessgerät. Der Versuch 
der Kommunikation per Funk  hat bislang nicht geklappt. Aber ich habe 
das Signal direkt per Draht abgegeriffen, was sehr gut funktioniert. 
Jetzt geht es um die Auswertung des Signals. Windrichtung und Stärke 
sollen ausgegeben werden. ich habe mal angefangen:
1
u8 tmp[100];
2
u8 bit=0;
3
wind_timer_10khz=0;
4
cbi(DDR(wind_port),wind_pin);
5
  
6
while(1)
7
{
8
9
  while(!gbi(PIN(wind_port),wind_pin));// Warten auf erstes Signal
10
  while(gbi(PIN(wind_port),wind_pin));
11
  wind_timer_10khz=0;// Start Messung
12
13
14
  while (bit<99){
15
    while(!gbi(PIN(wind_port),wind_pin));// Signal Länge messen
16
    tmp[bit++]= wind_timer_10khz;
17
    wind_timer_10khz=0;
18
    while(gbi(PIN(wind_port),wind_pin));//
19
  }
20
21
}
Frage: hat irgendwer was fertiges, so dass ich mir die Programmierung 
sparen kann?

Danke für Unterstützung

von Bernhard S. (bernhard)


Lesenswert?

grundschüler schrieb:
> Frage: hat irgendwer was fertiges, so dass ich mir die Programmierung
> sparen kann?

ja, aber in Assembler ;-)

Durch Impulslängen Messung.

- Zuerst die Startbits der Übertragung erkennen
- danach die 8 Bit-ID ermitteln, ändert sich bei jedem Batteriewechsel
- anschließend Datenbits / Datenpakete mit CRC Berechnung ermitteln

Dein "2021-10-11_20_37_52-Saleae_Logic_Software.png" sieht gut aus,
die Decodierung wäre jetzt schon per Hand möglich.

: Bearbeitet durch User
von grundschüler (Gast)


Lesenswert?

habe jetzt diesen code:
1
    
2
3
uint8_t volatile wind_timer_10khz;
4
#define wind_port C
5
#define wind_pin 2
6
7
8
....
9
u8 x;
10
u8 dummy=0;
11
u8 tmp[300];
12
u8 bit=0;
13
wind_timer_10khz=0;
14
cbi(DDR(wind_port),wind_pin);
15
cbi(PORT(wind_port),wind_pin);
16
17
while(1)
18
{
19
20
21
22
lcd_goto(4,19);
23
lcd_int(gbi(PIN(wind_port),wind_pin));
24
25
26
  x=0;
27
  while(x==0)  x=gbi(PIN(wind_port),wind_pin);// Warten auf erstes Signal
28
    
29
    
30
    
31
32
  while(x>0)x=gbi(PIN(wind_port),wind_pin);
33
34
  wind_timer_10khz=0;// Start Messung
35
  while(gbi(PIN(wind_port),wind_pin)){  //x=// Signal Länge messen
36
    dummy++;
37
    }
38
39
40
u8 end=0;
41
bit=0;
42
//  while (bit<199){
43
44
  while (bit<300 && end==0){
45
  
46
    while(x==0){
47
      x=gbi(PIN(wind_port),wind_pin);// Signal Länge messen
48
    if(wind_timer_10khz>100){x=1;end=1;}
49
    
50
    }
51
    tmp[bit++]= wind_timer_10khz;
52
    wind_timer_10khz=0;
53
    while(x>0)x=gbi(PIN(wind_port),wind_pin);
54
  }
55
56
57
58
u8 id0=0;
59
u8 start=9;
60
61
62
u8 id1=0;
63
u8 id2=0;
64
u8 start_frame[7];
65
66
start_frame[1]=9;
67
i=0;
68
while(tmp[start_frame[1]+i]>60)
69
{
70
i++;
71
}
72
start_frame[1]+=i;
73
74
start_frame[2]=start_frame[1]+37;
75
i=0;
76
while(tmp[start_frame[2]+i]>60){
77
i++;
78
}
79
start_frame[2]+=i;
80
81
82
start_frame[3]=start_frame[2]+37;
83
i=0;
84
while(tmp[start_frame[3]+i]>60){
85
i++;
86
}
87
start_frame[3]+=i;
88
89
90
91
 start_frame[4]=start_frame[3]+37;
92
i=0;
93
while(tmp[start_frame[4]+i]>60){
94
i++;
95
}
96
start_frame[4]+=i;
97
98
99
100
 start_frame[5]=start_frame[4]+37;
101
i=0;
102
while(tmp[start_frame[5]+i]>60){
103
i++;
104
}
105
start_frame[5]+=i;
106
107
108
 start_frame[6]=start_frame[5]+37;
109
i=0;
110
while(tmp[start_frame[6]+i]>60){
111
i++;
112
}
113
start_frame[6]+=i;
114
115
116
117
lcd_goto(1,1);
118
lcd_int4(start_frame[1]);
119
120
lcd_goto(2,1);
121
lcd_int4(start_frame[2]);
122
123
lcd_goto(3,1);
124
lcd_int4(start_frame[3]);
125
126
127
start=start_frame[1];
128
lcd_goto(1,1);
129
for(i=0;i<8;i++)
130
  {
131
    lcd_int(tmp[start+i]/30);    
132
    id0+=(tmp[start+i]/30)<<(7-i);    
133
  }
134
135
lcd_int4(id0);
136
137
start=start_frame[2];
138
lcd_goto(2,1);
139
for(i=0;i<8;i++)
140
  {
141
    lcd_int(tmp[start+i]/30);    
142
    id1+=(tmp[start+i]/30)<<(7-i);    
143
  }
144
145
lcd_int4(id1);
146
147
start=start_frame[3];
148
lcd_goto(3,1);
149
for(i=0;i<8;i++)
150
  {
151
    lcd_int(tmp[start+i]/30);    
152
    id2+=(tmp[start+i]/30)<<(7-i);    
153
  }
154
155
lcd_int4(id2);
156
157
158
159
u8 test=0;
160
u8 ii;
161
  for(ii=1;ii<5;ii++) {
162
    test=0;
163
164
    lcd_goto(ii,1);
165
166
    start=start_frame[ii+2];
167
    for(i=0;i<8;i++)
168
      {
169
      test+=(tmp[start+i]/30)<<(i);    
170
      }
171
    lcd_int4(test);
172
173
174
175
176
if(ii==2 || ii==4)
177
{
178
    test=0;
179
    for(i=0;i<0;i++)
180
      {
181
      test+=(tmp[start+i+8]/30)<<(i);    
182
      }
183
    lcd_int4(test);
184
185
u16    dir=0;
186
    for(i=0;i<9;i++)
187
      {
188
      dir+=(tmp[start+i+8+8-1]/30)<<(i);    
189
      }
190
    lcd_int4(dir);
191
}else
192
{
193
    test=0;
194
    for(i=0;i<8;i++)
195
      {
196
      test+=(tmp[start+i+8]/30)<<(i);    
197
      }
198
    lcd_int4(test);
199
200
    test=0;
201
    for(i=0;i<8;i++)
202
      {
203
      test+=(tmp[start+i+8+8]/30)<<(i);    
204
      }
205
    lcd_int4(test);
206
}
207
208
209
210
    test=0;
211
    for(i=0;i<8;i++)
212
      {
213
      test+=(tmp[start+i+8+8+8]/30)<<(i);    
214
      }
215
    lcd_int4(test);
216
217
}
218
219
220
//Ende des frames abwarten
221
222
}

funktioniert - aber die Auflösung/Windrichtung des Sensors ist mit 45° 
doch sehr bescheiden. Außerdem kommen häufig fehlerhafte fraims. Im 
Prinzip lohnt sich die Arbeit mit diesem Sensor nicht.

von Forist (Gast)


Lesenswert?

grundschüler schrieb:
> habe jetzt diesen code:

Schon mal deine Post angeguckt?

Was meinst du wohl, was unter "Wichtige Regeln - erst lesen, dann 
posten!" die Zeile "Längeren Sourcecode nicht im Text einfügen, sondern 
als Dateianhang" bedeuten könnte? :-(

von Forist (Gast)


Lesenswert?

grundschüler schrieb:
> fehlerhafte fraims

Was für Dinger?

von Bernhard S. (bernhard)


Lesenswert?

grundschüler schrieb:
> Außerdem kommen häufig fehlerhafte fraims.

Kann ich nicht so bestätigen,
zumindest nicht bei einer drahtgebundenen Daten-Übertragung.

Bei einer 433MHz Übertragung ist das normal.

Stimmen einzelne Impulslängen, oder nur CRC nicht?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.