<kbd id="u38ime13"></kbd><address id="u38ime13"><style id="u38ime13"></style></address><button id="u38ime13"></button>

              <kbd id="dbeqbo55"></kbd><address id="dbeqbo55"><style id="dbeqbo55"></style></address><button id="dbeqbo55"></button>

                      <kbd id="i177pmo2"></kbd><address id="i177pmo2"><style id="i177pmo2"></style></address><button id="i177pmo2"></button>

                              <kbd id="x90tke5b"></kbd><address id="x90tke5b"><style id="x90tke5b"></style></address><button id="x90tke5b"></button>

                                      <kbd id="5s08cknh"></kbd><address id="5s08cknh"><style id="5s08cknh"></style></address><button id="5s08cknh"></button>

                                              <kbd id="9mxtd2rp"></kbd><address id="9mxtd2rp"><style id="9mxtd2rp"></style></address><button id="9mxtd2rp"></button>

                                                      <kbd id="mm0xchvd"></kbd><address id="mm0xchvd"><style id="mm0xchvd"></style></address><button id="mm0xchvd"></button>

                                                              <kbd id="v3lc2dia"></kbd><address id="v3lc2dia"><style id="v3lc2dia"></style></address><button id="v3lc2dia"></button>

                                                                  
                                                                  首頁 > 服務中心 > 晶控課堂 >

                                                                  使用http協議編程遠程控制KC868-H8控制盒

                                                                  2019-01-10 14:57
                                                                  分享到:
                                                                  通過閱讀第一期和第二期的文章  ,我們已經學習了KC868-H8智能控制盒的通信協議 ,同時 ,也在局域網模式中 ,可以對控制盒進行了繼電器的開、關操作  。之前 ,我們也有提到過 ,一些關於遠程控制時 ,所用到的指令參數區別,今天我們將爲控制盒插上遠程控制的翅膀,讓你能夠在任何有網絡環境的情況下,可以靈活操控控制盒,實現繼電器開關的控制,以及輸入狀態的讀取 。

                                                                    首先,我們來看一下通信原理 ,我們之前是在局域網內來控制控制盒,我們把控制盒的網絡參數設置成“TCP服務器”模式,從字面理解 ,控制盒作爲服務器使用 ,客戶端通過點對點的方式來和控制盒建立連接 ,並進行數據交互的通信 。但由於我們接入公網時的IP地址被ISP所分配到的都是動態的,所以 ,沒辦法長時間讓通信雙方可以建立長久的連接(除非你分配給控制盒的連接公網的IP地址是固定的),因此 ,我們通過雲服務器的架設 ,讓控制盒和客戶端之間能夠架起一道橋樑  ,進行遠程的數據交互通信。客戶端通過網絡和雲服務器相連;控制盒硬件設備也通過網絡和雲服務器相連,因此 ,控制盒和客戶端彼此都可以通過雲服務器實現相互之間的數據通信了。

                                                                    接下來,我們就來看一下 ,當控制盒處於遠程控制模式時 ,它的一些網絡參數以及通信協議指令 ,會有哪些區別 。

                                                                    首先 ,我們將控制盒的網絡參數中的“工作模式”進行修改,設置成“UDP模式” ,同時 ,將“目的IP或域名”這欄設置成我們的雲服務器地址“sdk.hificat.com”,“目的端口”爲“5555” ,控制盒的“IP模式”建議可以設置成“動態獲取”,即由路由器DHCP動態分配IP地址 ,前提是路由器上要開啓“DHCP動態分配IP”的服務,一般路由器默認都是開啓的。
                                                                  智能家居網絡配置

                                                                    設置完成網絡參數後 ,控制盒上電 ,就會自動連接到雲服務器上 ,連接成功後,網口燈會變成“綠色”。

                                                                  智能家居通信

                                                                    然後,我們就可以使用命令來進行相關的控制了。我們舉個最簡單的例子 ,我們通過網絡瀏覽器發送http命令串來打開第一路繼電器開關 。首先 ,我們看一下通過遠程方式發送http命令串的命令結構  。.
                                                                   
                                                                    接口地址:http://sdk.hificat.com:8080/smarthome.IMCPlatform/device/v1.0/sendCommand.action
                                                                   
                                                                    接口參數:
                                                                  deviceCode - KC868-H8/KC868-H32智能控制盒序列號
                                                                  command - 要傳送的通信協議命令
                                                                   
                                                                    示例:
                                                                    HTTP 請求:
                                                                    http://sdk.hificat.com:8080/smarthome.IMCPlatform/device/v1.0/sendCommand.action?deviceCode=56a890e6888793c97ed33f17&command=RELAY-SET-1,1,1
                                                                    雲服務器返回:
                                                                    {
                                                                      "message":"Command: RELAY-SET-1,1,1 was sent to device:
                                                                      56a890e6888793c97ed33f17 successfully.",
                                                                      "result":"RELAY-SET-1,1,1,OK\u0000",
                                                                      "status":"0"
                                                                    }
                                                                   
                                                                  deviceCode爲智能控制盒的序列號,外殼上會有粘二維碼和序列號,如果找不到序列號 ,也可以使用讀取序列號的通信協議來獲得  。
                                                                  Command 後面跟的協議命令就是我們之前所講的控制盒通信協議 ,包括控制繼電器開關,查詢繼電器狀態以及讀取輸入端狀態的協議內容 。

                                                                    注意:當我們在進行http協議遠程控制控制盒的時候 ,之前我們介紹的控制盒通信協議中 ,凡是有“包序號”的字節參數,在每次發命令是,參數進行自增賦值,範圍爲1--255 。如第一條命令發送的參數爲1  ,第二條爲2 ,第三條爲3 ,以此類推,剛參數爲255時 ,下一個參數爲1開始 ,繼續進行自增 。

                                                                    下面是我們在網絡瀏覽器中輸入命令串  ,執行後的實際效果,可以看到瀏覽器的有數據返回,同時,控制盒第1路所接的燈泡被點亮。

                                                                  http協議

                                                                  硬件控制电灯

                                                                    我們例舉幾條常用的通信協議命令,如:
                                                                   
                                                                  1.單獨控制某一路繼電器的開與關:
                                                                  發送:RELAY-SET-x(1字節pack_num),x(1字節繼電器序號),x(1字節動作0/1)
                                                                  返回:RELAY-SET-x(1字節pack_num),x(1字節繼電器序號),x(1字節動作0/1),OK/ERROR
                                                                   
                                                                  遠程控制命令串爲:
                                                                  http://sdk.hificat.com:8080/smarthome.IMCPlatform/device/v1.0/sendCommand.action?deviceCode=56a890e6888793c97ed33f17&command=RELAY-SET-1,1,1  表示遠程控制打開第1路繼電器,注意:包序號爲1
                                                                  http://sdk.hificat.com:8080/smarthome.IMCPlatform/device/v1.0/sendCommand.action?deviceCode=56a890e6888793c97ed33f17&command=RELAY-SET-2,1,0  表示遠程控制關閉第1路繼電器,注意:包序號爲2  ,進行了自增
                                                                   
                                                                  2.單獨查詢某一路繼電器當前開關狀態:
                                                                  發送:RELAY-READ-x(1字節pack_num),x(1字節繼電器序號)
                                                                  返回:RELAY-READ-x(1字節pack_num),x(1字節繼電器序號) ,x(1字節狀態0/1) ,OK/ERROR
                                                                   
                                                                  遠程控制命令串爲:
                                                                  http://sdk.hificat.com:8080/smarthome.IMCPlatform/device/v1.0/sendCommand.action?deviceCode=56a890e6888793c97ed33f17&command=RELAY-READ-3,1  表示遠程查詢第1路繼電器狀態,注意:包序號爲3
                                                                   
                                                                  3.查詢觸發輸入端狀態:
                                                                  發送:RELAY-GET_INPUT-x(1字節pack_num)
                                                                  返回:RELAY-GET_INPUT-x(1字節pack_num),x(1字節狀態) ,OK/ERROR
                                                                   
                                                                  遠程控制命令串爲:
                                                                  http://sdk.hificat.com:8080/smarthome.IMCPlatform/device/v1.0/sendCommand.action?deviceCode=56a890e6888793c97ed33f17&command=RELAY-GET_INPUT-4  表示遠程查詢觸發輸入端狀態,注意:包序號爲4
                                                                   
                                                                  4.一次控制多路繼電器的開與關:
                                                                  KC868-H8:
                                                                  發送:RELAY-SET_ALL-x(1字節pack_num),D0
                                                                  返回:RELAY-SET_ALL-x(1字節pack_num),D0,OK/ERROR
                                                                   
                                                                  KC868-H32:
                                                                  發送:RELAY-SET_ALL-x(1字節pack_num),D3,D2,D1,D0
                                                                  返回:RELAY-SET_ALL-x(1字節pack_num),D3,D2,D1,D0,OK/ERROR
                                                                   
                                                                  遠程控制命令串爲:
                                                                  http://sdk.hificat.com:8080/smarthome.IMCPlatform/device/v1.0/sendCommand.action?deviceCode=56a890e6888793c97ed33f17&command=RELAY-SET_ALL-5,255  表示遠程控制8路繼電器全部爲“打開”,注意:包序號爲5
                                                                   
                                                                  5.一次讀取多個繼電器當前開關狀態:
                                                                  發送:RELAY-STATE-x(1字節pack_num)
                                                                  返回:
                                                                  KC868-H32:RELAY-STATE-x(1字節pack_num),D0,OK/ERROR
                                                                  KC868-H8:RELAY-STATE-x(1字節pack_num),D3,D2,D1,D0,OK/ERROR
                                                                   
                                                                  遠程控制命令串爲:
                                                                  http://sdk.hificat.com:8080/smarthome.IMCPlatform/device/v1.0/sendCommand.action?deviceCode=56a890e6888793c97ed33f17&command=RELAY-STATE-5  表示遠程查詢8路繼電器的當前狀態,注意:包序號爲5
                                                                   
                                                                  前面我們已經看了查詢繼電器狀態的通信協議 ,那是按某一路進行查詢的。我們也可以進行一次讀取多個繼電器狀態的方式來進行查詢 。比如:發送“RELAY-STATE-1” ,那麼根據控制盒不同型號的情況 ,會有兩種返回狀態的字符串,如果控制盒是KC868-H8的型號 ,那會返回“RELAY-STATE-1,255,OK” ,“255”則表示控制盒8路繼電器的當前狀態 ,將十進制數“255”轉成二進制數爲“11111111” ,“1”表示“打開”狀態 ,前面我們已經提到過,所以 ,這8路繼電器的當前狀態均爲“打開” 。同樣 ,如果得到的數轉成二進制後,某一位是數字“0”的話  ,那麼代表該路的繼電器當關的狀態爲“關閉”狀態。

                                                                  到止,我們已經全面學習並掌握了智能控制盒的遠程控制及查詢狀態的方法,通過寫程序可以對異地的設備實現遠程控制,在今後的連載教程中 ,我們會爲大家介紹一下如果通過輸入端獲取狀態從而實現智能化聯動控制的實例 ,這也是智能家居目前比較常見的應用,也是人工智能的基礎功能。