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
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 :
00E4304D
)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 :
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
.
Commentaire le plus utile
Un périphérique
multicast
enregistré danslorawan-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 :
00E4304D
)A0CAD5A30036DBE03096EB67CA975BAA
etA0CAD5A30036DBE03096EB67CA975BAA
pour AppSKey et NwkSKey respectivement).Ensuite, vous enregistrez un seul appareil dans
lorawan-stack
avec les clésDevAddr
et de session que vous avez choisies et le drapeaumulticast
défini.Supposons que vous ayez appelé l'appareil que vous venez de créer
dev1
et que le nom de l'application soitapp1
.Disons que vous continuez ensuite à pousser une liaison descendante pour
dev1
dans l'applicationapp1
(veuillez consulter la documentation sur les différentes façons de le faire), alors lelorawan-stack
planifiera une seule liaison descendante pour un appareil avec DevAddr00E4304D
.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 :
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.