您的位置:首页 > 业界新闻

<家庭物联网>与<移动互联网>衔接 的架构设计与实践 推荐

2013-12-17 00:51 573 查看
前言:当智能电视成为移动互联网(如微信等)的客户端时,就形成双层的树状结构了。当智能电视成为移动互联网的客户端时,家人在家庭外时,其手机就成为家庭内电视的客户端了。家庭里的地毯状态,可透过智能电视而将信息推送到家人的手机(客户)端。
高老师陪您成长...


EE EE<家庭物联网>与<移动互联网>衔接

的架构设计与实践

By 高煥堂 於台北

1. 架构设计:家庭物联网与移动互联网的整合架构
就通信层而言,家庭物联网是网状结构的,在软件架构上可以设计成为树状结构。如下图:





当智能电视成为移动互联网(如微信等)的客户端时,就形成双层的树状结构了。





当智能电视成为移动互联网的客户端时,家人在家庭外时,其手机就成为家庭内电视的客户端了。家庭里的地毯状态,可透过智能电视而将信息推送到家人的手机(客户)端。




即使仅仅使用<通用型>客户端:浏览器(Browser);也能随时向家庭里的智能电视查询地毯的状态,或发号控制信号。




这就典型的<手机与AndroidTV>的多机整合、多屏互动的软硬整合系统(或产品)了。

2. 实践案例:手机与Android TV的多机整合
2.1 应用情境 这是2012年9月21日于秦皇岛市举行的<智能电视软硬整合产业联盟会议>>开幕时,副市长(如下图)以他自己的手机上网访问会议厅中AndroidTV里的i-Jetty网页,再透过AndroidApp发出Zigbee信号,打开会议厅的主灯和电视墙。


用户手机上跑浏览器(Browser),用户上网访问会议厅里Android智能电视。其通信架构为:



Android智能电视里有App软件和相关的Zigbee设备驱动,能控制会议厅里的主灯和电视墙。
2.2 iPhone手机端的规划在这个范例里,为了让各种移动终端皆能来访问Android TV,就不特别去开发iPhone客户端的App了。而是,直接采取通用的一般浏览器(Browser)做为这个案例的手机客户端软件了。如下图:


如上图所示,从手机上网联机之后,手机浏览器出现首页画面如下:




这首页的网页HTML代码如下:

范例代码
//index.html
<!DOCTYPEhtml PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type" content="text/html;charset=gbk"><title>Inserttitle here</title></head><body><h1>智能家庭 – 移动互联网</h1> <div > <li>控制操作:</li> <p> <li ><center><ahref="ZigbeeDemo? zigbeecmd=1"><img src="RED.jpg"border="0"></a></center></li> <p> <li><center><ahref="ZigbeeDemo? zigbeecmd=0"><img src="BLUE.JPG"border="0"></a></center></li> </div></body></html>
2.3 衔接iPhone手机端的接口:Servlet
刚才说过了,Android智能电视里有App软件和相关的Zigbee设备驱动,能控制会议厅里的主灯和电视墙。亦即,手机的浏览器软件要与Android框架通信,进而调用到其App软件。



iPhone手机与AndroidTV是两个相互竞争的平台,也是各自发展的。那么,又如何将两个平台整合起来呢? 答案是:运用EIT造形,如下图:




其中,<E>与手机端的浏览器对接;而<T>则与本地App来对接。然后<E>则透过<I>来与<T>衔接起来。




<E>接受来自手机浏览器的信息(如标准HTTP信息格式),透过<I>接口来调用<T>,而<T>则将信息转化为App可理解的信息格式。




当我们心怀EIT造形时,就常常会发现身边早已存在形形***的EIT造形了,不一定都要自己来开发EIT造形的代码。例如,想如上图的规划来整合iPhone手机与Android电视;就会发现i-Jetty是一个现成的EIT造形的代码。于是,我们找到现成的<E&I>平台,就是:i-Jetty框架。





这i-Jetty本身是以Android应用程序形式嵌入(运行)于Android平台里,它可以透过Android框架的API与其它应用程序沟通。因而,在i-Jetty里执行的Servlet程序也能透过该AndroidAPI而与其它应用程序沟通、分享数据。例如,在家庭的AndroidTV里,加入一个i-Jetty插件,来容纳HTML网页和Servlet程序。数千公里外的家庭成员,透过手机Browser解析HTML,与家里的TV沟通,形成大小屏互动、多机整合的架构设计了。




其通信的过程就如下图所示。


