Forum: Mikrocontroller und Digitale Elektronik The Things Network Bidirektional?


von Bastian (Gast)


Lesenswert?

Hallo zusammen,
ich habe mir eine kleine Wetterstation gebastelt, die via "The Things 
Network" Ihre Daten an mein Smart Home System weitergibt. Ich betreibe 
auch mein eigenes, aber öffentliches TTN Gateway, das läuft soweit 
prima. Ich würde jetzt aber gerne auch Daten an die Wetterstation 
zurücksenden, finde aber ums verrecken keinen einzigen Codeschnipsel der 
das vorsieht. Ich benutze aktuell das Adafruit Feather 32u4 mit RFM9X 
LoRa Radio Chip. Aber so langsam beschleicht mich der Verdacht, dass das 
"The Things Network" zwar das Hochladen von Daten ermöglicht, aber den 
anderen Weg zum Node hin nicht? Oder bin ich da auf dem Holzweg?
Viele Grüße,
Bastian

von Axel G. (axelg) Benutzerseite


Lesenswert?

Doch, klar kannst du Daten zum Device senden. Die Richtung heisst im 
Jargon Downlink und über die TTN Console kannst du das ausprobieren. 
Wann gesendet wird hängt von deiner Devicekonfiguration ab. Die häufig 
verwendetete, weil Energie sparende Klasse A bietet einen Downlink nur 
unmittelbar nach dem Versand eines Uplinkpaketes an.

von temp (Gast)


Lesenswert?

Bastian schrieb:
> "The Things Network" zwar das Hochladen von Daten ermöglicht, aber den
> anderen Weg zum Node hin nicht? Oder bin ich da auf dem Holzweg?

Das kommt auch auf die Lib an die du verwendest. Wenn du TinyLoRa 
verwendest liegst du richtig mit der Annahme nur senden zu können.
Wenn du MCCI-LMIC verwendest, ist Empfangen prinzipiell möglich. Aber 
wenn du nur ein eigenes Gateway hast mit einem Kanal oder so, dann ist 
bei LMIC auch noch einiges an Finetuning nötig. Anderenfalls versucht 
deine Node das gesamte Kanalraster zu benutzen und schießt damit 80% der 
Pakete nutzlos in den Äther.

von Frank K. (frank)


Lesenswert?

Hier ein Beispiel für die LMIC: 
https://github.com/mcci-catena/arduino-lmic/blob/master/examples/ttn-otaa/ttn-otaa.ino
1
        case EV_TXCOMPLETE:
2
            Serial.println(F("EV_TXCOMPLETE (includes waiting for RX windows)"));
3
            if (LMIC.txrxFlags & TXRX_ACK)
4
              Serial.println(F("Received ack"));
5
            if (LMIC.dataLen) {
6
              Serial.print(F("Received "));
7
              Serial.print(LMIC.dataLen);
8
              Serial.println(F(" bytes of payload"));
9
            }

Die empfangenen Bytes stehen dann an LMIC.frame+LMIC.dataBeg.

von Bastian (Gast)


Lesenswert?

Super vielen Dank,
arbeite mich jetzt durch die LMIC durch. Melde mich wenn ich weiter bin.

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.