幸运快三APP

<sub id="ucfxx"></sub>
  • <var id="ucfxx"></var>
    1. <table id="ucfxx"><meter id="ucfxx"><cite id="ucfxx"></cite></meter></table>

      <output id="ucfxx"></output>

      <meter id="ucfxx"><cite id="ucfxx"></cite></meter>

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

      KC868-Hx智能家居網絡繼電器協議二次開發

      2020-04-15 09:44
      分享到:
      通過閱讀第一期文章——《第一個打開/關閉電燈的Hello World小程序》,相信你已經可以通過電腦寫個簡單的PC程序來控制一個燈泡的開與關,一定很興奮了吧。恭喜,你已經跨入物聯網的第一道大門,今天我們將對KC868-H8智能控制盒的通信協議做一下全面的分析與學習,這樣,你就可以充分發揮自己的想象力,對控制盒進行本地、遠程、智能化的控制甚至是聯動控制,真正接觸到他的強大所在,給你絕對的DIY靈活度。

        物聯網將萬物進行互聯,在整個系統中,有云端,有客戶端,有硬件底層端,之前我們之前是獨立存在的,互相之間就是彼此陌生的,只要大家遵循統一的標準,這樣每個局部都可以聽懂得對方,甚至可以進行交流。比如:咱們各地的人當地的方言,外地的聽不懂,這時候如果大家都講普通話,所有的人都可以明白大家想表達的意思了。通信協議在整個體系中,就起到了標準化的關鍵作用,從而讓所有的設備能夠懂對方。

        下面,我們來一起學習一下KC868-H8智能控制盒的通信協議,看看他是如何和其它設備進行交流的。注:通信協議中有出現KC868-H8和KC868-H32兩種型號,KC868-H8是帶8路繼電器開關的智能控制盒;KC868-H32是帶32路繼電器開關的智能控制盒,這是兩種不同配置的產品,不同的繼電器路數可以適用不同的使用場景。目前通信協議支持的控制器型號有:KC868-H2,KC868-H4,KC868-H8,KC868-H16,KC868-H32系列

      kc868-h8
      KC868-H8 外形圖片

      32路繼電器板
      KC868-H32 外形圖片

        首先,我們列出所有的通信協議內容,以下所有的內容,當智能控制盒通過以太網配置工具,把自己設置成“TCP服務器”模式下,均可通過客戶端,如PC端進行命令的收發實現交互通信,控制盒默認的IP和端口參數是IP地址:192.168.1.200,端口:4196
        通信協議的學習與調試,我們可以使用網絡調試助手軟件,也可以從杭州晶控電子官網進行下載使用。
      網絡配置


      1.單獨控制某一路繼電器的開與關:
      發送:RELAY-SET-255,x(1字節繼電器序號),x(1字節動作0/1)
      返回:RELAY-SET-255,x(1字節繼電器序號),x(1字節動作0/1),OK/ERROR

        這條命令是我們在第一期文章中所介紹到的核心指令,也是最讓人興奮的一條硬件版的Hello World指令,它可以控制某一路繼電器的打開或關閉,指令非常簡單,通俗易懂。協議中的第1個字節永遠固定成數字"255";協議中的第3個字節參數——“動作0/1”的意義在于,“0”表示“關閉”;“1”表示“打開”。我們舉個例子來看一下,比如:我們要打開第1路繼電器,我們可以發送命令“RELAY-SET-255,1,1”,第1個參數“255”固定;第2個參數的“1”表示第1路繼電器,第三個參數“1”表示“打開”。如果我們要關閉第1路繼電器,我們可以發送命令“RELAY-SET-255,1,0”,第1個參數“255”固定;第2個參數的“1”表示第1路繼電器,第三個參數“0”表示“關閉”。如果我們要打開第2路繼電器,我們可以發送命令“RELAY-SET-255,2,1”,第1個參數“255”固定;第2個參數的“2”表示第2路繼電器,第三個參數“1”表示“打開”??吹竭@里,你應該感覺控制繼電器原來是那么容易吧。略有點小成就感吧:)


      ????????§?????μ??ˉ

      2.單獨查詢某一路繼電器當前開關狀態:
      發送:RELAY-READ-255,x(1字節繼電器序號)
      返回:RELAY-READ-255,x(1字節繼電器序號),x(1字節狀態0/1),OK/ERROR
       
        當我們時不時控制繼電器的“打開”、“關閉”、再“打開”、再“關閉”........,等時間久了,我們可能已經不知道控制盒上繼電器當前的工作狀態了,有時候我們在做控制之前,還是需要知道他們的當前設備的,目前是“打開”的,還是“關閉”的。這時候,我們便可以使用繼電器的查詢命令來進行查詢了。比如:我們要查詢第1路繼電器現在是處于“打開”還是“關閉”狀態,我們可以發送:“RELAY-READ-255,1”,第1個參數“255”固定;第2個參數“1”表示需要查詢的路數。此時,查詢成功后,控制盒會返回“RELAY-READ-255,1,OK”,第2個參數“1”表示現在的狀態為“打開”狀態,如果是“0”表示現在的狀態為“關閉”狀態。想查詢第幾路繼電器,直接將路數參數更改即可。

      3.查詢觸發輸入端狀態:
      發送:RELAY-GET_INPUT-255
      返回:RELAY-GET_INPUT-255,x(1字節狀態),OK/ERROR
       
      注:當控制盒觸發輸入端被觸發時,會主動上報一條命令,格式為:RELAY-ALARM-X,X代表被觸發的路數。
       
        觸發輸入端是控制盒用來接開關量傳感器的輸入端子,如圖中控制盒的一側,由高位和低位組合成一組開關量輸入端,他有多元化的實際應用方式,比如:你可以接手動開關,軟件中可以定義好,當手動按下開關后,輸出端的繼電器會執行哪些動作;當有線開關量的傳感器信號接入時,軟件中可以定義好,當傳感器被觸發時,輸出端的繼電器會執行哪些動作,這就是我們通常說的智能聯動,也是智能家居中最廣泛的應用方法之一。聯動的自動化控制過程中,第一步就需要我們去獲得觸發事件的狀態,即什么時候被觸發,哪路傳感器被觸發。此時,我們可以使用觸發輸入端的查詢命令發給控制合,如:“RELAY-GET_INPUT-255”,查詢成功后,控制盒會返回:“RELAY-GET_INPUT-255,255,OK”,第2個參數“255”即是8路觸發端的狀態字節。我們用8位二進制來表示8路輸入端狀態。用“0”表示“觸發”,用“1”表示“未觸發”。如果當前8路狀態全部是“未觸發”的話,那么8路輸入端的狀態為 11111111,注意,這是二進制的8個“1”,然后我們將其轉換為十進制數,為“255”。如果當前8路狀態全部是“觸發”的話,那么8路輸入端的狀態為 00000000,注意,這是二進制的8個“0”,然后我們將其轉換為十進制數,為“0”。如果當前8路狀態是1-4路是“未觸發”,5-8路為“觸發”的話,那么8路輸入端的狀態為 00001111,注意,這是二進制的“00001111”,然后我們將其轉換為十進制數,為“15”。在程序中,我們不需要不斷的循環去查詢狀態,可以利用觸入端被觸發器的主動上報命令進行配合而進行查詢,當觸發信號產生時,客戶端接收到“RELAY-ALARM-X”的指令串時,再發送一條“RELAY-GET_INPUT-x”進行查詢。如下圖所示,當我們用鑷子手動短接第一路的輸入端時,則控制盒會主動上報字符串“RELAY-ALARM-1”到PC客戶端,這時,我們發送查詢第1路輸入端的命令后,返回字符串“RELAY-GET_INPUT-255,254,OK”,我們將數字十進制數“254”轉換為二進制數為“11111110”,所以可以得知第1路輸入端被觸發。

      智能家居調試

      十進制數

      二進制數


      4.一次控制多路繼電器的開與關:
       
      KC868-H2/4/8:
      發送:RELAY-SET_ALL-255,D0
      返回:RELAY-SET_ALL-255,D0,OK/ERROR
       
      KC868-H16:
      發送:RELAY-SET_ALL-255,D1,D0
      返回:RELAY-SET_ALL-255,D1,D0,OK/ERROR

      KC868-H32:
      發送:RELAY-SET_ALL-255,D3,D2,D1,D0
      返回:RELAY-SET_ALL-255,D3,D2,D1,D0,OK/ERROR
       
        之前所介紹的通信協議中,我們已經可以分別對每一個繼電器進行“打開”和“關閉”的操作了,這里,我們再介紹一條多路繼電器同時進行控制的指令,他們是區別在哪里呢?前面我們所講的控制繼電器都是針對某一個的,如果要控制多個繼電器開關,就是需要發送多條控制命令,需要若干時間去執行。這里,我們介紹的指令,可以實現一次性控制多路繼電器開關,如“全開”、“全關”,或者某幾路“打開”,某幾路“關閉”的操作,只需要一條指令,多路控制速度非???。我們可以看到命令中,除了“包序號”參數之外,只有一個字節的參數了,這一個字節就代表了8路繼電器想進行控制的狀態設置,用“1”表示“打開”,用“0”表示“關閉”,同樣,也是用8位二進制來表示各路繼電器的狀態,再轉成十進制數。如:我們要將8路繼電器全部打開,則可以發送命令“RELAY-SET_ALL-255,255”,我們要將8路繼電器全部關閉,則可以發送命令“RELAY-SET_ALL-255,0”,如果要將1-4路繼電器打開,5-8路繼電器關閉,那么參數是這樣定義的,二進數表示:00001111,轉換為十進制數為“15”,最終發送命令為“RELAY-SET_ALL-1,15”。在協議內容中,我們看到還有KC868-H32型號的控制盒,即他有32路繼電器可以讓我們進行控制,所以,他是用4個字節來表示所有繼電器的狀態的,1-8路繼電器用D0字節表示;9-16路繼電器用D1字節表示;17-24路繼電器用D2字節表示;25-32路繼電器用D3字節表示,每一個字節的含義和KC868-H8控制盒的表達方式一樣,只是將32路劃分成4個字節,多了幾個參數。


      5.一次讀取多個繼電器當前開關狀態:
      發送:RELAY-STATE-255
      返回:
      KC868-H8:RELAY-STATE-255,D0,OK/ERROR
      KC868-H16:RELAY-STATE-255,D1,D0,OK/ERROR
      KC868-H32:RELAY-STATE-255,D3,D2,D1,D0,OK/ERROR
       
        同樣的情況,前面我們已經看了查詢繼電器狀態的通信協議,那是按某一路進行查詢的。我們也可以進行一次讀取多個繼電器狀態的方式來進行查詢。比如:發送“RELAY-STATE-255”,那么根據控制盒不同型號的情況,會有兩種返回狀態的字符串,如果控制盒是KC868-H8的型號,那會返回“RELAY-STATE-255,255,OK”,“255”則表示控制盒8路繼電器的當前狀態,將十進制數“255”轉成二進制數為“11111111”,“1”表示“打開”狀態,前面我們已經提到過,所以,這8路繼電器的當前狀態均為“打開”。同樣,如果得到的數轉成二進制后,某一位是數字“0”的話,那么代表該路的繼電器當關的狀態為“關閉”狀態。


      6.一次性打開所有的繼電器
      發送:RELAY-AON-255,1,1
      返回:RELAY-AON-255,1,1,OK
      所有參數全部固定不變即可.該指令適用于各型號的控制器.
       

      7.一次性關閉所有的繼電器
      發送:RELAY-AOF-255,1,1
      返回:RELAY-AOF-255,1,1,OK
      所有參數全部固定不變即可.該指令適用于各型號的控制器.
       

      8.將某一路繼電器狀態進行翻轉操作
      發送:RELAY-KEY-255,x,1 (x is the channel of Relay)
      返回:RELAY-KEY-255,x,1,OK (x is the channel of Relay)
      對某一路繼電器執行狀態翻轉的控制輸出操作.如:當前狀態是"開"的,發命令過去,繼電器會變成"關";當前狀態是"關"的,發命令過去,繼電器會變成"開"

        到止,我們已經全面學習并掌握了智能控制盒的輸出和輸入資源的控制與狀態獲取,是不是感覺一下子有很多資源可以來使用了,不僅可以控制繼電器開關,也可以進行一些傳感器狀態的獲取,這樣就可以發揮自己的創意來實現一些定時、自動或具有AI人工智能方面的應用了。具體的功能是什么,如何去實現,可以解決哪些生活及工具應用場景的痛點問題,就看你的程序代碼來怎么寫了。我們對通信協議的本地化調用,已經給大家做了全面的介紹,在今后的連載教程中,我們還會為大家介紹到如何突破本地局域網內控制的地理范圍限制,真正實現Internet級的無距離限制的遠程控制方法,相信會激起大家足夠強烈的興趣感。
      ? 幸运快三APP
      双阳| 汤阴| 阳山| 克东| 乌兰乌苏| 察哈尔右翼前旗| 环县| 庐山| 阜新| 娄烦| 富裕| 胡尔勒| 杭锦旗| 兴仁堡| 大足| 屏边| 温州| 米泉| 贵港| 临潼| 茶卡| 平塘| 峨山| 井研| 新会| 呈贡| 遂平| 拐子湖| 修水| 中宁| 加格达奇| 澳门| 拜城| 喀喇沁旗| 新港| 阿图什| 库尔勒| 兰考| 平凉| 霍州| 鄯善| 金佛山| 蠡县| 草河口| 黎城| 姚安| 江阴| 汨罗| 大武口| 泾川| 石城| 长武| 高平| 黑山| 天河| 鸡西| 江华| 鄂州| 察尔汉| 丹寨| 德州| 仁寿| 丰宁| 嘉禾| 张家口| 舒兰| 鄂托克旗| 鹿邑| 界首| 梅县| 镶黄旗| 金秀| 琼中| 金乡| 天峨| 郧县| 玉树| 察哈尔右翼后旗| 龙里| 龙井| 石岛| 石门| 靖西| 江孜| 和田| 狮泉河| 萍乡| 麻阳| 阿克陶| 淮阴| 新巴尔虎左旗| 新河| 衡东| 珲春| 砀山| 镇赉| 渝北| 耀县| 威县| 确山| 新乡| 方山| 巴马| 鹤城区| 九龙| 炎陵| 乾安| 天池| 桂东| 那仁宝力格| 天池| 集宁| 敦化| 花都| 福清| 民和| 铜川| 德江| 神木| 锦屏| 巨鹿| 尉氏| 龙里| 金平| 山阳| 铁干里克| 庐江| 安吉| 上饶县| 梅县| 句容| 富蕴| 旅顺| 罗源| 涞水| 姜堰| 乌拉特后旗| 信阳| 本溪| 伊吾| 固始| 镇海| 西丰| 额敏| 博乐| 叶城| 东岗| 宁德| 南乐| 双城| 襄阳| 南和| 安乡| 天山大西沟| 望江| 高雄| 沈阳| 开封| 息县| 建湖| 皋兰| 镇坪| 大石桥| 四子王旗| 景东| 申扎| 宁安| 福泉| 海力素| 扶绥| 乌兰乌苏| 铜陵| 彭泽| 根河| 延安| 果洛| 怀仁| 广元| 灵武| 巴盟农试站| 托里| 屯昌| 燕尾港| 吐尔尕特| 东胜| 尉氏| 临高| 石楼| 西峡| 南阳| 枣阳| 崇信| 冠县| 故城| 龙州| 芷江| 文登| 雷州| 林西| 漳县| 连江| 隆安| 廊坊| 蔡家湖| 太湖| 太仓| 沂水| 绥滨| 鹤山| 察隅| 牙克石| 嘉定| 婺源| 双鸭山| 宜宾县| 阿合奇| 乌海| 永清| 陵县| 兴山| 九龙| 宜黄| 南乐| 头道湖| 通辽| 纳雍| 静乐| 织金| 宽城| 封丘| 镇远| 武安| 通许| 宜章| 资兴| 皮口| 陈家镇| 昌都| 五台山| 吴县东山| 色达| 灵璧| 枣庄| 柳州| 镇平| 普洱| 光山| 元阳| 巴林右旗| 仙居| 绿春| 甘南| 文昌| 宁晋| 靖宇| 恩平| 庆元| 宁阳| 加格达奇| 武清| 临泉| 石拐| 含山| 栾川| 息烽| 雷州| 闵行| 库尔勒| 禄丰| 寿县| 六合| 吉县| 紫荆关| 日喀则| 平定| 邵东| 武川| 乌苏| 安庆| 察哈尔右翼中旗| 繁峙| 平顶山| 普洱| 羊山| 龙胜| 贵溪| 柘城| 浦口| 莱芜| 永胜| 淮南| 木垒| 磐石| 长丰| 永仁| 草河口| 湘阴| 东吉屿| 嵊泗| 梓潼| 松原| 横山| 永寿| 新竹市| 长寿| 南溪| 邹平| 桂林| 筠连| 章党| 韦州| 乌伊岭| 仁和| 元阳| 元阳| 博白| 施甸| 资兴| 美姑| 延津| 祁县| 保山| 毕节| 石岛| 晋江| 朱日和| 漾鼻| 杨凌| 龙游| 集贤| 索伦| 商南| 固原| 忻城| 宣威| 乐安| 彭阳| 泊头| 大安| 永定| 翼城| 亳州| 察哈尔右翼后旗| 金乡| 浦城| 黟县| 石阡| 华宁| 博罗| 宜城| 郑州| 东台| 泰安| 巴南| 伊春| 涟源| 杭锦旗| 宜宾| 富蕴| 象山| 剑河| 龙胜| 阿拉善左旗| 乌审旗| 邵阳| 白云| 峨眉| 漳州| 米泉| 拐子湖| 阿拉善左旗| 陇西| 通化县| 麻栗坡| 娄底| 扎兰屯| 进贤| 四子王旗| 马鞍山| 琼山| 景洪| 湛江| 湘乡| 余姚| 费县| 遵化| 韶关| 印江| 横山| 长泰| 肥乡| 敦煌| 塘头| 胶南| 夷陵| 蚌埠| 漯河| 丰镇| 安仁| 阳信