Lorawan-stack: Dokumentieren Sie die Gerätetypen OTAA, ABP und Multicast

Erstellt am 8. Juli 2019  ·  14Kommentare  ·  Quelle: TheThingsNetwork/lorawan-stack

Zusammenfassung


FRAGE

Gibt es eine Möglichkeit, Multicast-Nachrichten mit Webhook zu versenden?
Wir entwickeln den LoRaWAN-Bootloader (derzeit in Klasse A) und er ist sehr ineffektiv.
Die gesamte Firmware-Übertragung (für einen Knoten) dauert etwa eine Stunde bei 80 dBm für DR4 (~64 kB).

Gibt es eine Möglichkeit, Firmware-Downlink-Daten als Multicast-Nachrichten an viele Knoten (für die Anwendung) mithilfe von Webhooks zu senden?
Dann kann jeder Knoten einzeln nach verpassten Paketen fragen.
Ich denke, es würde die Nutzung von "OTA Time" minimieren.
Gibt es dazu Unterlagen/Infos?

Endgerät ist Telit LoRaWAN 1.0.2

documentation in progress

Hilfreichster Kommentar

Ein multicast -Gerät, das in lorawan-stack registriert ist, kann eine beliebige Anzahl physischer Geräte darstellen.
Nehmen wir also an, Sie hätten 5 Geräte, die Sie im Multicast-Modus betreiben möchten – dann würden Sie alle 5 Ihrer physischen Geräte für die Verwendung bereitstellen:

  • identische DevAddr (z. B. 00E4304D )
  • identische Sitzungsschlüssel (z. B. A0CAD5A30036DBE03096EB67CA975BAA und A0CAD5A30036DBE03096EB67CA975BAA für AppSKey bzw. NwkSKey).

Dann registrieren Sie ein einzelnes Gerät in lorawan-stack mit den von Ihnen gewählten DevAddr und Sitzungsschlüsseln und dem gesetzten Flag multicast .
Angenommen, Sie haben das Gerät, das Sie gerade erstellt haben, dev1 genannt und der App-Name ist app1 .
Nehmen wir an, Sie fahren fort, einen Downlink für dev1 in App app1 zu pushen (bitte lesen Sie die Dokumentation zu verschiedenen Möglichkeiten, dies zu tun), dann würde lorawan-stack einen einzelnen Downlink planen für Gerät mit DevAddr 00E4304D .
Der einzelne Downlink würde von allen Geräten empfangen, die mit DevAddr 00E4304D übereinstimmen, dh alle 5 (idealerweise) Geräte, die Sie oben bereitgestellt haben.

Beachten Sie, dass einige physische Geräte tatsächlich an mehreren Sitzungen gleichzeitig teilnehmen können.
Nehmen wir an, Sie haben 5 solcher Geräte und möchten, dass sie als OTAA arbeiten und gleichzeitig Teil einer Multicast-Gruppe sind:

  1. Sie würden jedes Gerät als separates OTAA-Gerät mit jeweils einer eigenen Geräte-ID registrieren. (Registrieren Sie also 5 Geräte – 1 pro physischem Gerät)
  2. Sie würden ein einzelnes Gerät als Multicast-Gerät mit einer eindeutigen Geräte-ID registrieren (registrieren Sie also 1 Gerät – 1 pro Multicast-Gruppe).

Der Schlüssel zum Verständnis hier ist, dass ein registriertes Multicast-Gerät mehrere physische Geräte darstellen kann, aber alle diese physischen Geräte die DevAddr- und Sitzungsschlüssel teilen müssen.

Alle 14 Kommentare

Irrelevante Abschnitte für Probleme vom Typ „Frage“ entfernt

Nr. 890

F: Gibt es eine Möglichkeit, Multicast-Nachrichten mit Webhook zu versenden?

A: Ja, der Stack unterstützt die Registrierung von Multicast-Sitzungen der Klasse C wie jedes andere Endgerät mit dem Flag --multicast . Dies ist in unserem Getting Started beschrieben: https://github.com/TheThingsNetwork/lorawan-stack/blob/master/doc/gettingstarted.md#creating -a-device

F: Gibt es eine Möglichkeit, Firmware-Downlink-Daten als Multicast-Nachrichten an viele Knoten (für die Anwendung) mithilfe von Webhooks zu senden?

A: Ja, die Multicast-Sitzung wird wie jedes andere Gerät registriert, sodass Sie den Downlink genau so planen können, wie Sie es für ein normales Gerät tun würden.

F: Gibt es dazu einige Dokumente/Infos?

A: Nicht mehr als derzeit im Getting Started steht.

@rvolosatovs @adriansmares IIRC ihr habt Tests mit Klasse C und mit Multicast gemacht, richtig? Sollen wir dazu eine nette Dokumentationsseite schreiben?

