欧瑞博智能家居套件试用报告

     周未试用了两天欧瑞博智能家居套件,包括一个WiFi智能插座,一个WiFI智能遥控器:

优点:1.入网还算便捷,长按插座或遥控器上的开关,红灯闪烁进入配置模式。

         2.多设备免重复添加,即只需一台手机配置,同一网络下的其它手机直接搜索即可。

         3.设备断电,移动位置仍可以继续使用,不用重复配置。

         4.设备反映及时,按下基本同时完成设备操作。

         5.免用户注册与登陆即可实现远程控制

 

缺点:1.APP上的功能太少,只有设备列表与模式控制,并且UI美观不够,还可以做的更人性化。

         2.IOS上的APP问题很多,经常丢失链接。

         3.UI给用户的感觉比较迟钝,像按下按钮调整电视音量,我要连续减少音量,但每按一次,UI上会有个小圈在转,不连续感觉。

         4.智能插座的动静太大,每次开关都有“啪啪”声,很不安全的感觉。

         5.远程控制功能没有介绍,都不知道有此功能。免登陆很方便,但有安全隐患。

背后的原理:

      优缺点大家讨论了很多,这里深入分析下这些设备的实现原理,以插座为例:

1.闪联功能:即配置入门功能的实现,长按插座开关,进入红光快闪状态,此时插座上的Wifi应该是处理搜索模式,搜索一固定的WIFI AP热点,此热点就是客户端APP进入配置模式后打开的,当插座找到此AP后,会获取把要链接的WIFI名称及密码(在配置的时候用户在APP上输入的),之后配置完成,插座就能链接到家里的Wifi路由上了。之后就是普通的Wifi通信。

2.免登陆远程控制功能:每个设备如这个插座都有一个唯一的UUID,配置成功后,此设备便与欧瑞博的服务器通过Wifi建立长链接,这样,当用户离开家后,如通过3G再控制此插座,就会在服务器上查找对应的UUID,找到后,把控制命令下发到插座。这样的确很方便使用,但安全隐患很大,理论上知道了此UUID,就任何人可以随便控制了,也没有用户名密码的保护。

我们最近也在做一款智能控制套件,功能要“高大上”些,以下几个方面觉得可以吸取下:

        1.入网配置,做到比较快捷方便,不要为难用户。我们上一个U+项目,采用的是扫描二维码配置入网,先扫描后仍需要按键入网,流程上不如欧瑞博的简单。

        2.反应速度,我们要通过云实现远程控制,设备能不能及时反应有待考验。

新主题

历时一天,把网站主题更新了下,离期望还有点差距,但是个不错的开始。

工作也越来越忙了,老人机常用联系人,红外模控制块功能的实现,QiLian的LTE项目,U-Home智能家居的项目,还有E760海外一堆零散的工作。

U Plus V2.0

我们的智慧家庭U+项目二期,APP升级方案,简单画了下UI的交互式草图。

目标是让用户体验更好,操作更便捷。所以尽量减少了用户输入,界面的跳转,通过左右、上下滑动来进行操作与设置,如”行云流水”。

默认设备列表,按用户的使用频率排列,对常用的设备,一键能够操作。并且在设置界面仍可以按房间,种类自由分类查看。

Android无卡版本与多版本管理

大部分客户都是机卡分离的,但某些特殊的网络就要求是机卡一体的(即无卡版本)。我们的基于MTK6517+CBP7.2C的方案,原本是不支持无卡版本的。最初的方案是VIA修改CDMA端Modem,只要RIL的Interface不变,理论上应该可以直接使用的。这样尝试后,发现在实验室手机连接8960可以找网被叫,但无信号显示,也无法主叫。在Android启动的时候,正常情况下会查询RUIM卡的信息,比较重要的如ICCID,但无卡版本找不到,所以上层系统会认为机器没有插卡不会打开协议栈。解决办法法是在获取ICCID的时候,添加判断,若为空则强制付个值,这样流程可以继续,信号可以正常显示。另一个问题,无法显示卡的名称,正常情况下,卡中的一个文件会记录卡默认的名称如”联通新时空”,但无卡版本获取不到,解决办法是,通过读取写入手机当中的MCC,MNC,在手机中查表匹配出对应的名称。最奇怪的一个问题,无卡版本进入设置当中的”移动网络”设置项后,会自动掉网,且不可恢复。分析代码发现,此项与网络设置当中的System Select有关,VIA结论是客户提供的PRL不规范,其中Roming Indicator全为零,应该为1才对,修改PRL后问题解决。

  我们的E760项目,GSM+CDMA(450M )己做了差不多十多个国家,缅甸,乌兹别克斯坦,乌克兰,摩尔多瓦,德国,瑞典…,基于同一Base版本,要做出大量的分支,对之后的代码修改,同步,版本编译发布管理都提出了相当的挑战,解决办法—图形化。


 
 

