Smart-Home-Geräte mit Google Assistant verbinden

1. Hinweis

Als IoT-Entwickler können Sie Smart-Home-Aktionen entwickeln, mit denen Nutzer ihre Geräte über die Touchbedienung in der Google Home App und Sprachbefehle von Assistant steuern können.

79266e5f45e6ae20.gif

Für Smart-Home-Aktionen wird Home Graph verwendet, um Kontextdaten über das Zuhause und seine Geräte bereitzustellen und so eine logische Karte des Zuhauses zu erstellen. So kann Assistant die Anfragen des Nutzers in Bezug auf seinen Aufenthaltsort besser nachvollziehen. In Home Graph kann beispielsweise ein Wohnzimmer gespeichert werden, in dem verschiedene Arten von Geräten verschiedener Hersteller enthalten sind, z. B. Thermostat, Lampe, Ventilator und Staubsauger.

d009cef0f903d284.jpeg

Voraussetzungen

Aufgaben

In diesem Codelab veröffentlichen Sie einen Cloud-Dienst, der eine virtuelle intelligente Waschmaschine verwaltet, erstellen dann eine Smart-Home-Aktion und verbinden ihn mit Assistant.

Lerninhalte

  • So stellen Sie einen Smart-Home-Cloud-Dienst bereit
  • So verbindest du deinen Dienst mit Assistant
  • Änderungen des Gerätestatus bei Google veröffentlichen

Voraussetzungen

2. Erste Schritte

Aktivitätseinstellungen aktivieren

Damit Sie Google Assistant nutzen können, müssen Sie bestimmte Aktivitätsdaten mit Google teilen. Google Assistant benötigt diese Daten, um richtig zu funktionieren. Die Anforderung zum Teilen von Daten ist jedoch nicht spezifisch für das SDK. Wenn Sie diese Daten teilen möchten, erstellen Sie ein Google-Konto, falls Sie noch keines haben. Dabei kann es sich um ein beliebiges Google-Konto handeln. Es muss sich dabei nicht um Ihr Entwicklerkonto handeln.

Öffnen Sie die Seite Aktivitätseinstellungen des Google-Kontos, das Sie mit Assistant verwenden möchten.

Die folgenden Schieberegler müssen aktiviert sein:

  • Web- & App-Aktivitäten: Sie müssen das Kästchen Auch den Chrome-Verlauf sowie Aktivitäten auf Websites, in Apps und auf Geräten berücksichtigen, die Google-Dienste nutzen anklicken.
  • Geräteinformationen
  • Sprach- & Audioaktivitäten

Actions-Projekt erstellen

  1. Rufen Sie die Actions on Google Developer Console auf.
  2. Klicken Sie auf Neues Projekt, geben Sie einen Namen für das Projekt ein und klicken Sie auf PROJEKT ERSTELLEN.

3d6b68ca79afd54c.png

Die Smart-Home App auswählen

Wählen Sie in der Actions Console auf dem Übersichtsbildschirm die Option Smart Home aus.

2fa4988f44f8914b.png

Wähle die Karte Smart Home aus und klicke auf Jetzt erstellen. Du wirst dann zur Projektkonsole weitergeleitet.

Firebase CLI installieren

Mit der Firebase-Befehlszeile können Sie Ihre Webanwendungen lokal bereitstellen und Ihre Web-App für Firebase Hosting bereitstellen.

Führen Sie den folgenden npm-Befehl über das Terminal aus, um die Befehlszeile zu installieren:

npm install -g firebase-tools

Prüfen Sie mit dem folgenden Befehl, ob die Befehlszeile korrekt installiert wurde:

firebase --version

Autorisieren Sie die Firebase CLI mit Ihrem Google-Konto, indem Sie folgenden Befehl ausführen:

firebase login

3. Starte-App ausführen

Nachdem Sie die Entwicklungsumgebung eingerichtet haben, können Sie das Startprojekt bereitstellen, um zu prüfen, ob alles richtig konfiguriert ist.

Quellcode abrufen

Klicken Sie auf den folgenden Link, um das Beispiel für dieses Codelab auf Ihren Entwicklungscomputer herunterzuladen:

...oder Sie können das GitHub-Repository über die Befehlszeile klonen:

git clone https://github.com/google-home/smarthome-washer.git

