In questa pagina viene spiegato in che modo i gateway possono inviare dati e inoltrare messaggi di configurazione per i dispositivi associati.
L'app demo dell'hub rimane in ascolto dei messaggi di configurazione e invia informazioni sullo stato per conto di un dispositivo per mostrare come funzionano i gateway end-to-end. Questa app può utilizzare le funzioni locali o di esempio del gestore esistente per gestire i dispositivi e utilizza l'esempio di hub per gestire un dispositivo associato e connettersi al bridge di protocollo MQTT per conto di quel dispositivo.
Quando viene eseguita la demo, noterai un output simile al seguente.
Running demo
Creating registry: test-registry-1541200612
Created registry
Creating gateway: test-device-RS256
Created gateway {u'gatewayConfig': {u'gatewayType': u'GATEWAY', u'gatewayAuthMethod': u'ASSOCIATION_ONLY'} ... }
Creating device to bind: test-device-noauthbind
Created Device {u'numId': u'2552202179450953', u'config': {u'version': u'1', u'cloudUpdateTime': u'2018-11-02T23:16:58.198419Z'}, u'id': u'test-device-noauthbind', u'gatewayConfig': {u'gatewayType': u'NON_GATEWAY', u'gatewayAuthMethod': u'ASSOCIATION_ONLY'} ...}
Binding device
Device Bound!
Listening for messages for 30 seconds
Try setting configuration in:
https://console.cloud.google.com/iot/locations/us-central1/registries/test-registry-1541200612?project=noun-verb-123
Press enter to continue
Creating JWT using RS256 from private key file resources/rsa_private.pem
Attaching: /devices/test-device-noauthbind/attach
Waiting for device to attach.
('on_connect', 'Connection Accepted.')
on_publish
on_subscribe
Received message 'device-config' on topic '/devices/test-device-noauthbind/config' with Qos 1
on_subscribe
Received message 'gateway-config' on topic '/devices/test-device-RS256/config' with Qos 1
Detaching: /devices/test-device-noauthbind/detach
Finished.
Publishing messages demo
Publishing: 15 messages
Creating JWT using RS256 from private key file resources/rsa_private.pem
Attaching: /devices/test-device-noauthbind/attach
Waiting for device to attach.
Starting HUB at: 1541200710.73
('on_connect', 'Connection Accepted.')
on_publish
Publishing message 1/15: 'test-registry-1541200612/test-device-RS256-test-device-noauthbind-payload-1' to /devices/test-device-noauthbind/state
...
on_publish
Publishing message 15/15: 'test-registry-1541200612/test-device-RS256-test-device-noauthbind-payload-15' to /devices/test-device-noauthbind/state
Detaching: /devices/test-device-noauthbind/detach
on_publish
Finished.
You can read the state messages for your device at this URL:
https://console.cloud.google.com/iot/locations/us-central1/registries/test-registry-1541200612/devices/test-device-noauthbind?project=noun-verb-1234
Device unbound: {}
Delete device
Delete device
Delete registry
Il codice seguente mostra la fonte completa dello script della demo:
Python
Lo script della demo esegue le seguenti operazioni:
- Creare un registro dimostrativo
- Creare un gateway
- Crea un dispositivo da associare
- Associare il dispositivo al gateway
- Ascoltare i messaggi di configurazione
- Inviare dati sullo stato
- Rimuovi le risorse utilizzate nella demo
Crea un registro dimostrativo
La demo crea prima un registro temporaneo dei dispositivi che verrà ripulito al termine della demo. Questo registro conterrà il gateway, che è un tipo speciale di dispositivo, nonché un dispositivo che verrà gestito dal gateway. A questo scopo, viene utilizzato il codice di creazione del registro.
Python
Il codice seguente mostra come l'esempio del gestore crea un registro dispositivi.
Python
Dopo aver creato il registro, puoi aggiungere i dispositivi.
Crea un gateway
Il primo dispositivo aggiunto al registro è un tipo speciale di dispositivo chiamato gateway. A questo dispositivo può essere associata una propria configurazione e possono essere associati anche altri dispositivi, in modo che possa comportarsi come un proxy. Una volta creato, il dispositivo gateway può connettersi al bridge protocollo Cloud IoT Core utilizzando le credenziali associate.
Python
Il codice seguente mostra come l'esempio di hub crea il dispositivo gateway speciale.
Python
Crea un dispositivo da associare
Prima di poter associare un dispositivo a un gateway, è necessario creare un dispositivo all'interno del registry con il gateway. La demo utilizza l'esempio di hub per creare un dispositivo.
Python
Il codice seguente mostra come l'esempio di hub crea il dispositivo per l'associazione.
Python
Associa il dispositivo al gateway
Dopo aver configurato il dispositivo e il gateway nel registry dimostrativo, puoi associare il dispositivo al gateway. L'associazione del dispositivo al gateway consente al gateway di collegare e scollegare il dispositivo tramite connessione al bridge di protocollo Cloud IoT Core. L'app demo utilizza l'esempio di hub per farlo come segue.
Python
Il codice seguente mostra in che modo l'hub associa il dispositivo al gateway.
Python
Ascolto di messaggi di configurazione
Una volta che il dispositivo è associato al gateway, può connettersi al bridge di protocollo Cloud IoT Core, collegare il dispositivo e quindi ricevere i messaggi di configurazione di quel dispositivo. La demo utilizza una funzione di supporto nell'esempio di hub per farlo.
Python
Nell'esempio di hub, il client MQTT di Paho viene utilizzato per connettersi al bridge di protocollo come segue.
Python
Tieni presente che l'esempio viene messo in pausa prima di iniziare questo passaggio per poter accedere alla Console per gli sviluppatori prima che inizi ad ascoltare e impostare i dati di configurazione del gateway o del dispositivo associato, nonché verificare che sia in corso la ricezione dell'ultima configurazione.
Invia dati sullo stato
Dopo aver dimostrato come ricevere i messaggi di configurazione per conto di un gateway e dei relativi dispositivi associati, l'app demo invia dati di stato per conto del dispositivo associato. Per farlo, la demo utilizza la funzione helper dell'app di esempio dell'hub.
Python
Python
La demo verrà messa in pausa dopo la trasmissione dei dati di stato per conto del dispositivo associato, in modo da poter passare alla console per gli sviluppatori prima che il registry e i dispositivi dimostrativi vengano rimossi nel passaggio successivo.
Rimuovi le risorse utilizzate nella demo
Al termine della demo, vengono liberati i dispositivi e il registro che erano stati allocati all'inizio.
Python
Il dispositivo non è associato al gateway prima che venga eliminato.
Python
Una funzione di supporto dell'esempio del gestore viene utilizzata per eliminare sia il dispositivo associato sia il gateway.
Python
Infine, viene utilizzata una funzione helper dell'esempio del gestore per eliminare il registro.
Python
A questo punto, hai notato che la funzionalità del gateway funziona in modo end-to-end,