本帖最后由 FrankLv 于 2017-5-23 11:34 编辑
智能家居现在越来越受到装修人士的青睐,特别是对新房装修来说,许多装修公司声称可以实现整体家电的智能化,但相应的装修方案高的惊人!本人利用自己一点IT知识,利用现有的家中设备,争取利用最少的money,实现家庭电器的智能化。 1.所使用到的软硬件有: 软件:HomeKit(苹果的家庭软件,如果是安卓控这个可以忽略)、Home-Assistant(如果你是安卓控,可以使用这个平台,推荐,网上也有类似平台如:Domoticz)、Python-Broadlink(实现射频开关的软件)、Homebridage(实现与HomeKit连接的软件,如果是安卓控这个可以忽略)、Yeelight灯泡(非必需) 硬件:小米家的智能网关及相应配件(这个最好弄,直接买即可,但是费用还是相对贵,我只买了网关、温湿度计、人体传感器、门窗传感器、无线开关和插座,对于壁式开关由于成本相对高,所以没有购买)、broadlink pro(带射频和红外的那种,这个主要是用于壁式开关的遥控)、LV遥控开关(315HZ的那种)、群晖NAS机器(或者是树莓派,由于本人很早就有台DS1513+,所以就没有买树莓派) 2.以下是捣腾过程啦: (一)前期软硬件准备 (1)小米家设备的安装调试 对于小米家的设备安装就非常简单了,直接安装,如智能插座、传感器、网关(网关买最新版本的,一代是不行的)等。对于软件调试, 调试步骤: - 需要下载“米家”这个APP(安卓和苹果都有);
- 进入程序右上角+,添加设备;
- 需要添加先网关,过后再在网关中添加子设备,如传感器、插座、无线开关等(这个就不用啰嗦了,网上教程一大把);
- 打开网关右上角点击...,出来关于,点击进入,再在空白处点击5次,进入开发者模式,里面就会出现局域网通信协议和网关信息,记住MAC地址和密码(后续会用到),Yeelight需要安装Yeelight APP打开极客模式(这个就不介绍了,自行百度);
(2)Broadlink及LV智能开关安装调试 - 先要改造下现有的普通开关,接入LV遥控开关(开关费用就几十块钱一个),安装方式购买时会有说明书,所以就不贴出了;
- 安装完过后就是遥控器学码,学码需要的是你手头要有射频的无线开关(这个某宝上有卖的,我是买LV开关的时候送的),由于我只需要开关,不需要定时开关,所以我就没有设置定时开关功能。简单介绍下遥控开关学码过程-首先需要在在关灯的情况下,按住LV遥控开关的设置按钮(上图最右边可以看到),指示灯会闪烁,闪一下代表开关、闪两下代表总开,闪三下代表总关,我就是用到后两种(便于后续broadlink远控),过后在灯闪烁的状态下按下遥控器按钮,指示灯随即熄灭,学码成功。如果遇到设置出问题可以进行清码,关灯状态长按设置按钮或者连续拨动普通开关16次以上,指示灯快速闪烁即清码完成(安装即学码完成后即可进行遥控器远控和普通开关的开关,两者不冲突)。
- 遥控器学码完成后下一步就是使用broadlink pro来学码,为什么不用broadlink pro学码原因是没法学,必须使用遥控器来做桥梁,RM pro学码前需要下载“易联”APP,打开程序,点击右上角+—添加遥控器—自定义,添加按键,过后点击按键学习,这时候broadlink pro设置指示灯变黄,按下刚才遥控器上使用过的一个按键,此按键的整套学码正式完成,APP里面点击你刚才建立的按键看看效果吧,是不是很神奇!(自定义里面可以添加很多按键,但我不建议将所有的按键放在一个自定义里面,可以使用多个自定义来区分不同开关,如下图就是我自己的APP界面)。
(3)学习完的配对码的导出,这个苹果系统相对封闭,可以使用安卓系统进行导出,首先点击APP右上角菜单,出来选项,选择共享-本地分享-同时安卓机器选本地导入来搜索和导入共享的设置,即可实现两台机器的同步,或者使用备份功能,实现云同步(前提是你需要注册一个账户),如果使用的是安卓系统的话此步骤可忽略。 上面的py程序必须和你要提取的文件放在同一文件夹中,同时需要你的机器安装了python(群晖机器在套件安装中有python安装,其他机器可以使用命令安装python,这个大家自行度娘去)才能使用py命令,其实提取只用到了jsonSubIr、jsonButton和jsonIrCode三个文件,需要修改py文件中几处地方的目录路径,具体见下图,图中所示的为我自己NAS机器中这三个文件所在位置(位置不对就无法提取)及保存配对码txt文件位置。 过后通过putty或者苹果终端来登陆机器(机器要开启SSH或telnet,群晖机器开启方式:控制面板-终端机和SNMP-终端机中开启和关闭,有的机器默认就已经开启了,所以就不用管), windows系统,putty软件直接使用telnet或ssh登陆即可 苹果系统输入:ssh 用户名@服务器地址—进入后输入密码— sudo -i —输入密码即可进入root权限(其实可以通过synouser --setpw root 密码 来设置您的root密码,我是设置了root密码了,所以可以直接root登陆) 导出后我们再看看里面是什么东东 里面包含按钮命令的配对码,即code后面的那串数字和字母组成,就是我们需要的。 python 所在绝对目录/setup.py install
#!/usr/bin/python
import broadlink
import sys
import time
device_ip="broadlink IP地址"
device_port=80
device_mac="broadlink的MAC地址(去除之间的:)"
device_type="broadlink.rmpro"
device = broadlink.rm(host=(device_ip,device_port), mac=bytearray.fromhex(device_mac))
device.auth()
device.host
device.check_temperature()
livingRoom1="780734003612133637121336361213363612133637121336133636123712371237123712371213000229133537121336371213353712133600000000"
#device.send_data(livingRoom1.decode('hex'))
livingRoom2="7800fc001334351113343511133435113511361013341334133412351235123512000228133435111334351113343511133435111334351113343610123535111235351135113511123512351235123512351235120002281334351113343511133435111235351112353511123535111235351112353511351135111334123512351235123512351200022812353511123535111334351112353511123535111235351112353511123535113511351112351235123512351234133413000228123535111235351112353511123535111235351112353511123535111235351135113511123512351235123512351234130002281235351112353511120005dc000000000000000000000000"
#device.send_data(livingRoom2.decode('hex'))
修改好后放入与python-broadlink安装文件所在的同一文件夹,并在命令行输入 python 所在的绝对目录/broadlink.py
一般不会出错,我之前没有将device.send_data()命令注释掉,每次运行的时候家里面的灯都会闪一下,所以看您的网络情况了,可能有的不需要注释掉。 (二)Home-Assistant安装与配置 (1)安装方法 首先是下载Home-Assistant的镜像,这个有官方的镜像,所以推荐使用官方的,第三方的估计也可以,但本人不推荐。搜索栏输入“home-assistant”,过后出现如下界面,选择第一个镜像(官方的)点击下载,过后就是漫长等待吧,因为镜像要2G左右,而且是从国外服务器下载,速度相对慢,且有时会出现下载失败,没关系多试几次就好了。 下载完后就是SSH或telnet进入NAS系统,输入如下命令后回车,这样镜像和容器都弄好了。 docker run -d --name="home-assistant" -v /path/to/your/config:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant 对了上面红色部分修改为你建立的一个文件夹,目的是将此文件夹映射为home-assistant的config文件夹,里面是放各种配置文件的,第一次运行系统会自动生成一些文件,你可以在自动生成的文件中进行自己配置的修改,比如我将其修改为/volume4/docker/home-assistant,什么意思呢?就是我的第四块硬盘中docker文件夹里面的home-assistant文件夹,后续修改文件都是在此文件夹中。 (2)配置方法 配置主要用到的是yaml语言,这个就不多介绍了,主要是我也不清楚,只能按照其他人的方法进行修改和增加新的内容。使用的模版是来自网络,并做了点修改,模版如下: homeassistant:
# 下面这些内容是老高给初学者提供的一个“范例文件”,更多的玩法请访问home-assistant.io,或者等后续的帖子
# 这是你给智能家居系统起的名字
name: Frank's Home
# 下面填入纬度和经度,用于计算你所在城市的“日出日落时间”,请认真填写,越精确越好!
latitude: 39.9328592
longitude: 116.3360056
# 海拔高度用于修正天气参数和日出日落时间参数 (认真填写,默认单位是:米)
elevation: 56.46
# 度量衡单位制式(metric)是公制,(imperial)是英制
unit_system: metric
# 时区,请参照: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones,一般不需要修改
time_zone: Asia/Shanghai
#下面这个区域,是赋予“智能设备”一个“中文名字”,便于E文不好的人使用,具体用法请仔细看视频教程
packages: !include_dir_named packages
customize:
sensor.dark_sky_apparent_temperature:
friendly_name: 室外体感温度
homebridge_name: 室外体感温度
sensor.cpu_use:
friendly_name: CPU使用率(PI)
sensor.dark_sky_cloud_coverage:
friendly_name: 天气云量
sensor.dark_sky_daily_high_temperature:
friendly_name: 室外最高温度
homebridge_name: 室外最高温度
sensor.dark_sky_daily_low_temperature:
friendly_name: 室外最低温度
homebridge_name: 室外最低温度
sensor.dark_sky_humidity:
friendly_name: 室外天气湿度
homebridge_name: 室外天气湿度
sensor.dark_sky_icon:
friendly_name: 天气概况
sensor.dark_sky_summary:
friendly_name: 天气现况
sensor.dark_sky_temperature:
friendly_name: 室外实时温度
homebridge_name: 室外实时温度
sensor.dark_sky_visibility:
friendly_name: 能见度
sensor.dark_sky_wind_bearing:
friendly_name: 风向
sensor.dark_sky_wind_speed:
friendly_name: 风速
sensor.ram_use:
friendly_name: RAM使用率(PI)
sensor.since_last_boot:
friendly_name: 开机时间(PI)
sun.sun:
friendly_name: 日出日落 时间
sensor.time:
friendly_name: 时间
sensor.waqi_xizhimen_n_st:
friendly_name: 室外空气质量
homebridge_name: 室外空气质量
sensor.cpu_load_total:
friendly_name: CPU负荷(DSM)
sensor.memory_usage_real:
friendly_name: 内存使用(DSM)
sensor.network_up:
friendly_name: 上传速率(DSM)
light.yeelight_rgb_286c07b152fc:
friendly_name: 餐厅灯
homebridge_name: 餐厅吊灯
light.dinner_room:
friendly_name: 餐厅灯
homebridge_name: 餐厅吊灯
switch.livingroom:
friendly_name: 客厅灯
homebridge_name: 客厅灯
icon: mdi:lightbulb
switch.cookroom:
friendly_name: 厨房灯
homebridge_name: 厨房灯
icon: mdi:lightbulb
switch.bedroom1:
friendly_name: 父母卧室灯
homebridge_name: 父母卧室灯
icon: mdi:lightbulb
switch.bedroom2:
friendly_name: 卧室灯
homebridge_name: 卧室灯
icon: mdi:lightbulb
switch.dinnerroom:
friendly_name: 餐桌灯
homebridge_name: 餐桌灯
icon: mdi:lightbulb
switch.bathroom:
friendly_name: 洗手间灯
homebridge_name: 洗手间灯
icon: mdi:lightbulb
switch.balcony:
friendly_name: 阳台灯
homebridge_name: 阳台灯
icon: mdi:lightbulb
sensor.broadlink_sensor_temperature:
friendly_name: 室内温度
homebridge_name: 室内温度
binary_sensor.door_window_sensor_158d00015832f5:
friendly_name: 窗户感应器
homebridge_name: 窗户感应器
binary_sensor.motion_sensor_158d00011c7d42:
friendly_name: 人体感应器
homebridge_name: 人体感应器
sensor.humidity_158d000156d72d:
friendly_name: 客厅湿度
homebridge_name: 客厅湿度
sensor.temperature_158d000156d72d:
friendly_name: 客厅温度
homebridge_name: 客厅温度
binary_sensor.switch_158d0001103c80:
friendly_name: 无线开关
homebridge_name: 无线开关
light.gateway_light_f0b429cc3ec7:
friendly_name: 网关灯
homebridge_name: 网关灯
switch.plug_158d00012dd28f:
friendly_name: 净化器插座
homebridge_name: 净化器插座
switch.plug_158d00012dd420:
friendly_name: 客厅电视插座
homebridge_name: 客厅电视插座
sensor.waqi_beijing_us_embassy:
friendly_name: 室外空气质量
homebridge_name: 室外空气质量
sensor.aqi:
friendly_name: 卧室污染指数
homebridge_name: 卧室污染指数
sensor.pm25:
friendly_name: 卧室PM2.5
homebridge_name: 卧室PM2.5
sensor.pm10:
friendly_name: 卧室PM10
homebridge_name: 卧室PM10
sensor.pm1:
friendly_name: 卧室PM1
homebridge_name: 卧室PM1
sensor.temperature:
friendly_name: 卧室温度
homebridge_name: 卧室温度
sensor.humidity:
friendly_name: 卧室湿度
homebridge_name: 卧室湿度
sensor.co2:
friendly_name: 卧室二氧化碳
homebridge_name: 卧室二氧化碳
sensor.ev2_aqi:
friendly_name: 父母卧室污染指数
homebridge_name: 父母卧室污染指数
sensor.ev2_pm25:
friendly_name: 父母卧室PM2.5
homebridge_name: 父母卧室PM2.5
sensor.ev2_pm10:
friendly_name: 父母卧室PM10
homebridge_name: 父母卧室PM10
sensor.ev2_pm1:
friendly_name: 父母卧室PM1
homebridge_name: 父母卧室PM1
sensor.ev2_temperature:
friendly_name: 父母卧室温度
homebridge_name: 父母卧室温度
sensor.ev2_humidity:
friendly_name: 父母卧室湿度
homebridge_name: 父母卧室湿度
sensor.ev2_co2:
friendly_name: 父母卧室二氧化碳
homebridge_name: 父母卧室二氧化碳
device_tracker.raspberrypi:
friendly_name: 树莓派
homebridge_name: 树莓派
sensor.franks_iphone_battery_level:
friendly_name: 我的手机电量
homebridge_name: 我的手机电量
sensor.franks_iphone_battery_state:
friendly_name: 我的手机电池状态
homebridge_name: 我的手机电池状态
switch.air_purifier:
friendly_name: 小米净化器
homebridge_name: 小米净化器
# switch.sonoff_woshi_3:
# friendly_name: 卧室的灯
# homebridge_name: 卧室里的灯
# switch.sonoff_woshi_2:
# friendly_name: 卧室顶灯
# homebridge_name: 夜灯
#switch.sonoff_woshi_1:
# 在网页界面的首页显示简介(那一大段E文),不想看到的话,请在前面加上#号
introduction:
# 是否使用默认的“首页”
frontend:
# 是否使用界面配置
config:
http:
# 给系统网页的登录加上一个密码 (推荐!),先去掉下面这行的#号,然后把PASSWORD改成你想要的密码
# api_password: PASSWORD
api_password: 设置HASS密码
# Set to 1 to enable development mode
# development: 1
# sessions_enabled: 0
trusted_networks:
- 127.0.0.1
- 192.168.1.0/24
ip_ban_enabled: True
login_attempts_threshold: 50
# 升级提示,当HomeAssitant有新版本发布的时候,“日出日落”图标会变成(Update)字样
updater:
# 系统自动发现新的设备
discovery:
# Allows you to issue voice commands from the frontend in enabled browsers
conversation:
# 在系统数据库中保存“历史数据”
history:
# 在logbook查看所有的“已发生事项”
logbook:
# IOS发现功能
ios:
# 太阳“跟踪器”,也就是“日出日落时间”
sun:
#MQTT服务器的相关设置,除了username和password,没搞懂之前,别瞎改
#mqtt:
# broker: 192.168.0.102
# port: 1883
# client_id: Sonoff_WoShi_1
# keepalive: 60
# username: pi
# password: raspberry
# protocol: 3.1.1
#开关1:下面就是楼主在教程中给大家演示的Sonoff开关(Sonoff的刷机,请看视频教程)
switch: !include switches.yaml
# platform: mqtt
# name: "Sonoff_WoShi_3"
# state_topic: "home/Bed_room/3/stat"
# command_topic: "home/Bed_room/3"
# qos: 1
# payload_on: "on"
# payload_off: "off"
# retain: true
#开关2,预留
#switch 2:
# platform: mqtt
# name: "Sonoff_WoShi_2"
# state_topic: "home/Bed_room/2/stat"
# command_topic: "home/Bed_room/2"
# qos: 1
# payload_on: "on"
# payload_off: "off"
# retain: true
# 传感器1:天气“传感器”,API请到forecast.io网站注册并获得,然后填写好
sensor:
- platform: darksky
api_key: 注册获取 # 在forecast.io网站注册并获得,然后填写好
monitored_conditions:
- summary
- icon
#- nearest_storm_distance
#- nearest_storm_bearing
#- precip_type
#- precip_intensity
#- precip_probability
- temperature
- apparent_temperature
#- dew_point
- wind_speed
- wind_bearing
- cloud_cover
- humidity
#- pressure
- visibility
#- ozone
#- minutely_summary
#- hourly_summary
#- daily_summary
- temperature_max
- temperature_min
#- apparent_temperature_max
#- apparent_temperature_min
#- precip_intensity_max
#传感器2:树莓派硬件“监测器”,楼主只使用了两项:CPU占用率和RAM使用率
sensor 2: !include sensors.yaml
# - platform: systemmonitor
# resources:
# - type: memory_free
# - type: memory_use_percent
# - type: processor_use
# - type: since_last_boot
#灯类
light: !include lights.yaml
# Text to speech
tts: !include tts.yaml
device_tracker: !include tracker.yaml
media_player: !include player.yaml
xiaomi:
gateways:
- sid: 你小米网关MAC地址(去除之间的:)
key: 这个是你网关局域网通讯协议的密码
mqtt:
broker: IP地址
port: 端口
username: 用户名
password: 密码
camera: !include camera.yaml
group: !include groups.yaml
###VIEWS
## default_view:
## view: yes
## entities:
## - group.LivingRoom
## - group.DinnerRoom
## - group.CookRoom
## - group.BedRoom1
## - group.BedRoom2
## - group.BathRoom
## - group.Balcony
# LivingRoom_view:
# view: yes
# name: 客厅
# entities:
# - group.LivingRoom
# DinnerRoom_view:
# view: yes
# name: 餐厅
# entities:
# - group.DinnerRoom
# CookRoom_view:
# view: yes
# name: 厨房
# entities:
# - group.CookRoom
# BedRoom1_view:
# view: yes
# name: 父母卧室
# entities:
# - group.BedRoom1
# BedRoom_view:
# view: yes
# name: 卧室
# entities:
# - group.BedRoom2
####GROUPS
# CookRoom:
# name: 厨房
# view: yes
# entities:
# - switch.cookroom
# DinnerRoom:
# name: 餐厅
## view: yes
# entities:
# - light.dinner_room
# - switch.dinnerroom
# LivingRoom:
# name: 客厅
## view: yes
# entities:
# - switch.livingroom
# - switch.plug_158d00012dd420
# - switch.plug_158d00012dd28f
# BedRoom1:
# name: 父母卧室
## view: yes
# entities:
# - switch.bedroom1
# BedRoom2:
# name: 卧室
## view: yes
# entities:
# - switch.bedroom2
# BathRoom:
# name: 洗手间
# view: yes
# entities:
# - switch.bathroom
# - light.gateway_light_f0b429cc3ec7
# Balcony:
# name: 阳台
## view: yes
# entities:
# - switch.balcony
# Configuration.yaml example
automation: !include automations.yaml
这个不做过多介绍,主要做的是一些传感器和设备的配置,home-assistant里面可以从一些网站上获取数据,也可以从您安装的传感器和设备获取数据。 配置完成后网页的界面就是这样的(是不是很酷,可以使用网页来控制家中的电器了): (三)Homekit配置 Homekit大家应该都熟悉吧!没错,就是iphone或ipad等苹果设备上的家庭程序(智能家居)。Homekit的配置主要用到的是homebridge这个程序和相关插件。以下我还是以docker中的安装和配置为例介绍,其他系统安装类似,可自行搜索! 还是在docker注册表的搜索栏中输入homebridge,下载第一个镜像。 需要在配置文件夹中创建config.json和install.sh两个文件,其他文件不是必须要的。两个文件的格式可以参照我的: config.json文件 {
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:30",
"port": 53699,
"pin": "023-66-678"
},
"platforms": [
{
"platform": "AqaraPlatform",
"sid": ["你小米网关MAC地址(去除之间的:)"],
"password": ["这个是你网关局域网通讯协议的密码"]
},
{
"platform": "yeelight",
"name": "yeelight"
},
{
"platform": "HomeAssistant",
"name": "HomeAssistant",
"host": "http://127.0.0.1:8123",
"password": "home-assistant配置文件中登陆密码",
"supported_types": ["binary_sensor", "cover", "fan", "input_boolean", "light", "lock", "media_player", "scene", "sensor", "switch"],
"logging": true
}
],
"accessories": [
{
"accessory": "Synology",
"name": "Diskstation",
"ip": "群晖系统IP地址",
"mac": "群晖机器的MAC地址",
"port": "管理界面的端口,默认5000",
"secure": false,
"account": "用户名",
"password": "密码",
"version": 6
}
]
}
install.sh文件
#!/bin/bash
apt-get install libavahi-compat-libdnssd-dev
npm install -g homebridge-aqara
npm install -g homebridge-yeelight
npm install -g homebridge-synology
npm install -g homebridge-homeassistant
这两个文件是对应的,配置文件里面设备和安装的插件是对应的,不然就没法在homebridge里面使用。 配置完成后就可以将容器中的系统关闭后再运行一次,过后会出现类似如下的结果,其中会出现homekit所需的配对码 过后就可以在iphone或其他苹果设备上使用homekit了,配对成功后会提示你配置各个可用设备,过后就可以使用手机或苹果其他设备对家中的电器进行控制,甚至可以使用siri来语音控制了! 至此,所有介绍暂时告一段落,如有问题可以随时给我留言或邮件,我会尽我所能帮助大家,后续有新的内容我也会随时更近! 其实home-assistant里面功能是比较强大的,可以实现条件控制,比如:利用日出日落时间控制家中灯的开关和灯亮度的调节,根据手机是否在家实现电气的开关等,后续有时间再折腾! 码字太累了,就不再检查文章内容了(其实我很懒的~~~~,写作能力有限~~~),大家凑合看吧!!!!!
需要原文件和资料的可以站内PM我
|