Inhaltsverzeichnis

LoRa Parameter und Daten-Protokoll für DB0SL-Wettersensor

Diese Dokumentation beschreibt das Sendeformat und die LoRa-Parameter des Wettersensors am Relais DB0SL. Damit kann man die Aussendungen korrekt empfangen und dekodieren.

📡 LoRa Sendeparameter

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

🧾 Datenprotokoll (LoRa Payload)

Jedes empfangene Paket besteht aus folgenden Teilen:

❶ Gerätekennung (2 Byte)

Byte 0 und 1

Nur Pakete mit dieser ID sollten dekodiert werden. Diese ID ist fest und exklusiv für DB0SL.

❷ Sensordaten (n-Felder)

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)

📐 Info-Byte Struktur

Unterstützte Datenformate

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

📋 Sensor-Typen Übersicht

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.

🛠 Hinweise für eigene Empfänger

🔍 Beispiel-Dekodierung (empfangene Payload)

Empfangenes Payload in Hex:

CA D4 27 4B D4 26 A7 9C 20 35 6C 24 3D 90 05 6B

1️⃣ Gerätekennung

Die ersten zwei Bytes bilden die Gerätekennung (Little Endian):

CA D4 → 0xD4CA = 54474 → gültig (korrektes Gerät)

2️⃣ Sensordaten-Felder

Die restlichen Bytes bestehen aus mehreren Datenfeldern. Wir dekodieren sie Schritt für Schritt:

➤ Feld 1

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

➤ Feld 2

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

➤ Feld 3

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

➤ Feld 4

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

➤ Feld 5

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 %

✅ Ergebnis zusammengefasst

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.