Passerelles et sous-appareils
Une passerelle est un appareil qui publie pour le compte d'autres appareils : des sous-appareils qui possèdent leur propre numéro de série mais aucune connexion propre, et des balises qu'elle détecte à proximité. Cette page vous montre comment une passerelle signale la télémétrie, les heartbeats et les états de ces appareils.
Avant de commencer
- La passerelle est provisionnée et connectée. Consultez Connect over MQTTS.
- Le type d'appareil de la passerelle est marqué comme passerelle dans le Hub, ce qui la fait apparaître sur la page Gateways.
- Chaque sous-appareil existe en tant qu'appareil dans le même registre que la passerelle. La télémétrie d'un numéro de série absent de ce registre est ignorée.
Dans les exemples, <prefix> représente le préfixe de la passerelle, registries/<registry-id>/devices/<gateway-serial-number>.
| Données pour | Comment la passerelle les signale |
|---|---|
| Télémétrie d'un sous-appareil | Publiez sur <prefix>/subdevices/<sub-serial-number>/events, ou .../events/<subtype> pour l'acheminer comme les sous-types propres à l'appareil |
| Durée de fonctionnement d'un sous-appareil | Heartbeat version 1 (protobuf), avec une liste sub_devices |
| États des balises | Tableau beacons dans les états propres de la passerelle |
1. Envoyer la télémétrie d'un sous-appareil
Publiez la télémétrie du sous-appareil sous le préfixe de la passerelle. Comme pour toute télémétrie, le format est libre :
mosquitto_pub -V mqttv5 \
-h mqtts.fundamentum-iot.com -p 8883 --cafile isrgrootx1.pem \
-i "projects/<project-id>/regions/1/registries/<registry-id>/devices/<gateway-serial-number>" \
-u unused -P "$JWT" \
-t "registries/<registry-id>/devices/<gateway-serial-number>/subdevices/<sub-serial-number>/events" \
-m '{"temperature": 19.8}'
events est le seul topic autorisé sous subdevices/.
2. Signaler les heartbeats des sous-appareils
Pour signaler ensemble la durée de fonctionnement de la passerelle et de ses sous-appareils, publiez un message protobuf Heartbeat sur <prefix>/heartbeat avec la propriété utilisateur MQTT 5 v définie à 1. Le message contient une liste sub_devices.
Sans la propriété v, ou avec v défini à 0, le heartbeat est le JSON simple {"uptime": <seconds>} de la passerelle seule. Consultez MQTT topics and message formats pour le schéma protobuf.
3. Signaler les balises
Les balises sont de petits appareils que la passerelle se contente de détecter, comme les étiquettes Bluetooth. Ajoutez-les aux états de la passerelle, dans le tableau beacons :
{
"timestamp": 1789167823,
"states": { "battery_level": 87 },
"beacons": [
{
"identification": "beacon-abc123",
"states": { "rssi": -67, "battery_level": 44 }
}
]
}
Chaque balise est un appareil à part entière, identifié par identification. La plateforme stocke ses états et enregistre son rssi comme une détection par la passerelle.
Utiliser le daemon Edge sur une passerelle
Le Linux daemon gère les sous-appareils pour vous :
| Appel gRPC | Utilisation |
|---|---|
Heartbeat.AttachSubDevice, Heartbeat.Send |
Signaler les heartbeats des sous-appareils |
StatesEvent.PublishJson |
Publier les états, avec une liste sub_devices |
Actions.UpdateStatus, FirmwareUpdate.UpdateStatus |
Signaler l'état d'un ou de plusieurs appareils, via serial_numbers |
Étapes suivantes
- Actions and custom encoders et Firmware updates (OTA) pour les sous-appareils.