《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > 微信除了聊天竟然還可以控制燈泡

微信除了聊天竟然還可以控制燈泡

2017-06-08
來源:ZLG致遠電子

  微信能做的事情越來越多,今天介紹“”微信控制燈泡“”了解控制燈泡的原理后,就能繼續添加控制空調、控制電視、獲取溫度等功能,微信并不自帶此功能,是通過開源項目DeviceConnect來實現的,這里將詳細介紹DeviceConnect項目。

  微信控制燈泡的系統框圖如下所示:

圖片1.png

  系統分為三部分:手機、云服務器ARM工控板。云服務器把手機端發送過來的命令轉送到ARM工控板,ARM工控板解析命令后控制燈泡的亮與滅。

  1.1DeviceConnect開源項目簡介

  DeviceConnect是手機控制ARM板子上的外設的最簡單實例,目標是讓使用者能更方便的擴張功能。DeviceConnect在手機端提供了三種方式:

  1.微信訂閱號點亮ARM板子上的LED燈;

  2.Android App點亮ARM板子上的LED燈;

  3.iOS App點亮ARM板子上的LED燈。

  1.2.1硬件環境

  云服務器:騰訊云服務器,特點是免費1個月。

  ARM工控板:廣州致遠電子的EPC-6G2C,特點是有8路串口。

  手機:安卓、iPhone手機都可以。

  1.2.2源碼下載

  源碼地址:https://github.com/yufangmin/DeviceInternet.git

  1.2.3源碼結構

  下載源碼后,它的目錄結構如下所示:

圖片2.png

  源碼目錄的功能如下表:

