測試應用程式並進行偵錯

建議您按照先前所述步驟建構本地訂單履行應用程式,然後按照下列步驟在自有代管環境中測試智慧型家居整合功能:

  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 程式碼,然後重複執行這些步驟。

只要重複執行這個建構與測試程序,就能更輕鬆快速地找出變更,並進行偵錯。

測試裝置控制

您必須在 Action 控制台中指定網頁應用程式的網址,以便在本地執行時,在 Google Home 或 Google Nest 裝置上載入 HTML。

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

Chrome

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

Node.js

  1. 在 Actions 控制台中開啟智慧型家居專案。
  2. 按一下左側導覽面板中的「動作」
  3. 在「設定本機主畫面 SDK (選用)」>「輸入節點的測試網址」下方,指定開發伺服器網址,提供可執行本機執行要求應用程式的 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」分頁。Local Home 平台會在主控台記錄檔中輸出應用程式版本和 Local 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. 選取「Configure...」,開啟「Target Discovery settings」
  5. 圖 2:chrome://inspect 中的目標探索設定。
  6. 在清單中輸入 DEVICE_IP_ADDRESS:9222,然後按一下「完成」
  7. 按一下指令碼下方的藍色檢查連結,啟動 Chrome 開發人員工具。 切換到「Console」分頁。Local Home 平台會在主控台記錄檔中輸出應用程式版本和 Local Home SDK 版本。如果您看到這項記錄,表示 Google 已成功載入您的應用程式,並且可以連線至該應用程式。如果沒有,請重新啟動 Google Home 或 Google Nest 裝置。

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

偵錯提示

在偵錯期間,請注意下列事項:

  • 請勿將多部 Google Home 或 Google Nest 裝置連結至同一個本機網路上的測試帳戶。你無法控制系統使用哪些本機執行指令指定 Google Home 或 Google Nest 裝置。
  • 在 Chrome 開發人員工具中重新整理頁面,即可重新載入本機執行應用程式容器,並使用開發網址中的最新程式碼。這不會重設 Local Home 平台,你可能需要在當地服務應用程式中重新觸發平台意圖 (例如 IDENTIFY),才能重設 Local Home 平台。如要重設 Local Home 平台,請重新啟動 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. 在主控台中,依序點選「Develop」>「Actions」,即可上傳 JavaScript 應用程式。在「Configure Local Home SDK」部分,按一下「Upload JavaScript files」
    圖 3:上傳 JavaScript 應用程式。
  3. 在「Upload files」(上傳檔案) 對話方塊中,上傳先前產生的套件檔案。請務必上傳兩個版本的套件檔案 (Node、Web),以便在本機執行環境支援的所有執行階段環境中,正確設定動作運作方式。
    1. 上傳以 Node.js 為目標的 JavaScript:上傳 dist/node 目錄中的 bundle.js 檔案。
    2. 上傳指定 Chrome (瀏覽器) 的 JavaScript:從 dist/web 目錄上傳 bundle.js 檔案。
  4. 在支援 Google 助理的裝置上測試動作,確認其在實際工作環境中能正常運作。詳情請參閱「測試及分享智慧型住宅動作」一文。
  5. 如果您對動作的運作方式感到滿意,請按照「啟動智慧型住宅動作」中的操作說明,將其提交給 Google 進行實際工作環境部署。包括完成自我測試和認證申請步驟。