Wenn ja, dann warten wir auf #401, bevor wir es tun.

@htdivsser - danke für die Antwort. Ich habe es gesehen, als ich angefangen habe.

Die Syntax von Webhook (URL) lautet:
curl http://localhost :1885/api/v3/as/applications/ap2/webhooks/fwup/devices/dv1/down/push -X POST -H 'Autorisierung: Bearer NNSXS.CLCIYOYYEDPLJSSWRNMYS5KCDI45HOE6M3WZIDY.E6DXAAZ4HSX2V6VL7C3244HGNKBO24SEROTXWOZUR-JHWW{data'SEROTXWOZURJHWW{ "downlinks":[{"frm_payload":"vu8=","f_port":15,"priority":"NORMAL"}]}'

Für das Downlink-Ziel ist ein einzelner Gerätename angegeben

Wie lautet also die Syntax von Webhook, die Multicast-Nachrichten an mehrere Geräte erzwingt?

Die Idee ist, dass Sie ein einzelnes "Pseudo-Gerät" registrieren, das eine Multicast-Gruppe darstellt, die mehrere physische Geräte enthält. Wenn Sie den Webhook verwenden, um den Downlink zur Multicast-Gruppe zu planen, richten Sie ihn auf dieses Pseudo-Gerät aus.

Wie Sie im Getting Started sehen können, ist die Registrierung eines solchen Pseudo-Geräts im Wesentlichen gleich wie bei einem ABP-Gerät. Die DevAddr ist die Multicast-Adresse, der NwkSKey ist der McNwkSKey und der AppSKey ist der McAppSKey.

Da wir das Remote-Multicast-Setup noch nicht implementiert haben, muss die Multicast-Sitzung auf der Geräteseite noch von der Anwendungsschicht eingerichtet werden.

@htdvisser danke.
Muss das Multicast-Pseudo-Gerät ABP sein?
Ich hoffe, es kollidiert nicht mit dem direkten Zugriff auf echte Endgeräte?

Ich kann nichts über das Erstellen von Pseudo-Geräten finden und Geräte zu dieser "Gruppe" hinzufügen, um zu beginnen, die Sie erwähnt haben.

Ich habe auch überprüft:
ttn-lw-cli --help
ttn-lw-cli end-devs --help
ttn-lw-cli dev --help
und kann keine "intuitive" Beschreibung für Pseudogeräte und -gruppen sehen.

Können Sie Befehle bereitstellen, um dies zu erreichen?

@ecities Multicast-Geräte müssen ABP sein, da sie keine Uplinks senden und daher per Definition keinen OTAA-Fluss unterstützen
Registrieren Sie das Gerät genauso wie ein ABP-Gerät, aber fügen Sie das Flag multicast hinzu.

@rvolosatovs danke
Multicast devices have to be ABP, since they do not send uplinks and hence do not support OTAA flow by definition
Wir müssen uns also nur für eines von ?? entscheiden:
-Standardentwicklung mit otta (Klasse A oder C)
-multicast dev with abp (class C) - Flag, das bei der Geräteerstellung erstellt wurde und nicht entfernt werden kann. Daten können überhaupt nicht hochgeladen werden.

Oder gibt es vielleicht eine Problemumgehung, z. B.: Geräte zu 2 verschiedenen Apps hinzufügen?
1) für normale (Uplink/Downlink) Arbeit (ap1)
2) nur für Multicast-Downlink (ap2)
_Aber es scheint Probleme mit den Zugriffsrechten zu geben - wir haben das Problem hier gemeldet_

Register the device same way you would an ABP device, but add the multicast flag.

Vielleicht ein Beispiel:
Nehmen wir an, ich habe 2 Geräte (dev1, dev2 mit demselben McNwkSKey, McAppSKey und vielleicht dev-addr)
ttn-lw-cli endgeräte erstellen app1 dev1 \
--frequency-plan-id EU_863_870 \
--lorawan-version 1.0.2 \
--lorawan-phy-version 1.0.2-b \
--abp \
--session.dev-addr 00E4304D \
--session.keys.app-s-key.key A0CAD5A30036DBE03096EB67CA975BAA \
--session.keys.nwk-s-key.key B7F3E161BC9D4388E6C788A0C547F255 \
- Multicast

ttn-lw-cli endgeräte erstellen app1 dev2 \
--frequency-plan-id EU_863_870 \
--lorawan-version 1.0.2 \
--lorawan-phy-version 1.0.2-b \
--abp \
--session.dev-addr 00E4304D \
--session.keys.app-s-key.key A0CAD5A30036DBE03096EB67CA975BAA \
--session.keys.nwk-s-key.key B7F3E161BC9D4388E6C788A0C547F255 \
- Multicast

Ist es richtig?