Android与Server的交互方式

Android客户端与服务器交互方式,基于两种通信协议,四类通信方式,如下图:


【Socket与HTTP两种连接协议的区别】

1.HTTP连接使用的是”请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。

2.socket是可以监听,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。保持客户端与服务器数据的实时与同步。

【四种连接方式的区别】

1.Socket,Android端SDK原生支持,服务器端无论是Java还是.NET都有接口,需要注意的地方与普通基于Socket网络编程的一样。

2.Http/HttpClient, Android端SDK原生支持,服务器端也无其它要求,ASP,JSP,PHP都能够处理,典型的框架如SSH-JSON。Java技术的服务器主要使用HttpServlet,.net技术的服务器对应HttpHandle,但处理起来没有那么Java那么直观。Http/HttpClient可采用的数据格式协议可以是简单的String类型,也可以是JSON或XML。

3.xml rpc是使用http协议做为传输协议的rpc机制,使用xml文本的方式传输命令和数据。Android本身并不支持XML-RPC协议, 需要下载相关工具, http://code.google.com/p/android-xmlrpc/downloads/list 服务器端可参考此文章,http://www.ibm.com/developerworks/cn/webservices/ws-xml-rpc/

4.WebService,Android本身也不支持基于SOAP的WebService,需要下载相关工具http://code.google.com/p/ksoap2-android/,服务器端支持的应该比较多,如基于.NET可以使用WCF,基于Java的Axis2,Apche CXF等。

5.restful,Android可以使用Http/HttpClient接口,Server使用ASP.NET Web API实现方式。

【使用场景】

跟据两种连接协议的特点来区分,如想做一个即时聊天程序,最好使用Socket,作一个发布类的应用可以使用基于HTTP协议的各种方式,像WordPress使用的XML_PRC.

GMS引起的待机时间短

近日尼日利亚客户反馈,手机在当地纯待机也只有45个小时,我们在实验室测试的待机电流约为10mA,1800mah的电池,理论时间应该在180小时左右,这差距也有点小大了。

从客户反馈的MTK Log中看到:

03-12 15:50:56.351 248 490 D PowerManagerService: acquireWakeLock flags=0x1 tag=DownloadManager

03-12 15:50:56.359 377 17849 V DownloadManager: initiating download for http://www.gstatic.com/android/keyboard/dictionarypack/metadata.json

03-12 15:50:56.359 377 17849 I DownloadManager: Initiating request for download 161369

03-12 15:50:56.359 377 17849 D libc-netbsd: getaddrinfo: www.gstatic.com return error = 0x8 >>

03-12 15:50:56.360 377 17849 D Proxy : prefProxy:DIRECT@

03-12 15:50:56.361 377 17849 W DownloadManager: Aborting request for download 161369: no network connection available

PowerManagerService
一直在持续的获取wakeLock,从Log上看no network connection available,没有网络为什么还在不停的尝试去下载呢。

Google了一下gstatic网站是干吗用的,发现也有人遇到类似的问题,大体上是讲用于获取输入法扩展包的一个地方。想到输入法扩展包,设置当中看到确实有这么一项。但查代码没有发现原生的AndroidInputMethode有此模块。后来突然想到是后来添加了GMS包,里面的LatinImeGoogle覆盖掉了原生的LatinIme,并且多了一个APK“LatinImeDictionaryPack”

删除此DictionaryPack问题得以解决,现在待机能有10~20个小时(还有差距,看来引起功耗大的问题不止一个)。

