Diese Dokumentation beschreibt das Sendeformat und die LoRa-Parameter des Wettersensors am Relais DB0SL. Damit kann man die Aussendungen korrekt empfangen und dekodieren.
Parameter | Wert | Beschreibung |
---|---|---|
Frequenz | 434.700.000 Hz | ISM-Band 70 cm |
Ausgangsleistung | 10 dBm | 10 mW EIRP |
Bandbreite | 125 kHz | LoRa Standard |
Spreading Factor | 12 | Maximale Reichweite (~293 bps) |
Coding Rate | 4/5 | Forward Error Correction |
Preamble Length | 8 | Standard |
CRC | aktiviert | Ja (Fehlererkennung) |
InvertIQ | nein | Normales Gateway-Format |
Jedes empfangene Paket besteht aus folgenden Teilen:
Nur Pakete mit dieser ID sollten dekodiert werden. Diese ID ist fest und exklusiv für DB0SL.
Danach folgen mehrere Datenfelder mit Sensorwerten. Jedes Datenfeld hat folgenden Aufbau:
Byte | Bedeutung |
---|---|
[0] | Info-Byte: 5 Bit Sensor-Typ, 3 Bit Format |
[1..n] | Rohdaten (je nach Format 1–4 Bytes) |
Code | Typ | Größe | Beschreibung |
---|---|---|---|
0 | UINT8 | 1 B | 8-Bit Wert |
1 | UINT16 | 2 B | Little Endian |
2 | UINT24 | 3 B | Little Endian |
3 | UINT32 | 4 B | Little Endian |
4 | FLOAT | 4 B | IEEE754, Little Endian |
5 | STRING | 1+len | Wird ignoriert (nur Anzeige) |
6–7 | – | – | Ungültig / reserviert |
Code | Name | Beschreibung | Skalierung |
---|---|---|---|
0 | TEMPERATURE1 | Temperatur (°C) | 0..65534 → -30 bis +100 °C |
4 | PRESSURE | Luftdruck (hPa) | 0..65534 → 700 bis 1100 hPa |
5 | HUMIDITY | Luftfeuchte (%) | 0..254 → 0 bis 100 % |
6 | VOLTAGE | Systemspannung (V) | 0..65534 → 0 bis 6 V |
7 | PVVOLTAGE | Solarpanel-Spannung (V) | 0..65534 → 0 bis 6 V |
Nicht dokumentierte Typen (1–3, 8–31) werden ignoriert.
Empfangenes Payload in Hex:
CA D4 27 4B D4 26 A7 9C 20 35 6C 24 3D 90 05 6B
Die ersten zwei Bytes bilden die Gerätekennung (Little Endian):
CA D4 → 0xD4CA = 54474 → gültig (korrektes Gerät)
Die restlichen Bytes bestehen aus mehreren Datenfeldern. Wir dekodieren sie Schritt für Schritt:
27 4B D4
Byte | Wert (hex) | Bedeutung |
—— | ———— | ———– |
27 | Info-Byte: 0b00100111 → Typ 7 (PVVOLTAGE), Format 1 (UINT16) | |
4B D4 | UINT16 LE → 0xD44B = 54347 |
→ Skalierung für PVVOLTAGE: 0..65534 → 0..6V
PVVOLTAGE = 54347 / 65534 * 6 ≈ 4.97 V
26 A7 9C
Byte | Wert | Bedeutung |
—— | —— | ———– |
26 | Info-Byte: 0b00100110 → Typ 6 (VOLTAGE), Format 1 (UINT16) | |
A7 9C | 0x9CA7 = 40103 |
→ Skalierung für VOLTAGE: VOLTAGE = 40103 / 65534 * 6 ≈ 3.67 V
20 35 6C
Byte | Wert | Bedeutung |
—— | —— | ———– |
20 | Info-Byte: 0b00100000 → Typ 0 (TEMPERATURE1), Format 1 (UINT16) | |
35 6C | 0x6C35 = 27701 |
→ Skalierung Temperatur: TEMPERATURE1 = -30 + (27701 / 65534) * 130 ≈ 25.9 °C
24 3D 90
Byte | Wert | Bedeutung |
—— | —— | ———– |
24 | Info-Byte: 0b00100100 → Typ 4 (PRESSURE), Format 1 (UINT16) | |
3D 90 | 0x903D = 36925 |
→ Skalierung Druck (700–1100 hPa): PRESSURE = 700 + (36925 / 65534) * 400 ≈ 925.3 hPa
05 6B
Byte | Wert | Bedeutung |
—— | —— | ———– |
05 | Info-Byte: 0b00000101 → Typ 5 (HUMIDITY), Format 0 (UINT8) | |
6B | 0x6B = 107 |
→ Skalierung Feuchtigkeit (0–254 → 0–100 %): HUMIDITY = 107 / 254 * 100 ≈ 42.1 %
Sensor | Wert | Einheit |
————– | ———- | ——— |
Temperatur | ≈ 25.9 | °C |
Luftdruck | ≈ 925.3 | hPa |
Luftfeuchte | ≈ 42.1 | % |
Spannung | ≈ 3.67 | V |
PV-Spannung | ≈ 4.97 | V |
Dieses Beispiel zeigt, wie aus einem rohen LoRa-Paket die Werte extrahiert und skaliert werden können. Die Info-Bytes liefern Typ und Format, die Rohdaten werden abhängig davon interpretiert.
In regelmäßigen Abständen wird auch ein Textstring (Datenformat 5) gesendet, der Infos (Namen usw) enthält.