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à.
AWS IoT Demo della libreria Jobs
Importante
Questa demo è ospitata nel repository Amazon-FreeRTOS che è obsoleto. Ti consigliamo di iniziare da qui quando crei un nuovo progetto. Se disponi già di un progetto FreeRTOS esistente basato sull'ormai obsoleto repository Amazon-FreerTOS, consulta il. Guida alla migrazione del repository Github di Amazon-FreeRTOS
Introduzione
La demo della libreria AWS IoT Jobs mostra come connettersi al servizio AWS IoT Jobs tramite una connessione MQTT, recuperare un lavoro da ed elaborarlo su un dispositivo. AWS IoT Il progetto demo di AWS IoT Jobs utilizza la porta FreerTOS per Windows
Nota
Per configurare ed eseguire le demo di FreerTOS, segui i passaggi indicati. Inizia con FreerTOS
Organizzazione del codice sorgente
Il codice demo si trova nel jobs_demo.c file e può essere trovato sul GitHub directory.freertos/demos/jobs_for_aws/
Configura la connessione del broker AWS IoT MQTT
In questa demo, si utilizza una connessione MQTT al broker AWS IoT MQTT. Questa connessione è configurata nello stesso modo di. Demo di autenticazione reciproca CoreMQTT
Funzionalità
La demo mostra il flusso di lavoro utilizzato per ricevere lavori da un dispositivo AWS IoT ed elaborarli su un dispositivo. La demo è interattiva e richiede la creazione di lavori utilizzando la AWS IoT console o AWS Command Line Interface (AWS CLI). Per ulteriori informazioni sulla creazione di un lavoro, vedere create-job nel AWS CLI Command Reference. La demo richiede che nel documento di lavoro sia impostata una action chiave print per stampare un messaggio sulla console.
Vedi il seguente formato per questo documento di lavoro.
{ "action": "print", "message": "ADD_MESSAGE_HERE" }
È possibile utilizzare il AWS CLI per creare un lavoro come nel seguente comando di esempio.
aws iot create-job \ --job-id t12 \ --targets arn:aws:iot:region:123456789012:thing/device1 \ --document '{"action":"print","message":"hello world!"}'
La demo utilizza anche un documento di lavoro con la action chiave impostata publish per ripubblicare il messaggio su un argomento. Vedi il seguente formato per questo documento di lavoro.
{ "action": "publish", "message": "ADD_MESSAGE_HERE", "topic": "topic/name/here" }
La demo si ripete finché non riceve un documento di lavoro con la action chiave impostata exit per uscire dalla demo. Il formato del documento di lavoro è il seguente.
{ "action: "exit" }
Punto di accesso alla demo di Jobs
Il codice sorgente per la funzione del punto di ingresso della demo di Jobs è disponibile su GitHub
-
Stabilire una connessione MQTT utilizzando le funzioni di supporto in.
mqtt_demo_helpers.c -
Abbonatevi all'argomento MQTT relativo all'
NextJobExecutionChangedAPI, utilizzando le funzioni di supporto in.mqtt_demo_helpers.cLa stringa dell'argomento è stata assemblata in precedenza, utilizzando le macro definite dalla libreria Jobs. AWS IoT -
Pubblica nell'argomento MQTT relativo all'
StartNextPendingJobExecutionAPI, utilizzando le funzioni di supporto in.mqtt_demo_helpers.cLa stringa dell'argomento è stata assemblata in precedenza, utilizzando le macro definite dalla libreria Jobs. AWS IoT -
Chiama ripetutamente
MQTT_ProcessLoopper ricevere messaggi in arrivo che vengono consegnatiprvEventCallbackper l'elaborazione. -
Dopo che la demo ha ricevuto l'azione di uscita, annullate l'iscrizione all'argomento MQTT e disconnettetevi utilizzando le funzioni di supporto presenti nel file.
mqtt_demo_helpers.c
Richiamata per i messaggi MQTT ricevuti
La prvEventCallbackJobs_MatchTopic dalla libreria AWS IoT Jobs per classificare il messaggio MQTT in arrivo. Se il tipo di messaggio corrisponde a un nuovo lavoro, prvNextJobHandler() viene chiamato.
La funzione prvNextJobHandlerprvSendUpdateForJob
Invia un aggiornamento per un processo in esecuzione
La function prvSendUpdateForJob()Jobs_Update() dalla libreria Jobs per compilare la stringa dell'argomento utilizzata nell'operazione di pubblicazione MQTT che segue immediatamente.