这应该是GMS包的一个Bug,在stackoverflow有人也问题了,4.0之后的GMS包应该解决了这个问题。

公钥,私钥,SSH Keys,KeyStore,证书

公钥,私钥是一种非对称加密的方式,可以用在很多方面,并且实现的标准不统一。

一,用于远程登陆


例于GithubBitbucket,还有公司的服务器可以使用SSH Keys快捷登陆。


生成方式:
ssh-keygen -t rsa -C “email@email.com”

二,用于给Android上的APK签名(Keystore来签名,Keystore包含公私钥与证书)


使用Eclipse的时候,调试的时候会用到默认的Debug.Keystore.发布的时候会用到Release.Keystore.


生成方式:
keytool.exe -genkey -alias androiddebugkey -keyalg RSA -validity 60000 -keystore debug.keystore

三,用于在编译Android项目的时候,给平台及应用签名


编译的时候会用到四个Key,分别是testkey,platform,shared,media,Android的源码目录 build/target/product/security下面。


生成方式:

development/tools/make_key testkey ‘/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com’

development/tools/make_key platform ‘/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com’

development/tools/make_key shared ‘/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com’

development/tools/make_key media ‘/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com’

之前一直有个误区,只需要一个公钥私钥对就可以行遍网络。不同的应用场景,使用公钥,私钥的方式也不一样,如在生成SSHkey的时候,只需要提供一个密码,但在生成Keystore的时候,就需要提供姓名,公司,位置等信息。

前三者之间也不是完全可以转换的,由三转二,有相应的方法,并且从Keystore中可以提取公钥与私钥。

手机定位技术(大话基站LBS,GPS,AGPS,WIFI定位区别)

关于基站,GPS,AGPS,GPS-ONE区别,网上有是一堆文档,这里另一视角来说明:

(Android的CDMA手机,支持GPS,AGPS,使用百度地图)

A.XX新买了一台手机(还没来得急办卡),此时开机,打开百度地图,无法获取位置信息。

1.打开GPS,经过长时间的搜星,定位成功。此为GPS定位。

2.关闭GPS,打开Wifi,连接家里的无线路由,百度地图定位成功。此为WIFI定位

3.若同时打开GPS与Wifi,则先进行Wifi定位,待GPS定好后,使用GPS定位。

B.XX终于办了卡,然后开机,打开百度地图(离线地图,未开2G/3G数据业务,未开GPS,未开Wifi),无法定位。

1.仅打开数据业务,定位成功,此为基站定位

2.又打开GPS,精确定位成功,则为AGPS定位。(网络辅助GPS定位)

总结一下,定位是按最快原则选择的。若同时开启,使用顺序如下,最终还是得靠GPS来准确定位。

WIFI > LSB > AGPS > GPS

参考文档:

科普知识:GPS,AGPS,LBS,wifi,BDS定位介绍和区别

2013,转眼间,2014

转眼间,工作6年有余,2013给自己定的目标是对前几年看书的总结深入理解,OOA/D,要学会画UML类图,架构图,能够按RUP的流程开展工展,进行设计,重点在深度,不再发散学习.虽然稍有些波折,但还是沿着既定计划向前走。

又转眼,2014,将会是深造之年,PMP相关知识的学习实践,要对Android进行更深入了解,准备TOEIC考试.其它学习Python及Linux的基础知识,为进一步深入研究Linux Kernel做准备.

个人站点也好久没更新,感觉没内容可写,工作比较杂,不像之前纯做程序员的时代可以专心研究并深入总结一些内容与大家分享,思考下,更主要的可能是没有定位不明确,这次明确下:

    1.记录你的工作历程

    2.总结你的工作经验

    3.分享你的作品成果

    4.结交同道中人

这个站点从最初的ASP.NET平台,到现在的WordPress默认主题,是时候也该重新定制下了,敬请期待。

上海国际智能建筑展览会

iBT

在上海只呆了两天,但见到有这么多厂商在智能建筑,家居方向都己经做了很多工作,反观我们的U Plus,还有不少的差距,但我们的目标群体不一样,我们的方向应该是轻量级的预装市场。

从传统的互联网,到移动互联网,下一波浪潮所谓的物联网时代,物联网的核心爆发点是智能家居。一切以人为本,为人来服务的。