Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Intégrations gérées Hub SDK, conteneur Docker sur Raspberry Pi
Note
Cette implémentation du SDK AWS IoT Hub sur Raspberry Pi est un projet de démonstration destiné uniquement à des fins d'apprentissage et de test et n'est pas destiné à être utilisé dans des environnements de production. Dans le cadre de cette démonstration, définissez les configurations suivantes pour faciliter le développement :
AWS stockage des informations d'identification : à des fins de démonstration uniquement, les informations d'identification et les certificats sont stockés dans un endroit accessible pour faciliter les tests et le développement. Les environnements de production doivent utiliser des solutions de stockage sécurisées telles que AWS Secrets Manager Systems Manager Parameter Store. Ils doivent implémenter le chiffrement au repos et suivre les consignes AWS IoT de sécurité.
Privilèges de conteneur : la démo s'exécute avec des privilèges élevés afin de permettre un accès illimité aux ressources de l'hôte et de simplifier les flux de développement. En production, les conteneurs doivent fonctionner avec les privilèges minimaux requis.
Configuration du pont réseau : La démonstration utilise une configuration de pont réseau qui expose le trafic réseau interne pour faciliter le débogage et la surveillance. Dans les environnements de production, mettez en œuvre une isolation et une segmentation appropriées du réseau pour empêcher tout accès non autorisé au trafic réseau interne.
Autorisations des périphériques USB : l'accès illimité aux périphériques USB est activé pour faciliter la connexion des périphériques de développement et des appareils de test. Pour la production, mettez en œuvre des contrôles et une validation stricts des périphériques USB afin de prévenir les attaques par usurpation d'appareil.
Ces configurations permettent des tests simples et ne doivent pas être utilisées dans des environnements de production. Lors du déploiement en production, veuillez suivre les meilleures pratiques en matière de sécurité afin d'éviter toute compromission du système hôte et tout accès non autorisé aux informations d'identification.
Prérequis
Les conditions préalables suivantes sont requises pour le conteneur docker.
-
Téléchargez et installez l'imageur Raspberry Pi
. -
Procurez-vous une carte SD
. -
Configurez un Raspberry Pi 5 avec un processeur quadricœur 64 bits 2,4 GHz (8
Go de RAM). -
Connectez un dongle USB Sonoff Zigbee
. -
Connectez un dongle Silicon Labs SLUSB001A
. -
Installez la dernière version de AWS CLI depuis le manuel Managed Integrations AWS CLI Command Reference.
Accès SSH au Raspberry Pi avec adresse IP ou nom d'hôte.
Utiliser le conteneur Docker du SDK Hub des intégrations gérées sur Raspberry Pi
Téléchargez les intégrations gérées Raspberry Pi Hub SDK Docker.
Copiez le fichier sur le Raspberry Pi en utilisant SCP :
scp ~/path/to/IotMI-HubSDK-Docker-v1.0.0.tar.gz [username]@raspberrypi.local:~Connectez-vous au Raspberry Pi via SSH :
ssh hub123456@raspberrypi.localInstallez Docker s'il n'est pas présent :
# Install Docker cd curl -fsSL https://get.docker.com | sudo sh # Add your user to docker group sudo usermod -aG docker $USER exit # exit ssh # Log in againInstallez Docker Compose s'il n'est pas présent :
# Install Docker Compose sudo apt-get update sudo apt-get install -y docker-compose-pluginExtrayez les fichiers du SDK du Hub :
# Navigate to the home directory cd # Extract the hub-docker.tar.gz file tar -xzf IotMI-HubSDK-Docker-v1.0.0.tar.gzAccédez au répertoire hub-docker :
cd IotMI-HubSDK-DockerComplétez la configuration d'intégration du Hub pour configurer l'authentification et les paramètres.
Note
Vous devez être connecté à
YULou à uneDUBrégion pour effectuer cette étape.Démarrez le conteneur Docker :
# The first time it's called, it will build the container docker compose up -d docker compose logs -f
Résultat attendu :
[+] Running 1/1 ✔ Container iotmi-hubsdk-docker-hubsdk-1 Started hubsdk-1 | -\-\-\-\-\-\-Checking USB dongles-\-\-\-\-\-\-\-\-\-\-\-\- hubsdk-1 | -\-\-\-\-\-\-Stopping SDK running processes-\-\- hubsdk-1 | iotmi_mqtt_proxy: no process found hubsdk-1 | ace_eventmgr: no process found hubsdk-1 | ace_zigbee_service: no process found hubsdk-1 | zwave_svc: no process found hubsdk-1 | iotmi_cdmb: no process found hubsdk-1 | iotmi_device_agent: no process found hubsdk-1 | iotmi_lpw_provisioner: no process found hubsdk-1 | iotmi_log_daemon: no process found hubsdk-1 | -\-\-\-\-\-\-Starting Hub SDK-\-\-\-\-\-\-\-\-\-\-\-\- hubsdk-1 | -\-\-\-\-\-\-Creating logs directory-\-\-\-\-\-\-\-\-\- hubsdk-1 | Logs directory created. hubsdk-1 | -\-\-\-\-\-\-Verifying Middleware paths-\-\-\-\-\-\- hubsdk-1 | All middleware libraries exist hubsdk-1 | -\-\-\-\-\-\-Verifying Middleware pre reqs-\-\- hubsdk-1 | AIPC and KVstroage directories exist hubsdk-1 | -\-\-\-\-\-\-Starting HubOnboarding-\-\-\-\-\-\-\-\-\-\- hubsdk-1 | -\-\-\-\-\-\-Starting MQTT Proxy-\-\-\-\-\-\-\-\-\-\- hubsdk-1 | -\-\-\-\-\-\-Staring Log Daemon-\-\- hubsdk-1 | -\-\-\-\-\-\-Starting Event Manager-\-\-\-\-\-\-\-\-\-\- hubsdk-1 | -\-\-\-\-\-\-Starting Zigbee Service-\-\-\-\-\-\-\-\-\- hubsdk-1 | -\-\-\-\-\-\-Starting Zwave Service-\-\-\-\-\-\-\-\-\- hubsdk-1 | /data/aws/iotmi/middleware/AceZwave/bin /data/aws/iotmi hubsdk-1 | /data/aws/iotmi hubsdk-1 | -\-\-\-\-\-\-Starting CDMB-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- hubsdk-1 | -\-\-\-\-\-\-Starting Agent-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- hubsdk-1 | -\-\-\-\-\-\-Starting Provisioner-\-\-\-\-\-\-\-\-\-\-\-\-\- hubsdk-1 | -\-\-\-\-\-\-Checking SDK status-\-\-\-\-\-\-\-\-\-\-\-\-\-\- hubsdk-1 | root 105 0.2 0.2 1093488 16608 ? Sl 20:51 0:00 ./iotmi_mqtt_proxy -C /data/aws/iotmi/config/iotmi_config.json hubsdk-1 | Process 'iotmi_mqtt_proxy' is running. hubsdk-1 | root 183 0.0 0.0 236272 3152 ? Sl 20:51 0:00 ./middleware/AceCommon/bin/ace_eventmgr hubsdk-1 | Process 'ace_eventmgr' is running. hubsdk-1 | root 190 12.0 0.1 319264 8352 ? Sl 20:51 0:04 ./middleware/AceZigbee/bin/ace_zigbee_service hubsdk-1 | Process 'ace_zigbee_service' is running. hubsdk-1 | root 200 0.0 0.1 1365792 12480 ? Sl 20:51 0:00 ./zwave_svc hubsdk-1 | Process 'zwave_svc' is running. hubsdk-1 | root 233 0.0 0.0 1198704 5760 ? Sl 20:51 0:00 ./iotmi_cdmb hubsdk-1 | Process 'iotmi_cdmb' is running. hubsdk-1 | root 268 0.2 0.2 2017424 21968 ? Sl 20:51 0:00 ./iotmi_device_agent hubsdk-1 | Process 'iotmi_device_agent' is running. hubsdk-1 | root 311 0.1 0.1 1523072 13008 ? Sl 20:51 0:00 ./iotmi_lpw_provisioner hubsdk-1 | Process 'iotmi_lpw_provisioner' is running. hubsdk-1 | root 132 0.0 0.0 875024 7232 ? Sl 20:51 0:00 ./iotmi_log_daemon hubsdk-1 | Process 'iotmi_log_daemon' is running. hubsdk-1 | -\-\-\-\-\-Successfully Started Hub SDK-\-\-\-
Après avoir démarré avec succès le SDK du Hub, procédez à l'intégration et à la gestion des appareils à l'adresse. Configuration guidée par l'utilisateur pour embarquer et faire fonctionner les appareils
Note
Pour accéder au shell bash du conteneur Docker, exécutez la commande suivante :
docker compose exec hubsdk bashPour redémarrer le conteneur après le redémarrage, exécutez la commande suivante :
docker compose up -dPour mettre à jour le SDK du Hub, remplacez les fichiers binaires dans le dossier suivant :
hub-docker/iotmiPour redémarrer le conteneur en toute sécurité tout en préservant les données, procédez comme suit :
docker compose down docker compose up -d docker compose logs -f