und möchte Multicast-Nachricht mit Webhook an beide senden.
Mir ist immer noch nicht klar, was die URL für Webhook wäre?
http://localhost :1885/api/v3/as/applications/ap2/webhooks/fwup/devices/00E4304D/down/push

Ist das richtig?

Oder vielleicht:

http://localhost :1885/api/v3/as/applications/ap2/webhooks/fwup/devices/dev1/down/push

und es wird von anderen Geräten mit denselben Sicherheitseinstellungen empfangen, wo
--session.keys.app-s-key.key A0CAD5A30036DBE03096EB67CA975BAA
--session.keys.nwk-s-key.key B7F3E161BC9D4388E6C788A0C547F255

??

Ein multicast -Gerät, das in lorawan-stack registriert ist, kann eine beliebige Anzahl physischer Geräte darstellen.
Nehmen wir also an, Sie hätten 5 Geräte, die Sie im Multicast-Modus betreiben möchten – dann würden Sie alle 5 Ihrer physischen Geräte für die Verwendung bereitstellen:

  • identische DevAddr (z. B. 00E4304D )
  • identische Sitzungsschlüssel (z. B. A0CAD5A30036DBE03096EB67CA975BAA und A0CAD5A30036DBE03096EB67CA975BAA für AppSKey bzw. NwkSKey).

Dann registrieren Sie ein einzelnes Gerät in lorawan-stack mit den von Ihnen gewählten DevAddr und Sitzungsschlüsseln und dem gesetzten Flag multicast .
Angenommen, Sie haben das Gerät, das Sie gerade erstellt haben, dev1 genannt und der App-Name ist app1 .
Nehmen wir an, Sie fahren fort, einen Downlink für dev1 in App app1 zu pushen (bitte lesen Sie die Dokumentation zu verschiedenen Möglichkeiten, dies zu tun), dann würde lorawan-stack einen einzelnen Downlink planen für Gerät mit DevAddr 00E4304D .
Der einzelne Downlink würde von allen Geräten empfangen, die mit DevAddr 00E4304D übereinstimmen, dh alle 5 (idealerweise) Geräte, die Sie oben bereitgestellt haben.

Beachten Sie, dass einige physische Geräte tatsächlich an mehreren Sitzungen gleichzeitig teilnehmen können.
Nehmen wir an, Sie haben 5 solcher Geräte und möchten, dass sie als OTAA arbeiten und gleichzeitig Teil einer Multicast-Gruppe sind:

  1. Sie würden jedes Gerät als separates OTAA-Gerät mit jeweils einer eigenen Geräte-ID registrieren. (Registrieren Sie also 5 Geräte – 1 pro physischem Gerät)
  2. Sie würden ein einzelnes Gerät als Multicast-Gerät mit einer eindeutigen Geräte-ID registrieren (registrieren Sie also 1 Gerät – 1 pro Multicast-Gruppe).

Der Schlüssel zum Verständnis hier ist, dass ein registriertes Multicast-Gerät mehrere physische Geräte darstellen kann, aber alle diese physischen Geräte die DevAddr- und Sitzungsschlüssel teilen müssen.

@rvolosatovs vielen Dank für die sehr gute "Schritt-für-Schritt" -Erklärung, die die meisten Annahmen beseitigt

Ich denke, es lohnt sich, in das Handbuch "Erste Schritte" oder in die Multicast-Dokumentation kopiert zu werden, da dies in der Praxis nicht so offensichtlich ist

Grüße,

Robert

@ecities gerne geschehen, froh, dass ich helfen konnte!
@adriansmares kannst du das abholen?

@adriansmares schlägt vor, dass wir etwas detaillierter erklären, was OTAA-, ABP- und Multicast-Geräte sind, insbesondere letztere.

Ich versuche, ein --multicast-Gerät zu erstellen (Befehl aus dem Beispiel „Erste Schritte“ kopiert)

ttn-lw-cli endgeräte erstellen ap3 lldv3 \
--frequency-plan-id EU_863_870 \
--lorawan-version 1.0.2 \
--lorawan-phy-version 1.0.2-b \
--abp \
--session.dev-addr 11E4304D \
--session.keys.app-s-key.key A0CAD5A30036DBE03096EB67CA975BAA \
--session.keys.nwk-s-key.key B7F3E161BC9D4388E6C788A0C547F255 \
- Multicast

und bekam eine Nachricht:
Unbekanntes Flag: --multicast

ttn-lw-cli-Version
Die Things Network-Befehlszeilenschnittstelle: ttn-lw-cli
Version: 3.0.3
Go-Version: go1.12.5
Betriebssystem/Arch: linux/amd64

Bitte warten Sie auf v3.1.0 oder erstellen Sie master aus der Quelle, siehe DEVELOPMENT.md .

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen