Lorawan-stack: Documenter les types d'appareils OTAA, ABP et Multicast

Créé le 8 juil. 2019  ·  14Commentaires  ·  Source: TheThingsNetwork/lorawan-stack

Résumé


QUESTION

Est-il possible d'envoyer des messages multicast avec webhook ?
Nous développons le chargeur de démarrage LoRaWAN (fonctionnant actuellement en classe A) et il est très inefficace.
Le transfert complet du firmware (pour un nœud) prend environ une heure @80dBm pour DR4 (~64kB).

Existe-t-il une possibilité d'envoyer des données de liaison descendante du micrologiciel sous forme de messages multidiffusion à de nombreux nœuds (pour l'application) à l'aide de webhooks ?
Ensuite, chaque nœud peut interroger individuellement les packages manqués.
Je pense que cela minimiserait l'utilisation de "OTA Time".
Existe-t-il des docs/infos pour ça ?

Le périphérique final est Telit LoRaWAN 1.0.2

documentation in progress

Commentaire le plus utile

Un périphérique multicast enregistré dans lorawan-stack peut représenter un nombre arbitraire de périphériques physiques.
Supposons donc que vous vouliez faire fonctionner 5 appareils en mode multidiffusion - vous provisionniez alors vos 5 appareils physiques à utiliser :

  • DevAddr identique (par exemple 00E4304D )
  • clés de session identiques (par exemple, A0CAD5A30036DBE03096EB67CA975BAA et A0CAD5A30036DBE03096EB67CA975BAA pour AppSKey et NwkSKey respectivement).

Ensuite, vous enregistrez un seul appareil dans lorawan-stack avec les clés DevAddr et de session que vous avez choisies et le drapeau multicast défini.
Supposons que vous ayez appelé l'appareil que vous venez de créer dev1 et que le nom de l'application soit app1 .
Disons que vous continuez ensuite à pousser une liaison descendante pour dev1 dans l'application app1 (veuillez consulter la documentation sur les différentes façons de le faire), alors le lorawan-stack planifiera une seule liaison descendante pour un appareil avec DevAddr 00E4304D .
La liaison descendante unique serait reçue par tous les appareils correspondant à DevAddr 00E4304D , c'est-à-dire les 5 appareils (idéalement) que vous avez provisionnés ci-dessus.

Notez que certains appareils physiques peuvent réellement participer à plusieurs sessions simultanément.
Supposons que vous disposiez de 5 appareils de ce type et que vous souhaitiez qu'ils fonctionnent en tant qu'OTAA, tout en faisant également partie d'un groupe de multidiffusion :

  1. Vous enregistreriez chaque appareil en tant qu'appareil OTAA distinct avec chacun son propre ID d'appareil. (donc, enregistrez 5 appareils - 1 pour chaque appareil physique)
  2. Vous enregistreriez un seul appareil en tant qu'appareil de multidiffusion avec un ID d'appareil distinct (donc, enregistrez 1 appareil - 1 pour chaque groupe de multidiffusion)

La clé à comprendre ici est que le périphérique de multidiffusion enregistré peut représenter plusieurs périphériques physiques, mais tous ces périphériques physiques doivent partager le DevAddr et les clés de session.

Tous les 14 commentaires

Suppression des sections non pertinentes pour les problèmes de type "question"

Réf #890

Q : Est-il possible d'envoyer des messages multicast avec le webhook ?

R : Oui, la pile prend en charge l'enregistrement de sessions de multidiffusion de classe C comme n'importe quel autre périphérique final avec l'indicateur --multicast . Ceci est décrit dans notre Mise en route : https://github.com/TheThingsNetwork/lorawan-stack/blob/master/doc/gettingstarted.md#creating -a-device

Q : Est-il possible d'envoyer des données de liaison descendante du micrologiciel sous forme de messages multidiffusion à de nombreux nœuds (pour l'application) à l'aide de webhooks ?

R : Oui, la session de multidiffusion est enregistrée comme n'importe quel autre appareil, vous pouvez donc programmer une liaison descendante exactement de la même manière que vous le feriez pour un appareil normal.

Q : Existe-t-il des documents/informations à ce sujet ?

R : Pas plus que ce qui figure actuellement dans le guide de démarrage.

@rvolosatovs @adriansmares IIRC, vous avez fait des tests avec la classe C et avec la multidiffusion, n'est-ce pas ? Devrions-nous écrire une belle page de documentation à ce sujet ?

Si oui, attendons le #401 avant de le faire.

@htdivsser - merci pour la réponse. Je l'ai vu au démarrage.

La syntaxe du webhook (url) est :
curl http://localhost :1885/api/v3/as/applications/ap2/webhooks/fwup/devices/dv1/down/push -X POST -H 'Autorisation : Bearer NNSXS.CLCIYOYYEDPLJSSWRNMYS5KCDI45HOE6M3WZIDY.E6DXAAZ4HSX2V6VL7C3244HGNKBO24SEROTXOZURJSHW'WZ{data "downlinks":[{"frm_payload":"vu8=","f_port":15,"priority":"NORMAL"}]}'

Un seul nom de périphérique est spécifié pour la cible de liaison descendante

Alors, quelle est la syntaxe du webhook qui applique un message multicast à plusieurs appareils ?

L'idée est que vous enregistrez un seul "pseudo-périphérique" représentant un groupe de multidiffusion qui contient plusieurs périphériques physiques. Lorsque vous utilisez le webhook pour planifier une liaison descendante vers le groupe de multidiffusion, vous le ciblez sur ce pseudo-appareil.

Comme vous pouvez le voir dans le Getting Started, l'enregistrement d'un tel pseudo-appareil est essentiellement le même que pour un appareil ABP. Le DevAddr est l'adresse de multidiffusion, le NwkSKey est le McNwkSKey et l'AppSKey est le McAppSKey.

Étant donné que nous n'avons pas encore implémenté la configuration de multidiffusion à distance, la session de multidiffusion côté appareil doit encore être configurée par la couche application.

@htdvisser merci.
Le pseudo-appareil multicast doit-il être ABP ?
J'espère qu'il n'y a pas de collision avec l'accès direct aux vrais appareils finaux ?

Je ne trouve rien sur la création d'un pseudo-périphérique et l'ajout de périphériques à ce "groupe" dans la mise en route que vous avez mentionnée.

J'ai aussi vérifié :
ttn-lw-cli --help
ttn-lw-cli end-devs --help
ttn-lw-cli dev --help
et ne peut pas voir la description « intuitive » des pseudo-appareils et des groupes.

Pouvez-vous fournir des commandes, pour y parvenir ?

Les appareils @ecities Multicast doivent être ABP, car ils n'envoient pas de liaisons montantes et ne prennent donc pas en charge le flux OTAA par définition
Enregistrez l'appareil de la même manière que vous le feriez pour un appareil ABP, mais ajoutez l'indicateur multicast .

@rvolosatovs merci
Multicast devices have to be ABP, since they do not send uplinks and hence do not support OTAA flow by definition
Nous devons donc choisir un seul des ?? :
-dev standard avec otta (classe A ou C)
- dev multicast avec abp (classe C) - indicateur créé à la création de l'appareil et ne peut pas être supprimé. Impossible de relier les données du tout.

Ou peut-être existe-t-il une solution de contournement, par exemple : ajouter des appareils à 2 applications différentes ?
1) pour le travail normal (uplink/downlink) (ap1)
2) pour liaison descendante multidiffusion uniquement (ap2)
_Mais il semble y avoir des problèmes avec les droits d'accès - nous avons signalé le problème ici_

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

Peut-être un exemple :
Disons que j'ai 2 appareils (dev1, dev2 avec le même McNwkSKey, McAppSKey et peut-être dev-addr)
les appareils finaux ttn-lw-cli créent app1 dev1 \
--frequence-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 \
--multidiffusion

les appareils finaux ttn-lw-cli créent app1 dev2 \
--frequence-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 \
--multidiffusion

Est ce bien?

