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.