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
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:
00E4304D
)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:
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
.
Hilfreichster Kommentar
Ein
multicast
-Gerät, das inlorawan-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:
00E4304D
)A0CAD5A30036DBE03096EB67CA975BAA
undA0CAD5A30036DBE03096EB67CA975BAA
für AppSKey bzw. NwkSKey).Dann registrieren Sie ein einzelnes Gerät in
lorawan-stack
mit den von Ihnen gewähltenDevAddr
und Sitzungsschlüsseln und dem gesetzten Flagmulticast
.Angenommen, Sie haben das Gerät, das Sie gerade erstellt haben,
dev1
genannt und der App-Name istapp1
.Nehmen wir an, Sie fahren fort, einen Downlink für
dev1
in Appapp1
zu pushen (bitte lesen Sie die Dokumentation zu verschiedenen Möglichkeiten, dies zu tun), dann würdelorawan-stack
einen einzelnen Downlink planen für Gerät mit DevAddr00E4304D
.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:
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.