Über das Projekt

Das Startprojekt enthält die folgenden Unterverzeichnisse:

  • public: Eine Front-End-Benutzeroberfläche zur einfachen Steuerung und Überwachung des Status der intelligenten Waschmaschine.
  • functions: Ein vollständig implementierter Cloud-Dienst, der die intelligente Waschmaschine mit Cloud Functions for Firebase und Firebase Realtime Database verwaltet.

Mit Firebase verbinden

Rufen Sie das Verzeichnis washer-start auf und richten Sie die Firebase CLI mit Ihrem Actions-Projekt ein:

cd washer-start
firebase use <project-id>

Firebase-Projekt konfigurieren

Initialisieren Sie ein Firebase-Projekt.

firebase init

Wählen Sie die Befehlszeilen-Funktionen Echtzeitdatenbank, Funktionen und Hosting aus, die Firebase Hosting enthalten.

? 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

Dadurch werden die für Ihr Projekt erforderlichen APIs und Funktionen initialisiert.

Initialisieren Sie Realtime Database, wenn Sie dazu aufgefordert werden. Sie können den Standardspeicherort für die Datenbankinstanz verwenden.

? 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

Da Sie den Code des Startprojekts verwenden, wählen Sie die Standarddatei für die Sicherheitsregeln aus und achten Sie darauf, dass Sie die vorhandene Datei mit den Datenbankregeln nicht überschreiben.

? 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

Wenn Sie Ihr Projekt neu initialisieren, wählen Sie Überschreiben aus, wenn Sie gefragt werden, ob Sie eine Codebasis initialisieren oder überschreiben möchten.

? Would you like to initialize a new codebase, or overwrite an existing one?
Overwrite

Bei der Konfiguration von Functions sollten Sie die Standarddateien verwenden und die vorhandenen Dateien index.js und package.json im Projektbeispiel nicht überschreiben.

? 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

Wenn Sie Ihr Projekt neu initialisieren, wählen Sie No aus, wenn Sie gefragt werden, ob Sie „functions/.gitignore“ initialisieren oder überschreiben möchten.

? File functions/.gitignore already exists. Overwrite?
No
? Do you want to install dependencies with npm now?
Yes

Konfigurieren Sie abschließend Ihre Hosting-Einrichtung so, dass im Projektcode das Verzeichnis public und die vorhandene Datei index.html verwendet werden. Wählen Sie Nein aus, wenn Sie gefragt werden, ob Sie ESLint verwenden möchten.

? 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

Wenn ESLint versehentlich aktiviert wurde, gibt es zwei Möglichkeiten, es zu deaktivieren:

  1. Gehen Sie über die Benutzeroberfläche zum Ordner ../functions unter dem Projekt, wählen Sie die ausgeblendete Datei .eslintrc.js aus und löschen Sie sie. Verwechseln Sie ihn nicht mit .eslintrc.json, der ähnlich heißt.
  2. Über die Befehlszeile:
    cd functions
    rm .eslintrc.js
    

Damit Sie eine korrekte und vollständige Firebase-Konfiguration haben, kopieren Sie die Datei firebase.json aus dem Verzeichnis app-done in das Verzeichnis app-start und überschreiben Sie dabei die Datei im Verzeichnis app-start.

Führen Sie im Verzeichnis app-start folgende Schritte aus:

cp -vp ../app-done/firebase.json .

In Firebase bereitstellen

Nachdem Sie nun die Abhängigkeiten installiert und Ihr Projekt konfiguriert haben, können Sie die Anwendung zum ersten Mal ausführen.

firebase deploy

Die Ausgabe der Konsole sollte so aussehen:

...

✔ Deploy complete!

Project Console: https://console.firebase.google.com/project/<project-id>/overview
Hosting URL: https://<project-id>.web.app

Mit diesem Befehl werden eine Webanwendung sowie mehrere Cloud Functions for Firebase-Funktionen bereitgestellt.