圖片3.png

  apphtml目錄內是運行在服務器上面的源碼和固件,它提供了兩個功能,一是處理手機和硬件產品發過來的http請求(獲取設備信息或控制設備的命令),二是提供了http頁面,在微信訂閱號后臺把某個頁面的“閱讀原文”的地址指向這個http頁面,http頁面實現了控制燈泡的功能。微信訂閱號的申請和介紹在官網有詳細文檔,這里不介紹。

  android目錄、ios目錄、device目錄,它們是三個應用程序,分別運行在android手機、iPhone手機、AMR開發板上面,它們采取相同的協議和服務器進行通信。

  1.2.4手機和云服務器的通信規則

  手機和云服務器采取htpp協議api接口來通信,返回的值是json數據。有兩類接口:設置接口和查詢接口。

  1.設置接口

  手機訪問云服務器,把燈泡熄滅的接口如下:

  http://127.0.0.1:8080/api/a7/control?active=put&key=led&value=off

  可以在IE瀏覽器里面輸入這段字符,它就能關閉燈泡。這里有三個關鍵字:active、key、value。

  lactive:可取兩個值:put和get。put是設置的意思,get是查詢的意思。

  lkey、value:服務器保存了一個字典,這個key、value的值就是服務器字典里面的key和value。

  active=put&key=led&value=off的意思是:設置led的值為關閉。

  返回值是json數據,如下:

  {errorCode:0,   errorMsg:配置LED成功}

  errorCode:返回0代表成功;返回其他值代表失敗。

  errorMsg:返回errorCode編碼對應的解釋。

  2.查詢接口

  手機訪問云服務器,獲取燈泡狀態的接口如下:

  http://127.0.0.1:8080/api/a7/control?active=get&key=led

  active=get&key=led的意思是:獲取燈泡的狀態。

  返回值是json數據,如下:

  {errorCode:0,key:led,value:off,errorMsg:查詢+key+成功}

  意思是led的值為關閉。

  1.2.5服務器端的源碼分析

  服務器端是用JAVA語言+spring庫來實現的。在瀏覽器輸入http://127.0.0.1:8080/api/a7/control?active=put&key=led&value=off來訪問服務器時,實際上會調用APPAPIController類的 api(...)函數,函數原型如下:

  @RequestMapping(value = "/api/{productName}/{functionName}")//  1. productName和functionName是http地址映射相關

  public void api(

  @PathVariable String productName,// 2. http://127.0.0.1:8080/api/a7/control?,api會被賦值到productName

  @PathVariable String functionName,// 3. http://127.0.0.1:8080/api/a7/control?,a7會被賦值到functionName

  HttpServletRequest request,// 4. request,可通過這個變量讀取客戶端數據。

  HttpServletResponse response// 5. response,可通過這個變量寫入客戶端數據。

  )

  從request獲知字符串active=put&key=led&value=off,然后進行處理,把處理結果通過response返回Json數據給客戶端。下面是完整的代碼:

  @Controller

  public class APPAPIController{

  static HashMap<String, String> deviceStatus = new HashMap<>();

  @RequestMapping(value = "/api/{productName}/{functionName}")

  public void api(@PathVariable String productName,

  @PathVariable String functionName,

  HttpServletRequest request, HttpServletResponse response) throws IOException {

  System.out.println("http connect in "+new Date().toString());

  HashMap<String, Object> resultMap = new HashMap<>();

  try {

  // 獲取參數信息

  Map<String, String> parameters = convertHttpParamMap(request.getParameterMap());

  String active = parameters.get("active");

  if (active.compareTo("put") == 0) {

  // http://127.0.0.1:9090/api/a7/control?active=put&key=led&value=no

  String key = parameters.get("key");

  String value = parameters.get("value");

  deviceStatus.put(key, value);

  resultMap.put("key", key);

  resultMap.put("value", value);

  resultMap.put("errorCode", "0");

  }else if(active.compareTo("get") == 0) {

  // http://127.0.0.1:9090/api/a7/control?active=get&key=led

  String key = parameters.get("key");

  String value = deviceStatus.get(key);

  resultMap.put("key", key);

  resultMap.put("value", value);

  resultMap.put("errorCode", "0");

  }else {

  resultMap.put("errorCode", "1001");

  resultMap.put("errorMsg", "active不正確");

  }

  }catch (Exception e) {

  resultMap.put("errorCode", "1002");

  resultMap.put("errorMsg", "參數不正確");

  }

  response.setCharacterEncoding("UTF-8");

  ServletOutputStream outputStream = response.getOutputStream();

  ObjectMapper mapper = new ObjectMapper();

  mapper.writeValue(outputStream, resultMap);

  outputStream.flush();

  }

  }

  從上面的代碼可見:設置功能是把數據保存在一個Map數據結構內;查詢功能是從Map內讀出數據。服務器其實是個中轉站。手機可以獲取和設置燈泡,ARM開發板獲取燈泡狀態并給燈泡斷電或上電。

  1.2.6客戶端的源碼分析

  微信HTTP頁面、iOS APP、安卓APP、ARM開發板程序,都是客戶端,它們的功能本質一樣,只是編程語言不同,所以這里僅介紹HTTP頁面源碼。

  頁面有三個按鈕和一張圖片,代碼如下所示:

  <img id='lightStatus' src="image/lamp_on.png"/>

  <input type="button" id="lightOn" value="設置LED亮">

  <input type="button" id="lightOff" value="設置LED滅">

  <input type="button" id="lightQuery" value="查詢LED狀態">

  為了解析服務器返回的json數據,采用了jquery庫,如下所示:

  <script src="jquery-3.2.0.min.js"></script>

  <script type="text/javascript">

  按鈕“設置LED亮”是button類型,ID是lightOn。lightOn對應的源碼如下:

  var args = {

  url: 'http://127.0.0.1/api/a7/control?',

  cache: false,

  dataType: 'json'

  }

  $('#lightOn').on('click', function() {

  args.data    = 'active=put&key=led&value=on'

  args.success = function(data) {

  $('#lightStatus').attr('src', data.value === 'on' ? "image/lamp_on.png" : "image/lamp_off.png")

  }

  $.ajax(args)

  })

  在函數lightOn內訪問http://127.0.0.1/api/a7/control? active=put&key=led&value=on后對返回結果的內的value值和on比較,如果成功則設置lamp_on.png,如果失敗則設置lamp_off.png。按鈕“設置LED滅”和“查詢LED狀態”的源碼是類似的,這里不展示。

  1.結果展示

  1)微信訂閱號的展示如下:

圖片4.png

  注:微信訂閱號是用戶自己申請的,本文作者申請了一個物通網互通的訂閱號,你完全可以申請另外一個訂閱號。上圖的總共4個窗口,前2個窗口是通過微信公眾號后臺編輯實現,后2個窗口是由服務器源碼HTML提供。

  2.Android APP的展示如下:

圖片5.png

  3.iPhone APP的展示如下:

圖片6.png

  4.ARM核心板(M6G2C Cortex-A7)的展示如下:

圖片7.png


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美在线看片| 亚洲精品你懂的| 欧美福利一区二区三区| 亚洲一区在线观看视频| 欧美日本在线观看| 亚洲电影av在线| 欧美 日韩 国产精品免费观看| 亚洲精品一二三区| 国产欧美日本一区二区三区| 欧美国产日韩一区二区三区| 欧美三级欧美一级| 欧美成人xxx| 亚洲一区二区三区高清不卡| 国产区欧美区日韩区| 亚洲精品在线电影| 国产一区二区三区在线观看网站| 国产精品久久久一区二区三区| 亚洲一级特黄| 欧美视频导航| 久久九九全国免费精品观看| 欧美一区永久视频免费观看| 亚洲一级在线观看| 久久亚洲色图| 久久久国产一区二区三区| 欧美日一区二区三区在线观看国产免| 欧美激情一区二区| 久久婷婷久久一区二区三区| 亚洲电影第1页| 国产精品草草| 亚洲另类春色国产| 欧美在线www| 性xx色xx综合久久久xx| 欧美成人综合一区| 欧美人牲a欧美精品| 久久久久久久网| 欧美xx69| 亚洲亚洲精品三区日韩精品在线视频| 欧美特黄一级大片| 欧美一区二区三区免费看| 黄色精品免费| 国产精品日韩欧美综合| 国内精品视频在线观看| 欧美日本韩国一区二区三区| 亚洲美女在线国产| 亚洲午夜小视频| 久久久99久久精品女同性| 国产精品视屏| 亚洲激情一区二区| 久久福利视频导航| 欧美v亚洲v综合ⅴ国产v| 宅男在线国产精品| 亚洲少妇诱惑| 亚洲欧洲精品成人久久奇米网| 久久琪琪电影院| 美玉足脚交一区二区三区图片| 亚洲一区二区三区三| 亚洲毛片av| 国产色婷婷国产综合在线理论片a| 亚洲视频1区2区| 亚洲欧美日韩中文播放| 久久久精品欧美丰满| 国产精品久久久久91| 国产一区白浆| 欧美色道久久88综合亚洲精品| 美女日韩在线中文字幕| 国产日韩欧美高清| 国产精品久久久久久久久久直播| 国产欧美一区二区精品性| 国内外成人免费激情在线视频| 亚洲精品在线观| 日韩视频在线观看一区二区| 亚洲一区二区欧美| 久久精品免费观看| 亚洲精品国产拍免费91在线| 国产精品高潮在线| 欧美与黑人午夜性猛交久久久| 欧美日韩大片一区二区三区| 亚洲综合色丁香婷婷六月图片| 亚洲综合色噜噜狠狠| 国产精品福利网| 亚洲成色999久久网站| 免费日韩精品中文字幕视频在线| 亚洲风情亚aⅴ在线发布| 欧美一区二区三区在线观看| 欧美一区二区三区的| 一本色道久久综合精品竹菊| 欧美一区二区在线播放| 国产精品久久97| 亚洲欧美激情视频在线观看一区二区三区| 午夜久久美女| 麻豆成人精品| 国产精品麻豆va在线播放| 久久亚洲欧美| 欧美亚日韩国产aⅴ精品中极品| 两个人的视频www国产精品| 国产精品久久久久久av下载红粉| 亚洲精品免费观看| 欧美日韩一卡| 在线精品国产成人综合| 欧美一区综合| 原创国产精品91| 国产精品视频99| 在线亚洲欧美视频| 在线观看欧美亚洲| 国产一区二区久久久| 亚洲日本电影| 国产亚洲人成a一在线v站| 国产精品高清在线| 亚洲美女av在线播放| 国产女主播一区二区三区| 在线亚洲自拍| 在线视频观看日韩| 一本久久综合亚洲鲁鲁五月天| 一区二区三区日韩精品视频| 欧美一进一出视频| 一区视频在线播放| 国产精品久久久一区二区| 影音先锋日韩有码| 欧美一区二区三区免费看| 久久不见久久见免费视频1| 久久亚洲精品一区二区| 一区二区三区视频在线观看| 久久精品国产视频| 狠狠综合久久av一区二区老牛| 亚洲美女视频在线免费观看| 国产精品一区二区男女羞羞无遮挡| 亚洲激情午夜| 国产精品视频福利| 国产精品mm| 羞羞漫画18久久大片| 亚洲国产高清aⅴ视频| 亚洲精品久久久久| 久久一区国产| 国产亚洲美州欧州综合国| 亚洲一区免费在线观看| 免费久久久一本精品久久区| 欧美午夜视频一区二区| 亚洲黄色av| 免费视频久久| 狠狠色伊人亚洲综合网站色| 美日韩精品视频| 国产一区二区三区免费不卡| 亚洲精品综合| 国产亚洲综合性久久久影院| 久久久久久久久久看片| 欧美一区二区三区电影在线观看| 一区二区自拍| 国产亚洲精品久久久| 亚洲国产毛片完整版| 亚洲女同性videos| 免费日韩av电影| 国产精品视频导航| 日韩亚洲欧美精品| 欧美日韩亚洲高清一区二区| 亚洲精品九九| 欧美日韩精品一区二区天天拍小说| 久久婷婷影院| 亚洲高清在线观看| 国产精品入口福利| 国产专区欧美专区| 国产欧美在线视频| 欧美jjzz| 亚洲精品日产精品乱码不卡| 激情久久五月天| 欧美日韩国产123区| 国产精品久久久久久久久免费| 欧美h视频在线| 亚洲婷婷国产精品电影人久久| 国产精品成人aaaaa网站| 精品91在线| 国产精品激情电影| 亚洲精品孕妇| 国产精品99久久久久久久久| 欧美成人精品一区二区三区| 久久国产福利| 在线电影院国产精品| 午夜精品一区二区三区电影天堂| 久久人人精品| 欧美亚洲一区| 亚洲高清不卡一区| 亚洲国产成人在线视频| 欧美电影在线| 亚洲午夜国产成人av电影男同| 欧美大胆a视频| 日韩亚洲成人av在线| 欧美中文在线免费| 欧美色123| 亚洲六月丁香色婷婷综合久久| 亚洲黄色在线视频| 99视频精品全国免费| 久久精品视频99| 欧美日韩一区自拍| 国产精品一区三区| 欧美在线观看你懂的| 亚洲欧美日韩一区在线观看| 国内伊人久久久久久网站视频| 欧美片在线观看| 美女成人午夜| 一本大道久久精品懂色aⅴ| 99视频在线精品国自产拍免费观看| 欧美视频第二页| 国产精品theporn| 亚洲深夜福利网站| av成人手机在线| 久久综合激情| 国产日韩欧美在线看| 好吊一区二区三区| 亚洲欧美综合网| 国产一区二区三区电影在线观看| 国产精品美女久久久久aⅴ国产馆| 亚洲欧美日韩国产一区二区| 亚洲欧美日韩精品久久亚洲区| 一区精品在线| 在线观看日韩av先锋影音电影院| 一区二区三区中文在线观看| 国产视频综合在线| 亚洲欧美怡红院| 亚洲动漫精品| 狠狠干综合网| 国产一区二区精品丝袜| 美女网站久久| 99伊人成综合| 国产一区二区三区四区hd| 亚洲一区二区高清| 亚洲综合大片69999| 亚洲毛片av| 国产亚洲电影| 欧美大片一区二区三区| 国产一区二区三区电影在线观看| 国产精品扒开腿做爽爽爽软件| 欧美久久九九| 亚洲一区二区在| 国产精品理论片在线观看| 国内精品久久久久伊人av| 在线亚洲电影| 国产精品国产三级国产专播精品人| 一区二区在线视频播放| 欧美与黑人午夜性猛交久久久| 欧美日韩一级视频| 欧美精品久久久久久久| 亚洲人屁股眼子交8| 国内在线观看一区二区三区| 久久精品国产亚洲5555| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲天堂免费在线观看视频| 午夜国产一区| 一区二区自拍| 亚洲制服丝袜在线| 欧美国产日韩xxxxx| 国产毛片精品国产一区二区三区| 国产一区99| 亚洲美女av在线播放| 国产色综合久久| 欧美日韩精品免费在线观看视频| 欧美日韩高清不卡| 欧美一级久久| 亚洲国产小视频在线观看| 国产丝袜美腿一区二区三区| 欧美精品一卡二卡| 国产一在线精品一区在线观看| 久久久久99| 欧美日韩不卡在线| 欧美伦理a级免费电影| 亚洲精品女人| 亚洲日本中文| 欧美国产亚洲视频| 一本久久知道综合久久| 欧美日韩久久不卡| 亚洲乱码一区二区| 国产精品一区二区欧美| 久热精品视频在线免费观看| 亚洲伊人色欲综合网| 欧美在线视频免费观看| 亚洲一级影院| 亚洲无线一线二线三线区别av| 国产精品一区二区在线观看网站| 亚洲一区二区三区成人在线视频精品| 久久中文在线| 一区二区三区久久网| 久久精品国产一区二区三区| 欧美精品国产精品| 欧美一区二区三区视频在线观看| 国产主播一区| 麻豆九一精品爱看视频在线观看免费| 精品69视频一区二区三区| 国产精品午夜春色av| 亚洲精品免费一区二区三区| 国产日韩欧美一二三区| 亚洲欧美激情诱惑| 亚洲第一色在线| 亚洲精品免费网站| 在线观看亚洲| 99视频精品免费观看| 国产精品久久夜| 女人天堂亚洲aⅴ在线观看| 久久久久久欧美| 亚洲色图自拍| 久久琪琪电影院| 欧美激情第10页| 亚洲精品自在久久| 影音先锋久久久| 国产精品稀缺呦系列在线| 国产在线乱码一区二区三区| 国产精品白丝av嫩草影院| 一区二区三区视频观看| 国产麻豆视频精品| 一本到高清视频免费精品| 最新亚洲激情| 99视频精品在线| 国产有码在线一区二区视频| 国产精品剧情在线亚洲| 欧美在线你懂的| 亚洲国产影院| 亚洲在线一区二区三区| 欧美一区二区在线免费播放| 一区二区三区四区五区在线| 狠狠色丁香婷婷综合影院| 久久久久国产精品人| 老司机成人网| 欧美激情bt| 亚洲人成绝费网站色www| 国产精品一区二区久激情瑜伽| 国产精品一区久久久| 国产日韩欧美在线一区| 国产伦理精品不卡| 黑人中文字幕一区二区三区| 亚洲一区二区在线视频| 欧美有码在线观看视频|