当前位置:文档之家› 基于Android平台的智能家居系统设计

基于Android平台的智能家居系统设计

鍩轰簬Android骞冲彴鐨勬櫤鑳藉灞呯郴缁熻璁?鎽? 瑕侊細涓轰簡瀹炵幇瀹跺眳鐢熸椿鏅鸿兘銆佹柟渚跨瓑鐩殑锛屾彁鍑轰竴绉嶅熀浜嶢ndroid骞冲彴鐨勬櫤鑳藉灞呯郴缁熴€傞噰鐢ㄥ唴澶栫綉閫氫俊鏂瑰紡锛屼娇寰楀綋瀹跺涵瀹藉甫涓嶅彲鐢ㄦ椂浠嶈兘閫氳繃鍐呯綉瀹炵幇瀵瑰灞呰澶囩殑鎺у埗銆傚皢鐢ㄦ埛閰嶇疆淇℃伅銆佽澶囦俊鎭瓨鍦ㄧ綉鍏充娇寰椾笉鍚屽鎴风鑳戒俊鎭叡浜紝瀹炵幇鍔ㄦ€佹坊鍔犮€佸垹闄ゅ姩浣溿€傞噰鐢ㄦ帹閫佽€屼笉鏄疆璇紝瀹炴椂鎬уソ銆傚鎴风APP鍔熻兘榻愬叏锛屼簯璁$畻鐨勪娇鐢ㄥ疄鐜颁簡澶栫綉鎺у埗锛屽悓鏃朵究浜庢湭鏉ョ殑绯荤粺鎵╁睍銆?鍏抽敭璇嶏細鏅鸿兘瀹跺眳锛汚ndroid锛涗俊鎭帹閫侊紱浜戣绠楋紱杩滅▼鎺у埗0 寮曡█銆€銆€鏅鸿兘瀹跺眳閫氳繃鐗╄仈缃戞妧鏈皢瀹跺眳瀛愮郴缁熸湁鏈虹粨鍚堝湪涓€璧峰舰鎴愰珮搴︽櫤鑳藉寲鐨勬櫤鎱у搴璠1]銆傜墿鑱旂綉銆佷簯姒傚康鐨勬彁鍑哄姞閫熶簡鏅鸿兘瀹跺眳鐨勫彂灞曪紝Android鏅鸿兘鎵嬫満鍜岀綉缁滄妧鏈殑鍙戝睍涔熺粰鏅鸿兘瀹跺眳甯︽潵浜嗘柊鐨勬€濊矾[2]銆傛湰鏂囨彁鍑轰竴涓熀浜嶢ndroid骞冲彴鐨勬櫤鑳藉灞呯郴缁熻璁℃柟妗堛€備互Android鎵嬫満浣滀负瀹跺眳鎺у埗缁堢锛岄€氳繃浜戝钩鍙拌浆鍙戞秷鎭紝鐪熸瀹炵幇杩滅▼鎺у埗锛屽皢鐢ㄦ埛淇℃伅銆佽澶囦俊鎭瓨鍦ㄧ綉鍏充娇涓嶅悓瀹㈡埛绔兘瀹炵幇淇℃伅鍏变韩锛屽疄鐜板姩鎬佹坊鍔犮€佸垹闄ゅ姩浣溿€傜粨鍚堟帹閫佹妧鏈幏寰楄壇濂界殑瀹炴椂鎬с€?1 绯荤粺鎬讳綋妗嗘灦鍥?銆€銆€绯荤粺鐢卞鎴风銆佷簯璁$畻涓績銆佺綉鍏冲拰瀹跺涵璁惧缁勬垚銆傜郴缁熸鏋躲€?銆€銆€瀹㈡埛绔疄鐜板搴曞眰璁惧鐨勬帶鍒舵柟寮忓寘鎷細(1)鍐呯綉鎺у埗锛氬鎴风浣跨敤瀹跺涵缃戠粶涓庣綉鍏崇洿鎺ラ€氫俊锛岀敱缃戝叧鎺у埗搴曞眰璁惧锛?2)澶栫綉鎺у埗锛氬鎴风涓庣綉鍏充笉鍦ㄥ悓涓€缃戞鍐咃紝瀹㈡埛绔寚浠ょ敱浜戞湇鍔″櫒杞彂缁欏搴旂殑缃戝叧锛屽啀鐢辩綉鍏虫帶鍒跺簳灞傝澶囥€傞噰鐢ㄥ唴澶栫綉鐨勯€氫俊鏂瑰紡锛屼娇寰楀搴甯︾綉缁滃湪涓嶅彲浣跨敤鐨勬儏鍐典笅锛屼粛鑳介€氳繃鍐呯綉閫氫俊瀹炵幇瀵硅澶囩殑鎺у埗锛屽悓鏃惰妭鐪佺敤鎴锋暟鎹祦閲廩3]銆傛瘡娆¤繍琛屽鎴风杞欢锛屼細鑷姩鑾峰彇缃戝叧澶勭殑閰嶇疆淇℃伅銆佽澶囦俊鎭€傜綉鍏冲悓姝ュ簳灞傝澶囩姸鎬侊紝褰撳彂鐢熸敼鍙樻椂鐢辩綉鍏宠浆鍙戠粰瀹㈡埛绔紝浣跨敤鎴疯兘鍙婃椂鑾风煡搴曞眰璁惧鐨勬渶鏂扮姸鎬併€?2 瀹㈡埛绔璁′笌瀹炵幇銆€銆€2.1 瀹㈡埛绔姛鑳借鏄?銆€銆€Android瀹㈡埛绔姛鑳芥ā鍧椼€?銆€銆€璁惧绠$悊鏄牳蹇冩ā鍧楋紝鍖呮嫭鑷畾涔夋埧闂村拰璁惧銆傚彲娣诲姞銆佸垹闄ゃ€佷慨鏀规埧闂达紝鎴块棿涓嬪彲娣诲姞璁惧銆傜偣鍑昏澶囩鐞嗭紝閫氳繃鍚庡彴鑾峰彇褰撳墠鐢ㄦ埛涓嬬殑鎵€鏈夋埧闂村苟浠SON鏍煎紡杩斿洖锛屽鎴风瀹屾垚瑙f瀽骞舵樉绀哄湪鐣岄潰涓婏紝鐐瑰嚮娣诲姞鍥炬爣杩涘叆娣诲姞鎴块棿鐣岄潰锛屽~鍐欐埧闂村悕绉板苟灏嗙敤鎴稩D涓庢埧闂村悕绉板彂寰€缃戝叧骞朵繚瀛樿嚦鏁版嵁搴撱€傞€氳繃闀挎寜鎴块棿鐣岄潰瀹炵幇鍒犻櫎涓庝慨鏀瑰姩浣溿€傜偣鍑绘埧闂翠細鏄剧ず璇ユ埧闂翠笅鐨勬墍鏈夎澶囷紝鍙坊鍔犺澶囷紝闀挎寜鍒犻櫎璁惧锛屼笉鎻愪緵淇敼璁惧鍔ㄤ綔銆傚彲浠ユ帶鍒跺崟涓澶囨垨鍖哄煙鍐呯殑鎵€鏈夎澶囷紝涔熷彲浠ュ鏌愪釜鎯呮櫙妯″紡鍏宠仈鐨勮澶囪繘琛岃仈鍔ㄦ帶鍒躲€?銆€銆€2.2 瀹㈡埛绔鏋?銆€銆€鍦‥clipse寮€鍙戠幆澧冧笅锛岄噰鐢╦ava璇█锛屽熀浜嶮VC妯″紡瀵瑰鎴风杩涜璁捐銆傝鍥惧眰View璐熻矗鐢熸垚鐢ㄦ埛鐣岄潰锛屾帴鏀惰緭鍏ュ苟鏄剧ず缁撴灉銆傛帶鍒跺眰Controller鐢ㄤ簬鐩戝惉鐢ㄦ埛鎿嶄綔骞朵綔鍑哄弽搴斻€傛ā鍨嬪眰Model瀹氫箟浜嗗悇绉嶅姛鑳芥ā鍧楋紝鍖呮嫭閫氫俊妯″潡銆佹暟鎹簱妯″潡銆佹暟鎹牸寮忕殑灏佽鍜岃В鏋愭ā鍧楃瓑[4]锛屽叾涓€氫俊妯″潡鏄牳蹇冦€?銆€銆€2.3 閫氫俊妯″潡銆€銆€閫氫俊妯″潡璐熻矗瀹㈡埛绔拰鏈嶅姟鍣ㄦ垨缃戝叧闂寸殑娑堟伅閫氫俊鍜岄摼璺淮鎶ゃ€傞€氫俊鏂瑰紡鏈夛細TCP/UDP銆丠ttp銆丮QTT鎺ㄩ€併€傜郴缁熺殑閫氫俊鍗忚銆?銆€銆€2.4 閫氫俊妯″潡瀹炵幇銆€銆€2.4.1 Http閫氫俊銆€銆€澶栫綉閫氫俊鏂瑰紡涓嬶紝鐢ㄦ埛鐧诲綍銆佽幏鍙栬澶囦俊鎭瓑鐢卞鎴风閲囩敤Http寤虹珛涓诲姩杩炴帴锛屾湇鍔″櫒灏嗙粨鏋滀互JSON鏍煎紡杩斿洖銆傛ā鍧椾腑鐨凥ttp璇锋眰鐢ˋndroid-Async-Http缃戠粶璇锋眰搴撳疄鐜帮紝瀹冩槸鍩轰簬Apache HttpClient搴撲箣涓婄殑涓€涓紓姝ョ綉缁滆姹傚鐞嗗簱锛岀綉缁滃鐞嗗潎鍩轰簬Android鐨勯潪UI绾跨▼锛屼笉闃诲UI鎿嶄綔锛岄€氳繃鍥炶皟鏂规硶澶勭悊璇锋眰缁撴灉銆?銆€銆€Android-Async-Http浣跨敤绠€鍗曪紝閫氳繃鏍稿績绫籄syncHttp-銆€銆€Client鐨勫疄渚嬪氨鍙互鎵ц缃戠粶璇锋眰锛屾彁渚沺ut銆乸ost绛夋柟娉曘€傜櫥闄嗚繃绋嬪涓嬶細銆€銆€(1)鍒涘缓AsyncHttpClient鐨勫疄渚?銆€銆€AsyncHttpClient client = new AsyncHttpClient();銆€銆€(2)鍒涘缓璇锋眰鍙傛暟鐨勫皝瑁呭璞?銆€銆€RequestParams params = new RequestParams();銆€銆€params.put("username", userName);銆€銆€params.put("userpass", userPass);銆€銆€(3)鎵цpost鏂规硶銆€銆€client.post(url, params,銆€銆€new AsyncHttpResponseHandler (){銆€銆€public void onSuccess(int statusCode, Header[] headers,銆€銆€byte[] responseBody){銆€銆€if(statusCode == 200){//鎴愬姛銆€銆€Toast.makeText(this,new String(responseBody) ).show();}}銆€銆€Public void onFailure(int statusCode, Header[] headers,銆€銆€byte[] responseBody Throwable error){銆€銆€error.printStackTrace();//澶辫触銆€銆€}}鈥?;銆€銆€new AsyncHttpResponseHandler()杩欎釜瀹炰緥鐢ㄤ簬鎺ユ敹璇锋眰缁撴灉锛屼竴鑸噸鍐檕nSuccess()鍜宱nFailure()鏂规硶鎺ユ敹璇锋眰鎴愬姛鎴栧け璐ョ殑娑堟伅銆俹nSuccess()鏂规硶鐨勫弬鏁皉esponseBody涓哄搷搴斿唴瀹瑰瓧鑺傘€?銆€銆€2.4.2 MQTT鎺ㄩ€?銆€銆€MQTT鏄熀浜嶵CP/IP鍗忚锛屼笓涓虹墿鑱旂綉寮€鍙戠殑杞婚噺绾ч€氫俊鍗忚銆傝鍗忚閽堝缃戠粶宸€佽绠楄兘鍔涗綆鐨勮澶囧仛浜嗙壒娈婂鐞嗭紝浣垮叾鑳介€傚簲鐗╄仈缃戝簲鐢ㄥ満鏅紝鏈夊崰鐢ㄥ甯﹀皬銆佽€楃數閲忓皯绛変紭鍔裤€傚崗璁噷鏈変袱涓富瑕佽鑹诧細MQTT client鍜孧QTT server銆俢lient鍚憇erver璁㈤槄鏌愪釜璇濋灏辫兘鏀跺埌鍙戝竷鍒拌璇濋鐨勬墍鏈夋秷鎭紱client鍙戝竷娑堟伅鍒版煇涓瘽棰樹笅锛屽垯璇ヨ瘽棰樼殑鎵€鏈夎闃呰€呴兘鑳芥敹鍒癧5]銆傞€氫俊鏃跺簭鍥俱€?銆€銆€鏈枃閫氳繃MQTT瀹炵幇瀹㈡埛绔疄鏃惰幏寰楄澶囦俊鎭€傚鎴风瀵瑰簲MQTT client锛屾槸娑堟伅璁㈤槄鑰呫€傚綋鐘舵€佹敼鍙樻椂锛岀敱璁惧灏嗕俊鎭彂閫佺粰缃戝叧锛屽啀鐢辩綉鍏充紶閫掔粰MQTT server锛屽啀鎺ㄩ€佽嚦璁㈤槄浜嗚缃戝叧鐨勫鎴风銆備娇鐢∕QTT锛岄』灏唌qttv3.jar鍖呭姞鍏ndroid搴旂敤绋嬪簭涓紝瀹冩槸IBM鎻愪緵鐨凪QTT鍗忚鐨勫疄鐜般€侫PK璋冪敤璇ar鍖呮彁渚涚殑API 鎺ュ彛锛屽氨鑳藉缓绔婱QTT client鍜孧QTT server鐨勮繛鎺ャ€傛祦绋嬪涓媅6]锛? 銆€銆€(1)鍒涘缓涓€涓狹qttClient瀵硅薄锛屽弬鏁板寘鎷琈QTT server鎵€鍦ㄧ殑IP 鍦板潃鍜岀鍙e彿銆佸鎴风鍞竴鏍囪瘑clientid绛夈€?銆€銆€MqttClient client=new MqttClient("tcp://123.57.219.126:銆€銆€1883",銆€銆€"test", new MemoryPersistence());銆€銆€(2)鍒涘缓MqttConnectOptions鐨勫璞″苟杩涜璁剧疆銆傜敤鎴峰悕鍜屽瘑鐮佺敤浜庤繛鎺QTT server鏃惰繘琛岄獙璇侊紝蹇冭烦鏃堕棿鐢ㄤ簬client瀹氭椂鍙戦€佸績璺冲寘锛屼互渚垮拰server淇濇寔杩炴帴銆?銆€銆€MqttConnectOptions options=new MqttConnectOptions();銆€銆€options.setUserName(userName);//鐢ㄦ埛鍚?銆€銆€options.setPassword(passWord.toCharArray());//瀵嗙爜銆€銆€options.setKeepAliveInterval(20);//蹇冭烦鏃堕棿銆€銆€(3)缁欏鎴风璁剧疆鍥炶皟銆?銆€銆€client.setCallback(new MqttCallback() {銆€銆€public void connectionLost(Throwable cause) {銆€銆€//杩炴帴涓㈠け鍚庯紝杩涜閲嶈繛}銆€銆€public void deliveryComplete(IMqttDeliveryToken token){銆€銆€//publish鍚庝細鎵ц鍒拌繖閲寎銆€銆€public void messageArrived(String topicNam e,銆€銆€MqttMessage message) throws Exception {銆€銆€//subscribe鍚庡緱鍒扮殑娑堟伅浼氭墽琛屽埌杩欓噷闈?銆€銆€Message msg = new Message();銆€銆€msg.what = 1;銆€銆€msg.obj = topicName+"---"+message.toString();銆€銆€//閫氳繃handler浼犻€掔粰涓荤嚎绋嬭繘琛孶I鏇存柊銆€銆€handler.sendMessage(msg);}});銆€銆€(4)杩炴帴鍒癕QTT server銆?銆€銆€client.connect(options);銆€銆€(5)璁㈤槄鏌愪釜缃戝叧鐨勮瘽棰橈紝鎺ユ敹缃戝叧鍙戝竷鍒拌璇濋涓嬬殑娑堟伅锛屽嵆璁惧淇℃伅銆俆OPICS鏄鎴风璁㈤槄鐨勮瘽棰橈紝璁句负鈥済ateway-example鈥濄€俀OS_VALUES浠h〃鏈嶅姟璐ㄩ噺淇濊瘉绾у埆锛?琛ㄧず鑷冲皯浼氬彂閫佷竴娆℃秷鎭€?銆€銆€client. subscribe(TOPICS, QOS_VALUES);銆€銆€MQTT鎶€鏈彲浠ュ疄鐜板簳灞傝澶囦俊鎭殑瀹炴椂鏇存柊锛岄潪甯搁€傚悎鏅鸿兘瀹跺眳杩欑浣跨敤鍦烘櫙銆?3 浜戣绠椾腑蹇?銆€銆€浜戣绠楀皢璁$畻浠诲姟鍒嗗竷鍦ㄥぇ閲忚绠楁満鏋勬垚鐨勮祫婧愭睜涓婏紝浣垮悇绉嶅簲鐢ㄧ郴缁熸寜闇€鑾峰彇璁$畻鍔涖€佸瓨鍌ㄧ┖闂村拰淇℃伅鏈嶅姟[7]銆備簯璁$畻浣滀负涓€绉嶆柊鎶€鏈彈鍒拌秺鏉ヨ秺澶氱殑浜茬潗锛屽緢澶氬鏍°€佷紒涓氶兘寤虹珛浜嗕簯璁$畻鏁版嵁涓績銆傛湰鏂囬噰鐢ㄩ樋閲屼簯ECS(Elastic Compute Service)浣滀负浜戣绠椾腑蹇冿紝瀹冩槸涓€绉嶇畝鍗曢珮鏁堛€佸鐞嗚兘鍔涘彲寮规€т几缂╄绠楁湇鍔°€傛湇鍔″櫒寮€鍙戞鏋堕噰鐢↗query+SpringMVC+Mybatis+Ehcache銆侻ybatis鏄竴涓熀浜嶫ava鐨勬寔涔呭眰妗嗘灦锛屾敮鎸佹櫘閫歋QL鏌ヨ銆備负浜嗘彁楂楳ybatis鐨勬€ц兘锛岄渶瑕佹坊鍔犵涓夋柟缂撳瓨缁勪欢鏀寔锛岀洰鍓嶇敤鐨勬瘮杈冨鐨勬槸Ehcache缂撳瓨銆侲hcache鎬ц兘寮哄ぇ銆佸揩閫熺畝鍗曪紝鍏锋湁澶氱缂撳瓨绛栫暐銆侻ybatis涓嶦hcache鏁村悎鍙互鎻愰珮鎬ц兘锛屾彁楂樻煡璇㈡晥鐜囷紝闄嶄綆鏁版嵁搴撳帇鍔涖€?4 鍔熻兘娴嬭瘯銆€銆€涓昏瀵硅澶囩殑瀹炴椂鎺у埗鍜岀姸鎬佸€肩殑瀹炴椂鍒锋柊杩涜浜嗛獙璇併€傝澶囩敤缁х數鍣ㄦā鎷燂紝浣跨敤瀹夎Android绋嬪簭鐨勬墜鏈轰綔涓哄鎴风杩涜鍔熻兘娴嬭瘯銆?銆€銆€鍦ㄥ缃戠幆澧冧笅锛屽綋瀹㈡埛绔繛鎺ユ湇鍔″櫒鍚庯紝瑙﹀彂璁惧寮€鍏虫寜閽紝鍙互灏嗘帶鍒跺懡浠ょ敱浜戜腑杞嚦缃戝叧锛屽啀杞彂鑷冲簳灞傝澶囨帶鍒剁户鐢靛櫒寮€鍏筹紝鍚屾椂璁惧鐨勬渶鏂扮姸鎬佸拰浼犳劅鍣ㄥ€间篃浼氬湪瀹㈡埛绔繘琛屽疄鏃跺埛鏂般€傛祴璇曠粨鏋滃鍥?锛屽鎴风鑳戒繚鎸佸拰缃戝叧淇℃伅鍚屾銆?5 缁撹銆€銆€鏈枃绠€瑕佷粙缁嶄簡鍩轰簬Android骞冲彴鐨勬櫤鑳藉灞呯郴缁熻璁″拰鍏抽敭鎶€鏈€傝绯荤粺缁撳悎浜嗕簯璁$畻鍜孧QTT鎶€鏈紝瀹炵幇杩滅▼鎺у埗鍜屼俊鎭悓姝ワ紝鍚屾椂鎻愪緵浜嗗唴缃戞帶鍒讹紝璁惧淇℃伅瀛樺湪缃戝叧淇濊瘉鐢ㄦ埛淇℃伅鍏变韩銆備负甯傚満鍖栧簲鐢ㄦ彁渚涗竴绉嶅弬鑰冦€?。

相关主题