Kalay2.0 APP(繁中版)

Traditional Chinese Version


#對接指南

<p>[TOC]</p> <p>&gt; 如需申請Kalay APP對接,請洽商務洽談: &gt; 微信公眾號:物聯智慧TUTK 企業官網:<a href="https://www.throughtek.cn/">https://www.throughtek.cn/</a> 問題回饋:kalaysz_support@tutk.com</p> <hr /> <h1>對接指引</h1> <p><strong>在開始對接前,請確認您已準備好以下資料:</strong></p> <ul> <li>測試UID/certKey</li> <li>SDK LicenseKey</li> <li>標準SDK及說明文檔</li> <li>[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)</li> <li>Device Profile文件</li> <li>功能檢查報告</li> <li>雲端Coupon Code(如需開通雲端儲存功能)</li> <li>KOTA海外測試帳號(如需開放OTA升級功能,指定非中國大陸及北美地區使用)</li> <li>KOTA國內測試帳號(如需開放OTA升級功能,指定中國大陸區域使用)</li> <li>KOTA歐洲測試帳號(如需開啟OTA升級功能,指定歐洲區域使用)</li> <li>KOTA使用手冊(如需開啟OTA升級功能)</li> </ul> <h1>重要說明</h1> <h1>一、關於設備驗證</h1> <h2>1.1 為什麼要進行設備驗證?</h2> <ul> <li>設備驗證是指針對單一型號的設備,透過產生對應的設定檔來呈現設備相關功能的機制。</li> <li>經過驗證的設備顯示:TUTK正式授權此類設備使用Kalay App;此類設備已通過TUTK內部驗證測試,各項功能開通正常。</li> <li>經過驗證機制後,會在新增設備時呈現設備樣圖,可簡化使用者新增設備的流程,並且呈現與之對應的功能項,進而擁有更好的體驗。</li> </ul> <p>![選擇設備](<a href="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=94fd5c9f857c4e835479d180955f4345&amp;file=file.jpg">https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=94fd5c9f857c4e835479d180955f4345&amp;file=file.jpg</a> &quot;選擇設備&quot;)</p> <h2>1.2 如何申請設備驗證?</h2> <ul> <li>客戶需填寫並提供《Kalay2.0_Function Spec Fill In》 相關資料,以確認設備型號/相關功能等基本資訊。</li> <li>TUTK產生 Device Profile 設定文件,協助上傳至驗證伺服器,並提供certKey、profileVer等資料給客戶對接。</li> <li>設備完成相關協議對接,並提供測試樣機。</li> <li>TUTK驗證功能通過後,提請正式出貨使用。</li> </ul> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=2faf258f73e0c1909cce448f60f15316&amp;amp;file=file.jpg" alt="Kalay2.0對接基本流程" /></p> <h1>二、關於開發者模式</h1> <h2>2.1 在什麼情況下需要進入開發者模式?</h2> <ul> <li>在開發者模式下,Kalay App將開啟【log日誌輸出】功能,為技術檢查與問題分析,提供有效資訊。</li> <li>在開發者模式下,可支援【本機讀取Device Profile】文件,為開發和測試階段驗證裝置功能,提供除錯工具。</li> <li>在開發者模式下,可支援顯示【雲端儲存體驗券】入口,為開發和測試階段驗證雲端儲存功能,提供免費開通服務。</li> </ul> <h2>2.2 如何開啟/退出開發者模式?</h2> <ul> <li>開啟開發者模式:進入「我的」-「關於」頁面,快速點選4次Kalay圖示。</li> <li>退出開發者模式:基於已開啟的狀態,再次進入「我的」-「關於」頁面,快速點擊4次Kalay圖示即可。</li> </ul> <p>&gt; 備註:開發者模式可能會持續耗用手機內存,或影響App使用體驗,在正常使用情形下應避免開啟此模式。</p> <h2>2.3 如何取得log日誌?</h2> <ul> <li> <p>Android系統手機:進入「檔案管理」 - “Android”資料夾- “data”資料夾- “com.tutk.kalay”資料夾- “files”資料夾- “Log”資料夾- 找到對應時間的log .txt導出 <img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/78f948713595878c2ce16ad62e5ae6f6" alt="" /> <img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/94c87412a34296ac8f2c2bfed2174884" alt="" /></p> </li> <li>iOS系統手機:PC端安裝「iTools」工具 - 透過數據線連接PC端 - 點擊「應用程式」 - 找到「Kalay」應用程式的資料夾 - 進入「Log&quot;資料夾 - 找到對應時間的log.txt匯出 <img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/00aa364698d4f3beff3bd2585ae89dc7" alt="" /></li> </ul> <p>&lt;a id=&quot;2.4&quot;&gt;&lt;/a&gt;</p> <h2>2.4 如何在本機導入Device Profile檔?</h2> <p>&gt; 前提條件:確認App已開啟開發者模式。</p> <ul> <li> <p>Android系統手機:進入「檔案管理」 - “Android”資料夾 - “data”資料夾 - “com.tutk.kalay”資料夾 - “files”資料夾,然後將Device Profile檔案放入; <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c758665d049b8809edab1bcb21583f93&amp;amp;file=file.png" alt="" /></p> </li> <li> <p>iOS系統手機:PC端安裝「iTools」工具- 透過數據線連接PC端- 點擊「應用」 - “Kalay”應用程式- “Doucuments&quot;資料夾- “Files”資料夾,然後將Device Profile檔案放入; <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=69cfae056b7bf9fc1bcd14f97d4f94e9&amp;amp;file=file.png" alt="" /></p> </li> <li>成功放入Device Profile檔案後,重新啟動APP,並新增設備進行偵錯。</li> </ul> <h2>2.5 如何進行雲端儲存體驗券兌換?</h2> <p>&gt; 前提條件:僅在啟用開發者模式時,顯示體驗券兌換功能。</p> <ul> <li>從購買入口進入雲端服務頁 — 點選「我有體驗券」 — 輸入正確的體驗券兌換碼 — 點選「兌換」按鈕 — 兌換成功;</li> </ul> <p>![體驗券兌換](<a href="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=915a6e2efc19fded648fbcbd42d225dc&amp;file=file.png">https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=915a6e2efc19fded648fbcbd42d225dc&amp;file=file.png</a> &quot;體驗券兌換&quot;)</p> <h1>功能對接</h1> <h1>一、新增設備功能</h1> <h2>1.1 設備掃碼添加</h2> <h3>1.1.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “pairing mode” 設定為「iris」時,將採用設備掃碼新增方式。</li> <li>App端會跟IRIS伺服器建立一個連接,並等待IRIS回傳設備資訊。</li> <li>App端將連接和配網資訊產生二維碼,發給設備端。</li> <li>設備端聯網成功後,並將設備的相關資訊上傳給IRIS伺服器。</li> <li>IRIS伺服器將設備資訊回傳給App。</li> <li>App與設備進行連線並完成新增流程。</li> </ul> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/805f49c304795de765b5097601fa7cfc" alt="" /></p> <h3>1.1.2 App端實作</h3> <p>App讀取Device Profile中的 “pairing mode” 陣列如下:</p> <pre><code class="language-json">&amp;quot;pairing_mode&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;iris&amp;quot; } ]</code></pre> <p>App按以下Json格式產生QRCode:</p> <p><code>{&amp;quot;r&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;s&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;ss&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;p&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;re&amp;quot;:&amp;quot;&amp;quot;}</code></p> <table> <thead> <tr> <th style="text-align: left;">參數</th> <th style="text-align: left;">類型</th> <th style="text-align: left;">是否必須</th> <th>說明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">r</td> <td style="text-align: left;">string</td> <td style="text-align: left;">是</td> <td>realm,設備上傳資訊時需填入此參數</td> </tr> <tr> <td style="text-align: left;">s</td> <td style="text-align: left;">string</td> <td style="text-align: left;">是</td> <td>sessionId,設備上傳資訊時需填入此參數</td> </tr> <tr> <td style="text-align: left;">ss</td> <td style="text-align: left;">string</td> <td style="text-align: left;">是</td> <td>wifi ssid,設備需設定的wifi網路</td> </tr> <tr> <td style="text-align: left;">p</td> <td style="text-align: left;">string</td> <td style="text-align: left;">是</td> <td>wifi password,設備設定wifi網路的密碼</td> </tr> <tr> <td style="text-align: left;">re</td> <td style="text-align: left;">string</td> <td style="text-align: left;">是</td> <td>region,根據設備出貨的區域存取對應的iris伺服器 (參考不同區域的IRIS伺服器位址)</td> </tr> </tbody> </table> <p>&gt; 注意:App端對以上定義的參數的內容(例如:特殊字元、中文等)未做任何轉換處理。</p> <p>IRIS伺服器位址:</p> <table> <thead> <tr> <th style="text-align: left;">參數</th> <th style="text-align: left;">存取網域名稱</th> <th style="text-align: left;">說明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">cn</td> <td style="text-align: left;">cn-iris-tutk.kalay.net.cn</td> <td style="text-align: left;">中國大陸地區</td> </tr> <tr> <td style="text-align: left;">us</td> <td style="text-align: left;">us-iris-tutk.kalayservice.com</td> <td style="text-align: left;">北美地區(美國、加拿大)</td> </tr> <tr> <td style="text-align: left;">eu</td> <td style="text-align: left;">eu-iris-tutk.kalayservice.com</td> <td style="text-align: left;">歐洲地區</td> </tr> </tbody> </table> <p>&gt; 備註:目前iris分cn和us兩個區域,設備端需要依照Kalay APP指定的區域回報設備訊息,否則無法新增成功。</p> <p>&lt;a id=&quot;1.1.3&quot;&gt;&lt;/a&gt;</p> <h3>1.1.3 設備端實作</h3> <p>設備端解碼出QRCode內容後,請參考以下步驟完成對接流程:</p> <p>設備端讀取QRCode中的 &quot;ss&quot; 和 &quot;p&quot; 參數,將設備配置到該WiFi網路下。</p> <p>設備端讀取QRCode中的 &quot;r&quot;、&quot;s&quot; 和 &quot;re&quot; 參數,將參數帶入HTTP請求中,上傳給IRIS伺服器。</p> <p><strong>HTTP請求如下:</strong></p> <p><strong>請求URL:</strong></p> <ul> <li><a href="https://{iris_domain}/iris/api/v1/prevali/session/{sessionId}?realm={realm">https://{iris_domain}/iris/api/v1/prevali/session/{sessionId}?realm={realm</a>}</li> </ul> <p><strong>請求方式:</strong></p> <ul> <li>post</li> </ul> <p><strong>Request Headers:</strong></p> <ul> <li>Content-Type:application/json</li> </ul> <p><strong>Query Params:</strong></p> <table> <thead> <tr> <th style="text-align: left;">參數</th> <th style="text-align: left;">類型</th> <th style="text-align: left;">是否必須</th> <th style="text-align: left;">說明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">realm</td> <td style="text-align: left;">string</td> <td style="text-align: left;">是</td> <td style="text-align: left;">此處為取QRCode中的 &quot;r&quot; 參數。</td> </tr> <tr> <td style="text-align: left;">sessionId</td> <td style="text-align: left;">string</td> <td style="text-align: left;">是</td> <td style="text-align: left;">此處為取QRCode中的 &quot;s&quot; 參數。</td> </tr> </tbody> </table> <p><strong>Body</strong></p> <table> <thead> <tr> <th style="text-align: left;">參數</th> <th style="text-align: left;">類型</th> <th style="text-align: left;">是否必須</th> <th style="text-align: left;">說明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">secretData</td> <td style="text-align: left;">object</td> <td style="text-align: left;">是</td> <td style="text-align: left;">建議帶入credential 和 udid</td> </tr> <tr> <td style="text-align: left;">credential</td> <td style="text-align: left;">string</td> <td style="text-align: left;">是</td> <td style="text-align: left;">設備的credential</td> </tr> <tr> <td style="text-align: left;">udid</td> <td style="text-align: left;">string</td> <td style="text-align: left;">是</td> <td style="text-align: left;">設備的udid</td> </tr> </tbody> </table> <p><strong>credential產生方式如下:</strong></p> <ul> <li>例如設備的資訊如下:</li> </ul> <pre><code class="language-c">UID:UUUUUUUUUUUUUUUUUUUU, Authkey:00000000 Av account: admin Av passwd: 88888888</code></pre> <ul> <li>使用JSON格式組裝資訊:</li> </ul> <pre><code class="language-c">{ &amp;quot;av&amp;quot;: &amp;quot;88888888&amp;quot;, &amp;quot;ak&amp;quot;: &amp;quot;00000000&amp;quot;, // 如果沒有使用authkey,則不需此字段 &amp;quot;identity&amp;quot;: &amp;quot;admin&amp;quot; }</code></pre> <ul> <li>進行base64編碼產生credential:</li> </ul> <p>`ewoJ4oCcYXbigJ06IOKAnDg4ODg4ODg44oCdLAoJ4oCcYWvigJ06IOKAnDAwMDAwMDAw4oCdLAoJ4oCcaWRlbnRpdHnigJ06IOKAnGFWlu4oCdn0Wlu4oCdn0kb</p> <p>STEP3. 啟動P2P模組。</p> <p>關於設備端如何啟用P2P模組,請參考[#基于AVAPIs的家用摄像头开发-设备端](关于设备端如何启用P2P模块,请参考 #<a href="https://note.youdao.com/ynoteshare/index.html?id=ac272d611999a4764ece8df90b36e4cc&amp;type=note&amp;_time=1721805925210">https://note.youdao.com/ynoteshare/index.html?id=ac272d611999a4764ece8df90b36e4cc&amp;type=note&amp;_time=1721805925210</a> &quot;#基于AVAPIs的家用摄像头开发-设备端&quot;)</p> <h3>1.1.4 範例</h3> <ul> <li>App按以下Json格式產生QRCode:</li> </ul> <p><code>{&amp;quot;r&amp;quot;:&amp;quot;kalayapp-cn&amp;quot;,&amp;quot;s&amp;quot;:&amp;quot;579vca7h8wcj3g2wg1a9&amp;quot;,&amp;quot;ss&amp;quot;:&amp;quot;TUTK-GUEST&amp;quot;,&amp;quot;p&amp;quot;:&amp;quot;hshhs&amp;quot;,&amp;quot;re&amp;quot;:&amp;quot;cn&amp;quot;}</code></p> <ul> <li>最終設備上傳給IRIS伺服器的資訊為:</li> </ul> <p><strong>請求URL:</strong></p> <ul> <li>post:<a href="https://cn-iris-tutk.kalay.net.cn/iris/api/v1/prevali/session/579vca7h8wcj3g2wg1a9?realm=kalayapp-cn">https://cn-iris-tutk.kalay.net.cn/iris/api/v1/prevali/session/579vca7h8wcj3g2wg1a9?realm=kalayapp-cn</a></li> </ul> <p><strong>Request Headers:</strong></p> <ul> <li>Content-Type:application/json</li> </ul> <p><strong>Body:</strong></p> <pre><code class="language-json">{ &amp;quot;secretData&amp;quot;:{ &amp;quot;credential&amp;quot;:&amp;quot;ewoJ4oCcYXbigJ06IOKAnDg4ODg4ODg44oCdLAoJ4oCcYWvigJ06IOKAnDAwMDAwMDAw4oCdLAoJ4oCcaWRlbnRpdHnigJ06IOKAnGFkbWlu4oCdCn0=&amp;quot;, &amp;quot;udid&amp;quot;:&amp;quot;UUUUUUUUUUUUUUUUUUUU&amp;quot; } } </code></pre> <h2>1.2 快速配網添加</h2> <h3>1.2.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “pairing mode” 設定為「ap」時,將採用快速配網新增方式。</li> <li>此方式需要設備支援開啟AP熱點設定模式,並對接相關協定。</li> <li>Kalay APP先至系統WIFI頁面成功連接至設備的AP熱點,然後呼叫Lan Search介面搜尋在該AP熱點網路下的設備UID資訊;</li> <li>透過使用者手動輸入的設備密碼,連接該設備;</li> <li>成功連接設備後,需要使用者手動選擇的WIFI和輸入的密碼,將WIFI及密碼訊息傳送給設備進行網路設定。</li> </ul> <p>關於App端如何呼叫Lan Search接口,可參考 [#基于IOTCAPIs的局域网设备搜索](<a href="https://note.youdao.com/ynoteshare/index.html?id=10697362dd57d388e4598e96995ef642&amp;type=note&amp;_time=1721806255069">https://note.youdao.com/ynoteshare/index.html?id=10697362dd57d388e4598e96995ef642&amp;type=note&amp;_time=1721806255069</a> &quot;#基于IOTCAPIs的局域网设备搜索&quot;)</p> <h3>1.2.2 App端實作</h3> <p>App讀取Device Profile中的 “pairing mode” 陣列如下:</p> <pre><code class="language-json">&amp;quot;pairing_mode&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;ap&amp;quot; } ]</code></pre> <p>App發送如下IO Command設定設備的WiFi網路:</p> <p><code>IOTYPE_USER_IPCAM_SETWIFI_REQ = 0x0342;</code></p> <p><code>IOTYPE_USER_IPCAM_SETWIFI_REQ2 = 0x0346;</code></p> <p>&gt; 其中0x0346 支援64bit密碼,與IOTYPE_USER_IPCAM_SETWIFI_REQ = 0x0342一起傳送。</p> <p>&lt;a id=&quot;1.2.3&quot;&gt;&lt;/a&gt;</p> <h3>1.2.3 設備端實作</h3> <p>設備需回應如下IO Command表示設定結果:</p> <p><code>IOTYPE_USER_IPCAM_SETWIFI_RESP = 0x0343;</code></p> <p><code>IOTYPE_USER_IPCAM_GETWIFI_RESP2 = 0x0347;</code></p> <p>&gt; 其中0x0347 支援64bit密碼,裝置依實際情況選擇回應 0x0343 或 0x0347。</p> <h3>1.2.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>1.3 設備已連網新增</h2> <h3>1.3.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “pairing mode” 設定為「qrcode」時,將採用設備已連網新增方式。</li> <li>此方式需確保設備已接取網路線,或已設定WLAN網絡,並對接相關協定。</li> <li>Kalay APP先啟用掃碼功能,掃描並辨識設備的二維碼內容;</li> <li>透過掃碼取得的設備UDID和密碼,連接該設備;</li> <li>成功連接設備後,新增至伺服器。</li> </ul> <h3>1.3.2 App端實作</h3> <p>App讀取Device Profile中的 “pairing mode” 陣列如下:</p> <pre><code class="language-json">&amp;quot;pairing_mode&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;qrcode&amp;quot; } ]</code></pre> <p>&lt;a id=&quot;1.3.3&quot;&gt;&lt;/a&gt;</p> <h3>1.3.3 設備端實作</h3> <p>無</p> <h3>1.3.4 範例</h3> <p>無</p> <h2>1.4 多種配網新增方式</h2> <h3>1.4.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “pairing mode” 設定多個值時,將可支援多種配網方式。</li> <li>此設定需要確保設備可支援對應的配網方式,並對接相關協定。</li> <li>Kalay APP依據 “pairing mode” 設定值,顯示選擇配網方式頁面。</li> <li>透過使用者手動選擇配網方式,走不同的新增流程。</li> </ul> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a714b9e81d66716984ed4b543c9d5b38&amp;amp;file=file.png" alt="" /></p> <h3>1.4.2 App端實作</h3> <p>App讀取Device Profile中的 “pairing mode” 陣列如下:</p> <pre><code class="language-json">&amp;quot;pairing_mode&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;ap&amp;quot; }, { &amp;quot;flag&amp;quot;: &amp;quot;qrcode&amp;quot; }, { &amp;quot;flag&amp;quot;: &amp;quot;iris&amp;quot; } ]</code></pre> <p>App依照已讀取的 “pairing mode” 順序顯示配網方式。</p> <h3>1.4.3 設備端實作</h3> <p>如需支援 設備掃碼添加,請參考 [1.1.3 設備端實作][1.1.3]。</p> <p>如需支援 快速配網添加,請參考 [1.2.3 設備端實作][1.2.3]。</p> <p>如需支援 設備已連網新增,請參考 [1.3.3 設備端實作][1.3.3]。</p> <h3>1.4.4 範例</h3> <p>無</p> <h2>1.5 驗證設備檢查</h2> <h3>1.5.1 對接說明</h3> <ul> <li>正式啟用功能時,Device Profile設定檔需上傳至驗證伺服器,並通過TUTK測試驗證。</li> <li>非正式啟用/測試功能:可在開發者模式下,匯入Device Profile檔案並進行本機偵錯。([如何導入?][2.4])</li> <li>在對接開始前,TUTK將提供certKey及profileVer(fw_ver)訊息,請進行保存使用。</li> </ul> <h3>1.5.2 App端實作</h3> <p>App發送如下IO Command詢問設備的certKey及profileVer資訊:</p> <p><code>IOTYPE_USER_IPCAM_GET_PROFILE_REQ = 0x9014;</code></p> <h3>1.5.3 設備端實作</h3> <p>設備需回應如下IO Command告知certKey及profileVer資訊:</p> <p><code>IOTYPE_USER_IPCAM_GET_PROFILE_RESP = 0x9015;</code></p> <h3>1.5.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h1>二、設備設定功能</h1> <h2>2.1 修改設備名稱</h2> <h3>2.1.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “group1” 陣列中包含 &quot;flag&quot;: &quot;set_name&quot; 設定時,將判定為該設備支援修改名稱功能。</li> <li>根據此結果,終端用戶可在App上點選修改設備名稱。</li> </ul> <h3>2.1.2 App端實作</h3> <p>App讀取Device Profile中的 “group1” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group1&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_name&amp;quot; } ]</code></pre> <p>App呼叫介面更新伺服器中已儲存的設備名稱,並非透過IO Command形式同步給設備。</p> <h3>2.1.3 設備端實作</h3> <p>無</p> <h3>2.1.4 範例</h3> <p>無</p> <h2>2.2 更改密碼</h2> <h3>2.2.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “group1” 陣列中包含 &quot;flag&quot;: &quot;set_password&quot; 設定時,將判定為該設備支援變更密碼功能。</li> <li>根據此結果,終端用戶可在App上點選更改設備密碼。</li> </ul> <h3>2.2.2 App端實作</h3> <p>App讀取Device Profile中的 “group1” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group1&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_password&amp;quot; } ]</code></pre> <p>App發送如下IO Command設定設備的密碼:</p> <p><code>IOTYPE_USER_IPCAM_SETPASSWORD_REQ = 0x0332;</code></p> <h3>2.2.3 設備端實作</h3> <p>設備需回應如下IO Command告知設定結果:</p> <p><code>IOTYPE_USER_IPCAM_SETPASSWORD_RESP = 0x0333;</code></p> <h3>2.2.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>2.3 網路設置</h2> <h3>2.3.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “group1” 陣列中包含 &quot;flag&quot;: &quot;set_wifi&quot; 設定時,將判定為該設備支援網路設定功能。</li> <li>根據此結果,終端用戶可在App上點選更改網路設定。</li> </ul> <h3>2.3.2 App端實作</h3> <p>App讀取Device Profile中的 “group1” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group1&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_wifi&amp;quot; } ]</code></pre> <p>App發送如下IO Command詢問設備目前的WIFI網路:</p> <p><code>IOTYPE_USER_IPCAM_GETWIFI_REQ = 0x0344;</code></p> <p>App發送如下IO Command詢問設備周圍的WIFI清單:</p> <p><code>IOTYPE_USER_IPCAM_LISTWIFIAP_REQ = 0x0340;</code></p> <p>App發送如下IO Command設定設備的WIFI網路:</p> <p><code>IOTYPE_USER_IPCAM_SETWIFI_REQ2 = 0x0346;</code></p> <h3>2.3.3 設備端實作</h3> <p>設備需回應如下IO Command告知目前設定的WIFI網路:</p> <p><code>IOTYPE_USER_IPCAM_GETWIFI_RESP = 0x0345;</code></p> <p>設備需回應如下IO Command告知周圍的WIFI清單:</p> <p><code>IOTYPE_USER_IPCAM_LISTWIFIAP_RESP = 0x0341;</code></p> <p>設備需回應如下IO Command告知週WIFI網路設定結果:</p> <p><code>IOTYPE_USER_IPCAM_GETWIFI_RESP2 = 0x0347;</code></p> <h3>2.3.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>2.4 分辨率</h2> <h3>2.4.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “group1” 陣列中包含 &quot;flag&quot;: &quot;set_stream_ctrl&quot; 設定時,將判定為該設備支援解析度設定功能。</li> <li>根據此結果,終端用戶可在App上點選更改解析度設定。</li> </ul> <h3>2.4.2 App端實作</h3> <p>App讀取Device Profile中的 “group1” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group1&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_stream_ctrl&amp;quot; } ]</code></pre> <p>App發送如下IO Command詢問設備目前的解析度:</p> <p><code>IOTYPE_USER_IPCAM_GETSTREAMCTRL_REQ = 0x0322;</code></p> <p>App發送如下IO Command設定設備的解析度:</p> <p><code>IOTYPE_USER_IPCAM_SETSTREAMCTRL_REQ = 0x0320;</code></p> <h3>2.4.3 設備端實作</h3> <p>設備需回應如下IO Command告知目前設備的解析度:</p> <p><code>IOTYPE_USER_IPCAM_GETSTREAMCTRL_RESP = 0x0323;</code></p> <p>設備需回應如下IO Command告知設定結果:</p> <p><code>IOTYPE_USER_IPCAM_SETSTREAMCTRL_RESP = 0x0321;</code></p> <h3>2.4.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>2.5 畫面設置</h2> <h3>2.5.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “group1” 陣列中包含 &quot;flag&quot;: &quot;set_video_mode&quot; 設定時,將判定為該設備支援畫面設定功能。</li> <li>根據此結果,終端用戶可在App上點選更改畫面設定。</li> </ul> <h3>2.5.2 App端實作</h3> <p>App讀取Device Profile中的 “group1” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group1&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_video_mode&amp;quot; } ]</code></pre> <p>App發送如下IO Command詢問設備目前的鏡像/翻轉狀態:</p> <p><code>IOTYPE_USER_IPCAM_GET_VIDEOMODE_REQ = 0x0372;</code></p> <p>App發送如下IO Command設定設備的鏡像/翻轉效果:</p> <p><code>IOTYPE_USER_IPCAM_SET_VIDEOMODE_REQ = 0x0370;</code></p> <h3>2.5.3 設備端實作</h3> <p>設備需回應如下IO Command告知目前設備的鏡像/翻轉狀態:</p> <p><code>IOTYPE_USER_IPCAM_GET_VIDEOMODE_RESP = 0x0373;</code></p> <p>設備需回應如下IO Command告知設定結果:</p> <p><code>IOTYPE_USER_IPCAM_SET_VIDEOMODE_RESP = 0x0371;</code></p> <h3>2.5.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>2.6 時間設定</h2> <h3>2.6.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “group1” 陣列中包含 &quot;flag&quot;: &quot;set_timezone&quot; 設定時,將判定為該設備支援同步時間和時區設定功能。</li> <li>根據此結果,終端用戶可在App上點選時間設定。</li> </ul> <h3>2.6.2 App端實作</h3> <p>App讀取Device Profile中的 “group1” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group1&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_timezone&amp;quot; } ]</code></pre> <p>App發送如下IO Command詢問設備目前的時區:</p> <p><code>IOTYPE_USER_IPCAM_GET_TIME_ZONE_REQ = 0x904A;</code></p> <p>App發送如下IO Command設定設備的時區:</p> <p><code>IOTYPE_USER_IPCAM_SET_TIME_ZONE_REQ = 0x904C;</code></p> <h3>2.6.3 設備端實作</h3> <p>設備需回應如下IO Command告知目前時區:</p> <p><code>IOTYPE_USER_IPCAM_GET_TIME_ZONE_RESP = 0x904B;</code></p> <p>設備需回應如下IO Command告知設定結果:</p> <p><code>IOTYPE_USER_IPCAM_SET_TIME_ZONE_RESP = 0x904D;</code></p> <h3>2.6.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>2.7 休眠設置</h2> <h3>2.7.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “group1” 陣列中包含 &quot;flag&quot;: &quot;set_sleep&quot; 設定時,將判定為該設備支援休眠設定功能。</li> <li>根據此結果,終端用戶可在App上點選休眠設定。</li> </ul> <h3>2.7.2 App端實作</h3> <p>App讀取Device Profile中的 “group1” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group1&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_sleep&amp;quot; } ]</code></pre> <p>App傳送如下IO Command詢問裝置目前的休眠狀態:</p> <p><code>IOTYPE_USER_IPCAM_GET_DORMANCY_REQ = 0x9046;</code></p> <p>App傳送如下IO Command設定裝置的休眠狀態:</p> <p><code>IOTYPE_USER_IPCAM_SET_DORMANCY_REQ = 0x9048;</code></p> <h3>2.7.3 設備端實作</h3> <p>設備需回應如下IO Command告知目前的休眠狀態:</p> <p><code>IOTYPE_USER_IPCAM_GET_DORMANCY_RESP = 0x9047;</code></p> <p>設備需回應如下IO Command告知設定結果:</p> <p><code>IOTYPE_USER_IPCAM_SET_DORMANCY_RESP = 0x9049;</code></p> <p>&gt; 備註:1.設備休眠狀態為「開啟」時,表示常休眠狀態;2.定時休眠開啟時,設備會依計畫執行休眠。 3.當設備進入休眠狀態時,建議應關閉鏡頭和麥克風等功能,停止進行SD卡錄影和雲端錄影功能。</p> <h3>2.7.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>2.8 設備訊息</h2> <h3>2.8.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “group1” 陣列中包含 &quot;flag&quot;: &quot;set_ota_info&quot; 設定時,將判定為該設備支援查詢設備資訊功能。</li> <li>根據此結果,終端用戶可在App上查詢設備資訊。</li> </ul> <p>&gt; 備註:因設備資訊與OTA升級在同一頁面呈現,故此處使用相同的 &quot;flag&quot;: &quot;set_ota_info&quot; 設定。</p> <h3>2.8.2 App端實作</h3> <p>App讀取Device Profile中的 “group1” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group1&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_ota_info&amp;quot; } ]</code></pre> <p>App發送如下IO Command詢問設備的vendor/product/model等資訊:</p> <p><code>IOTYPE_USER_IPCAM_DEVICE_INFO_REQ = 0x8015;</code></p> <h3>2.8.3 設備端實作</h3> <p>設備需回應如下IO Command告知相關資訊:</p> <p><code>IOTYPE_USER_IPCAM_DEVICE_INFO_RESP = 0x8016;</code></p> <p>&gt; 備註:歷史遺留問題導致,原則上應使用“vendor”而非“vender”,暫無法糾正。</p> <h3>2.8.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>2.9 OTA升級</h2> <h3>2.9.1 對接說明</h3> <ul> <li> <p>實施此功能前,請確保已成功開啟我司OTA升級服務,且在OTA伺服器後台正確設定/上傳最新的韌體。 ([如何開啟與設定?](<a href="https://note.youdao.com/ynoteshare/index.html?id=5c3872ac51912092fdf0c46d93424138">https://note.youdao.com/ynoteshare/index.html?id=5c3872ac51912092fdf0c46d93424138</a> &quot;如何開啟與設定?&quot;))</p> </li> <li>在Kalay APP上,當取得的Device Profile 中 “group1” 陣列中包含 &quot;flag&quot;: &quot;set_ota_info&quot; 設定時,將判定為該設備支援OTA升級功能。</li> <li> <p>根據此結果,終端用戶可在App上點選韌體升級。</p> </li> <li>Kalay APP發送IO Command,用於詢問設備的資訊。</li> <li>根據裝置回覆的結果,取得相關參數,並拼接API請求,向伺服器取得OTA升級檔案的下載位址。</li> <li>Kalay APP成功向伺服器取得至下載位址時,將該位址透過IO Command回傳給設備。</li> <li>設備需依據下載位址,取得升級文件,並完成韌體升級。</li> <li>在設備進行下載和升級的過程中,Kalay APP將每隔1s向設備發送IO Command,以確認設備的升級進度。</li> </ul> <p>&gt; 備註:如果設備位於中國大陸地區,因防火牆限制,將無法正常存取海外OTA伺服器。故請正確區分設備出貨環境,向指定的OTA伺服器進行請求,以免設備取得升級檔案失敗。</p> <h3>2.9.2 App端實作</h3> <p>App讀取Device Profile中的 “group1” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group1&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_ota_info&amp;quot; } ]</code></pre> <p>App發送如下IO Command詢問設備的資訊:</p> <p><code>IOTYPE_USER_IPCAM_DEVICE_INFO_REQ = 0x8015;</code></p> <p>App根據設備資訊拼接API請求:</p> <p><code>https://{ota_domain}/ota/GET/i/{vendor}/{product}/{model}</code></p> <p>App傳送如下IO Command將下載URL回傳給設備端:</p> <p><code>IOTYPE_USER_IPCAM_OTA_REQ = 0x8001;</code></p> <p>App依據如下IO Command顯示目前設備的升級進度:</p> <p><code>IOTYPE_USER_IPCAM_OTA_RESP = 0x8002;</code></p> <h3>2.9.3 設備端實作</h3> <p>設備需回應如下IO Command告知vendor/product/model等資訊:</p> <p><code>IOTYPE_USER_IPCAM_DEVICE_INFO_RESP = 0x8016;</code></p> <p>&gt; 附註:以上參數用於拼接向KOTA伺服器取得升級檔案的下載位址請求,故需與在KOTA伺服器上建立的vendor,product,model等資訊保持一致,且注意區分設備所在區域。</p> <p>設備需依據以下IO Command取得升級檔案的下載位址:</p> <p><code>IOTYPE_USER_IPCAM_OTA_REQ = 0x8001;</code></p> <p>設備需回應如下IO Command告知目前升級進度:</p> <p><code>IOTYPE_USER_IPCAM_OTA_RESP = 0x8002;</code></p> <h3>2.9.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>2.10 智能偵測</h2> <h3>2.10.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “group2” 陣列中包含 &quot;flag&quot;: &quot;set_intelligent_detect&quot; 設定時,將判定為該設備支援智能偵測設定功能。</li> <li> <p>根據此結果,終端用戶可在App上點選智能偵測。</p> </li> <li>在Kalay APP上,當裝設備支援智能偵測設定功能時,再根據Device Profile 中 「group4」 陣列中包含的詳細設定,顯示不同的偵測類型和設定功能。</li> <li>根據此結果,終端使用者可在App上設定移動偵測、人形偵測、哭聲偵測、寵物偵測 和/或 跌倒偵測等多種狀態。</li> </ul> <h3>2.10.2 App端實作</h3> <p>App讀取Device Profile中的 “group2” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group2&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_intelligent_detect&amp;quot; } ]</code></pre> <p>App讀取Device Profile中的 “group4” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group4&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_motion_detect&amp;quot; }, { &amp;quot;flag&amp;quot;: &amp;quot;set_humanoid_detect&amp;quot; }, { &amp;quot;flag&amp;quot;: &amp;quot;set_cry_detect&amp;quot; }, { &amp;quot;flag&amp;quot;: &amp;quot;set_pet_detect&amp;quot; }, { &amp;quot;flag&amp;quot;: &amp;quot;set_fall_detect&amp;quot; } ]</code></pre> <p>App發送如下IO Command詢問裝置的智能偵測設定狀態:</p> <p><code>IOTYPE_USER_IPCAM_GET_INTELLIGENT_DETECTION_REQ = 0x9042;</code></p> <p>App傳送如下IO Command設定裝置的智能偵測狀態:</p> <p><code>IOTYPE_USER_IPCAM_SET_INTELLIGENT_DETECTION_REQ = 0x9044;</code></p> <h3>2.10.3 設備端實作</h3> <p>設備需回應如下IO Command告知其智能偵測的設定狀態:</p> <p><code>IOTYPE_USER_IPCAM_GET_INTELLIGENT_DETECTION_RESP = 0x9043;</code></p> <p>設備需回應如下IO Command告知智能偵測的設定結果:</p> <p><code>IOTYPE_USER_IPCAM_SET_INTELLIGENT_DETECTION_RESP = 0x9045;</code></p> <h3>2.10.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>2.11 SD卡設置</h2> <h3>2.11.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “group2” 陣列中包含 &quot;flag&quot;: &quot;set_sd_info&quot; 設定時,將判定為該設備支援SD卡查詢和設定功能。</li> <li>根據此結果,終端用戶可在App上點選SD卡設定。</li> <li>在SD卡設定中,包含SD卡錄影模式設定 和 SD卡資訊/格式化 的功能。</li> </ul> <h3>2.11.2 App端實作</h3> <p>App讀取Device Profile中的 “group2” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group2&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_sd_info&amp;quot; } ]</code></pre> <p>App發送如下IO Command詢問設備的SD卡錄影模式:</p> <p><code>IOTYPE_USER_IPCAM_GETRECORD_REQ = 0x0312;</code></p> <p>App發送如下IO Command設定設備的SD卡錄影模式:</p> <p><code>IOTYPE_USER_IPCAM_SETRECORD_REQ = 0x0310;</code></p> <p>App發送如下IO Command詢問設備的SD卡資訊:</p> <p><code>IOTYPE_USER_IPCAM_DEVICE_INFO_REQ = 0x8015;</code></p> <p>&gt; 備註:因取得設備資訊的IO Command有包含SD卡資訊的相關參數,故此處直接使用上述設備資訊IO Command的回覆結果。</p> <p>App發送如下IO Command詢問設備的SD卡的掛載狀態:</p> <p><code>IOTYPE_USER_IPCAM_SDINFO_REQ = 0x9034;</code></p> <p>App傳送如下IO Command進行設備的SD卡格式化:</p> <p><code>IOTYPE_USER_IPCAM_FORMATEXTSTORAGE_REQ = 0x0380;</code></p> <h3>2.11.3 設備端實作</h3> <p>設備需回應如下IO Command告知其錄影模式的設定狀態:</p> <p><code>IOTYPE_USER_IPCAM_GETRECORD_RESP = 0x0313;</code></p> <p>設備需回應如下IO Command告知其錄影模式的設定結果:</p> <p><code>IOTYPE_USER_IPCAM_SETRECORD_RESP = 0x0311;</code></p> <p>設備需回應如下IO Command告知其SD卡的資訊:</p> <p><code>IOTYPE_USER_IPCAM_DEVICE_INFO_RESP = 0x8016;</code></p> <p>&gt; 備註:因前述的取得設備資訊的IO Command有包含SD卡資訊的相關參數,故此處直接使用上述設備資訊IO Command的回覆結果。</p> <p>設備需回應如下IO Command告知其SD卡的掛載狀態:</p> <p><code>IOTYPE_USER_IPCAM_SDINFO_RESP = 0x9035;</code></p> <p>設備需回應如下IO Command告知其SD卡的格式化結果:</p> <p><code>IOTYPE_USER_IPCAM_FORMATEXTSTORAGE_RESP = 0x0381;</code></p> <h3>2.11.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>2.12 雲端儲存設置</h2> <h3>2.12.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “group2” 陣列中包含 &quot;flag&quot;: &quot;set_cloud_setting&quot; 設定時,將判定為該設備支援雲端儲存設定功能。</li> <li> <p>根據此結果,終端用戶可在App上點選雲端儲存設定。</p> </li> <li>Kalay APP發送IO Command,用於詢問該設備雲端儲存推流功能的啟動狀態。</li> <li> <p>根據設備回覆的結果,顯示不同的開關狀態。</p> </li> <li>Kalay APP發送IO Command,用於設定開啟/關閉設備的雲端儲存推流功能。</li> <li>設備在接收設定開啟的指令時,根據VSaaS Info的資訊向指定伺服器要求取流。</li> <li>設備在接收到設定關閉的指令時,停止向伺服器推流。</li> </ul> <h3>2.12.2 App端實作</h3> <p>App讀取Device Profile中的 “group2” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group2&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_cloud_setting&amp;quot; } ]</code></pre> <p>App發送如下IO Command詢問設備的雲端儲存開關狀態:</p> <p><code>IOTYPE_USER_IPCAM_DEVICE_GET_CLOUD_REQ = 0x8012;</code></p> <p>App傳送如下IO Command設定開啟/關閉設備的雲端儲存功能:</p> <p><code>IOTYPE_USER_IPCAM_DEVICE_SET_CLOUD_REQ = 0x8010;</code></p> <h3>2.12.3 設備端實作</h3> <p>設備需回應如下IO Command告知目前雲端儲存的開關狀態:</p> <p><code>IOTYPE_USER_IPCAM_DEVICE_GET_CLOUD_RESP = 0x8013;</code></p> <p>設備需回應如下IO Command告知目前雲端儲存的開關設定結果:</p> <p><code>IOTYPE_USER_IPCAM_DEVICE_SET_CLOUD_RESP = 0x8011;</code></p> <h3>2.12.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>2.13 夜視</h2> <h3>2.13.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “group2” 陣列中包含 &quot;flag&quot;: &quot;set_night_vision&quot; 設定時,判定為該設備支援夜視設定功能。</li> <li>根據此結果,終端用戶可在App上點選夜視。</li> </ul> <h3>2.13.2 App端實作</h3> <p>App讀取Device Profile中的 “group2” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group2&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_night_vision&amp;quot; } ]</code></pre> <p>App發送如下IO Command詢問設備的夜視設定狀態:</p> <p><code>IOTYPE_USER_IPCAM_GET_NIGHTVISION_REQ = 0x9006;</code></p> <p>App傳送如下IO Command設定設備的夜視狀態:</p> <p><code>IOTYPE_USER_IPCAM_SET_NIGHTVISION_REQ = 0x9008;</code></p> <h3>2.13.3 設備端實作</h3> <p>設備需回應如下IO Command告知目前夜視的設定狀態:</p> <p><code>IOTYPE_USER_IPCAM_GET_NIGHTVISION_RESP = 0x9007;</code></p> <p>設備需回應如下IO Command告知目前夜視的設定結果:</p> <p><code>IOTYPE_USER_IPCAM_SET_NIGHTVISION_RESP = 0x9009;</code></p> <h3>2.13.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>2.14 移動追蹤</h2> <h3>2.14.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “group2” 陣列中包含 &quot;flag&quot;: &quot;set_motion_tracking&quot; 設定時,將判定為該設備支援移動追蹤設定功能。</li> <li> <p>根據此結果,終端用戶可在App上點選移動追蹤。</p> </li> <li>在Kalay APP上,當設備支援移動追蹤設定功能時,再根據Device Profile 中 「group5」 陣列中包含的詳細設定,顯示不同的追蹤類型和設定功能。</li> <li>根據此結果,終端用戶可在App上設定物體追蹤、人形追蹤 和/或 聽音辨位等多種狀態。</li> </ul> <h3>2.14.2 App端實作</h3> <p>App讀取Device Profile中的 “group2” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group2&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_motion_tracking&amp;quot; } ]</code></pre> <p>App讀取Device Profile中的 “group5” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group5&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_object_trace&amp;quot; }, { &amp;quot;flag&amp;quot;: &amp;quot;set_human_trace&amp;quot; }, { &amp;quot;flag&amp;quot;: &amp;quot;set_audio_trace&amp;quot; } ]</code></pre> <p>App傳送如下IO Command詢問裝置的移動追蹤設定狀態:</p> <p><code>IOTYPE_USER_IPCAM_GET_INTELLIGENT_DETECTION_REQ = 0x9042;</code></p> <p>App傳送如下IO Command設定裝置的移動追蹤狀態:</p> <p><code>IOTYPE_USER_IPCAM_SET_INTELLIGENT_DETECTION_REQ = 0x9044;</code></p> <h3>2.14.3 設備端實作</h3> <p>設備需回應如下IO Command告知目前移動追蹤的設定狀態:</p> <p><code>IOTYPE_USER_IPCAM_GET_INTELLIGENT_DETECTION_RESP = 0x9043;</code></p> <p>設備需回應如下IO Command告知目前移動追蹤的設定結果:</p> <p><code>IOTYPE_USER_IPCAM_SET_INTELLIGENT_DETECTION_RESP = 0x9045;</code></p> <h3>2.14.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>2.15 指示燈</h2> <h3>2.15.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “group2” 陣列中包含 &quot;flag&quot;: &quot;set_pilot_lamp&quot; 設定時,將判定為該設備支援指示燈開關設定功能。</li> <li>根據此結果,終端用戶可在App上點選指示燈開關。</li> </ul> <h3>2.15.2 App端實作</h3> <p>App讀取Device Profile中的 “group2” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group2&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_pilot_lamp&amp;quot; } ]</code></pre> <p>App發送如下IO Command詢問設備的指示燈開關狀態:</p> <p><code>IOTYPE_USER_IPCAM_GET_PILOT_LAMP_REQ = 0x903C;</code></p> <p>App發送如下IO Command設定設備的指示燈狀態:</p> <p><code>IOTYPE_USER_IPCAM_SET_PILOT_LAMP_REQ = 0x903E;</code></p> <h3>2.15.3 設備端實作</h3> <p>設備需回應如下IO Command告知目前指示燈開關狀態:</p> <p><code>IOTYPE_USER_IPCAM_GET_PILOT_LAMP_RESP = 0x903D;</code></p> <p>設備需回應如下IO Command告知目前指示燈的設定結果:</p> <p><code>IOTYPE_USER_IPCAM_SET_PILOT_LAMP_RESP = 0x903F;</code></p> <h3>2.15.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>2.16 重啟設備</h2> <h3>2.16.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “group3” 陣列中包含 &quot;flag&quot;: &quot;reset&quot; 設定時,將判定為該設備支援重新啟動功能。</li> <li>根據此結果,終端用戶可在App上點選重啟。</li> </ul> <p>&gt; 備註:重新啟動設備通常不會將設備恢復原廠設定;在設備重新啟動的過程中,可能會中斷連線。</p> <h3>2.16.2 App端實作</h3> <p>App讀取Device Profile中的 “group3” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group3&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;reset&amp;quot; } ]</code></pre> <p>App發送如下IO Command請求重新啟動設備:</p> <p><code>IOTYPE_USER_IPCAM_SET_RESTART_REQ = 0x9040;</code></p> <h3>2.16.3 設備端實作</h3> <p>設備需回應如下IO Command告知重新啟動結果:</p> <p><code>IOTYPE_USER_IPCAM_SET_RESTART_RESP = 0x9041;</code></p> <p>&gt; 備註:此結果應該在設備完成重啟後發送;在設備重新啟動的過程中,可能會斷開連線。</p> <h3>2.16.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>2.17 取得多種設定狀態</h2> <h3>2.17.1 對接說明</h3> <ul> <li>在Kalay APP上,可透過呼叫一個IO Command,實現同時取得多種設備設定功能的狀態。</li> <li>設備在接收相關指令時,需依照 &quot;SMsgCommandTask&quot; 陣列要求傳回對應的狀態結果。</li> </ul> <h3>2.17.2 App端實作</h3> <p>App發送如下IO Command詢問設備多種設定功能的目前狀態:</p> <p><code>IOTYPE_USER_IPCAM_GET_ALL_STATE_REQ = 0x904E;</code></p> <h3>2.17.3 設備端實作</h3> <p>設備端依照 &quot;SMsgCommandTask&quot; 陣列要求,回覆對應的IO Command即可。</p> <p>&gt; 備註:詳細回覆的IO Command 對應 # 二、設備設定功能 中任何一條 或 多條 設備指令,具體的內容以設備對接的功能項目為準。</p> <h3>2.17.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h1>三、SD卡重播功能</h1> <h2>3.1 取得SD卡事件列表</h2> <h3>3.1.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “liveview” 陣列中包含 &quot;flag&quot;: &quot;sd_event&quot; 設定時,將判定為該設備支援SD卡錄影查詢功能。</li> <li>根據此結果,終端用戶可在App上查詢SD卡中儲存的事件,並進行回放。</li> </ul> <h3>3.1.2 App端實作</h3> <p>App讀取Device Profile中的 “liveview” 陣列如下:</p> <pre><code class="language-json">&amp;quot;liveview&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;sd_event&amp;quot; } ]</code></pre> <p>App發送如下IO Command詢問設備的SD卡事件清單:</p> <p><code>IOTYPE_USER_IPCAM_LISTEVENT_REQ = 0x0318;</code></p> <h3>3.1.3 設備端實作</h3> <p>設備需回應如下IO Command回傳SD卡事件清單:</p> <p><code>IOTYPE_USER_IPCAM_LISTEVENT_RESP = 0x0319;</code></p> <h3>3.1.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>3.2 SD卡事件回放</h2> <h3>3.2.1 對接說明</h3> <ul> <li>在Kalay APP上,根據前述所取得的SD卡事件清單中,所回應的 &quot;STimeDay stTimeDay&quot; 參數,向設備要求對應時間的SD卡事件進行播放。</li> <li>設備應在指定通道傳回對應的事件內容。</li> <li>在Kalay APP上,播放控制將由ijK player處理。</li> </ul> <h3>3.2.2 App端實作</h3> <p>App發送如下IO Command請求播放指定的某個SD卡事件:</p> <p><code>IOTYPE_USER_IPCAM_RECORD_PLAYCONTROL_REQ = 0x031A;</code></p> <p>&gt; 備註:在回放模式下,&quot;downloadFlag&quot;參數 將設定為 &quot;0:回放模式&quot;,設備需依照音訊串流的方式傳送SD卡事件內容。</p> <h3>3.2.3 設備端實作</h3> <p>設備需回應如下IO Command回傳播放結果:</p> <p><code>IOTYPE_USER_IPCAM_RECORD_PLAYCONTROL_RESP = 0x031B;</code></p> <p>關於設備端如何實施SD卡事件回放功能,請參考[#基于AVAPIs的事件回放[下载]流程](<a href="https://note.youdao.com/ynoteshare/index.html?id=5df4743d83ea31fcc3afa6a073c11316&amp;type=note&amp;_time=1721806295857">https://note.youdao.com/ynoteshare/index.html?id=5df4743d83ea31fcc3afa6a073c11316&amp;type=note&amp;_time=1721806295857</a> &quot;#基于AVAPIs的事件回放[下载]流程&quot;)</p> <h3>3.2.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h2>3.3 SD卡事件下載</h2> <h3>3.3.1 對接說明</h3> <ul> <li>在Kalay APP上,根據前述取得的SD卡事件清單中,所回應的 &quot;STimeDay stTimeDay&quot; 參數,發送IO Command向設備請求對應時間的SD卡事件進行下載。</li> <li>設備應在指定通道傳回對應的事件內容。</li> </ul> <h3>3.3.2 App端實作</h3> <p>App傳送如下IO Command請求下載指定的某個SD卡事件:</p> <p><code>IOTYPE_USER_IPCAM_EVENT_DOWNLOAD_FILE_REQ = 0x9029;</code></p> <p>&gt; 備註:在Kalay APP上,目前僅支援單一事件下載,且需走AVAPI下載模式(TKTransferType_AVAPI = 0)。</p> <h3>3.3.3 設備端實作</h3> <p>設備需回應如下IO Command返回下載檔:</p> <p><code>IOTYPE_USER_IPCAM_EVENT_DOWNLOAD_FILE_RESP = 0x902A;</code></p> <p>&gt; 備註:在下載模式下,設備需依照檔案的方式(如mp4)傳送SD卡事件內容。</p> <p>關於設備端如何實施SD卡事件下載功能,請參考[#基于AVAPIs的文件下载](<a href="https://note.youdao.com/ynoteshare/index.html?id=ad73baf467b8f7724a3030b577b0ec9b&amp;type=note&amp;_time=1721806636465">https://note.youdao.com/ynoteshare/index.html?id=ad73baf467b8f7724a3030b577b0ec9b&amp;type=note&amp;_time=1721806636465</a> &quot;#基于AVAPIs的文件下载&quot;)</p> <h3>3.3.4 範例</h3> <p>IO Command各結構體的定義,可參考:[IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;)。</p> <h1>四、雲端儲存功能</h1> <h2>4.1 是否支援雲端存儲</h2> <h3>4.1.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “group2” 陣列中包含 &quot;flag&quot;: &quot;set_cloud_setting&quot; 設定時,將判定為該設備支援雲端儲存功能。</li> <li>根據此結果,終端用戶可在App上點選購買雲端服務。</li> </ul> <p>&gt; 備註:因前述的雲端儲存設定和是否支援雲端儲存為關聯功能,故此處透過相同的 &quot;flag&quot;: &quot;set_cloud_setting&quot; 判斷。</p> <h3>4.1.2 App端實作</h3> <p>App讀取Device Profile中的 “group2” 陣列如下:</p> <pre><code class="language-json">&amp;quot;group2&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;set_cloud_setting&amp;quot; } ]</code></pre> <p>App直接讀取Device Profile判斷,無需再額外發送IO Command。</p> <h3>4.1.3 設備端實作</h3> <p>無</p> <h3>4.1.4 範例</h3> <p>無</p> <h2>4.2 雲端儲存推流</h2> <h3>4.2.1 對接說明</h3> <ul> <li>當終端使用者點擊購買雲端服務成功時,Kalay APP將發送VSaaS Info資訊給設備。</li> <li>設備根據雲端儲存開關狀態和已接收的VSaaS Info訊息,向雲端儲存伺服器推流。</li> <li>Kalay APP向雲端儲存服務取得事件,並進行播放或下載。</li> </ul> <h3>4.2.2 App端實作</h3> <p>App呼叫下列介面將VSaaS Info資訊同步給設備:</p> <p><code>setCloudRecordingEndpoint</code></p> <h3>4.2.3 設備端實作</h3> <p>關於設備端如何實作雲端儲存相關功能,請參考 [#设备端-云存储(基于SDK3)](<a href="https://note.youdao.com/ynoteshare/index.html?id=19c7bb26d3aa158cbb2a7692f7e157d0&amp;type=note&amp;_time=1721807719779">https://note.youdao.com/ynoteshare/index.html?id=19c7bb26d3aa158cbb2a7692f7e157d0&amp;type=note&amp;_time=1721807719779</a> &quot;#设备端-云存储(基于SDK3)&quot;)</p> <h3>4.2.4 範例</h3> <p>無</p> <h2>4.3 取得雲端事件列表</h2> <h3>4.3.1 對接說明</h3> <ul> <li>在Kalay APP上,當取得的Device Profile 中 “liveview” 陣列中包含 &quot;flag&quot;: &quot;cloud_event&quot; 設定時,將判定為該設備支援雲端儲存錄影查詢功能。</li> <li>根據此結果,終端用戶可在App上查詢雲端伺服器中儲存的事件,並進行回放。</li> </ul> <h3>4.3.2 App端實作</h3> <p>App讀取Device Profile中的 “liveview” 陣列如下:</p> <pre><code class="language-json">&amp;quot;liveview&amp;quot;: [ { &amp;quot;flag&amp;quot;: &amp;quot;cloud_event&amp;quot; } ]</code></pre> <p>App直接呼叫伺服器API取得雲端事件列表,無需再額外發送IO Command。</p> <h3>4.3.3 設備端實作</h3> <p>無</p> <h3>4.3.4 範例</h3> <p>無</p> <h2>4.4 雲端事件下載</h2> <h3>4.4.1 對接說明</h3> <ul> <li>在Kalay APP上,根據前述所取得的雲端事件清單中,所回應的 &quot;timestamp&quot; 參數,呼叫API會向伺服器要求對應時間的雲端事件進行下載。</li> <li>伺服器將在指定通道傳回對應的事件內容。</li> <li>在Kalay APP上,雲端事件下載將由ijK player處理。</li> </ul> <h3>4.4.2 App端實作</h3> <p>App直接呼叫伺服器API進行雲端事件下載,無需再額外發送IO Command。</p> <h3>4.4.3 設備端實作</h3> <p>無</p> <h3>4.4.4 範例</h3> <p>無</p> <h2>4.5 雲端事件刪除</h2> <h3>4.5.1 對接說明</h3> <ul> <li>在Kalay APP上,根據前述所取得的雲端事件清單中,所回應的 &quot;timestamp&quot; 參數,呼叫API會向伺服器要求對應時間的雲端事件進行刪除。</li> <li>伺服器將刪除對應的事件內容。</li> </ul> <h3>4.5.2 App端實作</h3> <p>App直接呼叫伺服器API進行雲端事件刪除,無需再額外發送IO Command。</p> <h3>4.5.3 設備端實作</h3> <p>無</p> <h3>4.5.4 範例</h3> <p>無</p> <h1>五、訊息功能</h1> <h2>5.1 設備訊息推播</h2> <h3>5.1.1 對接說明</h3> <ul> <li>在Kalay APP上,將採用DM Push方式實現訊息推播功能。在App成功新增設備後,將需使用的參數透過IO Command方式傳送給設備端。</li> <li>設備根據IO Command接收相關參數並儲存,在每次觸發偵測等事件時,發送HTTP請求向訊息伺服器產生推播訊息。</li> <li>設備根據行為定義,在觸發偵測訊息時,可以同時錄製視頻,並保存在SD卡或雲端伺服器中,但需確保訊息推送和圖片/視訊檔案的「starttime」保持一致。</li> </ul> <h3>5.1.2 App端實作</h3> <p>App直接呼叫伺服器API取得指定裝置的「dmToken」資訊。</p> <p>App透過avSendJSONCtrlRequest 將url,dmToken等資訊同步給設備:</p> <p>JSON IOCtrl參數說明:</p> <table> <thead> <tr> <th style="text-align: left;">參數</th> <th style="text-align: left;">類型</th> <th style="text-align: left;">說明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">url</td> <td style="text-align: left;">string</td> <td style="text-align: left;">設備推送的位址</td> </tr> <tr> <td style="text-align: left;">token</td> <td style="text-align: left;">string</td> <td style="text-align: left;">dmToken,由App呼叫API時取得</td> </tr> </tbody> </table> <h3>5.1.3 設備端實作</h3> <p>&gt; 設備端觸發訊息推送,建議使用最新API實作,如下說明皆以V4版本API為例。</p> <p>設備端透過avRecvJSONCtrlRequestFn 解析url,dmToken等資訊:</p> <p>設備端將「url」、「dmToken」參數,帶入HTTP請求中,產生偵測訊息。</p> <p><strong>HTTP請求如下:</strong></p> <p><strong>請求URL:</strong></p> <ul> <li><a href="https://{url}/hestia/v4/dm/create/event">https://{url}/hestia/v4/dm/create/event</a></li> </ul> <p><strong>請求方式:</strong></p> <ul> <li>post</li> </ul> <p><strong>Request Headers:</strong></p> <ul> <li>Authorization:Bearer {dmToken}</li> <li>Content-Type:application/json</li> </ul> <p><strong>Body:</strong> 使用form-data格式</p> <table> <thead> <tr> <th style="text-align: left;">參數</th> <th style="text-align: left;">類型</th> <th style="text-align: left;">是否必須</th> <th style="text-align: left;">說明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">udid</td> <td style="text-align: left;">string</td> <td style="text-align: left;">是</td> <td style="text-align: left;">設備的UDID</td> </tr> <tr> <td style="text-align: left;">starttime</td> <td style="text-align: left;">int64</td> <td style="text-align: left;">是</td> <td style="text-align: left;">觸發訊息的起始時間,採用秒級單位。如設備有同時錄製圖片/視頻,請確保與該圖片/視頻檔案的起始時間保持一致。</td> </tr> <tr> <td style="text-align: left;">tag</td> <td style="text-align: left;">string</td> <td style="text-align: left;">是</td> <td style="text-align: left;">標籤訊息,需進行base64編碼。在Kalay App上主要用於讀取type,flag等擴展信息,詳細定義參考:tag參數定義。</td> </tr> <tr> <td style="text-align: left;">upload</td> <td style="text-align: left;">file</td> <td style="text-align: left;">否</td> <td style="text-align: left;">上傳的圖片檔案(格式無限制,最大不超過300KB)。在Kalay App上主要用於訊息清單顯示縮圖。</td> </tr> </tbody> </table> <p><strong>tag參數定義:</strong></p> <pre><code class="language-json">[ { &amp;quot;sensor&amp;quot; :&amp;quot;devicePush&amp;quot;, &amp;quot;props&amp;quot; :[ { &amp;quot;type&amp;quot; :&amp;quot;fallDetection&amp;quot;, &amp;quot;flag&amp;quot; :&amp;quot;video&amp;quot; } ] } ]</code></pre> <p><strong>tag參數說明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">參數</th> <th style="text-align: left;">類型</th> <th style="text-align: left;">是否必須</th> <th style="text-align: left;">說明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">sensor</td> <td style="text-align: left;">string</td> <td style="text-align: left;">是</td> <td style="text-align: left;">預設值 &quot;devicePush&quot;</td> </tr> <tr> <td style="text-align: left;">props</td> <td style="text-align: left;">array</td> <td style="text-align: left;">是</td> <td style="text-align: left;">詳細參考props參數說明</td> </tr> </tbody> </table> <p><strong>props參數說明:</strong></p> <table> <thead> <tr> <th style="text-align: left;">參數</th> <th style="text-align: left;">類型</th> <th style="text-align: left;">是否必須</th> <th style="text-align: left;">說明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">type</td> <td style="text-align: left;">string</td> <td style="text-align: left;">是</td> <td style="text-align: left;">參考:type_enum</td> </tr> <tr> <td style="text-align: left;">flag</td> <td style="text-align: left;">string</td> <td style="text-align: left;">是</td> <td style="text-align: left;">參考:flag_enum</td> </tr> <tr> <td style="text-align: left;">action</td> <td style="text-align: left;">string</td> <td style="text-align: left;">否</td> <td style="text-align: left;">自訂動作</td> </tr> </tbody> </table> <p><strong>type_enum:</strong></p> <table> <thead> <tr> <th style="text-align: left;">type_enum</th> <th style="text-align: left;">事件類型</th> <th style="text-align: left;">event_id</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">motionSensor</td> <td style="text-align: left;">移動偵測</td> <td style="text-align: left;">1</td> </tr> <tr> <td style="text-align: left;">human</td> <td style="text-align: left;">人形偵測</td> <td style="text-align: left;">16</td> </tr> <tr> <td style="text-align: left;">doorbellRing</td> <td style="text-align: left;">門鈴通話</td> <td style="text-align: left;">2000</td> </tr> <tr> <td style="text-align: left;">babyCry</td> <td style="text-align: left;">哭聲偵測</td> <td style="text-align: left;">17</td> </tr> <tr> <td style="text-align: left;">rareSound</td> <td style="text-align: left;">異響偵測</td> <td style="text-align: left;">21</td> </tr> <tr> <td style="text-align: left;">fallDetection</td> <td style="text-align: left;">跌倒偵測</td> <td style="text-align: left;">18</td> </tr> <tr> <td style="text-align: left;">videoCall</td> <td style="text-align: left;">視訊通話</td> <td style="text-align: left;">102</td> </tr> <tr> <td style="text-align: left;">face</td> <td style="text-align: left;">人臉偵測</td> <td style="text-align: left;">19</td> </tr> <tr> <td style="text-align: left;">animal</td> <td style="text-align: left;">寵物偵測</td> <td style="text-align: left;">40</td> </tr> <tr> <td style="text-align: left;">notappear</td> <td style="text-align: left;">未出現提醒</td> <td style="text-align: left;">25</td> </tr> <tr> <td style="text-align: left;">intelligentWatcher</td> <td style="text-align: left;">智能看家</td> <td style="text-align: left;">26</td> </tr> <tr> <td style="text-align: left;">perimeterIntrusion</td> <td style="text-align: left;">區域入侵</td> <td style="text-align: left;">27</td> </tr> <tr> <td style="text-align: left;">lineCrossing</td> <td style="text-align: left;">電子圍籬</td> <td style="text-align: left;">28</td> </tr> <tr> <td style="text-align: left;">telephoneAlarm</td> <td style="text-align: left;">電話警報</td> <td style="text-align: left;">29</td> </tr> </tbody> </table> <p>&gt; - 採用DM Push進行訊息推送,訊息伺服器主要依據&quot;type&quot;判斷,而不再使用&quot;event_id&quot;區分。但Kalay App仍將&quot;type&quot;與&quot;event_id&quot;進行映射,主要是因為需與設備端SD卡/雲端事件類型保持對應。</p> <ul> <li>設備端SD卡/雲端事件類型定義可參考 [IO Command Definition](<a href="https://www.showdoc.com.cn/tutkiocmd/8933939875585050">https://www.showdoc.com.cn/tutkiocmd/8933939875585050</a> &quot;IO Command Definition&quot;) 中0x0319指令的typedef enum。</li> </ul> <p><strong>flag_enum:</strong></p> <table> <thead> <tr> <th style="text-align: left;">flag_enum</th> <th style="text-align: left;">說明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">message</td> <td style="text-align: left;">設備只觸發了訊息推送,但沒有錄製影片或圖片(可能原因有:不錄製;未插卡;錄製失敗等)</td> </tr> <tr> <td style="text-align: left;">video</td> <td style="text-align: left;">設備觸發訊息推送,同時錄製影片</td> </tr> <tr> <td style="text-align: left;">image</td> <td style="text-align: left;">設備觸發訊息推播,同時儲存圖片</td> </tr> </tbody> </table> <h3>5.1.4 範例</h3> <p>&gt; 此範例假設:</p> <ul> <li>設備的UDID為:TUTKKALAY20000000000XDSAA9JMVDB49GPGUHFJ;</li> <li>設備在產生偵測訊息的同時,需要上傳一張縮圖,且同時錄製一段影片檔案。</li> </ul> <p>App直接呼叫伺服器API取得指定設備的「dmToken」資訊如下:</p> <p><code>&amp;quot;dmToken&amp;quot;: &amp;quot;w4arhzKE6uj7gBzLsv5Qe95QrR8u1289hPP-ccR04GGCnef-87dVpAn8OYWCJ4P9TRvQQ6y8AnQZighzU-msAV8gbnX5ppK d7YVbHryZ1bpAJXDXGCg==&amp;quot;</code></p> <p>App透過avSendJSONCtrlRequest 將url,dmToken等資訊同步給設備:</p> <pre><code class="language-json">{ &amp;quot;func&amp;quot;:&amp;quot;DmPush&amp;quot;, &amp;quot;args&amp;quot;:[ { &amp;quot;url&amp;quot;:&amp;quot;cn-dm1-kalayappstg.kalay.net.cn&amp;quot;, &amp;quot;token&amp;quot;:&amp;quot;w4arhzKE6uj7gBzLsv5Qe95QrR8u1289hPP-ccR04GGCnef-87dVpAn8OYWCJ4P9TRvQ6y8AnQZighzU-msAV8gbnX5ppKq3L0s8m9V5H0q71hmJ_JsY2QeeyTkOzXcQM1d7YVbHryZ1bpAJXDXGCg==&amp;quot; } ] }</code></pre> <p>設備端透過avRecvJSONCtrlRequestFn 解析url,dmToken等資訊;</p> <p>組合tag參數:</p> <pre><code class="language-json">[ { &amp;quot;sensor&amp;quot; :&amp;quot;devicePush&amp;quot;, &amp;quot;props&amp;quot; :[ { &amp;quot;type&amp;quot; :&amp;quot;fallDetection&amp;quot;, &amp;quot;flag&amp;quot; :&amp;quot;video&amp;quot; } ] } ]</code></pre> <p>將tag參數進行base64編碼:</p> <p><code>W3sic2Vuc29yIjoiZGV2aWNlUHVzaCIsInByb3BzIjpbeyJ0eXBlIjoiZmFsbERldGVjdGlvbiIsImZsYWciOiJ2aWRlbyJ9XX1d</code></p> <p>最終設備產生訊息推送的資訊為:(以下使用postman工具產生)</p> <pre><code class="language-json">POST https://cn-dm1-kalayappstg.kalay.net.cn/hestia/v4/dm/create/event: { &amp;quot;Request Headers&amp;quot;: { &amp;quot;authorization&amp;quot;: &amp;quot;Bearer w4arhzKE6uj7gBzLsv5Qe95QrR8u1289hPP-ccR04GGCnef-87dVpAn8OYWCJ4P9TRvQ6y8AnQZighzU-msAV8gbnX5ppKq3L0s8m9V5H0q71hmJ_JsY2QeeyTkOzXcQM1d7YVbHryZ1bpAJXDXGCg==&amp;quot;, &amp;quot;content-type&amp;quot;: &amp;quot;multipart/form-data; boundary=--------------------------352369069433534314468499&amp;quot;, }, &amp;quot;Request Body&amp;quot;: { &amp;quot;udid&amp;quot;: &amp;quot;TUTKKALAY20000000000XDSAA9JMVDB49GPGUHFJ&amp;quot;, &amp;quot;starttime&amp;quot;: &amp;quot;1722411030&amp;quot;, &amp;quot;upload&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;tag&amp;quot;: &amp;quot;W3sic2Vuc29yIjoiZGV2aWNlUHVzaCIsInByb3BzIjpbeyJ0eXBlIjoiZmFsbERldGVjdGlvbiIsImZsYWciOiJ2aWRlbyJ9XX1d&amp;quot; } }</code></pre> <hr /> <p>[1.1.3]: #1.1.3 &quot;1.1.3 設備端實作&quot; [1.2.3]: #1.2.3 &quot;1.2.3 設備端實作&quot; [1.3.3]: #1.3.3 &quot;1.3.3 設備端實作&quot; [2.4]: #2.4 &quot;如何導入?&quot;</p>

页面列表

ITEM_HTML