1. Prima di iniziare
Le integrazioni per la smart home consentono all'Assistente Google di controllare i dispositivi connessi negli utenti case. Per creare un'azione per la smart home, devi fornire un endpoint webhook cloud in grado di gestire gli intent della smart home. Ad esempio, se un utente dice "Hey Google, accendi le luci". l'assistente invia il comando al tuo fulfillment cloud per aggiornare lo stato del dispositivo.
L'SDK Local Home migliora l'integrazione della smart home aggiungendo un percorso locale per indirizzare gli intent della smart home direttamente a un dispositivo Google Home, il che aumenta l'affidabilità e riduce la latenza nell'elaborazione degli utenti tramite comandi SQL. Ti consente di scrivere e implementare un'app di distribuzione locale in TypeScript o JavaScript che identifichi i dispositivi ed esegue i comandi su qualsiasi smart speaker Google Home o smart display Google Nest. In questo modo, la tua app comunica direttamente con gli utenti gli smart device esistenti sulla rete LAN (Local Area Network) utilizzando protocolli standard esistenti per l'esecuzione dei comandi.
Prerequisiti
- Guida per gli sviluppatori Creare un'azione per la smart home
- Codelab Lavatrice smart home
- Guida per gli sviluppatori relativa all'evasione degli ordini locali
Cosa creerai
In questo codelab, eseguirai il deployment di un'integrazione per la smart home creata in precedenza con Firebase, quindi applicherai una configurazione di scansione nella console di Actions e creerai un'app locale utilizzando TypeScript per inviare comandi scritti in Node.js a un dispositivo lavaggio virtuale.
Cosa imparerai a fare
- Come abilitare e configurare il completamento locale nella console di Actions.
- Come utilizzare l'SDK Local Home per scrivere un'app di distribuzione locale.
- Come eseguire il debug dell'app di distribuzione locale caricata sullo speaker Google Home o sullo smart display Google Nest.
Che cosa ti serve
- L'ultima versione di Google Chrome
- Un dispositivo iOS o Android con l'app Google Home.
- Uno smart speaker Google Home o uno smart display Google Nest.
- Node.js 10.16 o versioni successive
- Un Account Google
- Un account di fatturazione Google Cloud.
2. Per iniziare
Attivare Gestione attività
Per poter usare l'Assistente Google, devi condividere con Google determinati dati relativi alle attività. L'Assistente Google ha bisogno di questi dati per funzionare correttamente. Tuttavia, il requisito di condivisione dei dati non è specifico dell'SDK. Per condividere questi dati, crea un Account Google se non ne hai già uno. Puoi utilizzare qualsiasi Account Google, non è necessario che sia il tuo account sviluppatore.
Apri la pagina Gestione attività relativa all'Account Google che vuoi usare con l'assistente.
Assicurati che le seguenti opzioni di attivazione/disattivazione siano attive:
- Web e Attività nelle app: assicurati inoltre di selezionare la casella di controllo Includi la cronologia di Chrome e le attività svolte su siti, app e dispositivi che usano i servizi Google.
- Informazioni del dispositivo
- Voce e Attività audio
Creare un progetto Actions
- Vai alla Console per gli sviluppatori di Actions on Google.
- Fai clic su Nuovo progetto, inserisci un nome per il progetto e fai clic su CREA PROGETTO.
Seleziona l'app Smart home
Nella schermata Panoramica della console Actions, seleziona Smart home.
Scegli la scheda dell'esperienza Smart home. Si aprirà la console di progetto.
Installa l'interfaccia a riga di comando di Firebase
L'interfaccia a riga di comando di Firebase (CLI) ti consente di pubblicare le app web localmente ed eseguirne il deployment su Firebase Hosting.
Per installare l'interfaccia a riga di comando, esegui questo comando npm dal terminale:
npm install -g firebase-tools
Per verificare che l'interfaccia a riga di comando sia stata installata correttamente, esegui:
firebase --version
Autorizza l'interfaccia a riga di comando di Firebase con il tuo Account Google eseguendo:
firebase login
Abilita l'API HomeGraph
L'API HomeGraph consente di archiviare ed eseguire query sui dispositivi e sul relativo stato all'interno dell'Home Graph di un utente. Per utilizzare questa API, devi prima aprire la console Google Cloud e abilitare l'API HomeGraph.
Nella console Google Cloud, assicurati di selezionare il progetto che corrisponde alle tue azioni <project-id>.
Quindi, nella schermata della libreria API per l'API HomeGraph, fai clic su Abilita.
3. Esegui l'app iniziale
Ora che hai configurato l'ambiente di sviluppo, puoi eseguire il deployment del progetto iniziale per verificare che tutto sia configurato correttamente.
Ottieni il codice sorgente
Fai clic sul link seguente per scaricare l'esempio per questo codelab sul tuo computer di sviluppo:
...oppure clonare il repository GitHub dalla riga di comando:
git clone https://github.com/google-home/smarthome-local.git
Informazioni sul progetto
Il progetto iniziale contiene le seguenti sottodirectory:
public
: UI web frontend per controllare e monitorare la lavatrice smartfunctions
: Cloud Functions che implementa il completamento del cloud per l'azione per la smart homelocal
: progetto dell'app di distribuzione locale di scheletro con gestori di intent simulati inindex.ts
Il fulfillment Cloud fornito include le seguenti funzioni in index.js
:
fakeauth
: endpoint di autorizzazione per il collegamento dell'accountfaketoken
: endpoint dei token per il collegamento dell'accountsmarthome
: endpoint di evasione degli intent della smart homereportstate
: richiama l'API HomeGraph alle modifiche dello stato del dispositivoupdateDevice
: endpoint utilizzato dal dispositivo virtuale per attivare lo stato del report.
Connettersi a Firebase
Vai alla directory app-start
, quindi configura l'interfaccia a riga di comando di Firebase con il progetto Actions:
cd app-start firebase use <project-id>
Configura un progetto Firebase
Inizializza un progetto Firebase.
firebase init
Seleziona le funzionalità dell'interfaccia a riga di comando, Realtime Database, Funzioni e la funzionalità Hosting che include Firebase Hosting.
? Which Firebase CLI features do you want to set up for this directory? Press Space to select features, then Enter to confirm your choices. ❯◉ Realtime Database: Configure a security rules file for Realtime Database and (optionally) provision default instance ◯ Firestore: Configure security rules and indexes files for Firestore ◉ Functions: Configure a Cloud Functions directory and its files ◉ Hosting: Configure files for Firebase Hosting and (optionally) set up GitHub Action deploys ◯ Hosting: Set up GitHub Action deploys ◯ Storage: Configure a security rules file for Cloud Storage ◯ Emulators: Set up local emulators for Firebase products ◯ Remote Config: Configure a template file for Remote Config ◯ Extensions: Set up an empty Extensions manifest
Verranno inizializzate le API e le funzionalità necessarie per il progetto.
Quando richiesto, inizializza Realtime Database. Puoi utilizzare la località predefinita per l'istanza di database.
? It seems like you haven't initialized Realtime Database in your project yet. Do you want to set it up? Yes ? Please choose the location for your default Realtime Database instance: us-central1
Poiché utilizzi il codice del progetto iniziale, scegli il file predefinito per le regole di sicurezza e assicurati di non sovrascrivere il file delle regole del database esistente.
? File database.rules.json already exists. Do you want to overwrite it with the Realtime Database Security Rules for <project-ID>-default-rtdb from the Firebase Console? No
Se stai reinizializzando il progetto, seleziona Sovrascrivi quando ti viene chiesto se vuoi inizializzare o sovrascrivere un codebase.
? Would you like to initialize a new codebase, or overwrite an existing one? Overwrite
Quando configuri le funzioni, devi utilizzare i file predefiniti e assicurarti di non sovrascrivere i file index.js e package.json esistenti nell'esempio del progetto.
? What language would you like to use to write Cloud Functions? JavaScript ? Do you want to use ESLint to catch probable bugs and enforce style? No ? File functions/package.json already exists. Overwrite? No ? File functions/index.js already exists. Overwrite? No
Se stai reinizializzando il progetto, seleziona No quando ti viene chiesto se vuoi inizializzare o sovrascrivere features/.gitignore.
? File functions/.gitignore already exists. Overwrite? No
? Do you want to install dependencies with npm now? Yes
Infine, configura la configurazione di Hosting in modo che utilizzi la directory public
nel codice del progetto e il file index.html esistente. Seleziona No quando ti viene chiesto di utilizzare ESLint.
? What do you want to use as your public directory? public ? Configure as a single-page app (rewrite all urls to /index.html)? Yes ? Set up automatic builds and deploys with GitHub? No ? File public/index.html already exists. Overwrite? No
Se ESLint è stato abilitato per errore, esistono due metodi per disabilitarlo:
- Utilizzando la GUI, vai alla cartella
../functions
del progetto, seleziona il file nascosto.eslintrc.js
ed eliminalo. Non confonderlo con il nome simile.eslintrc.json
. - Tramite la riga di comando:
cd functions rm .eslintrc.js
Per assicurarti che la configurazione di Firebase sia corretta e completa, copia il file firebase.json
dalla directory washer-done
alla directory washer-start
, sovrascrivendo quello presente in washer-start
.
Nella directory washer-start
:
cp -vp ../washer-done/firebase.json .
Eseguire il deployment in Firebase
Ora che hai installato le dipendenze e configurato il progetto, puoi eseguire l'app per la prima volta.
firebase deploy
Questo è l'output della console che dovresti vedere:
... ✔ Deploy complete! Project Console: https://console.firebase.google.com/project/<project-id>/overview Hosting URL: https://<project-id>.web.app
Questo comando esegue il deployment di un'app web, insieme a diverse Cloud Functions for Firebase.
Apri Hosting URL (URL di hosting) nel browser (https://<project-id>.web.app
) per visualizzare l'app web. Verrà visualizzata la seguente interfaccia:
Questa UI web rappresenta una piattaforma di terze parti per visualizzare o modificare gli stati dei dispositivi. Per iniziare a completare il database con le informazioni del dispositivo, fai clic su AGGIORNA. Non vedrai alcuna modifica nella pagina, ma lo stato attuale della lavatrice verrà memorizzato nel database.
Ora è il momento di connettere il servizio cloud di cui hai eseguito il deployment all'Assistente Google utilizzando la console Actions.
Configura il progetto della console Actions
In Panoramica > Crea la tua azione, seleziona Aggiungi azioni. Inserisci l'URL della funzione Cloud Functions che fornisce il completamento per gli intent della smart home e fai clic su Salva.
https://us-central1-<project-id>.cloudfunctions.net/smarthome
Nella scheda Sviluppo > Chiamata, aggiungi un Nome visualizzato per l'azione e fai clic su Salva. Questo nome verrà visualizzato nell'app Google Home.
Per attivare il collegamento dell'account, seleziona il menu Sviluppo > Collegamento dell'account nel riquadro di navigazione a sinistra. Utilizza queste impostazioni di collegamento dell'account:
ID client |
|
Client secret |
|
URL autorizzazione |
|
URL token |
|
Fai clic su Salva per salvare la configurazione del collegamento dell'account, quindi fai clic su Test per attivare i test sul tuo progetto.
Il sistema ti reindirizzerà al Simulatore. Verifica che i test siano stati abilitati per il tuo progetto spostando il mouse sull'icona Test sul dispositivo ( ).
Collegare l'Assistente Google
Per testare l'azione per la smart home, devi collegare il tuo progetto a un Account Google. In questo modo è possibile eseguire test tramite le piattaforme dell'Assistente Google e l'app Google Home su cui è stato eseguito l'accesso allo stesso account.
- Apri le impostazioni dell'Assistente Google sullo smartphone. Tieni presente che devi aver eseguito l'accesso con lo stesso account della console.
- Vai su Assistente Google > Impostazioni > Controllo della casa (nella sezione Assistente).
- Fai clic sull'icona di ricerca in alto a destra.
- Cerca la tua app di test utilizzando il prefisso [test] per trovare la tua app di test specifica.
- Seleziona l'elemento. L'Assistente Google eseguirà quindi l'autenticazione con il tuo servizio e invierà una richiesta
SYNC
, chiedendo al servizio di fornire un elenco di dispositivi per l'utente.
Apri l'app Google Home e verifica di riuscire a vedere la lavatrice.
Verifica di poter controllare la lavatrice tramite i comandi vocali nell'app Google Home. La modifica dello stato del dispositivo dovrebbe essere visualizzata anche nella UI web frontend del tuo fulfillment Cloud.
Ora puoi iniziare ad aggiungere il fulfillment locale all'Azione.
4. Aggiorna fulfillment Cloud
Per supportare il fulfillment locale, devi aggiungere un nuovo campo per dispositivo denominato otherDeviceIds
alla risposta Cloud SYNC
contenente un identificatore locale univoco per il dispositivo. Questo campo indica anche la possibilità di controllare localmente il dispositivo.
Aggiungi il campo otherDeviceIds
alla risposta SYNC
come mostrato nel seguente snippet di codice:
functions/index.js
app.onSync((body) => {
return {
requestId: body.requestId,
payload: {
agentUserId: '123',
devices: [{
id: 'washer',
type: 'action.devices.types.WASHER',
traits: [ ... ],
name: { ... },
deviceInfo: { ... },
willReportState: true,
attributes: {
pausable: true,
},
otherDeviceIds: [{
deviceId: 'deviceid123',
}],
}],
},
};
});
Esegui il deployment del progetto aggiornato su Firebase:
firebase deploy --only functions
Al termine del deployment, accedi all'interfaccia utente web e fai clic sul pulsante Aggiorna nella barra degli strumenti. Questa operazione attiva un'operazione di sincronizzazione della richiesta in modo che l'assistente riceva i dati aggiornati della risposta di SYNC
.
5. Configura distribuzione locale
In questa sezione aggiungerai le opzioni di configurazione necessarie per l'evasione degli ordini locale all'azione per la smart home. Durante lo sviluppo, pubblicherai l'app di distribuzione locale su Firebase Hosting, da cui il dispositivo Google Home potrà accedervi e scaricarla.
Nella console di Actions, seleziona Develop > Azioni e individua la sezione Configura l'SDK della casa locale. Inserisci il seguente URL nel campo URL di test, inserisci l'ID progetto e fai clic su Salva:
https://<project-id>.web.app/local-home/index.html
Ora dobbiamo definire in che modo il dispositivo Google Home deve scoprire gli smart device locali. La piattaforma Local Home supporta diversi protocolli per il rilevamento dei dispositivi, tra cui mDNS, UPnP e trasmissione UDP. Utilizzerai la trasmissione UDP per scoprire la lavatrice intelligente.
Fai clic su Nuova configurazione di scansione in Configurazione della scansione del dispositivo per aggiungere una nuova configurazione di scansione. Seleziona UDP come protocollo e inserisci i seguenti attributi:
Campo | Descrizione | Valore suggerito |
Indirizzo di trasmissione | Indirizzo di trasmissione UDP |
|
Porta di trasmissione | Porta a cui Google Home invia la trasmissione UDP |
|
Porta di ascolto | Porta da cui Google Home ascolta una risposta |
|
Pacchetto di rilevamento | Payload dati broadcast UDP |
|
Infine, fai clic su Salva nella parte superiore della finestra per pubblicare le modifiche.
6. Implementa il fulfillment locale
Svilupperai la tua app di distribuzione locale in TypeScript utilizzando il pacchetto di dattiloghi dell'SDK Local Home. Osserva lo scheletro fornito nel progetto iniziale:
local/index.ts
/// <reference types="@google/local-home-sdk" />
import App = smarthome.App;
import Constants = smarthome.Constants;
import DataFlow = smarthome.DataFlow;
import Execute = smarthome.Execute;
import Intents = smarthome.Intents;
import IntentFlow = smarthome.IntentFlow;
...
class LocalExecutionApp {
constructor(private readonly app: App) { }
identifyHandler(request: IntentFlow.IdentifyRequest):
Promise<IntentFlow.IdentifyResponse> {
// TODO: Implement device identification
}
executeHandler(request: IntentFlow.ExecuteRequest):
Promise<IntentFlow.ExecuteResponse> {
// TODO: Implement local fulfillment
}
...
}
const localHomeSdk = new App('1.0.0');
const localApp = new LocalExecutionApp(localHomeSdk);
localHomeSdk
.onIdentify(localApp.identifyHandler.bind(localApp))
.onExecute(localApp.executeHandler.bind(localApp))
.listen()
.then(() => console.log('Ready'))
.catch((e: Error) => console.error(e));
Il componente principale del completamento locale è la classe smarthome.App
. Il progetto iniziale collega i gestori per gli intent IDENTIFY
e EXECUTE
, quindi chiama il metodo listen()
per comunicare all'SDK Local Home che l'app è pronta.
Aggiungi il gestore IDENTIFY
L'SDK Local Home attiva il gestore IDENTIFY
quando il dispositivo Google Home rileva dispositivi non verificati sulla rete locale in base alla configurazione della scansione fornita nella console Actions.
Nel frattempo, la piattaforma richiama identifyHandler
con i dati di scansione risultanti quando Google rileva un dispositivo corrispondente. Nella tua app, l'analisi viene eseguita utilizzando una trasmissione UDP e i dati della scansione forniti al gestore IDENTIFY
includono il payload di risposta inviato dal dispositivo locale.
Il gestore restituisce un'istanza IdentifyResponse
contenente un identificatore univoco per il dispositivo locale. Aggiungi il seguente codice al metodo identifyHandler
per elaborare la risposta UDP proveniente dal dispositivo locale e determina l'ID dispositivo locale appropriato:
local/index .ts
identifyHandler(request: IntentFlow.IdentifyRequest):
Promise<IntentFlow.IdentifyResponse> {
console.log("IDENTIFY intent: " + JSON.stringify(request, null, 2));
const scanData = request.inputs[0].payload.device.udpScanData;
if (!scanData) {
const err = new IntentFlow.HandlerError(request.requestId,
'invalid_request', 'Invalid scan data');
return Promise.reject(err);
}
// In this codelab, the scan data contains only local device id.
const localDeviceId = Buffer.from(scanData.data, 'hex');
const response: IntentFlow.IdentifyResponse = {
intent: Intents.IDENTIFY,
requestId: request.requestId,
payload: {
device: {
id: 'washer',
verificationId: localDeviceId.toString(),
}
}
};
console.log("IDENTIFY response: " + JSON.stringify(response, null, 2));
return Promise.resolve(response);
}
Tieni presente che il campo verificationId
deve corrispondere a uno dei valori otherDeviceIds
nella risposta SYNC
, che segnala il dispositivo come disponibile per la distribuzione locale nel Home Graph dell'utente. Dopo che Google trova una corrispondenza, il dispositivo viene considerato verificato e pronto per l'evasione degli ordini locale.
Aggiungi il gestore EXECUTE
L'SDK della casa locale attiva il gestore EXECUTE
quando un dispositivo che supporta il fulfillment locale riceve un comando. I contenuti dell'intent locale sono equivalenti all'intent EXECUTE
inviato al completamento del cloud, quindi la logica per l'elaborazione locale dell'intent assomiglia al modo in cui lo gestisci nel cloud.
L'app può utilizzare socket TCP/UDP o richieste HTTP(S) per comunicare con dispositivi locali. In questo codelab, HTTP è il protocollo utilizzato per controllare il dispositivo virtuale. Il numero di porta è definito in index.ts
come variabile SERVER_PORT
.
Aggiungi il seguente codice al tuo metodo executeHandler
per elaborare i comandi in arrivo e inviarli al dispositivo locale tramite HTTP:
local/index.ts
executeHandler(request: IntentFlow.ExecuteRequest):
Promise<IntentFlow.ExecuteResponse> {
console.log("EXECUTE intent: " + JSON.stringify(request, null, 2));
const command = request.inputs[0].payload.commands[0];
const execution = command.execution[0];
const response = new Execute.Response.Builder()
.setRequestId(request.requestId);
const promises: Array<Promise<void>> = command.devices.map((device) => {
console.log("Handling EXECUTE intent for device: " + JSON.stringify(device));
// Convert execution params to a string for the local device
const params = execution.params as IWasherParams;
const payload = this.getDataForCommand(execution.command, params);
// Create a command to send over the local network
const radioCommand = new DataFlow.HttpRequestData();
radioCommand.requestId = request.requestId;
radioCommand.deviceId = device.id;
radioCommand.data = JSON.stringify(payload);
radioCommand.dataType = 'application/json';
radioCommand.port = SERVER_PORT;
radioCommand.method = Constants.HttpOperation.POST;
radioCommand.isSecure = false;
console.log("Sending request to the smart home device:", payload);
return this.app.getDeviceManager()
.send(radioCommand)
.then(() => {
const state = {online: true};
response.setSuccessState(device.id, Object.assign(state, params));
console.log(`Command successfully sent to ${device.id}`);
})
.catch((e: IntentFlow.HandlerError) => {
e.errorCode = e.errorCode || 'invalid_request';
response.setErrorState(device.id, e.errorCode);
console.error('An error occurred sending the command', e.errorCode);
});
});
return Promise.all(promises)
.then(() => {
return response.build();
})
.catch((e) => {
const err = new IntentFlow.HandlerError(request.requestId,
'invalid_request', e.message);
return Promise.reject(err);
});
}
Compila l'app TypeScript
Passa alla directory local/
ed esegui questi comandi per scaricare il compilatore TypeScript e compilare l'app:
cd local npm install npm run build
Questa operazione compila l'origine index.ts
(TypeScript) e inserisce il seguente contenuto nella directory public/local-home/
:
bundle.js
: output JavaScript compilato contenente l'app locale e le dipendenze.index.html
: pagina di hosting locale utilizzata per pubblicare l'app per i test sul dispositivo.
Esegui il deployment del progetto di test
Esegui il deployment dei file di progetto aggiornati su Firebase Hosting in modo da potervi accedere dal dispositivo Google Home.
firebase deploy --only hosting
7. Avvia la lavatrice smart
È il momento di verificare la comunicazione tra l'app di distribuzione locale e la lavatrice smart. Il progetto iniziale del codelab include una lavatrice intelligente virtuale, scritta in Node.js, che simula una lavatrice smart che gli utenti possono controllare localmente.
Configura il dispositivo
Devi configurare il dispositivo virtuale in modo che utilizzi gli stessi parametri UDP che hai applicato alla configurazione della scansione per il rilevamento dei dispositivi nella console Actions. Inoltre, devi comunicare al dispositivo virtuale l'ID dispositivo locale da segnalare e l'ID progetto Actions da utilizzare per gli eventi Stato report quando lo stato del dispositivo cambia.
Parametro | Valore suggerito |
deviceId |
|
discoveryPortOut |
|
discoveryPacket |
|
projectId | L'ID progetto di Actions |
Avvia il dispositivo
Vai alla directory virtual-device/
ed esegui lo script del dispositivo, passando i parametri di configurazione come argomenti:
cd virtual-device npm install npm start -- \ --deviceId=deviceid123 --projectId=<project-id> \ --discoveryPortOut=3311 --discoveryPacket=HelloLocalHomeSDK
Verifica che lo script del dispositivo venga eseguito con i parametri previsti:
(...): UDP Server listening on 3311 (...): Device listening on port 3388 (...): Report State successful
8. Esegui il debug dell'app TypeScript
Nella sezione che segue verificherai che il dispositivo Google Home sia in grado di scansionare, identificare e inviare correttamente i comandi alla lavatrice smart virtuale sulla rete locale. Puoi utilizzare gli Strumenti per sviluppatori di Google Chrome per connetterti al dispositivo Google Home, visualizzare i log della console ed eseguire il debug dell'app TypeScript.
Collegare gli Strumenti per sviluppatori di Chrome
Per connettere il debugger all'app di distribuzione locale, segui questi passaggi:
- Assicurati di aver collegato il tuo dispositivo Google Home a un utente autorizzato ad accedere al progetto della console Actions.
- Riavvia il dispositivo Google Home. In questo modo potrai recuperare l'URL del codice HTML e la configurazione della scansione che hai inserito nella console di Actions.
- Avvia Chrome sul tuo computer di sviluppo.
- Apri una nuova scheda di Chrome e inserisci
chrome://inspect
nel campo dell'indirizzo per avviare la finestra di ispezione.
Nella pagina dovresti vedere un elenco di dispositivi e l'URL dell'app dovrebbe apparire sotto il nome del tuo dispositivo Google Home.
Avvia controllo
Fai clic su Ispeziona sotto l'URL dell'app per avviare gli Strumenti per sviluppatori di Chrome. Seleziona la scheda Console e verifica di poter vedere i contenuti dell'intent IDENTIFY
stampati dall'app TypeScript.
Questo output indica che l'app di distribuzione locale ha rilevato e identificato il dispositivo virtuale correttamente.
Testa l'evasione degli ordini locale
Invia comandi al tuo dispositivo usando i controlli touch nell'app Google Home o tramite comandi vocali al dispositivo Google Home, ad esempio:
"Hey Google, accendi la lavatrice."
"Hey Google, avvia la lavatrice."
"Hey Google, interrompi la lavatrice."
In questo modo, la piattaforma dovrebbe inviare un intent EXECUTE
all'app TypeScript.
Verifica di poter vedere la modifica dello stato della lavatrice smart locale a ciascun comando.
... ***** The washer is RUNNING ***** ... ***** The washer is STOPPED *****
9. Complimenti
Complimenti! Hai utilizzato l'SDK Local Home per integrare la distribuzione locale in un'azione per la smart home.
Scopri di più
Ecco alcune altre cose che puoi provare a fare:
- Modifica la configurazione della scansione e falla funzionare. Ad esempio, prova a utilizzare una porta UDP o un pacchetto di rilevamento diverso.
- Modifica il codebase dello smart device virtuale in modo che venga eseguito su un dispositivo incorporato, ad esempio un Raspberry Pi, e utilizza i LED o un display per visualizzare lo stato attuale.