Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Inserisci dati per AWS IoT SiteWise from AWS IoT things
Scopri come importare dati AWS IoT SiteWise da una serie di AWS IoT oggetti utilizzando le ombre dei dispositivi in questo tutorial. Le ombre dei dispositivi sono oggetti JSON che memorizzano le informazioni sullo stato corrente di un dispositivo. AWS IoT Per ulteriori informazioni, consulta Device shadow service nella AWS IoT Developer Guide.
Dopo aver completato questo tutorial, puoi impostare un'operazione in AWS IoT SiteWise base agli AWS IoT elementi. Usando AWS IoT things, puoi integrare la tua operazione con altre utili funzionalità di AWS IoT. Ad esempio, puoi configurare le AWS IoT funzionalità per eseguire le seguenti attività:
-
Configura regole aggiuntive per lo streaming di dati verso AWS IoT Events Amazon DynamoDB e altri AWS servizi. Per ulteriori informazioni, consulta Rules nella AWS IoT Developer Guide.
-
Indicizza, cerca e aggrega i dati del tuo dispositivo con il servizio di indicizzazione del AWS IoT parco veicoli. Per ulteriori informazioni, consulta il servizio di indicizzazione del parco veicoli nella Developer Guide. AWS IoT
-
Controlla e proteggi i tuoi dispositivi con. AWS IoT Device Defender Per ulteriori informazioni, consulta la sezione AWS IoT Device Defender nella Guida per gli sviluppatori di AWS IoT .
In questo tutorial, imparerai come importare i dati dalle ombre dei dispositivi AWS IoT degli oggetti agli asset in essi contenuti. AWS IoT SiteWise Per farlo, crei uno o più AWS IoT oggetti ed esegui uno script che aggiorna l'ombra del dispositivo di ogni oggetto con i dati sull'utilizzo della CPU e della memoria. In questo tutorial usi i dati di utilizzo della CPU e della memoria per imitare i dati realistici del sensore. Quindi, crei una regola con un' AWS IoT SiteWise azione che invia questi dati a una risorsa AWS IoT SiteWise ogni volta che il device shadow di un oggetto si aggiorna. Per ulteriori informazioni, consulta Inserisci dati per AWS IoT SiteWise utilizzare le regole AWS IoT Core.
Argomenti
Prerequisiti
Per completare questo tutorial, è necessario quanto segue:
-
Un AWS account. Se non lo hai, consultare Configura un AWS account.
-
Un computer di sviluppo che esegue WindowsmacOS,Linux, o Unix per accedere a Console di gestione AWS. Per ulteriori informazioni, consulta Nozioni di base su Console di gestione AWS.
-
Un utente AWS Identity and Access Management (IAM) con autorizzazioni di amministratore.
-
Python3 installato sul computer di sviluppo o installato sul dispositivo che desideri registrare come AWS IoT oggetto.
Fase 1: Creare un AWS IoT policy
In questa procedura, crea una AWS IoT policy che consenta ai tuoi AWS IoT oggetti di accedere alle risorse utilizzate in questo tutorial.
Questa policy consente ai AWS IoT dispositivi di stabilire connessioni e comunicare con le ombre dei dispositivi utilizzando messaggi MQTT. Per ulteriori informazioni sui messaggi MQTT, vedi Cos'è MQTT? https://aws.amazon.com/what-is/mqtt/$aws/things/ Questa policy incorpora una variabile di policy sull'oggetto nota come. thing-name/shadow/${iot:Connection.Thing.ThingName} Questa variabile sostituisce il nome dell'oggetto connesso in ogni argomento. L'iot:Connectistruzione stabilisce dei limiti ai dispositivi che possono stabilire connessioni, assicurando che la variabile thing policy possa sostituire solo i nomi che iniziano con. SiteWiseTutorialDevice
Per ulteriori informazioni, consulta le variabili della policy Thing nella AWS IoT Developer Guide.
Nota
Questa policy si applica agli oggetti i cui nomi iniziano con SiteWiseTutorialDevice. Per utilizzare un nome diverso per gli oggetti, è necessario aggiornare la policy di conseguenza.
Passaggio 2: creare e configurare un AWS IoT thing
In questa procedura, crei e configuri qualsiasi AWS IoT oggetto. Puoi designare il tuo computer di sviluppo come qualsiasi AWS IoT cosa. Man mano che progredisci, ricorda che i principi che stai imparando qui possono essere applicati a progetti reali. Hai la flessibilità di creare e configurare AWS IoT cose su qualsiasi dispositivo in grado di eseguire un AWS IoT SDK, incluso AWS IoT Greengrass FreeRTOS. Per ulteriori informazioni, consulta gli AWS IoT SDK nella Guida per gli sviluppatori. AWS IoT
Ora hai registrato AWS IoT qualcosa sul tuo computer. Effettua una delle seguenti operazioni:
-
Prosegui con il passaggio 3: creazione di un modello di asset del dispositivo senza creare AWS IoT elementi aggiuntivi. È possibile completare questo tutorial con un solo oggetto.
-
Ripetere la procedura descritta in questa sezione su un altro computer o dispositivo per creare altri oggetti AWS IoT . Per questo tutorial, si consiglia di seguire questa opzione in modo da poter inserire dati di utilizzo univoci della CPU e della memoria da più dispositivi.
-
Ripetere la procedura descritta in questa sezione sullo stesso dispositivo (computer) per creare più oggetti AWS IoT . Ogni AWS IoT dispositivo riceve dati simili sull'utilizzo della CPU e della memoria dal computer, quindi utilizza questo approccio per dimostrare l'acquisizione di dati non univoci da più dispositivi.
Passaggio 3: creare un modello di asset del dispositivo
In questa procedura, crei un modello di asset AWS IoT SiteWise per rappresentare i tuoi dispositivi che trasmettono dati sull'utilizzo della CPU e della memoria. Per elaborare i dati nelle risorse che rappresentano gruppi di dispositivi, i modelli di asset applicano informazioni coerenti su più risorse dello stesso tipo. Per ulteriori informazioni, consulta Modella gli asset industriali.
Per creare un modello di asset che rappresenta un dispositivo
-
Passare alla console AWS IoT SiteWise
. -
Nel riquadro di navigazione a sinistra scegliere Models (Modelli).
-
Scegli Crea modello di asset.
-
In Dettagli del modello, inserisci un nome per il tuo modello. Ad esempio,
SiteWise Tutorial Device Model. -
In Measurement definitions (Definizioni misurazione), effettuare le seguenti operazioni:
-
In Nome, inserisci
CPU Usage. -
In Unit (Unità), immettere
%. -
Lasciare Data type (Tipo di dati) come Double (Doppio).
Le proprietà di misurazione rappresentano i flussi di dati non elaborati di un dispositivo. Per ulteriori informazioni, consulta Definire i flussi di dati provenienti dalle apparecchiature (misurazioni).
-
-
Scegli Aggiungi nuova misura per aggiungere una seconda proprietà di misurazione.
-
Nella seconda riga sotto Measurement definitions (Definizioni misurazione), effettuare le seguenti operazioni:
-
In Nome, inserisci
Memory Usage. -
In Unit (Unità), immettere
%. -
Lasciare Data type (Tipo di dati) come Double (Doppio).
-
-
In Metric definitions (Definizioni parametri), effettuare le seguenti operazioni:
-
In Nome, inserisci
Average CPU Usage. -
In Formula (Formula), immettere
avg(CPU Usage). Scegliere CPU Usage dall'elenco di completamento automatico quando viene visualizzato. -
In Time interval (Intervallo di tempo), immettere
5 minutes.
Le proprietà dei parametri definiscono i calcoli di aggregazione che elaborano tutti i punti dati di input per un intervallo e generano un singolo punto dati per ogni intervallo. Questa proprietà dei parametri calcola l'utilizzo medio della CPU di ogni dispositivo ogni 5 minuti. Per ulteriori informazioni, consulta Aggrega i dati provenienti da proprietà e altre risorse (metriche).
-
-
Scegli Aggiungi nuova metrica per aggiungere una seconda proprietà della metrica.
-
Nella seconda riga sotto Metric definitions (Definizioni parametri), effettuare le seguenti operazioni:
-
In Nome, inserisci
Average Memory Usage. -
In Formula (Formula), immettere
avg(Memory Usage). Scegliere Memory Usage dall'elenco di completamento automatico quando viene visualizzato. -
In Time interval (Intervallo di tempo), immettere
5 minutes.
Questa proprietà dei parametri calcola l'utilizzo medio della memoria di ogni dispositivo ogni 5 minuti.
-
-
(Facoltativo) Aggiungere altri parametri che devono essere calcolati per ogni dispositivo. Alcune funzioni interessanti sono
minemax. Per ulteriori informazioni, consulta Usa espressioni di formula. Nella fase 4: Creazione di un modello di asset del parco dispositivi, crei una risorsa principale in grado di calcolare le metriche utilizzando i dati dell'intero parco dispositivi. -
Scegli Crea modello.
Fase 4: Creazione di un modello di asset del parco dispositivi
In questa procedura, crei un modello di asset AWS IoT SiteWise che simboleggi la tua collezione di dispositivi. All'interno di questo modello di asset, stabilisci una struttura che ti consenta di collegare numerose risorse di dispositivi a un'unica risorsa complessiva della flotta. Successivamente, delineate le metriche nel modello di asset della flotta per consolidare i dati di tutte le risorse dei dispositivi connessi. Questo approccio fornisce informazioni complete sulle prestazioni collettive dell'intera flotta.
Per creare un modello di asset che rappresenta un parco istanze dei dispositivi
-
Passare alla console AWS IoT SiteWise
. -
Nel riquadro di navigazione a sinistra scegliere Models (Modelli).
-
Scegli Create asset model.
-
In Dettagli del modello, inserisci un nome per il tuo modello. Ad esempio,
SiteWise Tutorial Device Fleet Model. -
In Hierarchy definitions (Definizioni gerarchie), effettuare le seguenti operazioni:
-
In Hierarchy name (Nome gerarchia), immettere
Device. -
Nel Hierarchy model (Modello gerarchia), scegliere il modello di asset dispositivo (
SiteWise Tutorial Device Model).
Una gerarchia definisce una relazione tra un modello di asset padre (parco istanze) e un modello di asset figlio (dispositivo). Gli asset padre possono accedere ai dati delle proprietà degli asset figlio. Quando si creano gli asset in un secondo momento, è necessario associare gli asset figlio agli asset padre in base a una definizione di gerarchia nel modello di asset padre. Per ulteriori informazioni, consulta Le gerarchie degli asset rappresentano le relazioni tra le apparecchiature.
-
-
In Metric definitions (Definizioni parametri), effettuare le seguenti operazioni:
-
In Nome, inserisci
Average CPU Usage. -
In Formula (Formula), immettere
avg(Device | Average CPU Usage). Quando viene visualizzato l'elenco di completamento automatico, selezionare Device per scegliere una gerarchia, quindi selezionare Average CPU Usage per scegliere il parametro dall'asset dispositivo creato in precedenza. -
In Time interval (Intervallo di tempo), immettere
5 minutes.
Questa proprietà del parametro calcola l'utilizzo medio della CPU di tutti gli asset dispositivo associati a un asset parco istanze tramite la gerarchia
Device. -
-
Scegli Aggiungi nuova metrica per aggiungere una seconda proprietà della metrica.
-
Nella seconda riga sotto Metric definitions (Definizioni parametri), effettuare le seguenti operazioni:
-
In Nome, inserisci
Average Memory Usage. -
In Formula (Formula), immettere
avg(Device | Average Memory Usage). Quando viene visualizzato l'elenco di completamento automatico, selezionare Device per scegliere una gerarchia, quindi selezionare Average Memory Usage per scegliere il parametro dall'asset dispositivo creato in precedenza. -
In Time interval (Intervallo di tempo), immettere
5 minutes.
Questa proprietà del parametro calcola l'utilizzo medio della memoria di tutti gli asset dispositivo associati a un asset parco istanze tramite la gerarchia
Device. -
-
(Facoltativo) Aggiungere altri parametri che devono essere calcolati per il parco istanze dei dispositivi.
-
Scegli Crea modello.
Passaggio 5: crea e configura una risorsa del dispositivo
In questa procedura, si genera una risorsa del dispositivo basata sul modello di risorsa del dispositivo. Quindi, definisci gli alias per ogni proprietà di misurazione. Un alias di proprietà è una stringa univoca che identifica una proprietà dell'asset. Successivamente, è possibile identificare una proprietà per il caricamento dei dati utilizzando gli alias anziché l'ID della risorsa e l'ID della proprietà. Per ulteriori informazioni, consulta Gestisci i flussi di dati per AWS IoT SiteWise.
Per creare un asset dispositivo e definire gli alias di proprietà
-
Passare alla console AWS IoT SiteWise
. -
Nel riquadro di navigazione a sinistra, scegli Asset.
-
Selezionare Create asset (Crea asset).
-
In Informazioni sul modello, scegli il modello di asset del tuo dispositivo,
SiteWise Tutorial Device Model. -
In Informazioni sull'asset, inserisci un nome per il tuo asset. Ad esempio,
SiteWise Tutorial Device 1. -
Selezionare Create asset (Crea asset).
-
Per il nuovo asset dispositivo, scegliere Edit (Modifica).
-
In Misurazioni:
-
In CPU Usage, immettere
/tutorial/device/SiteWiseTutorialDevice1/cpucome alias di proprietà. Includi il nome dell' AWS IoT oggetto nell'alias della proprietà, in modo da poter importare dati da tutti i tuoi dispositivi utilizzando un'unica AWS IoT regola. -
In Memory Usage, immettere
/tutorial/device/SiteWiseTutorialDevice1/memorycome alias di proprietà.
-
-
Selezionare Salva.
Se hai creato più AWS IoT elementi in precedenza, ripeti i passaggi da 3 a 10 per ogni dispositivo e incrementa di conseguenza il numero nel nome della risorsa e negli alias delle proprietà. Ad esempio, il nome del secondo asset dispositivo dovrebbe essere SiteWise Tutorial Device 2 e i relativi alias di proprietà dovrebbero essere /tutorial/device/SiteWiseTutorialDevice2/cpu e /tutorial/device/SiteWiseTutorialDevice2/memory.
Passaggio 6: crea e configura una risorsa per il parco dispositivi
In questa procedura, si crea un asset del parco dispositivi derivato dal modello di asset del parco dispositivi. Quindi, colleghi le risorse dei tuoi dispositivi individuali alle risorse della flotta. Questa associazione consente alle proprietà metriche dell'asset della flotta di compilare e analizzare i dati provenienti da più dispositivi. Questi dati forniscono una visione consolidata delle prestazioni collettive dell'intera flotta.
Per creare un asset parco istanze dei dispositivi e associare asset dispositivo
-
Passare alla console AWS IoT SiteWise
. -
Nel riquadro di navigazione a sinistra, scegli Asset.
-
Selezionare Create asset (Crea asset).
-
In Informazioni sul modello, scegli il modello di asset del tuo parco dispositivi,
SiteWise Tutorial Device Fleet Model. -
In Informazioni sull'asset, inserisci un nome per il tuo asset. Ad esempio,
SiteWise Tutorial Device Fleet 1. -
Selezionare Create asset (Crea asset).
-
Per il nuovo asset parco istanze dei dispositivi, scegliere Edit (Modifica).
-
In Risorse associate a questa risorsa, scegli Aggiungi risorsa associata ed esegui le seguenti operazioni:
-
In Hierarchy (Gerarchia), scegliere Device. Questa gerarchia identifica la relazione di gerarchia tra gli asset parco istanze dei dispositivi e gli asset dispositivi. Questa gerarchia è stata definita nel modello di asset parco istanze dei dispositivi in precedenza in questo tutorial.
-
In Asset, scegliere l'asset dispositivo SiteWise Tutorial Device 1.
-
-
(Facoltativo) Se hai creato più risorse del dispositivo in precedenza, ripeti i passaggi da 8 a 10 per ogni risorsa del dispositivo che hai creato.
-
Selezionare Salva.
A questo punto gli asset dispositivo vengono visualizzati organizzati in gerarchia.
Passaggio 7: crea una regola in AWS IoT Fondamentale per inviare dati alle risorse del dispositivo
In questa procedura, stabilisci una regola in AWS IoT Core. La regola è progettata per interpretare i messaggi di notifica provenienti dalle ombre dei dispositivi e trasmettere i dati alle risorse del dispositivo in AWS IoT SiteWise. Ogni volta che lo shadow del dispositivo si aggiorna, AWS IoT invia un messaggio MQTT. Puoi creare una regola che intraprende un'azione quando le shadow del dispositivo cambiano in base al messaggio MQTT. In questo caso, l'obiettivo è gestire il messaggio di aggiornamento, estrarre i valori delle proprietà e trasmetterli alle risorse del dispositivo in. AWS IoT SiteWise
Per creare una regola con un AWS IoT SiteWise operazione
-
Passare alla console AWS IoT
. -
Nel riquadro di navigazione a sinistra, scegli Instradamento dei messaggi, quindi scegli Regole.
-
Scegli Crea regola.
-
Inserisci un nome e una descrizione per la regola, quindi scegli Avanti.
-
Inserisci la seguente istruzione SQL e scegli Avanti.
SELECT * FROM '$aws/things/+/shadow/update/accepted' WHERE startsWith(topic(3), "SiteWiseTutorialDevice")Questa istruzione di query di regola funziona perché il servizio shadow del dispositivo pubblica gli aggiornamenti shadow in
$aws/things/. Per ulteriori informazioni sulle ombre dei dispositivi, consulta Device shadow service nella AWS IoT Developer Guide.thingName/shadow/update/acceptedNella clausola
WHERE, questa istruzione di query di regola utilizza la funzionetopic(3)per ottenere il nome dell'oggetto dal terzo segmento dell'argomento. Quindi, l'istruzione esclude i dispositivi con nomi che non corrispondono a quelli dei dispositivi del tutorial. Per ulteriori informazioni su AWS IoT SQL, consulta i riferimenti AWS IoT SQL nella AWS IoT Developer Guide. -
In Rule actions, scegli Invia i dati dei messaggi alle proprietà delle risorse in AWS IoT SiteWise ed esegui le seguenti operazioni:
-
Scegliere By property alias (Per alias di proprietà).
-
In Property alias (Alias proprietà), immettere
/tutorial/device/${topic(3)}/cpu.La
${...}sintassi è un modello sostitutivo. AWS IoT valuta il contenuto all'interno delle parentesi. Questo modello di sostituzione esegue il pull del nome dell'oggetto dall'argomento per creare un alias univoco per ogni oggetto. Per ulteriori informazioni, consulta Modelli sostitutivi nella Guida per gli sviluppatori. AWS IoTNota
Poiché un'espressione in un modello di sostituzione viene valutata separatamente dall'istruzione
SELECT, non puoi utilizzare un modello di sostituzione per fare riferimento a un alias creato utilizzando una clausolaAS. È possibile fare riferimento solo alle informazioni presenti nel payload originale, oltre alle funzioni e agli operatori supportati. -
In ID di immissione - opzionale , inserisci.
${concat(topic(3), "-cpu-", floor(state.reported.timestamp))}Gli ID voce identificano in modo univoco ogni tentativo di immissione del valore. Se una voce restituisce un errore, è possibile trovare l'ID voce nell'output dell'errore per risolvere il problema. Il modello di sostituzione in questo ID voce combina il nome dell'oggetto e il timestamp restituito del dispositivo. Ad esempio, l'ID voce risultante potrebbe essere simile a
SiteWiseTutorialDevice1-cpu-1579808494. -
In Time in seconds (Ora in secondi), immettere
${floor(state.reported.timestamp)}.Questo modello di sostituzione calcola l'ora in secondi dal timestamp restituito del dispositivo. In questo tutorial, i dispositivi restituiscono il timestamp in secondi nel formato di ora epoch Unix come numero a virgola mobile.
-
In Offset in nanos - opzionale , inserisci.
${floor((state.reported.timestamp % 1) * 1E9)}Questo modello di sostituzione calcola l'offset in nanosecondi dall'ora in secondi convertendo la parte decimale del timestamp restituito del dispositivo.
Nota
AWS IoT SiteWise richiede che i tuoi dati abbiano un timestamp corrente in Unix epoch time. Se i dispositivi non restituiscono l'ora in modo accurato, è possibile che l'ora corrente restituita dal motore di regole AWS IoT sia timestamp(). Questa funzione segnala l'ora in millisecondi, quindi è necessario aggiornare i parametri dell'ora dell'azione di regola ai seguenti valori:
-
In Time in seconds (Ora in secondi), immettere
${floor(timestamp() / 1E3)}. -
In Offset in nanos (Offset in nanosecondi), immettere
${(timestamp() % 1E3) * 1E6}.
-
-
In Data type (Tipo di dati), scegliere Double (Doppio).
Questo tipo di dati deve corrispondere al tipo di dati della proprietà dell'asset definita nel modello di asset.
-
In Valore, immetti
${state.reported.cpu}. Nei modelli di sostituzione, è possibile utilizzare l'operatore.per recuperare un valore all'interno di una struttura JSON. -
Scegliere Add entry (Aggiungi voce) per aggiungere una nuova voce per la proprietà di utilizzo della memoria e completare nuovamente i passaggi seguenti per questa proprietà:
-
Scegliere By property alias (Per alias di proprietà).
-
In Property alias (Alias proprietà), immettere
/tutorial/device/${topic(3)}/memory. -
In Entry ID - opzionale, inserisci.
${concat(topic(3), "-memory-", floor(state.reported.timestamp))} -
In Time in seconds (Ora in secondi), immettere
${floor(state.reported.timestamp)}. -
In Offset in nanos - opzionale , inserisci.
${floor((state.reported.timestamp % 1) * 1E9)} -
In Data type (Tipo di dati), scegliere Double (Doppio).
-
In Valore, immetti
${state.reported.memory}.
-
-
In Ruolo IAM, scegli Crea nuovo ruolo per creare un ruolo IAM per questa azione della regola. Questo ruolo consente di AWS IoT inviare i dati alle proprietà dell'asset del parco dispositivi e alla relativa gerarchia degli asset.
-
Inserisci un nome per il ruolo e scegli Crea.
-
-
(Facoltativo) Configurare un'azione di errore che è possibile utilizzare per risolvere i problemi della regola. Per ulteriori informazioni, consulta Risolvi i problemi relativi a una regola (AWS IoT SiteWise).
-
Scegli Avanti.
-
Rivedi le impostazioni e scegli Crea per creare la regola.
Passaggio 8: esegui lo script del client del dispositivo
Per questo tutorial, non stai utilizzando un dispositivo effettivo per segnalare i dati. Invece, esegui uno script per aggiornare l'ombra del AWS IoT dispositivo con l'utilizzo della CPU e della memoria per imitare i dati reali dei sensori. Per eseguire lo script, è necessario innanzitutto installare Python i pacchetti richiesti. In questa procedura, si installano i Python pacchetti richiesti e quindi si esegue lo script del client del dispositivo.
Per configurare ed eseguire lo script client del dispositivo
-
Passare alla console AWS IoT
. -
Nella parte inferiore del riquadro di spostamento a sinistra scegliere Settings (Impostazioni).
-
Salvare l'endpoint personalizzato da utilizzare con lo script client del dispositivo. Usare questo endpoint per interagire con le shadow dell'oggetto. Questo endpoint è univoco per l'account nella regione corrente.
L'endpoint personalizzato è simile all'esempio seguente.
identifier.iot.region.amazonaws.com -
Aprire una riga di comando ed eseguire il comando seguente per passare alla directory creata in precedenza nel tutorial.
cd iot-sitewise-rule-tutorial -
Eseguire il comando seguente per installare SDK per dispositivi AWS IoT per Python.
pip3 install AWSIoTPythonSDKPer ulteriori informazioni, consulta SDK per dispositivi AWS IoT per Python la Guida per AWS IoT gli sviluppatori
-
Eseguire il seguente comando per installare psutil, un processo multipiattaforma e una libreria di utilità di sistema.
pip3 install psutilPer ulteriori informazioni, consultare psutil
nell'indice dei pacchetti Python. -
Creare un file chiamato
thing_performance.pynella directoryiot-sitewise-rule-tutoriale quindi copiare il seguente codice Python nel file.import AWSIoTPythonSDK.MQTTLib as AWSIoTPyMQTT import json import psutil import argparse import logging import time # Configures the argument parser for this program. def configureParser(): parser = argparse.ArgumentParser() parser.add_argument( "-e", "--endpoint", action="store", required=True, dest="host", help="Your AWS IoT custom endpoint", ) parser.add_argument( "-r", "--rootCA", action="store", required=True, dest="rootCAPath", help="Root CA file path", ) parser.add_argument( "-c", "--cert", action="store", required=True, dest="certificatePath", help="Certificate file path", ) parser.add_argument( "-k", "--key", action="store", required=True, dest="privateKeyPath", help="Private key file path", ) parser.add_argument( "-p", "--port", action="store", dest="port", type=int, default=8883, help="Port number override", ) parser.add_argument( "-n", "--thingName", action="store", required=True, dest="thingName", help="Targeted thing name", ) parser.add_argument( "-d", "--requestDelay", action="store", dest="requestDelay", type=float, default=1, help="Time between requests (in seconds)", ) parser.add_argument( "-v", "--enableLogging", action="store_true", dest="enableLogging", help="Enable logging for the AWS IoT Device SDK for Python", ) return parser # An MQTT shadow client that uploads device performance data to AWS IoT at a regular interval. class PerformanceShadowClient: def __init__( self, thingName, host, port, rootCAPath, privateKeyPath, certificatePath, requestDelay, ): self.thingName = thingName self.host = host self.port = port self.rootCAPath = rootCAPath self.privateKeyPath = privateKeyPath self.certificatePath = certificatePath self.requestDelay = requestDelay # Updates this thing's shadow with system performance data at a regular interval. def run(self): print("Connecting MQTT client for {}...".format(self.thingName)) mqttClient = self.configureMQTTClient() mqttClient.connect() print("MQTT client for {} connected".format(self.thingName)) deviceShadowHandler = mqttClient.createShadowHandlerWithName( self.thingName, True ) print("Running performance shadow client for {}...\n".format(self.thingName)) while True: performance = self.readPerformance() print("[{}]".format(self.thingName)) print("CPU:\t{}%".format(performance["cpu"])) print("Memory:\t{}%\n".format(performance["memory"])) payload = {"state": {"reported": performance}} deviceShadowHandler.shadowUpdate( json.dumps(payload), self.shadowUpdateCallback, 5 ) time.sleep(args.requestDelay) # Configures the MQTT shadow client for this thing. def configureMQTTClient(self): mqttClient = AWSIoTPyMQTT.AWSIoTMQTTShadowClient(self.thingName) mqttClient.configureEndpoint(self.host, self.port) mqttClient.configureCredentials( self.rootCAPath, self.privateKeyPath, self.certificatePath ) mqttClient.configureAutoReconnectBackoffTime(1, 32, 20) mqttClient.configureConnectDisconnectTimeout(10) mqttClient.configureMQTTOperationTimeout(5) return mqttClient # Returns the local device's CPU usage, memory usage, and timestamp. def readPerformance(self): cpu = psutil.cpu_percent() memory = psutil.virtual_memory().percent timestamp = time.time() return {"cpu": cpu, "memory": memory, "timestamp": timestamp} # Prints the result of a shadow update call. def shadowUpdateCallback(self, payload, responseStatus, token): print("[{}]".format(self.thingName)) print("Update request {} {}\n".format(token, responseStatus)) # Configures debug logging for the AWS IoT Device SDK for Python. def configureLogging(): logger = logging.getLogger("AWSIoTPythonSDK.core") logger.setLevel(logging.DEBUG) streamHandler = logging.StreamHandler() formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s" ) streamHandler.setFormatter(formatter) logger.addHandler(streamHandler) # Runs the performance shadow client with user arguments. if __name__ == "__main__": parser = configureParser() args = parser.parse_args() if args.enableLogging: configureLogging() thingClient = PerformanceShadowClient( args.thingName, args.host, args.port, args.rootCAPath, args.privateKeyPath, args.certificatePath, args.requestDelay, ) thingClient.run() -
Esegui
thing_performance.pydalla riga di comando con i parametri seguenti:-
-n,--thingName— Il nome della tua cosa, ad esempioSiteWiseTutorialDevice1. -
-e,--endpoint— L' AWS IoT endpoint personalizzato che hai salvato in precedenza in questa procedura. -
-r,--rootCA— Il percorso del certificato CA AWS IoT principale. -
-c,--cert— Il percorso del certificato AWS IoT Thing. -
-k,--key— Il percorso della chiave privata del certificato AWS IoT thing. -
-d,--requestDelay— (Facoltativo) Il tempo di attesa in secondi tra ogni aggiornamento shadow del dispositivo. Il valore predefinito è 1 secondo. -
-v,--enableLogging— (Facoltativo) Se questo parametro è presente, lo script stampa i messaggi di debug da. SDK per dispositivi AWS IoT per Python
Il comando è simile al seguente esempio:
python3 thing_performance.py \ --thingName SiteWiseTutorialDevice1 \ --endpointidentifier.iot.region.amazonaws.com \ --rootCA AmazonRootCA1.pem \ --cert device1/thing-id-certificate.pem.crt \ --key device1/thing-id-private.pem.keySe stai eseguendo lo script per altre AWS IoT cose, aggiorna di conseguenza il nome dell'oggetto e la directory dei certificati.
-
-
Provare ad aprire e chiudere i programmi sul dispositivo per vedere come cambiano gli utilizzi della CPU e della memoria. Lo script stampa ogni lettura dell'utilizzo della CPU e della memoria. Se lo script carica i dati nel servizio shadow del dispositivo correttamente, l'output dello script è simile all'esempio seguente.
[SiteWiseTutorialDevice1] CPU: 24.6% Memory: 85.2% [SiteWiseTutorialDevice1] Update request e6686e44-fca0-44db-aa48-3ca81726f3e3 accepted -
Attenersi alla seguente procedura per verificare che lo script aggiorni la shadow del dispositivo:
-
Passare alla console AWS IoT
. -
Nel riquadro di navigazione a sinistra, scegli Tutti i dispositivi, quindi scegli Cose.
-
Scegli la tua cosa, SiteWiseTutorialDevice.
-
Scegliete la scheda Device Shadows, scegliete Classic Shadows e verificate che lo stato Shadow sia simile all'esempio seguente.
{ "reported": { "cpu": 24.6, "memory": 85.2, "timestamp": 1579567542.2835066 } }Se lo stato ombra del tuo oggetto è vuoto o non assomiglia all'esempio precedente, controlla che lo script sia in esecuzione e connesso AWS IoT correttamente. Se lo script continua a scadere durante la connessione a AWS IoT, controlla che la tua policy sugli oggetti sia configurata in base a questo tutorial.
-
-
Attenersi alla seguente procedura per verificare che l'azione di regola invii dati ad AWS IoT SiteWise:
-
Passare alla console AWS IoT SiteWise
. -
Nel riquadro di navigazione a sinistra, scegli Asset.
-
Scegli la freccia accanto all'asset del tuo parco dispositivi (SiteWise Tutorial Device Fleet 1) per espandere la gerarchia degli asset, quindi scegli l'asset del tuo dispositivo (SiteWise Tutorial Device1).
-
Scegliere Measurements (Misurazioni).
-
Verificare che le celle Latest value (Valore più recente) abbiano i valori per le proprietà CPU Usage e Memory Usage.
-
Se le proprietà CPU Usage e Memory Usage non hanno i valori più recenti, aggiornare la pagina. Se i valori non vengono visualizzati dopo pochi minuti, consultare Risolvi i problemi relativi a una regola (AWS IoT SiteWise).
-
Il tutorial è stato completato. Per esplorare le visualizzazioni dei dati in tempo reale, è possibile configurare un portale in AWS IoT SiteWise Monitor. Per ulteriori informazioni, consulta Monitora i dati con AWS IoT SiteWise Monitor. In caso contrario, è possibile premere CTRL+C nel prompt dei comandi per arrestare lo script client del dispositivo. È improbabile che il programma Python invii un numero di messaggi tale da comportare un addebito, ma è consigliabile arrestare il programma al termine delle operazioni.
Passaggio 9: ripulisci le risorse dopo il tutorial
Nota
Le risorse create in questo tutorial sono necessarie per il tutorial Integrazione dei dati in SiteWise Edge. Non ripulire le risorse in questo passaggio se intendi completarlo.
Dopo aver completato il tutorial sull'acquisizione di dati dagli AWS IoT oggetti, pulisci le risorse per evitare di incorrere in costi aggiuntivi.
Per eliminare le risorse gerarchiche in AWS IoT SiteWise
-
Accedi alla console AWS IoT SiteWise
-
Nel riquadro di navigazione a sinistra, scegli Asset.
-
Quando elimini le risorse in AWS IoT SiteWise, devi prima dissociarle.
Completare la procedura seguente per dissociare gli asset del dispositivo dall'asset parco istanze dei dispositivi:
-
Scegli la risorsa del tuo parco dispositivi (SiteWise Tutorial Device Fleet 1).
-
Scegli Modifica.
-
In Assets associated to this asset (Asset associati a questo asset), scegliere Disassociate (Dissocia) per ogni asset dispositivo associato a questo asset parco istanze dei dispositivi.
-
Selezionare Salva.
A questo punto gli asset dispositivo non sono più organizzati in gerarchia.
-
-
Scegliere l'asset dispositivo (SiteWise Tutorial Device 1).
-
Scegliere Elimina.
-
Nella finestra di dialogo di conferma immettere
Deletee quindi scegliere Delete (Elimina). -
Ripeti i passaggi da 4 a 6 per ogni risorsa del dispositivo e per la risorsa del parco dispositivi (SiteWise Tutorial Device Fleet 1).
Per eliminare i modelli gerarchici di asset in AWS IoT SiteWise
-
Passare alla console AWS IoT SiteWise
. -
Se non è già stato fatto, eliminare gli asset del dispositivo e del parco istanze dei dispositivi. Per ulteriori informazioni, consultare la procedura precedente. Non è possibile eliminare un modello se sono presenti asset creati da quel modello.
-
Nel riquadro di navigazione a sinistra scegliere Models (Modelli).
-
Scegliere l'asset parco istanze dei dispositivi (SiteWise Tutorial Device Fleet Model).
Quando si eliminano i modelli di asset gerarchici, iniziate eliminando prima il modello di asset principale.
-
Scegliere Elimina.
-
Nella finestra di dialogo di conferma immettere
Deletee quindi scegliere Delete (Elimina). -
Ripetere i passaggi da 4 a 6 per il modello di asset del dispositivo (SiteWise Tutorial Device Model).
Per disattivare o eliminare una regola in AWS IoT Core
-
Passare alla console AWS IoT
. -
Nel riquadro di navigazione a sinistra, scegli Instradamento dei messaggi, quindi scegli Regole.
-
Seleziona la tua regola e scegli Elimina.
-
Nella finestra di dialogo di conferma, inserisci il nome della regola e scegli Elimina.