Öffnen Sie die Hosting-URL in Ihrem Browser (https://<project-id>.web.app), um die Webanwendung aufzurufen. Sie sehen dann die folgende Oberfläche:

5845443e94705557.png

Diese Web-UI stellt eine Drittanbieterplattform dar, mit der Gerätestatus angezeigt oder geändert werden können. Klicken Sie auf AKTUALISIEREN, um Geräteinformationen in Ihre Datenbank zu übertragen. Sie werden zwar keine Änderungen auf der Seite sehen, der aktuelle Status der Waschmaschine wird jedoch in der Datenbank gespeichert.

Als Nächstes verbinden Sie den von Ihnen bereitgestellten Cloud-Dienst über die Actions Console mit Google Assistant.

Actions Console-Projekt konfigurieren

Wählen Sie unter Übersicht > Aktion erstellen die Option Aktion(en) hinzufügen aus. Geben Sie die URL für die Cloud Functions-Funktion ein, die die Auftragsausführung für die Smart-Home-Intents bereitstellt. Klicken Sie dann auf Speichern.

https://us-central1-<project-id>.cloudfunctions.net/smarthome

9d7b223427f587ca.png

Fügen Sie auf dem Tab Develop > Invocation einen Anzeigenamen für Ihre Aktion hinzu und klicken Sie auf Save (Speichern). Dieser Name wird in der Google Home App angezeigt.

774d0c40c351c7da.png

a8c4673eb11d76ee.png

Wählen Sie im linken Navigationsbereich die Option Entwickeln > Kontoverknüpfung aus, um die Kontoverknüpfung zu aktivieren. Verwenden Sie diese Einstellungen zur Kontoverknüpfung:

Client-ID

ABC123

Clientschlüssel

DEF456

Autorisierungs-URL

https://us-central1-<project-id>.cloudfunctions.net/fakeauth

Token-URL

https://us-central1-<project-id>.cloudfunctions.net/faketoken

9730d20b90bcc038.png

Klicken Sie auf Speichern, um die Konfiguration der Kontoverknüpfung zu speichern. Klicken Sie dann auf Testen, um Tests für Ihr Projekt zu aktivieren.

ee0547f05b5efd98.png

Sie werden zum Simulator weitergeleitet. Wenn „Test jetzt aktiviert“ nicht angezeigt wird, klicken Sie auf Test zurücksetzen, um zu prüfen, ob das Testen aktiviert ist.

d0495810dbadf059.png

Jetzt können Sie mit der Implementierung der Webhooks beginnen, die erforderlich sind, um den Gerätestatus mit Assistant zu verbinden.

4. Waschmaschine erstellen

Nachdem du deine Aktion konfiguriert hast, kannst du Geräte hinzufügen und Daten senden. Ihr Cloud-Dienst muss die folgenden Intents verarbeiten:

  • Ein SYNC-Intent tritt auf, wenn Assistant wissen möchte, welche Geräte der Nutzer verbunden hat. Sie wird an Ihren Dienst gesendet, wenn der Nutzer ein Konto verknüpft. Sie sollten mit einer JSON-Nutzlast antworten, die alle Geräte des Nutzers und deren Funktionen enthält.
  • Ein QUERY-Intent tritt auf, wenn Assistant den aktuellen Status oder Status eines Geräts wissen möchte. Du solltest mit einer JSON-Nutzlast mit dem Status jedes angeforderten Geräts antworten.
  • Ein EXECUTE-Intent tritt auf, wenn Assistant ein Gerät im Namen eines Nutzers steuern möchte. Sie sollten mit einer JSON-Nutzlast mit dem Ausführungsstatus jedes angeforderten Geräts antworten.
  • Ein DISCONNECT-Intent tritt auf, wenn der Nutzer die Verknüpfung seines Kontos mit Assistant aufhebt. Du solltest keine Ereignisse mehr von den Geräten dieses Nutzers an Assistant senden.

In den folgenden Abschnitten aktualisieren Sie die Funktionen, die Sie zuvor für die Verarbeitung dieser Intents bereitgestellt haben.

Antwort auf SYNC aktualisieren

Öffnen Sie functions/index.js. Sie enthält den Code zum Antworten auf Anfragen von Assistant.

Sie müssen einen SYNC-Intent verarbeiten, indem Sie die Gerätemetadaten und -funktionen zurückgeben. Aktualisieren Sie die JSON-Datei im Array onSync mit den Geräteinformationen und den empfohlenen Eigenschaften für eine Wäschewaschmaschine.

index.js

app.onSync((body) => {
  return {
    requestId: body.requestId,
    payload: {
      agentUserId: USER_ID,
      devices: [{
        id: 'washer',
        type: 'action.devices.types.WASHER',
        traits: [
          'action.devices.traits.OnOff',
          'action.devices.traits.StartStop',
          'action.devices.traits.RunCycle',
        ],
        name: {
          defaultNames: ['My Washer'],
          name: 'Washer',
          nicknames: ['Washer'],
        },
        deviceInfo: {
          manufacturer: 'Acme Co',
          model: 'acme-washer',
          hwVersion: '1.0',
          swVersion: '1.0.1',
        },
        willReportState: true,
        attributes: {
          pausable: true,
        },
      }],
    },
  };
});

In Firebase bereitstellen

Stellen Sie die aktualisierte Cloud-Auftragsausführung mithilfe der Firebase CLI bereit:

firebase deploy --only functions

Damit du deine Smart-Home-Aktion testen kannst, musst du dein Projekt mit einem Google-Konto verknüpfen. Dies ermöglicht Tests über Google Assistant-Oberflächen und die Google Home App, die im selben Konto angemeldet sind.

  1. Öffnen Sie auf Ihrem Smartphone die Google Assistant-Einstellungen. Sie sollten mit demselben Konto angemeldet sein wie in der Konsole.
  2. Gehen Sie zu Google Assistant > Einstellungen > Smart-Home-Steuerung (unter „Assistant“).
  3. Klicken Sie rechts oben auf das Suchsymbol.
  4. Sie können mithilfe des Präfixes [test] nach Ihrer Test-App suchen.
  5. Wählen Sie das Element aus. Google Assistant authentifiziert sich dann bei deinem Dienst und sendet eine SYNC-Anfrage, in der dein Dienst dem Nutzer eine Liste der Geräte zur Verfügung stellt.

Öffnen Sie die Google Home App und prüfen Sie, ob Sie die Waschmaschine sehen können.

ae252220753726f6.png

5. Befehle und Abfragen verarbeiten

Nachdem Ihr Cloud-Dienst nun Google das Gerät der Waschmaschine ordnungsgemäß meldet, müssen Sie die Möglichkeit hinzufügen, den Gerätestatus anzufordern und Befehle zu senden.

QUERY-Intent verarbeiten

Ein QUERY-Intent enthält eine Reihe von Geräten. Du solltest für jedes Gerät mit seinem aktuellen Status antworten.

Bearbeiten Sie in functions/index.js den Handler QUERY so, dass die Liste der Zielgeräte in der Intent-Anfrage verarbeitet wird.

index.js

app.onQuery(async (body) => {
  const {requestId} = body;
  const payload = {
    devices: {},
  };
  const queryPromises = [];
  const intent = body.inputs[0];
  for (const device of intent.payload.devices) {
    const deviceId = device.id;
    queryPromises.push(queryDevice(deviceId)
        .then((data) => {
        // Add response to device payload
          payload.devices[deviceId] = data;
        }
        ));
  }
  // Wait for all promises to resolve
  await Promise.all(queryPromises);
  return {
    requestId: requestId,
    payload: payload,
  };
});

Gibt für jedes in der Anfrage enthaltene Gerät den aktuellen Status zurück, der in der Realtime Database gespeichert ist. Aktualisieren Sie die Funktionen queryFirebase und queryDevice, um die Statusdaten der Waschmaschine zurückzugeben.

index.js

const queryFirebase = async (deviceId) => {
  const snapshot = await firebaseRef.child(deviceId).once('value');
  const snapshotVal = snapshot.val();
  return {
    on: snapshotVal.OnOff.on,
    isPaused: snapshotVal.StartStop.isPaused,
    isRunning: snapshotVal.StartStop.isRunning,
  };
};

const queryDevice = async (deviceId) => {
  const data = await queryFirebase(deviceId);
  return {
    on: data.on,
    isPaused: data.isPaused,
    isRunning: data.isRunning,
    currentRunCycle: [{
      currentCycle: 'rinse',
      nextCycle: 'spin',
      lang: 'en',
    }],
    currentTotalRemainingTime: 1212,
    currentCycleRemainingTime: 301,
  };
};

Intent EXECUTE verarbeiten

Der Intent EXECUTE verarbeitet Befehle zum Aktualisieren des Gerätestatus. In der Antwort werden der Status jedes Befehls, z. B. SUCCESS, ERROR oder PENDING, und der neue Gerätestatus zurückgegeben.

Bearbeiten Sie in functions/index.js den EXECUTE-Handler, um die Liste der Traits, die aktualisiert werden müssen, und die Gruppe von Zielgeräten für jeden Befehl zu verarbeiten:

index.js

app.onExecute(async (body) => {
  const {requestId} = body;
  // Execution results are grouped by status
  const result = {
    ids: [],
    status: 'SUCCESS',
    states: {
      online: true,
    },
  };

  const executePromises = [];
  const intent = body.inputs[0];
  for (const command of intent.payload.commands) {
    for (const device of command.devices) {
      for (const execution of command.execution) {
        executePromises.push(
            updateDevice(execution, device.id)
                .then((data) => {
                  result.ids.push(device.id);
                  Object.assign(result.states, data);
                })
                .catch(() => functions.logger.error('EXECUTE', device.id)));
      }
    }
  }

  await Promise.all(executePromises);
  return {
    requestId: requestId,
    payload: {
      commands: [result],
    },
  };
});

Aktualisieren Sie in der Realtime Database für jeden Befehl und jedes Zielgerät die Werte, die dem angeforderten Merkmal entsprechen. Ändere die updateDevice-Funktion so, dass die entsprechende Firebase-Referenz aktualisiert und der aktualisierte Gerätestatus zurückgegeben wird.

index.js

const updateDevice = async (execution, deviceId) => {
  const {params, command} = execution;
  let state; let ref;
  switch (command) {
    case 'action.devices.commands.OnOff':
      state = {on: params.on};
      ref = firebaseRef.child(deviceId).child('OnOff');
      break;
    case 'action.devices.commands.StartStop':
      state = {isRunning: params.start};
      ref = firebaseRef.child(deviceId).child('StartStop');
      break;
    case 'action.devices.commands.PauseUnpause':
      state = {isPaused: params.pause};
      ref = firebaseRef.child(deviceId).child('StartStop');
      break;
  }

  return ref.update(state)
      .then(() => state);
};

6. Aktion testen

Nachdem Sie alle drei Intents implementiert haben, können Sie testen, ob Ihre Aktion die Waschmaschine steuert.

In Firebase bereitstellen

Stellen Sie die aktualisierte Cloud-Auftragsausführung mithilfe der Firebase CLI bereit:

firebase deploy --only functions

Waschmaschine testen

Jetzt können Sie sehen, wie sich der Wert ändert, wenn Sie einen der folgenden Sprachbefehle über Ihr Smartphone verwenden:

„Hey Google, schalte meine Waschmaschine ein.“

„Hey Google, pausiere meine Waschmaschine.“

„Hey Google, halte die Waschmaschine an.“

Du kannst auch den aktuellen Status deiner Waschmaschine anzeigen, indem du Fragen stellst.

„Hey Google, ist meine Waschmaschine an?“

„Hey Google, läuft meine Waschmaschine?“

„Hey Google, in welchem Spülgang ist meine Waschmaschine?“

Sie können diese Abfragen und Befehle in den Logs einsehen, die in der Firebase Console im Bereich Funktionen unter Ihrer Funktion angezeigt werden. Weitere Informationen zu Firebase-Logs finden Sie unter Logs schreiben und ansehen.

Sie finden diese Abfragen und Befehle auch in der Google Cloud Console, indem Sie Logging > Log-Explorer aufrufen. Weitere Informationen zum Google Cloud-Logging finden Sie unter Mit Cloud Logging auf Ereignisprotokolle zugreifen.

7. Aktualisierungen an Google melden

Sie haben Ihren Cloud-Dienst vollständig in die Smart-Home-Intents eingebunden, sodass Nutzer den aktuellen Status ihrer Geräte steuern und abfragen können. Bei der Implementierung fehlt jedoch die Möglichkeit, dass Ihr Dienst proaktiv Ereignisinformationen wie Änderungen an der Gerätepräsenz oder dem Gerätestatus an Assistant senden kann.

Mit der Funktion Synchronisierung anfordern können Sie eine neue Synchronisierungsanfrage auslösen, wenn Nutzer Geräte hinzufügen oder entfernen oder wenn sich die Gerätefunktionen ändern. Mit der Funktion Berichtsstatus kann Ihr Cloud-Dienst den Status eines Geräts proaktiv an Home Graph senden, wenn Nutzer den Gerätestatus physisch ändern – z. B. durch Einschalten eines Lichtschalters – oder den Status über einen anderen Dienst ändern.

In diesem Abschnitt fügen Sie Code hinzu, um diese Methoden aus der Front-End-Webanwendung aufzurufen.

HomeGraph API aktivieren

Die HomeGraph API ermöglicht das Speichern und Abfragen von Geräten und deren Status in Home Graph eines Nutzers. Wenn Sie diese API verwenden möchten, müssen Sie zuerst die Google Cloud Console öffnen und die HomeGraph API aktivieren.

Wählen Sie in der Google Cloud Console das Projekt aus, das mit Ihren Aktionen übereinstimmt. <project-id>.. Klicken Sie dann im Bildschirm „API-Bibliothek“ für die HomeGraph API auf Aktivieren.

ee198858a6eac112.png

Berichtsstatus aktivieren

Schreibvorgänge in die Realtime Database lösen die Funktion reportstate im Startprojekt aus. Aktualisieren Sie die Funktion reportstate in functions/index.js, um die in der Datenbank geschriebenen Daten zu erfassen und sie über „Berichtsstatus“ in Home Graph zu veröffentlichen.

index.js

exports.reportstate = functions.database.ref('{deviceId}').onWrite(
    async (change, context) => {
      functions.logger.info('Firebase write event triggered Report State');
      const snapshot = change.after.val();

      const requestBody = {
        requestId: 'ff36a3cc', /* Any unique ID */
        agentUserId: USER_ID,
        payload: {
          devices: {
            states: {
              /* Report the current state of our washer */
              [context.params.deviceId]: {
                on: snapshot.OnOff.on,
                isPaused: snapshot.StartStop.isPaused,
                isRunning: snapshot.StartStop.isRunning,
              },
            },
          },
        },
      };

      const res = await homegraph.devices.reportStateAndNotification({
        requestBody,
      });
      functions.logger.info('Report state response:', res.status, res.data);
    });

„Synchronisierung anfordern“ aktivieren

Durch Aktualisieren des Symbols in der Frontend-Web-UI wird die Funktion requestsync im Startprojekt ausgelöst. Implementieren Sie die Funktion requestsync in functions/index.js, um die HomeGraph API aufzurufen.

index.js

exports.requestsync = functions.https.onRequest(async (request, response) => {
  response.set('Access-Control-Allow-Origin', '*');
  functions.logger.info(`Request SYNC for user ${USER_ID}`);
  try {
    const res = await homegraph.devices.requestSync({
      requestBody: {
        agentUserId: USER_ID,
      },
    });
    functions.logger.info('Request sync response:', res.status, res.data);
    response.json(res.data);
  } catch (err) {
    functions.logger.error(err);
    response.status(500).send(`Error requesting sync: ${err}`);
  }
});

In Firebase bereitstellen

Stellen Sie den aktualisierten Code mit der Firebase CLI bereit:

firebase deploy --only functions

Die Implementierung testen

Klicken Sie in der Web-UI auf die Schaltfläche Aktualisieren ae8d3b25777a5e30.png und prüfen Sie, ob im Protokoll der Firebase Console eine Synchronisierungsanfrage angezeigt wird.

Passen Sie als Nächstes die Attribute des Waschmaschinengeräts in der Frontend-Weboberfläche an und klicken Sie auf Aktualisieren. Prüfen Sie, ob die an Google gemeldete Statusänderung in den Firebase Console-Protokollen angezeigt wird.

8. Glückwunsch

674c4f4392e98c1.png

Glückwunsch! Du hast Assistant mithilfe von Smart-Home-Aktionen erfolgreich in den Cloud-Dienst eines Geräts integriert.

Weitere Informationen

Hier sind einige Ideen, die Sie umsetzen können, um tiefer ins Detail zu gehen:

Weitere Informationen zum Testen und Einreichen einer Aktion zur Überprüfung sowie zum Zertifizierungsprozess für die Veröffentlichung deiner Aktion für Nutzer