et que vous souhaitez envoyer un message multidiffusion à chacun d'eux avec webhook.
Ce n'est toujours pas clair pour moi quelle serait l'URL du webhook ?
http://localhost :1885/api/v3/as/applications/ap2/webhooks/fwup/devices/00E4304D/down/push

Est-ce correct?

Ou peut-être:

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

et il sera reçu par d'autres appareils avec les mêmes paramètres de sécurité où
--session.keys.app-s-key.key A0CAD5A30036DBE03096EB67CA975BAA
--session.keys.nwk-s-key.key B7F3E161BC9D4388E6C788A0C547F255

??

Un périphérique multicast enregistré dans lorawan-stack peut représenter un nombre arbitraire de périphériques physiques.
Supposons donc que vous vouliez faire fonctionner 5 appareils en mode multidiffusion - vous provisionniez alors vos 5 appareils physiques à utiliser :

  • DevAddr identique (par exemple 00E4304D )
  • clés de session identiques (par exemple, A0CAD5A30036DBE03096EB67CA975BAA et A0CAD5A30036DBE03096EB67CA975BAA pour AppSKey et NwkSKey respectivement).

Ensuite, vous enregistrez un seul appareil dans lorawan-stack avec les clés DevAddr et de session que vous avez choisies et le drapeau multicast défini.
Supposons que vous ayez appelé l'appareil que vous venez de créer dev1 et que le nom de l'application soit app1 .
Disons que vous continuez ensuite à pousser une liaison descendante pour dev1 dans l'application app1 (veuillez consulter la documentation sur les différentes façons de le faire), alors le lorawan-stack planifiera une seule liaison descendante pour un appareil avec DevAddr 00E4304D .
La liaison descendante unique serait reçue par tous les appareils correspondant à DevAddr 00E4304D , c'est-à-dire les 5 appareils (idéalement) que vous avez provisionnés ci-dessus.

Notez que certains appareils physiques peuvent réellement participer à plusieurs sessions simultanément.
Supposons que vous disposiez de 5 appareils de ce type et que vous souhaitiez qu'ils fonctionnent en tant qu'OTAA, tout en faisant également partie d'un groupe de multidiffusion :

  1. Vous enregistreriez chaque appareil en tant qu'appareil OTAA distinct avec chacun son propre ID d'appareil. (donc, enregistrez 5 appareils - 1 pour chaque appareil physique)
  2. Vous enregistreriez un seul appareil en tant qu'appareil de multidiffusion avec un ID d'appareil distinct (donc, enregistrez 1 appareil - 1 pour chaque groupe de multidiffusion)

La clé à comprendre ici est que le périphérique de multidiffusion enregistré peut représenter plusieurs périphériques physiques, mais tous ces périphériques physiques doivent partager le DevAddr et les clés de session.

@rvolosatovs merci beaucoup pour la très bonne explication "étape par étape", qui élimine la plupart des hypothèses

Je pense que cela vaut la peine d'être copié dans le manuel de démarrage ou la documentation multicast car ce n'est pas si évident dans la pratique

Salutations,

robert

@ecities de rien, content d'avoir pu aider !
@adriansmares pouvez-vous ramasser ça ?

@adriansmares suggérant que nous expliquions un peu plus en détail ce que sont les appareils OTAA, ABP et Multicast, en particulier ce dernier.

J'essaie de créer un périphérique --multicast (commande copiée de l'exemple de démarrage)

les périphériques finaux ttn-lw-cli créent ap3 lldv3 \
--frequence-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 \
--multidiffusion

et j'ai reçu un message :
drapeau inconnu : --multicast

version ttn-lw-cli
L'interface de ligne de commande Things Network : ttn-lw-cli
Version : 3.0.3
Version : go1.12.5
Système d'exploitation/Arch : linux/amd64

Veuillez attendre v3.1.0 ou compiler master partir de la source, voir DEVELOPMENT.md .

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

johanstokking picture johanstokking  ·  3Commentaires

kschiffer picture kschiffer  ·  6Commentaires

johanstokking picture johanstokking  ·  6Commentaires

thinkOfaNumber picture thinkOfaNumber  ·  4Commentaires

kschiffer picture kschiffer  ·  7Commentaires