秦皇岛副市长以他自己的手机上网访问会议厅中AndroidTV里的i-Jetty网页,再透过AndroidApp发出Zigbee信号,打开会议厅的主灯和电视墙。
详细接口<I>设计 这EIT造形的<E>提供Servlet接口来与手机浏览器来对接。这EIT造形的<T>使用Android的Context接口来与Android框架通信。


迅速落实为代码 已经存在Android App和驱动软件,如下:



由开发者来撰写Servlet代码,透过Context接口来绑定(Bind)了Android的Service服务。如下:




绑定了Service之后,就能调用到AndroidApp和驱动软件,如下:


代码范例// myBinder类packagecom.google.android.ZigbeeApp;importandroid.content.Context;import android.os.Binder;import android.os.Parcel;
public class myBinderextends Binder {private ZigbeeAppData mZigbeeAppData ; privateContext context ; publicmyBinder(Context ctx){ context= ctx ; mZigbeeAppData= new ZigbeeAppData();} @Override public boolean onTransact( int code,Parcel data, Parcel reply, int flags) throws android.os.RemoteException { if (code == 1) reply.writeString( mZigbeeAppData.getAppData(data.readString()) ); else if (code == 2) { String [] strings = {}; data.readStringArray(strings) ; mZigbeeAppData.setAppdata(strings[0], strings[1]) ; } return true ; }}
// myService类packagecom.google.android.ZigbeeApp;import android.app.Service;importandroid.content.Intent;import android.os.IBinder;
public class myService extends Service{ private IBinder mBinder = null ; @Override public void onCreate() { mBinder = newmyBinder(getApplicationContext()); } @Override public IBinder onBind(Intent intent){ return mBinder ; }}
// myTVServlet类package org.mortbay.ijetty;importjava.io.IOException;importjavax.servlet.ServletConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletOutputStream;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;import android.content.ComponentName;import android.content.Intent;importandroid.content.ServiceConnection;import android.os.IBinder;import android.os.Parcel;import android.util.Log;
public class myTVServlet extends HttpServlet{ private static final longserialVersionUID = 1L; private String proofOfLife ; private myTVProxy pProxy = null ;
public void init(ServletConfig config)throws ServletException { super.init(config); android.content.ContextandroidContext = (android.content.Context)config.getServletContext(). getAttribute("org.mortbay.ijetty.context"); proofOfLife= androidContext.getApplicationInfo().packageName; androidContext.bindService ( newIntent( "com.google.android.ZigbeeApp.REMOTE_SERVICE"), mConnection, android.content.Context.BIND_AUTO_CREATE); }private ServiceConnection mConnection = new ServiceConnection() { public voidonServiceConnected( ComponentName className,IBinder ibinder) { pProxy = newmyTVProxy(ibinder); } public voidonServiceDisconnected( ComponentName className) {} };protected void doGet( HttpServletRequest request, HttpServletResponseresponse) throws ServletException,IOException { response.setContentType("text/html"); ServletOutputStream out =response.getOutputStream(); out.println("<html>"); out.println("<h1>TVZigbeeStatus From i-Jetty in FamilyCoud! RESULT is " +pProxy.getStatus( "Text_POWERSTATUS") + "</h1>"); out.println("</html>"); out.flush(); } protected void doPost(HttpServletRequest request, HttpServletResponseresponse) throws ServletException,IOException { } private class myTVProxy { private IBinder ib ; private String mStatus ; myTVProxy(IBinder ibinder) { ib = ibinder ;} public String getStatus(String what) { Parcelpc = Parcel.obtain(); Parcelpc_reply = Parcel.obtain(); pc.writeString(what); try{ ib.transact(1, pc, pc_reply, 0); mStatus = pc_reply.readString(); } catch (Exception e) { e.printStackTrace(); } returnm Status ; } public void refreshStatus(String what, String value) { String[] strings = {"","On"}; strings[0] = what; strings[1] = value; Parcel pc = Parcel.obtain(); pc.writeStringArray(strings); Parcel pc_reply = Parcel.obtain(); try{ ib.transact(1, pc, pc_reply, 0); } catch (Exception e) { e.printStackTrace(); } }}}
~ End ~DDD&& 參考文章(请点选) &&DDDDDDDDDDDDDDDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDDD
1. 智能家庭的软硬整合<A段架构设计>_案例解说2. 智能&大数据时代,架构师思维的十个步骤和演练
3. 基于框架(Framework)的平台开发技术_百篇文章4. 高焕堂的9本eBooks(可下载)DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