标签:sys 企业 修改 发展 ble alt 优缺点 view 监听
智能家居是在互联网的影响之下物联化体现。智能家居通过物联网技术将家中的各种设备连接到一起,提供各种控制或者定时控制的功能和手段。与普通家居相比,智能家居不仅具有传统的家庭居住功能,同时还兼备建筑、网络通信、信息家电、设备自动化功能,提供全方位的信息交互功能。
在本课程中一共有两个案例,第一个是智能摄像头,我将演示如何通过自己编写Android应用控制网络摄像头,实现远程监控功能。第二个是蓝牙继电器,通过手机的蓝牙跟智能设备进行通信进而控制开关,实现电器设备的“智能化”。
智能家居的概念起源很早,但是直到1984年美国联合科技公司(United Technologies Building System)将建筑设备信息化、整合化概念应用于美国康涅狄格州(Connecticut)哈特佛市(Hartford)的CityPlaceBuilding时,才出现了首栋的“智能型建筑”,从此揭开了全世界争相建造智能家居派的序幕。智能家居从开始到现在主要经历了四个阶段。
通过一个中央微处理机接受相关电子产品(检测环境变化)的信息,再发送给其他产品。
家庭网络是在家庭范围内将家电(安全系统、照明系统)和广域网相连接的一种新技术。
利用数字技术、网络技术及智能控制技术设计改进的新型家电产品,比如网络空调。
能够通过网络系统交互信息的家电产品。
智能家居在我国还是一个新生产业,处于一个导入期与成长期的临界点,我国政府在2013年8月14日发表了关于促进信息消费扩大内需的若干意见,大力发展宽带业务,也为智能家居打下了坚实的基础,加之智能家居市场消费观念还未形成,市场的消费潜力必然是巨大的,产业前景光明。
概念熟悉、产品认知的阶段,还没有出现专业的智能家居生产厂商。
成立了五十多家智能家居研发生产企业,没有进入国内市场。
过分夸大智能家居的功能,行业用户、媒体开始质疑智能家居的实际效果 ,国内企业转型,国外企业进入(罗格朗、霍尼韦尔)。
进入2014年以来,各大厂商已开始密集布局智能家居,经过一年多产业磨合,2015年合作企业已普遍进入到出成果时刻,智能家居新品已经层出不穷的出现了。
智能灯泡
智能摄像头
智能空调
智能家居的一部分,将蓝牙模块和灯泡相结合,通过手机和蓝牙模块进行通讯,控制电灯中的电压板,从而控制灯泡的打开、关闭、点动等操作。
住家、卧室、客厅、厨房、浴厕,办公室、会议室、地下 室、汗蒸房、美容院、医院、疗养院等等地方。
优点:方便、快捷、能耗低、寿命长、扩展性好
缺点:受距离限制(5-10米),不稳定
灯泡
蓝牙模块
手机,目标:通过手机控制灯泡的打开、关闭、点动操作
//获取本地蓝牙适配器
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
//打开手机蓝牙
mBluetoothAdapter .enable();
//关闭手机蓝牙
mBluetoothAdapter.disable();
//扫描蓝牙设备
mBluetoothAdapter.startDiscovery();
//取消扫描蓝牙设备,减少资源的消耗
mBluetoothAdapter.cancelDiscovery();
startDiscovery()和cancelDiscovery()必须在工程中注册一个蓝牙广播接受者
//添加蓝牙广播接受者
IntentFilter filter = new IntentFilter();
// 开始扫描的广播
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
// 扫描完成的广播
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
// 发现一个可用的设备的广播
filter.addAction(BluetoothDevice.ACTION_FOUND);
mBluetoothReceiver = new BluetoothReceiver();
//注册监听
registerReceiver(mBluetoothReceiver, filter);
蓝牙广播接受者
class BluetoothReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//获取蓝牙设备
}
}
连接设备
public void connectServer(final BluetoothDevice device) {
new Thread(new Runnable(){
@Override
public void run() {
try {
System.out.println(randomUUID.toString());
BluetoothSocket clientSocket = device.
createRfcommSocketToServiceRecord(
UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"));
clientSocket.connect();
out = clientSocket.getOutputStream();
System.out.println("连接成功");
Looper.prepare();
Toast.makeText(BluetoothDemoActivity.this, "连接成功", 0).show();
Looper.loop();
} catch (IOException e) {
e.printStackTrace();
}
}}).start();
}
注意:蓝牙2.1版本不用使用匹配的UUID也可以,但不保证准确性,蓝牙4.0版本需要使用匹配的UUID,为了兼容性都使用匹配的UUID
UUID: 00001101-0000-1000-8000-00805f9b34fb
匹配密码:1518(高版本为了低功耗不用密码验证)
Looper :是用来封装消息循环和消息队列的一个类,用于在android线程中进行消息处理
Looper.prepare() :在一个线程中运行一个消息循环,通过perpare开启消息循环
Looper.loop() :循环处理消息,直到循环结束为止
打开灯泡
private void openLight() {
if(out == null) return;
try {
// 向服务端写数据
byte[] b = new byte[5];
b[0] = (byte) 0x01;
b[1] = (byte) 0x99;
b[2] = (byte) 0x10;
b[3] = (byte) 0x10;
b[4] = (byte) 0x99;
out.write(b);
out.flush();
} catch (IOException e) {
Toast.makeText(this, "打开失败", 0).show();
e.printStackTrace();
}
}
注销广播接受者
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mBluetoothReceiver);
}
网络摄像头
我这里采用的是 品牌: EasyN/易视眼 型号: TM007 ,产品图片如下。
对应SDK
我们开发的软件是基于第三方智能网平台的,因此需要使用到第三方的SDK。
首先当我们将网络摄像头买回来的时候,需要给其设置wifi账号和密码,以让我们的硬件能够连接到物联网云平台。在我们这个案例中使用到的物联网云平台是台湾TUTK公司http://www.tutk.com/推出的IOTC(Internet of Things Cloud 物联网云)平台。摄像头使用的是深圳市普顺达科技有限公司 http://www.easyn.cn/的硬件设备。
这两家公司的网页首页截图如下:
当我们的摄像头通上电并设置好网络后会自动连接到IOTC服务器。然后处于等待状态,等待接收来自App端发送的指令。App通过硬件设备的UID、用户名、密码登陆到IOTC服务器,然后发送指令。IOTC获取到App的指令后在转发给设备,然后设备将返回结果(可能是状态数据也可能是摄像机画面)在返回给IOTC,IOTC再将这些结果数据传给App。这样整个就实现了手机和摄像头的互联互动。在这整个过程中IOTC平台是核心部分,也可以看出智能家居其实拼的就是服务平台。
我们要做的案例效果图如下,总共有两个界面,第一个界面是登录界面,在文本框中输入名称、UID、密码,其中名称是我们自己给自己的摄像头设备起的名称,可以随意写。UID在设备上有,我们直接抄过来,是设备的唯一标识,不可以修改。密码是设备出厂时给了默认的,我们后期可以修改的。为了防止被黑客给黑掉,其实我们只要UID不外漏即可。
编写布局文件 布局文件共两个,第一个登录界面的布局太简单了,就不给出来了。值给出第二个布局文件。
添加类库 如下图所示,考虑到类库的保密性在该文档中就不再给出下载地址。
核心代码 总共有两个Activity,分别是MainActivity和CameraPlayActivity
MainActivity代码如下:
CameraPlayActivity代码如下:
添加访问网络权限 因为我们的App是访问网络的,当然得记得添加权限
智能继电器目前多用于控制家庭电器的断电与通电。智能继电器跟普通继电器的不同之处就是上面内置了蓝牙芯片,该蓝牙芯片允许手机蓝牙进行连接,然后接收手机蓝牙发送的指令,根据不同的指令打开或者关闭开关,从而间接实现控制家用电器的功能。
智能继电器
从网上购买了蓝牙继电器。产品详情链接(可能有做广告嫌疑):https://detail.tmall.com/item.htm?id=44157073788&spm=a1z09.2.9.133.cmtDUE&_u=2am3rd62f16
灯泡组 电池 电线 螺丝刀工具等
该继电器是针对220v居民用电设计的,但是我们是实验的用途因此用3v的电池即可,灯泡就是用发光二极管即可,这样保证了绝对的安全。
发光二极管详情:https://detail.tmall.com/item.htm?id=17637399755&spm=a1z09.2.9.100.cmtDUE&_u=2am3rd662b0
不需要开发SDK,只需要知道继电器蓝牙的指令集即可,在购买的界面商家提供了所有的指令集
手机搜索到继电器的蓝牙,然后通过蓝牙的配对密码连接上继电器,继电器就是开关,只不过这里用的是继电器上有多个开关组,手机通过蓝牙给继电器发送指令,继电器把指令解析成相应的开或者关的动作,这样就实现了手机控制电器的操作。我自己做成以后的真实图如下。中间方形的是蓝牙继电器,右侧是发光二极管,二极管使用干电池供电。手机通过软件控制灯泡的开和关。
软件总共有2个界面,运行效果图如下所示。
第一个界面用于查找周围的蓝牙设备。将找到的蓝牙用ListView显示出来,然后点击智能继电器对应的蓝牙设备,进入第二个界面,在第二个界面完成对智能继电器的多种操作。
activity_main.xml对应第一个界面:
activity_control.xml对应第二个界面
MainActivity.java是入口Activity
ControlActivity.java是核心类,用于发送指令
标签:sys 企业 修改 发展 ble alt 优缺点 view 监听
原文地址:http://blog.csdn.net/axi295309066/article/details/53185394