測試應用程式並進行偵錯

建議您按照前述步驟,建構本機執行要求應用程式,然後使用下列步驟,在自己的代管環境中測試智慧型住宅整合:

  1. 在您自己的代管環境中,提供執行本機執行要求應用程式的 HTML 頁面。以下程式碼片段是執行本機執行要求應用程式的靜態 HTML 檔案範例。

    <html>
      <head>
        <!-- Local Home SDK -->
        <script src="//www.gstatic.com/eureka/smarthome/smarthome_sdk.js"></script>
        <!-- Local app under development -->
        <script src="local_execution.js"></script>
      </head>
    
    </html>
    
    
  2. 測試裝置控制選項

  3. 透過 Chrome 進行偵錯。使用中斷點和記錄檔來排解整合問題。

  4. 修改及編譯 TypeScript 程式碼,然後重複以上步驟。

透過重複這個建構和測試程序,您可以快速輕鬆地查看變更,並瞭解程式碼是否發生問題。

測試裝置控制選項

在「動作」控制台中,您必須指定網頁應用程式的網址,此 API 會在本機執行要求期間,載入在 Google Home 或 Google Nest 裝置上載入的 HTML。

如要使用本機執行要求測試裝置控制,請按照下列步驟操作:

Chrome

  1. 在 Actions 主控台開啟智慧住宅專案。
  2. 在左側導覽面板中,按一下「動作」
  3. 在「設定本機家用 SDK (選用)」 >「為 Chrome 輸入測試網址」,指定用來執行本機執行要求應用程式的 HTML 的開發伺服器網址。
  4. 按一下「儲存」,Google 最多可能需要 30 分鐘才能套用控制台的變更。
  5. 重新啟動 Google Home 或 Google Nest 裝置的測試。
  6. 向智慧型裝置下達指令舉例來說,如果您的裝置實作 OnOff 特性,您可以說出「Ok Google,開燈」。

Node.js

  1. 在 Actions 主控台開啟智慧住宅專案。
  2. 在左側導覽面板中,按一下「動作」
  3. 在「Configure local home SDK (Optional)」(設定本機主畫面 SDK (選用)) >「Enter your test URL for Node」(輸入節點的測試網址) 下方,指定提供執行本機執行要求應用程式的 JavaScript 的開發伺服器網址。
  4. 按一下「儲存」,Google 最多可能需要 30 分鐘才能套用控制台的變更。
  5. 重新啟動 Google Home 或 Google Nest 裝置的測試。
  6. 向智慧型裝置下達指令舉例來說,如果您的裝置實作 OnOff 特性,您可以說出「Ok Google,開燈」。

如要進一步瞭解裝置使用的執行階段,請參閱支援的裝置

在 Chrome 上偵錯

您可以使用 Chrome 開發人員工具對本機執行要求應用程式進行偵錯。開始偵錯前,請確認環境設定正確:

  • 您將主控台中的開發網址設為 Google Home 或 Google Nest 裝置 (區域區域網路或網際網路) 可存取的網址。
  • 電腦與您要測試的 Google Home 或 Google Nest 裝置位於相同區域網路。
  • 你的網路並未封鎖裝置之間的封包。
  • 您在 Actions 主控台和 Google Home 或 Google Nest 裝置上登入了同一個 Google 帳戶。
  • 您已更新雲端執行要求中的 SYNC 回應。這個方法應在 otherDeviceIds 欄位中傳回至少一個有效值。
  • 您已在 Actions 主控台輸入正確的掃描設定資訊

如要將本機執行要求應用程式連線至 Chrome 開發人員工具偵錯工具,請按照下列步驟操作:

Chrome

  1. 在本機開發機器中,安裝並啟動 Google Chrome 瀏覽器
  2. 在 Chrome 瀏覽器的位址欄位中輸入 chrome://inspect#devices,以啟動 Chrome 檢查器。頁面應該會列出裝置清單,而 HTML 檔案應列在測試 Google Home 或 Google Nest 裝置的名稱下方。
  3. 按一下 HTML 下方的藍色檢查連結,啟動 Chrome 開發人員工具。 切換至「Console」(主控台) 分頁標籤。 本機首頁平台會在控制台記錄中輸出應用程式版本和本機 Home SDK 版本。如果看到記錄檔,表示 Google 已成功載入您的應用程式,並且可以連線至應用程式。如果不是,請重新啟動 Google Home 或 Google Nest 裝置。
  4. 圖 1:chrome://inspect 中的本機執行要求應用程式。

