LEHome 智能家居开源方案 Android客户端

LEHome 是一套完整的开源智能家居方案。LEHome拥有以下特性:

  • 简单的控制命令编程
  • ibeacon室内定位
  • 高度模块设计
  • 红外控制、开关控制、传感器采集
  • android,web app,微信版客户端

项目地址:https://github.com/legendmohe/LEHome

本文主要介绍该方案的Android客户端

界面

主要界面有:

  1. 主界面,采用对话形式向服务端发送命令。
    主界面

  2. 收藏界面,主要是为了更方便地输入一些自定义的命令(message)。
    收藏

  3. 设置界面。
    设置1
    设置2

  4. 语音输入界面。
    语音输入

功能

  1. 基本功能

    1. 发送命令
      在输入框中输入命令,点击回车即可发送至服务器(连接正常情况下)。

    2. 语音发送命令
      切换至语音模式后,可用语音输入命令(使用百度语音,使用方法类似微信)。

    3. 设置参数
      设置一系列基本参数和增强功能的参数。

    4. 收藏命令语句
      可以添加删除一些自定义的语句。这些语句会出现在智能提示中。

  2. 增强功能

    1. 智能命令提示
      类似于IDE的智能提示,以列表形式提示下一个合法的命令有哪些。
      当输入字符>1个时,输入框左侧弹出智能提示(或补全)按钮,此时上划按钮看上一个提示,下划看下一个提示,左划弹出所有提示的列表。
      智能提示的类型有:补全当前命令、下一个合法的命令、日期、时间和收藏的命令语句。
      注意,使用此功能需要在设置菜单中下载补全数据。
      智能补全
      智能补全列表

    2. 本地、远程服务自动切换
      启用了此功能后,当手机处于跟服务器同一局域网时,会自动切换至本地模式。本地模式是指命令的发送和接受无需通过云端转发,直接在局域网内进行。

    3. 自动连接蓝牙麦克风
      启用了此功能后,当连接蓝牙耳机时,语音输入源路由至耳机麦克风端。

项目地址

https://github.com/legendmohe/LEHomeMobile_android

LEHome–完整的开源智能家居方案

LEHome 是一套完整的开源智能家居方案。LEHome拥有以下特性:

  1. 简单的控制命令编程
  2. ibeacon室内定位
  3. 高度模块设计
  4. 视频采集、红外控制、开关控制、传感器采集
  5. android,web app,微信版客户端

项目地址:https://github.com/legendmohe/LEHome

UPDATE

2015.5.26 添加定位功能

example:

服务器接受到上述命令后,即会向所有绑定的客户端以“某某”为参数发送一个定位请求。客户端收到请求后,如果“某某”与自己设定的名字是一致的,即会调用SDK发起定位,然后将结果回传给服务器。服务器再将结果发送给所有绑定的客户端。这时候客户端便可以看到“某某”的具体位置了。如下图所示:

定位示例


2015.1.13 添加触发器功能

example:

当上述命令生效的时候,只要有打开电灯发生,播放QQ电台即可被触发。

注意,触发器是一次性的,如果要持续触发,请将其放在一个循环里。另外,触发的内容最
好用#包围,以免引起命令解析错误。例如:

部署

软件

服务端

LEHome 服务端基于Python,需要安装以下依赖:

down下来后,配置init.json(后面会说明如何配置),然后在根目录下运行./start.sh即可(先用chmod添加执行权限)。

客户端

目前LEHome实现了Android,web app,微信版客户端,如有需要可与我联系legendmohe@foxmail.com。

硬件

要完整地运行本项目,需要准备以下硬件:

  1. reco WIFI插座 * n
  2. 蓝牙4.0适配器 * 2
  3. ibeacon模块 * n
  4. 蓝牙音箱 * 1
  5. 红外模块 * 1
  6. zigbee传感器 * 2
  7. UVC 摄像头 * 1

reco WIFI插座

淘宝大概99一个,体积略大,好在控制协议是开放的,可以很方便地整合进LEHome。

买回来后,用reco的手机客户端配置一下插座使其正常工作,然后打开路由器的管理页面,将插座的ip记下来备用。

你也可以通过更改SwitchHelper.py使系统兼容自己的wifi插座。

蓝牙4.0适配器

由于要使用ibeacon进行室内定位,故需要4.0以上的BT适配器。需要两个是因为一个负责连蓝牙音箱,一个负责接受ibeacon数据包。如果直接使用音频线来连音箱,则只需一个适配器即可

蓝牙音箱

可以用普通音箱代替 🙂

红外模块

淘宝有售,选择一个开源控制协议的即可。为了避免广告嫌疑,这里不提供链接,有需要的可以私下联系。

zigbee传感器

淘宝有许多zigbee开发板出售,选择其中之一即可。为了避免广告嫌疑,这里不提供链接,有需要的可以私下联系。

注:要根据实际采用的红外模块和zigbee传感器模块来调整LEHome的源码(RILHelper.py和sensor_server.py)。

UVC 摄像头

如果使用截图功能,需要一个UVC摄像头,很容易就可以买到。我使用的是罗技C270。

系统功能

本系统最大的特点是能支持简单的命令编程。

你可以输入:

可以输入:

可以更复杂一点:

或者更更复杂一点:

如何查看系统支持的命令

打开usr/init.json,可以看到在”command”项下,有许多预定义的命令。

系统检测到命令词出现的时候,会调用相应的callback,所有业务逻辑都在callback里面完成。

命令格式

命令由基本命令和控制语句组成。准许以下规则:

  1. 基本命令 = delay + action + target + message
  2. 基本命令 = 基本命令 + 控制语句
  3. 命令 = trigger + 基本命令 + finish/stop

例如:

以上命令不能直接被系统识别,需要用trigger和finish/stop包围

例如:

*添加trigger和finish的原因是系统支持连续语音识别命令,需要考虑断句的情况,所以要添加两个标志位来截取命令。

命令callback

所有命令对应的callback.py都保存在usr/callbacks/目录下。

在init.json文件中,可以通过:

这样来指定。

callback主要如下所示:

当命令词被触发时,相应callback的callback()方法会被调用,传入的参数由callback函数的定义决定。

应用架构

如下图所示:

应用架构图

联系方式

本项目断断续续做了一年,代码风格,逻辑实现等比较幼稚,加上本README写得极简,基本不可作为开发参考使用,故如有任何疑问,可联系legendmohe@foxmail.com。