Node.js

  1. 在本機開發機器中,安裝並啟動 Google Chrome 瀏覽器
  2. 決定測試裝置的本機 IP 位址,
  3. 在 Chrome 瀏覽器的位址欄位中輸入 chrome://inspect#devices,以啟動 Chrome 檢查器。
  4. 選取「設定...」開啟「目標探索設定」
  5. 圖 2:前往 chrome://inspect 指定探索設定。
  6. 在清單中輸入 DEVICE_IP_ADDRESS:9222,然後按一下「Done」(完成)
  7. 按一下指令碼下方的藍色檢查連結,即可啟動 Chrome 開發人員工具。 切換至「Console」(主控台) 分頁標籤。 本機首頁平台會在控制台記錄中輸出應用程式版本和本機 Home SDK 版本。如果看到記錄檔,表示 Google 已成功載入您的應用程式,並且可以連線至應用程式。如果不是,請重新啟動 Google Home 或 Google Nest 裝置。

如要進一步瞭解裝置使用的執行階段,請參閱支援的裝置

偵錯提示

偵錯時的其他注意事項包括:

  • 請勿透過多個區域網路將多個 Google Home 或 Google Nest 裝置連結到測試帳戶。您將無法使用本機執行指令指定哪些 Google Home 或 Google Nest 裝置的目標使用者。
  • 重新整理 Chrome 開發人員工具中的頁面,即可用開發網址的最新程式碼重新載入本機執行要求應用程式容器。這項操作不會重設本機主畫面平台,你可能需要透過這類要求在本機執行要求中重新觸發平台意圖 (例如 IDENTIFY)。如要重設本機主畫面平台,請重新啟動 Google Home 或 Google Nest 裝置。
  • 檢查 JavaScript 應用程式是否正常載入。如要這麼做,請查看開發人員工具頁面的主控台區段。如果發生問題,系統會顯示類似以下的訊息:Uncaught TypeError: Cannot read property ‘open’ of null.
  • IDENTIFY 回應中的 verificationId 必須與 SYNC 回應中的其中一個 otherDeviceIds 相符。
  • 針對 EXECUTE 處理常式,請確認裝置可接收 HTTP、TCP 或 UDP 指令,並按照預期運作。
  • 請務必從處理常式傳回 Promise
  • 避免在記憶體中保留全域狀態。請參閱「應用程式生命週期」。
  • 本機執行要求擲回的錯誤會顯示在專案的錯誤記錄檔中。

準備並推出正式版

準備好推出智慧型住宅動作時,請按照下列步驟操作:

  1. 開啟終端機。在專案目錄中執行 npm run build 指令。 這個指令會在 dist 目錄中為您的應用程式產生下列 JavaScript 套件:
    project-directory/
    └── dist
     ├── web
     │    └── bundle.js
     └── node
          └── bundle.js
    
  2. 在控制台中,按一下「開發」 >「動作」,即可上傳 JavaScript 應用程式。在「Configure Local Home SDK」部分,按一下「Upload JavaScript files」
    圖 3:上傳 JavaScript 應用程式。
  3. 在「Upload files」(上傳檔案) 對話方塊中,上傳您先前產生的套件檔案。請務必上傳這兩個版本的套件檔案 (節點、網站),因此您的動作設定已設為可在本機執行要求支援的所有執行階段環境中正常運作。
    1. 上傳指定 JavaScript.js 的 JavaScript:從 dist/node 目錄上傳 bundle.js 檔案。
    2. 上傳指定 Chrome 的 JavaScript (瀏覽器):從 dist/web 目錄上傳 bundle.js 檔案。
  4. 在支援 Google 助理的裝置上測試您的動作,驗證是否能在實際工作環境中正常運作。詳情請參閱「測試及分享智慧型住宅動作」。
  5. 對動作的運作方式感到滿意之後,請按照「啟動智慧型住宅動作」一文的操作說明,將測試提交給 Google 用於實際工作環境。包括完成自我測試和認證申請的步驟。