HomeBridge教程

目录

HomeBridge:

  • 这是一个能把N多智能家居接入Homekit的神奇程序
  • 更多惊喜等你来寻找~

必须使用root用户才能使用本教程进行安装!!!!!

目录

HomeBridge可以加入什么(其他内容持续更新)

关于我们

JSON规范教程(必读!!!!!)

JSON规范教学

1.定义

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。

2.符号

标准JSON的合法符号: {(左大括号)
}(右大括号)
"(双引号)
:(冒号)
,(逗号)
](右中括号)
[(左中括号)

3.从属关系

一般来说,json的括号是有包含关系的。不能依据自己的喜好随意删除,修改括号。比如:
[{"data":"1"}]
[{"data":"1","status":"2"},{"data":"2","status":"3"}]
[]中只能存在由包含的组,不能直接包含""
中能存在或"":"",不允许存在[]

4.语法

简单来说,所有的左括号都必须有右括号和它对应
但是,要注意的是逗号的用法。每个括号里面的东西,必须用,隔开,不允许在最后添加,
例如:

[{  
	{  
		"data" = "2333",  
		"Test" = "1234"  
	},{  
		"data" = "2333"  
	}  
}],  
{  
	"data666" = "2333"  
}  

这样的是一个可用的json格式,牢记上面的两条,你就能做到自查json的错误啦~

5.一些小问题

一般来说,大部分开发者在readme中留下的示例配置(包括本教程)都是需要修改才能使用的,比如

"platforms": [
	{
		"platform": "Test2Platform",
		"deviceCfgs": [{
			"type": "ColorLEDBulb",
			"ip": "192.168.50.xxx",
			"token": "xxxxxxxxx",
			"Name": "LED Bulb"
		}]
	}
] 

这种情况,使用在你的config中就需要进行相应更改,比如

"platforms": [
	{
		"platform": "TestPlatform",
		"deviceCfgs": [{
			"type": "ColorLEDFan",
			"Name": "LED Bulb"
		}]
	},{
		"platform": "Test2Platform",
		"deviceCfgs": [{
			"type": "ColorLEDBulb",
			"Name": "LED Bulb"
		}]
	}
]

简单来说,就是需要拆掉最外面的platforms,然后将里面的东西写入进原先的platforms中。一个config.json只能有一个platforms!!!!
如果还是看不懂,那么最简化的结构如下

"platforms": [
    {
        "platform": "TestPlatform"
    },{
        "platform": "Test2Platform"
    }
]

一个platforms可以包含多个platform,一个config.json只能有一个platforms,切记切记(这句是废话)

Ubuntu发行版代号介绍

###Ubuntu各发行版代号如下

查看系统发行版本: cat /etc/issue

17.04 zesty
16.10 yakkety
16.04 xenial
15.10 willy
14.04 trusty
12.04 precise

备份/恢复您配置好的系统

此处将教您如何备份/恢复您的sd卡

备份

Windows:

需要软件 win32diskimager

  • 1.首先将SD卡通过读卡器插入电脑
  • 2.打开 win32diskimager
  • 3.输入镜像名,如 backup.img
  • 4.点击读(read)
  • 5.即可将SD卡文件转为镜像 backup.img

Mac OS X:

需要软件 Terminal(终端)

如果插入sd卡后提示 此电脑不能读取您插入的磁盘,请务必不要错点格式化。

  • 1.首先将SD卡插入电脑
  • 2.使用diskutil命令,查看硬盘状况
diskutil list

会得到类似如下的输出

/dev/disk0 (internal):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                         500.3 GB   disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:                 Apple_APFS Container disk1         500.0 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +500.0 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            91.0 GB    disk1s1
   2:                APFS Volume Preboot                 22.1 MB    disk1s2
   3:                APFS Volume Recovery                506.6 MB   disk1s3
   4:                APFS Volume VM                      2.1 GB     disk1s4

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *7.9 GB     disk2
   1:                      Linux                         41.9 MB    disk2s1
   2:                      Linux                         7.9 GB     disk2s2

通过磁盘大小和分区名字,我们可以判断出,/dev/disk2就是安装了系统的sd卡。

注意:diskutil 所列出來的 SD卡确实是 /dev/disk2,但我们在dd参数中使用的确实 /dev/rdisk2 ,这是因为,/dev/rdisk2是没有经过缓存区,直接存取的 raw 设备,会有比较高的读写速度(具体请参照hdiutil的手册),如果您使用 /dev/rdisk2 失败,请改用 /dev/disk2。

  • 3.使用dd来备份sd卡
sudo dd if=/dev/rdisk2 of=~/Desktop/backup.img bs=1m

注意,dd的if是指定原始资料的来源,of则是指定备份文件的路径和名称,您可以自行修改。

  • 4.使用 gzip 压缩备份的镜像(可选)
sudo dd if=/dev/rdisk2 bs=1m | gzip > ~/Desktop/backup.gz

注意,如果您需要恢复压缩过的镜像,请先用gzip解压缩。指令如下

gzip -dc ~/Desktop/backup.gz | sudo dd of=/dev/rdisk2 bs=1m

Linux:

什么?Linux用户不会用fdisk查硬盘,不会用dd备份? 退群吧!


恢复

Windows:

需要软件 win32diskimager

  • 1.首先将SD卡通过读卡器插入电脑
  • 2.打开 win32diskimager
  • 3.选择镜像,如 backup.img
  • 4.点击写(write)
  • 5.即可将SD卡从镜像 backup.img 恢复

Mac OS X:

需要软件 Terminal(终端)

  • 1.首先将SD卡插入电脑
  • 2.查看硬盘状况(具体请参照备份部分)
  • 3.使用dd指令恢复镜像
sudo dd if=~/Desktop/backup.img of=/dev/rdisk2 bs=1m
  • 4.即可将SD卡从镜像 backup.img 恢复

Linux:

什么?Linux用户不会用fdisk查硬盘,不会用dd备份? 退群吧!

HomeBridge安装及答疑

如何安装HomeBridge

必须使用root用户才能使用本教程进行安装!!!!!

你所需要的设备:

  1. 一台运行linux的设备
  2. 一根网线(设备带WiFi请跳过此条)
  3. 一台能开机的电脑
  4. 一个脑子
  5. 一颗求知的心
  6. 基本的Linux操作知识

安装NodeJS

安装NodeJS

在此我们提供了三种方法,请自行选择。

Hassbian用户请查阅 对于Hassbian用户安装Nodejs

必须使用root用户才能使用本教程进行安装!!!!!

  • 如果你到这里才知道需要root用户,那你一定是没看目录。给我滚回去看!

方法1(直接安装)(适用系统:Ubuntu,Debian等发行版)

准备工作:

在此我们使用树莓派为例

  • 第一步,连接ssh
  • 第二步,更新软件源(更换软件源等内容在此不再赘述,树莓派更换请查看 树莓派换源)
  apt-get update
  apt-get upgrade
  apt-get install -y curl
  • 第三步,运行指令(如果运行curl命令后无返回,可以考虑下你的系统源和系统版本不一致导致系统安装了错版本的软件)
  curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
  apt-get install -y nodejs

备用源:

  curl -sL https://homekit.loli.ren/setup/setup_8.x | sudo -E bash -
  • 第四步,安装依赖包
  apt-get install -y avahi-daemon avahi-discover libnss-mdns libavahi-compat-libdnssd-dev g++ gcc
  • 第五步,确认安装情况,创建软连接,确认是否输出版本号
  ln -s /usr/bin/nodejs /usr/bin/node
   - 注意,上面步骤出现错误提示file exist请忽略。
  nodejs -v
  node -v
  npm -v

Nodejs安装完成


方法2(编译安装)

准备工作

在此我们使用NanoPi为例(树莓派同理)

  • 首先,将系统刷写入SD卡,开启树莓派。(配置ssh等部分不再赘述)
  • 第一步,连接ssh
  • 第二步,更新软件
  apt-get update
  apt-get upgrade
  • 第三步,安装依赖包与gcc
  apt-get install -y avahi-daemon avahi-discover libnss-mdns libavahi-compat-libdnssd-dev g++ gcc
  • 第四步,前往 NodeJS官网 下载源码包,如下:
wget https://nodejs.org/dist/v8.9.0/node-v8.9.0.tar.gz
  • 第五步,解压源码,比如:
tar zxvf node-v8.9.0.tar.gz
  • 第六步,进入解压出的目录,如下:
cd node-v8.9.0
  • 第七步,对软件进行配置,如下:
./configure
  • 第八步,编译安装,如下(请注意,此步骤需要耗费较长时间,请坐且放宽)
make && make install
  • 第九步,确认安装情况,创建软连接,确认是否输出版本号
  ln -s /usr/bin/nodejs /usr/bin/node
  nodejs -v
  node -v
  npm -v

Nodejs安装完成


方法3(下载预编译包)

准备工作:

在此我们使用NanoPi为例(树莓派同理)

  • 由于种种原因,我不那么推荐您使用docker或apt进行安装 首先,将系统刷写入SD卡,开启树莓派。(配置ssh等部分不再赘述)
  • 第一步,连接ssh
  • 第二步,输入uname -a,查看您的系统架构,并安装依赖包
  apt-get install -y avahi-daemon avahi-discover libnss-mdns libavahi-compat-libdnssd-dev g++ gcc
  • 第三步,前往 淘宝NPM源 选择适合你系统架构的node包,比如:你的系统是linux x86_64,那就下载linux-x64.tar.gz或linux-x86.tar.gz为后缀的文件。建议使用最新的node版本
  • 第四步,使用wget下载tar.gz包,或者手动上传进服务器。
  • 第五步,解压文件(使用 tar -zxvf 文件名.tar.gz 指令)
  • 第六步,移动文件夹(mv 解压出的文件夹 /opt)
  • 第七步,输入指令进行测试(/opt/解压出的文件夹名/bin/node -v),如果输出了node版本,则进行下一步。
  • 第八步,创建软连接:
ln -s /opt/解压出的文件夹名/bin/node /usr/bin/node
ln -s /opt/解压出的文件夹名/bin/npm /usr/bin/npm
  • 第九步,输入指令测试(node -v),如果正常输出,则您已完成nodejs的安装工作。

注意:node_modules目录在/opt/解压出的文件夹名/lib下

Nodejs安装完成

安装noble模块

此部分将引导你安装noble蓝牙插件

  1. 安装依赖包 sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev
  2. 进入node_modules文件夹 (可以通过 npm -g root指令找到)
  3. 安装noble npm install noble
  4. 安装其他依赖包 sudo apt-get install libcap2-bin
  5. 运行如下指令:
sudo setcap cap_net_raw+eip $(eval readlink -f `which node`)
sudo hciconfig hci0 up

至此noble与其依赖安装完成。

如何查找node_modules目录

本部分需要您完成NodeJS的安装


输入指令

npm -g root

将nodejs与npm升级到最新版本

本部分需要您完成NodeJS的安装


输入指令

sudo npm install -g n 
n 8.7.0

安装HomeBridge

安装HomeBridge

  • 第一步,输入指令
npm install -g --unsafe-perm homebridge
  • 第二步,运行指令(homebridge),查看是否正常运行。

到此,Homebridge安装成功,请查看下面的教程接入你的设备吧~


  • 使用方法2安装的插件需要创建软连接
ln -s /opt/解压出的文件夹名/bin/homebridge /usr/bin/homebridge

创建config.json

本部分需要完成安装nodejs与Homebridge部分

  1. 前往/root/.homebridge目录。
  2. 创建文件 config.json 或运行指令

*注:配置文件规范详情请打开JSON规范教程

vi config.json
  1. 写入如下信息
{
    "bridge": {
        "name": "Homebridge名字",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "031-45-154"
    },
    "accessories": [
    ],
    "platforms": [
    ]
}
  1. 保存 或 esc :x!
  2. 运行Homebridge

安装HomeBridge插件

本部分将教您如何安装HomeBridge插件

  • 第一步,输入指令
npm install -g **你需要安装的插件名字**  

(比如 homebridge-mi-aqara就是npm install -g homebridge-mi-aqara

  • 第二步,启动HomeBridge,查看是否正常运行。

配置json

  • 请注意,安装插件时,一定要查看插件的readme文件
  1. 打开config.json

  2. 根据插件的readme文件所述(一般在GitHub有),在config.json的对应位置加上配置,具体请查阅 JSON规范教程

    以下为例:

"platforms": [
	{
		"platform": "MiAqaraPlatform",
		"gateways": {
			"6409802da3b3": "02i44k56zrgg578b"
		}
	},
	{
		"platform": "ReYeelightPlatform",
		"deviceCfgs": [{
		}]
	}
]

JSON的相关规范请仔细阅读JSON规范教程

更新Homebridge插件

本部分将教您如何更新HomeBridge插件

  • 第一步,输入指令
npm update -g **你需要安装的插件名字**  

(比如 homebridge-mi-aqara就是npm update -g homebridge-mi-aqara

  • 第二步,启动HomeBridge,查看是否正常运行。

卸载HomeBridge插件

本部分将教您如何卸载HomeBridge插件

  • 第一步,输入指令
npm remove -g **你需要安装的插件名字**  

(比如 homebridge-mi-aqara就是npm remove -g homebridge-mi-aqara

  • 第二步,启动HomeBridge,查看是否正常运行。

将Homebridge添加为系统服务并允许自启动

此部分教程需完成安装HomeBridge以及Nodejs后才可进行

  1. 在/etc/init.d目录下创建homebridge文件 或输入指令
vi /etc/init.d/homebridge
  1. 写入如下信息
  • 注意,下方的dir请填写你的配置文件的目录,cmd为启动Homebridge的命令,user为启动Homebridge使用的用户
#!/bin/sh
### BEGIN INIT INFO
# Provides: homebridge
# Required-Start:    $network $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

dir="/root/.homebridge"
cmd="homebridge"
user="root"

name=`basename $0`
pid_file="/var/run/$name.pid"
stdout_log="/var/log/$name.log"
stderr_log="/var/log/$name.err"

get_pid() {
    cat "$pid_file"
}

is_running() {
    [ -f "$pid_file" ] && ps -p `get_pid` > /dev/null 2>&1
}

case "$1" in
    start)
    if is_running; then
        echo "Already started"
    else
        echo "Starting $name"
        cd "$dir"
        if [ -z "$user" ]; then
            sudo $cmd >> "$stdout_log" 2>> "$stderr_log" &
        else
            sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" &
        fi
        echo $! > "$pid_file"
        if ! is_running; then
            echo "Unable to start, see $stdout_log and $stderr_log"
            exit 1
        fi
    fi
    ;;
    stop)
    if is_running; then
        echo -n "Stopping $name.."
        kill `get_pid`
        for i in 1 2 3 4 5 6 7 8 9 10
        # for i in `seq 10`
        do
            if ! is_running; then
                break
            fi

            echo -n "."
            sleep 1
        done
        echo

        if is_running; then
            echo "Not stopped; may still be shutting down or shutdown may have failed"
            exit 1
        else
            echo "Stopped"
            if [ -f "$pid_file" ]; then
                rm "$pid_file"
            fi
        fi
    else
        echo "Not running"
    fi
    ;;
    restart)
    $0 stop
    if is_running; then
        echo "Unable to stop, will not attempt to start"
        exit 1
    fi
    $0 start
    ;;
    status)
    if is_running; then
        echo "Running"
    else
        echo "Stopped"
        exit 1
    fi
    ;;
    *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac

exit 0
  1. 保存 或 esc :x!
  2. 运行如下指令:
chmod 755 /etc/init.d/homebridge  
update-rc.d homebridge defaults
  1. 测试如下指令:
service homebridge start  
service homebridge stop  
  1. 如果指令没有提示错误,那么输入如下指令
systemctl enable homebridge
  1. 重启,并检查Home中设备是否上线。并输入如下指令:
ps -ef | grep  homebridge  

查看是否有homebridge进程,如果设备上线并存在进程,则配置成功。

重新配对HomeBridge

此部分教程需完成安装HomeBridge以及Nodejs后才可进行

如果您需要重新配对HomeBridge

  • 1.在家庭APP中删除网关
  • 2.清除HomeBridge的连接信息(参照教程 《清除HomeBridge连接信息》部分)
  • 3.重新扫码配对。
  • 4.操作完成。

Homebridge常见错误

本处会收集常见错误并记录解决办法

Error: listen EADDRINUSE :::

  • 此错误表示你的系统中存在Homebridge进程,导致端口阻塞
  • 解决方法: 运行指令 pkill -9 homebridge

SyntaxError: Unexpected token , in JSON at position xx

  • 此错误表示你的config.json的第xx行存在语法错误
  • 解决方法: 根据JSON规范教程检查config.json

Error: The requested platform 'xxxxx' was not registered by any plugin.

  • 此错误表示插件xxxxx未被安装或出现问题
  • 解决方法: 检查log,检查插件是否已安装,实在不行可以咨询开发者

Cannot find module '../build/Release/dns_sd_bindings'

  • 此错误表示编译的dns_sd_bindings丢失
  • 解决方法:确保依赖包已全部安装,删除node_modules下的homebridge文件夹,然后重新安装HomeBridge

Error: Cannot find module 'xxxx'

  • 此错误表示模块xxxxx未被安装或出现问题
  • 解决方法: 检查log,检查模块是否已安装,实在不行可以咨询开发者

清除HomeBridge连接信息

此部分教程需完成安装HomeBridge以及Nodejs后才可进行

操作方法

  • 1.结束HomeBridge进程,如下:
pkill -9 homebridge
  • 2.进入config.json所在的文件夹,例如:
cd /root/.homebridge
  • 3.删除文件夹下persist文件夹,例如:
rm -rf persist
  • 4.重启Homebridge进程,例如:
homebridge
  • 5.扫描二维码,重新配对,操作完成。

清除HomeBridge的配件缓存

此部分教程需完成安装HomeBridge以及Nodejs后才可进行

操作方法

  • 1.结束HomeBridge进程,如下:
pkill -9 homebridge
  • 2.进入config.json所在的文件夹,例如:
cd /root/.homebridge
  • 3.删除文件夹下accessories文件夹,例如:
rm -rf accessories
  • 4.重启Homebridge进程,例如:
homebridge
  • 5.扫描二维码,重新配对,操作完成。

无法在家庭APP中搜索到HomeBridge

此部分教程需完成安装HomeBridge以及Nodejs后才可进行

本部分仅适用于曾经添加HomeBridge的用户

操作方法

  • 1.结束HomeBridge进程,如下:
pkill -9 homebridge

注:如果依旧失败,请尝试检查您的persist文件夹是否完全删除,homebridge进程是否完全结束并重启

Homebridge多开之一

本篇介绍homebridge多开

首先我们来了解一下homebridge的启动参数(注定大小写,除了-h其它均为大写)

Options:

-h, --help                      output usage information
-V, --version                   output the version number
-P, --plugin-path [path]        look for plugins installed at [path] as well as the default locations ([path] can also point to a single plugin)
-U, --user-storage-path [path]  look for homebridge user files at [path] instead of the default location (~/.homebridge)
-D, --debug                     turn on debug level logging
-I, --insecure                  allow unauthenticated requests (for easier hacking)
参数 使用
-h 帮助信息 打印帮助信息 homebridge -h
-V 版本 显示当前版本 homebridge -V
-P 插件目录 自定义插件目录 homebridge -P /root/homebridge/bridge-miio/node_modules
-U 启动位置 自定义启动位置 homebridge -U /root/homebridge/bridge-miio
-D 调试模式 输出调试信息 homebridge -D
-I 解除安全模式 允许非授权请求 homebridge -I

示例: homebridge -D -U /root/homebridge/bridge-miio -P /root/homebridge/bridge-miio/node_modules

-D 开启debug模式
-U 自定义启动目录/root/homebridge/bridge-miio
-P 自定义插件目录/root/homebridge/bridge-miio/node_modules

一、多开注意事项

  • 插件应安装在各自的插件目录,不安装到默认目录
  • /usr/lib/node_modules/目录下不应该有homebridge的插件,不然启动的时候所有的homebridge都会加载此插件(某些插件加载了也不会影响运行,但有一些加载但没有配置就会出错)

二、homebridge多开目录结构

每个目录下都会有config.json文件及node_modules文件夹(npm install时会自动生成)
/root/homebridge
├── bridge-aqara
│   ├── config.json
│   └── node_modules
├── bridge-broadlinkmp1
│   ├── config.json
│   └── node_modules
├── bridge-broadlinkrm-mini
│   ├── config.json
│   └── node_modules
├── bridge-camera
│   ├── config.json
│   └── node_modules
├── bridge-miio
│   ├── config.json
│   └── node_modules

三、如何安装插件(多开目录为/root/homebridge/)

安装miio依赖及相关插件

  1. cd /root/homebridge/bridge-miio/
  2. npm install miio
  3. npm install homebridge-re-yeelight 安装aqara插件
  4. cd /root/homebridge/bridge-aqara/
  5. npm install homebridge-mi-aqara

四、设置为自启动项(详情)

示例:

#!/bin/sh
### BEGIN INIT INFO
# Provides: bridge-miio
# Required-Start:    $network $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

dir="/root/homebridge/bridge-miio"
cmd="DEBUG=* homebridge -D -U /root/homebridge/bridge-miio -P /root/homebridge/bridge-miio/node_modules"
user="root"

需要修改的内容:

------------
Provides:名字是唯一的  
Provides: bridge-miio  
------------
dir="启动目录"  
dir="/root/homebridge/bridge-miio"  
------------
cmd="DEBUG=* homebridge -D -U /root/homebridge/启动目录 -P /root/homebridge/插件目录"  
cmd="DEBUG=* homebridge -D -U /root/homebridge/bridge-miio -P /root/homebridge/bridge-miio/node_modules"  
------------

Docker的安装与配置

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。它可以避免你的系统因为你的操作而崩溃。Homebridge自然可以使用docker进行安装配置。

如何安装docker

请注意!必须使用root账户才能进行本教程!

  • 第一步,升级您的系统
apt-get update
apt-get upgrade
apt-get install curl
  • 第二步,使用一键脚本进行安装。
curl -sL https://get.daocloud.io/docker | sh
  • 第*步,安装图形管理界面(可选)
docker pull registry.docker-cn.com/portainer/portainer
docker volume create portainer_data
docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

小米杂货铺

欢迎来到小米杂货铺,在这里你可以学习到如何接入米家的设备

目前支持的设备有:

  1. 米家多功能网关升级版(二代)
  2. 米家智能插座-ZigBee版
  3. 米家智能插座-基础版
  4. 米家智能插座-USB版
  5. 米家智能插线板
  6. 青米智能插线板
  7. 青米智能插线板-USB版
  8. Yeelight床头灯
  9. Yeelight LED智能灯泡-彩光版
  10. Yeelight LED智能灯泡-白光版
  11. Yeelight LED-吸顶灯
  12. 米家LED智能台灯
  13. 米家空调伴侣
  14. Aqara空调伴侣
  15. 米家人体传感器
  16. 米家门窗传感器
  17. 米家温湿度传感器
  18. Aqara温湿度传感器
  19. 智米电风扇
  20. 米家小白摄像机(只能控制开关)
  21. 米家扫地机器人
  22. 米家空气净化器(正在适配)
  23. 米家无线开关(正在适配)
  24. Aqara墙壁开关-单火双键版
  25. Aqara墙壁开关-单火单键版
  26. Aqara墙壁开关-零火双键版
  27. Aqara墙壁开关-零火单键版
  28. Aqara86型无线开关-双键版
  29. Aqara86型无线开关-单键版
  30. Aqara86型墙壁插座
  31. 魔方控制器
  32. 米家烟雾报警器
  33. 米家天然气报警器
  34. Aqara窗帘电机
  35. Aqara水浸传感器 … …

获取小米设备的token

本部分将教您如何获取小米设备的token

在此我们提供多种方法供您选择:

方法1:获取DB法

需要的工具:

1.安卓手机(推荐使用模拟器,百度搜安卓模拟器
2.电脑
3.脑子(不能是空的)

  • 第零步,获取root权限
  • 第一步,安装米家app并登录账号
  • 第二步,进入/data/data/com.xiaomi.smarthome/databases/
  • 第三步,拷贝miio2.db,下载到电脑
  • 第四步,前往网站GetMiio,上传miio2.db,点击提交,即可获得token。

方法2(IOS):获取DB法

等待更新中

方法3:miio --discover(可能有些设备得不到)

需要的工具:

1.连接上SSH的板子
2.电脑
3.脑子

  • 第一步,确认你的板子是否安装了miio
    (如果没有请输入指令 npm install -g miio)
  • 第二步,记录token。

安卓米家拿不到Token的解决方法

使用5.0.19版本的米家
下载地址 ApkMirror

安装miio

本部分将教您如何安装miio到HomeBridge

首先请确认您安装了Homebridge,如果没有安装请参阅前面的教程。

  • 第一步,输入指令
npm install -g miio  
  • 第二步,输入miio --discover,查看是否能正常运行。

请使用miio@0.14.1版本!目前绝大多数软件未对新版本miio做兼容!!!

接入小米网关

本部分将教您如何接入小米网关到HomeBridge

首先请确认您安装了Homebridge,如果没有安装请参阅前面的教程。

需要的工具:

1.安卓手机(模拟器也可)
2.电脑
3.脑子(不能是空的)

必须安装的插件:homebridge-mi-aqara

开始:

  1. 找一台Android手机(不建议使用iPhone来获取,出故障的概率比较大)。
  2. 下载米家App,打开并登陆你的小米账号。
  3. 找到多功能网关图标,点击图标下方的文字,进入多功能网关操作界面,点击右上角的···图标,。
  4. 点击进入关于
  5. 疯狂点击底部的 插件版本,紧接着会出现局域网通信协议网关信息
  6. 点击网关信息,找到图示位置,抄写下来,这是网关的mac地址。
  7. 点击 加密,进入局域网通信协议,在局域网通信协议后面勾选,此时会出现一组密码,点击右边的刷新(建议多刷新几遍),记下密码(注意:如果密码是小写,就记录小写,如果是大写,就记录大写,必须区分大小写!)。

1
2

参数解析

参数 意义 示例值
sid 二代网关的mac地址 string 34ce00fa701f
password 局域网通信协议密码 string b8r5z7sxqof1bjmr

编辑config.json:

加入或修改如下部分

"platforms": [{
    "platform": "MiAqaraPlatform",
    "gateways": {
        "网关1的sid": "对应的局域网通信密码",
        "网关2的sid": "对应的局域网通信密码",
        "网关n的sid": "对应的局域网通信密码"
    }
}]

启动Homebridge

如果出现MiAqaraPlatform start successHomebridge的代码,则配置成功

来自非常有名的小米系列插件作者 YinHangCode(银行码)Mr.Yin

在config.json中自定义设备名字是否显示在Homekit中

本部分将教您如何自定义设备名字与显示与否

首先请确认您安装了Homebridge并接入了小米网关,如果没有安装请参阅前面的教程。

由于各种原因 此处暂时停更

接入Yeelight设备

本部分将教您如何接入Yeelight设备到HomeBridge

首先请确认您安装了Homebridge,如果没有安装请参阅前面的教程。

本插件需要miio支持,请确认您已安装miio。

当前支持的设备:

  1. ColorLEDBulb(Yeelight智能灯泡)
  2. DeskLamp(Yeelight台灯)
  3. ColorLedStrip(Yeelight彩光灯带)
  4. CeilingLamp(Yeelight吸顶灯)
  5. WhiteBulb(Yeelight白光灯泡)

参数解析

参数 意义 示例值
type 设备类型 string ColorLEDBulb
ip 设备ip string 192.168.50.1
token 设备token string 47495361bbf65ac41f5e9369dba01b34
Name 设备名字 string LED Bulb
updatetimer 是否自动更新设备状态 true/false true
interval 更新延时(秒) int 3

  1. 安装插件 homebridge-re-yeelight
  2. 修改config.json,按照如下例子进行添加:
"platforms": [
    {
        "platform": "ReYeelightPlatform",
        "deviceCfgs": [{
            "type": "ColorLEDBulb",
            "ip": "192.168.50.xxx",
            "token": "xxxxxxxxx",
            "Name": "LED Bulb",
            "updatetimer": true,
            "interval": 5
        },{
            "type": "ColorLEDStrip",
            "ip": "192.168.50.xxx",
            "token": "xxxxxxxxx",
            "Name": "LED Strip",
            "updatetimer": true,
            "interval": 5
        },{
            "type": "DeskLamp",
            "ip": "192.168.50.xxx",
            "token": "xxxxxxxxx",
            "Name": "Desk Lamp",
            "updatetimer": true,
            "interval": 5
         },{
            "type": "CeilingLamp",
            "ip": "192.168.50.xxx",
            "token": "xxxxxxxxx",
            "Name": "Ceiling Lamp",
            "updatetimer": true,
            "interval": 5
        }]
    }
]
  1. 保存config.json,启动Homebridge进行测试。
接入YeeLight床头灯

此部分将引导你接入yeelight床头灯至HomeBridge

首先请确认您安装了Homebridge,如果没有安装请参阅前面的教程。

插件的Github地址在此:点我

当前支持的设备:

1.BedsideLamp(yeelight床头灯)


安装依赖

  1. 安装依赖包 sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev
  2. 进入node_modules文件夹 (可以通过 npm -g root指令找到)
  3. 安装noble npm install noble
  4. 安装其他依赖包 sudo apt-get install libcap2-bin
  5. 运行如下指令:
sudo setcap cap_net_raw+eip $(eval readlink -f `which node`)
sudo hciconfig hci0 up

至此noble与其依赖安装完成。


安装插件

  1. 安装插件 homebridge-re-yeelight-ble
  2. 修改config.json,按照如下例子进行添加:
"platforms": [
    {
        "platform": "ReYeelightBLEPlatform ",
        "defaultValue": {
            "c4:7c:8d:65:51:b1": "床头灯1"
        }
    }
]
  1. 保存config.json,启动Homebridge进行测试。 如果你看见如下输出
[ReYeelight] [BLE]Noble loaded
[ReYeelight] [BLE]Timer Started

则说明你的蓝牙配置完成,插件也正常运行了。

接入小米空气净化器

此部分将引导你接入小米空气净化器至HomeBridge

首先请确认您安装了Homebridge,如果没有安装请参阅前面的教程。

本插件需要miio支持,请确认您已安装miio。

当前支持的设备:

1.MiAirPurifier(小米空气净化器)
2.MiAirPurifier2(小米空气净化器2)
3.MiAirPurifierPro(小米空气净化器Pro)
4.MiAirPurifier2S(小米空气净化器2S)


参数解析

参数 意义 示例值
type 设备类型 string AirPurifier
ip 设备ip string 192.168.50.1
token 设备token string 32a81458d48f4da8456c014037066857
airPurifierDisable 是否显示并启用净化器 true/false true
airPurifierName 空气净化器名称 string 空气净化器
silentModeSwitchDisable 是否显示静音模式按钮 true/false true
silentModeSwitchName 静音模式按钮名称 string 静音模式
buzzerSwitchDisable 是否显示蜂鸣器开关按钮 true/false true
buzzerSwitchName 蜂鸣器开关按钮名称 string 净化器蜂鸣器开关
ledBulbDisable 是否显示led灯开关 true/false true
ledBulbName led灯泡名字 string 净化器led灯
airQualityDisable 是否显示空气质量 true/false true
airQualityName 空气质量名称 string 空气质量

  1. 安装插件 homebridge-mi-airpurifier
  2. 修改config.json,按照如下例子进行添加:
"platforms": [{
    "platform": "MiAirPurifierPlatform",
    "deviceCfgs": [{
        "type": "MiAirPurifier",
        "ip": "192.168.88.xx",
        "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "airPurifierDisable": false,
        "airPurifierName": "AirPurifier",
        "silentModeSwitchDisable": false,
        "silentModeSwitchName": "AirPurifier Silent Mode Switch",
        "buzzerSwitchDisable": true,
        "buzzerSwitchName": "AirPurifier Buzzer Switch",
        "ledBulbDisable": true,
        "ledBulbName": "AirPurifier LED Switch",
        "airQualityDisable": false,
        "airQualityName": "AirQuality"
    }, {
        "type": "MiAirPurifier2",
        "ip": "192.168.88.xx",
        "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "airPurifierDisable": false,
        "airPurifierName": "AirPurifier",
        "silentModeSwitchDisable": false,
        "silentModeSwitchName": "AirPurifier Silent Mode Switch",
        "temperatureDisable": false,
        "temperatureName": "Temperature",
        "humidityDisable": false,
        "humidityName": "Humidity",
        "buzzerSwitchDisable": true,
        "buzzerSwitchName": "AirPurifier Buzzer Switch",
        "ledBulbDisable": true,
        "ledBulbName": "AirPurifier LED Switch",
        "airQualityDisable": false,
        "airQualityName": "AirQuality"
    }, {
        "type": "MiAirPurifierPro",
        "ip": "192.168.88.xx",
        "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "airPurifierDisable": false,
        "airPurifierName": "AirPurifier",
        "silentModeSwitchDisable": false,
        "silentModeSwitchName": "AirPurifier Silent Mode Switch",
        "temperatureDisable": false,
        "temperatureName": "Temperature",
        "humidityDisable": false,
        "humidityName": "Humidity",
        "buzzerSwitchDisable": true,
        "buzzerSwitchName": "AirPurifier Buzzer Switch",
        "ledBulbDisable": true,
        "ledBulbName": "AirPurifier LED Switch",
        "airQualityDisable": false,
        "airQualityName": "AirQuality"
    }]
}]
  1. 保存config.json,启动Homebridge进行测试。
接入米家飞利浦灯

此部分将引导你接入米家飞利浦灯至HomeBridge

首先请确认您安装了Homebridge,如果没有安装请参阅前面的教程。

本插件需要miio支持,请确认您已安装miio。

当前支持的设备:

1.MiPhilipsSmartBulb(米家飞利浦智睿球泡灯)
2.MiPhilipsTableLamp2(米家飞利浦智睿台灯二代)
3.MiPhilipsCeilingLamp(米家飞利浦智睿吸顶灯)


参数解析

参数 意义 示例值
type 设备类型 string SmartBulb
ip 设备ip string 192.168.50.1
token 设备token string 47495361bbf65ac41f5e9369dba01b34
lightName 设备名字 string 客厅灯泡
lightDisable 是否禁用灯泡 true/false false
mainLightName 主灯名字 string 台灯主灯
secondLightName 副灯名字 string 台灯副灯
secondLightDisable 是否禁用副灯 true/false false
eyecareSwitchName 护眼模式开关名字 string 护眼模式开关
eyecareSwitchDisable 是否禁用护眼模式开关 true/false false
updatetimer 是否自动更新设备状态 true/false true
interval 更新延时(秒) int 3

  1. 安装插件 homebridge-mi-philips-light
  2. 修改config.json,按照如下例子进行添加:
"platforms": [{
    "platform": "MiPhilipsLightPlatform",
    "deviceCfgs": [{
        "type": "MiPhilipsSmartBulb",
        "ip": "192.168.88.xx",
        "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "lightName": "living room bulb",
        "lightDisable": false
    }, {
        "type": "MiPhilipsTableLamp2",
        "ip": "192.168.88.xx",
        "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "mainLightName": "living room table lamp",
        "secondLightName": "living room table lamp amb",
        "secondLightDisable": false,
        "eyecareSwitchName": "living room table lamp eyecare model",
        "eyecareSwitchDisable": false
    }, {
        "type": "MiPhilipsCeilingLamp",
        "ip": "192.168.88.xx",
        "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "lightName": "living room ceiling lamp",
        "lightDisable": false,
        "updatetimer": false,
        "interval": 3
    }]
}]
  1. 保存config.json,启动Homebridge进行测试。
接入小米万能遥控

此部分将引导你接入小米万能遥控至HomeBridge

首先请确认您安装了Homebridge,如果没有安装请参阅前面的教程。

本插件需要miio支持,请确认您已安装miio。

当前支持的类型:

  1. Switch(开关)
  2. LightBulb(灯泡)
  3. Projector(投影仪)
  4. Airconditioner(空调)
  5. Custom(自定义)
  6. Momentary(瞬时开关)

参数解析

参数 意义 示例值
hidelearn 是否隐藏学习按键 true/false false
type 设备类型 string Switch
ip 设备ip string 192.168.50.1
token 设备token string 47495361bbf65ac41f5e9369dba01b34
Name 设备名字 string 红外台灯开关
interval 发送延迟 int 1
data 记录学习到的遥控码 array "on" : "xxxxxxx","off": "xxxxxxx"
DefaultTemperature 空调启动时的默认温度 int 26
MinTemperature 空调支持的最低温度 int 16
MaxTemperature 空调支持的最高温度 int 30
on 设备开启的遥控码 string xxxxx
off 设备关闭的遥控码 string xxxxx
Cool 制冷模式的遥控码 array "30" : "xxx","25" : "xxx"
Heat 制热模式的遥控码 array "30" : "xxx","25" : "xxx"
Auto 自动模式的遥控码 array "30" : "xxx","25" : "xxx"

  1. 安装插件 homebridge-mi-ir-remote
  2. 修改config.json,按照如下例子进行添加:
"platforms": [
    {
        "platform": "ChuangmiIRPlatform",
        "hidelearn": false,
        "learnconfig":{
            "ip": "192.168.31.xx",
            "token": "xxxxxxx"
        },
        "deviceCfgs": [{
            "type": "Switch",
            "ip": "192.168.31.xx",
            "token": "xxxxxxx",
            "Name": "IR Switch",
            "data": {
                "on" : "xxxxxxx",
                "off": "xxxxxxx"
            }
        },{
            "type": "Projector",
            "ip": "192.168.31.xx",
            "token": "xxxxxxxx",
            "Name": "IR Projector",
            "interval": 1,
            "data": {
                "on" : "xxxxxxxxxxxxx",
                "off": "xxxxxxxxxxxxx"
            }
        },{
            "type": "Light",
            "ip": "192.168.31.xx",
            "token": "xxx",
            "Name": "IR LightBulb",
            "data": {
                "100" : "xxxx",
                "75" : "xxxxx",
                "50" : "xxxxx",
                "25" : "xxxxx",
                "off" : "xxxx"
            }
         },{
            "type": "AirConditioner",
            "ip": "192.168.31.xx",
            "token": "xxx",
            "Name": "IR AC",
            "DefaultTemperature": 25,
            "MinTemperature": 16,
            "MaxTemperature": 30,
            "data": {
                "Cool":{
                    "30" : "xxx",
                    "25" : "xxx",
                    "20" : "xxx",
                    "16" : "xxx"
                },
                "Heat":{
                    "30" : "xxx",
                    "25" : "xxx",
                    "20" : "xxx",
                    "16" : "xxx"
                },
                "Auto":{
                    "30" : "xxx",
                    "25" : "xxx",
                    "20" : "xxx",
                    "16" : "xxx"
                },
                "off" : "xxxx"
            }
        },{
            "type": "Custom",
            "ip": "192.168.31.xx",
            "token": "xxx",
            "Name": "Custom",
            "data": {
                "on": {
                    "0": "0|xxx",
                    "1": "2|xxx",
                    "2": "5|xxx"
                },
                "off": {
                    "0": "1|xxx"
                }
            }
        },{
            	"type": "MomentarySwitch",
                "ip": "192.168.31.xx",
                "token": "xxxxxx",
                "Name": "Momentary Switch",
				"data": "xxx"
            }]
    }
]
  1. 保存config.json,启动Homebridge进行测试。

学习遥控码

请注意,如果不知道遥控码请不要配置任何设备,只配置learn,不然可能导致报错。

  1. 点击Milearn开关,进入学习模式(5秒倒计时启动)
  2. 将遥控器对准小米万能遥控,按下对应按键。
  3. 查看SSH后台的log,检查是否有类似
[10/27/2017, 2:39:35 AM] [ChuangmiIRPlatform] [MiIRRemote][irLearn]Learned Code: Z6WDAC8CAAAIBQAAAggAALsiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjAAAAAAAQABAQAAAAAAAAAAAAABAQAAAAEAAAABAAAAAQEAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEBAQAAA=

的内容,如果有,则将对应的code写进config的对应位置中,如果没有,则重试。
4. 保存配置,重启即可
如果您的遥控器无法学到码,但是在米家APP中却能正常匹配,您可以尝试使用root过的安卓手机或模拟器,录入红外指令后,前往/data/data/com.xiaomi.smarthome/files/IR_REMOTE_DID_device.json查看录入的指令。

Custom相关

Custom适用于多个遥控码使用一个switch处理的情况。 格式如下

"data": {
	"on": {
		"0": "0|xxx",
		"1": "2|xxx",
		"2": "5|xxx"
	},
	"off": {
		"0": "1|xxx"
	}
}

时间参数表示在你按下按钮后多少秒发送遥控码。0代表按下后立刻发送。时间不累计,即你填写5则是按下5秒后发送。
时间参数的单位是秒,你可以使用类似0.5的数字来实现一秒内发送。(我们不建议您设置在1秒内发送太多指令(丢包可能较大))

MomentarySwitch瞬时开关

这个开关在你开启后0.3s会自动关闭,适合用来做遥控器之类的。

接入小米空调伴侣

此部分将引导你接入小米空调伴侣至HomeBridge

首先请确认您安装了Homebridge,如果没有安装请参阅前面的教程。

请确保您会抓取网络数据包,会使用安卓模拟器以及WireShark等抓包软件

本插件需要miio支持,请确认您已安装miio


参数解析

参数 意义 示例值 是否必填
name 空调名称 string 客厅空调 必填
address 空调伴侣ip string 192.168.1.154
token 空调伴侣token string 71b4e85d8527aab32c8f9175124c0d59 必填
sensorId 空调伴侣绑定的传感器id string 158d0001a4c582 选填
enableLED 开启led灯 true/false true 选填
ratedPower 你的空调的正常额定功率,用于使用电池比例显示功率百分比 watt 725 选填

  1. 安装插件 homebridge-mi-heatercooler
  2. 修改config.json,按照如下例子进行添加:
"accessories": [
  {
    "accessory": "MiHeaterCooler",
    "name": "AC Partner",
    "address": "192.168.1.154",
    "token": "71b4e85d8527aab32c8f9175124c0d59",
    "sensorId": "158d0001a4c582",
    "enableLED": true,
    "ratedPower": 735
  }
]
  1. 保存config.json,启动Homebridge进行测试。

额外内容

自动模式支持大部分设置为解决方式1的品牌

否则,你应该使用Android模拟器(如MuMu)和Wireshark收集和分析你的空调伴侣的命令码,通过如下方式: miio --token 你的空调伴侣的token --json-dump 抓到的包 然后修改插件目录下的template.json文件

{
  "010500378033333102": {
    "tpl": "0180333331${p}${m}${w}${s}${th}${l}2",
    "brand": "haier",
    "set": "1"
  }
}

key是你当前空调伴侣的遥控方案的机型,你可以通过

miio --control 你的空调伴侣的ip --method get_model_and_state

获取它

"tpl"是机型的指令模板,你可以使用[ES6]字符串模板格式,通过下面的参数列表来使用他

/**
 * 生成指令
 *
 * 如果你的空调伴侣用类似 01xxxxxxxxpmwstlx 的格式发送遥控码(大部分的品牌设置为1)
 * 你就不需要魔改模板
 *
 * 模板使用 [ES6]模板字符串 来生成指令
 * 支持 +, -, *, /, %, ?:, [], toString(16) 等操作
 *
 * @param p number 电源, 0 : off, 1 : on
 * @param m number 模式, 0 : heat, 1 : cool, 2 : auto
 * @param w number 风速, 0 : low, 1 : medium, 2 : high, 3 : auto
 * @param s number 摇头, 0 : enabled, 1 : disabled
 * @param td number 温度(十进制), decimal
 * @param th string 温度(十六进制), hexadecimal
 * @param l string led灯, '0' : off, 'a' : on
 */
接入智米风扇

此部分将引导你接入智米风扇至HomeBridge

首先请确认您安装了Homebridge,如果没有安装请参阅前面的教程。

本插件需要miio支持,请确认您已安装miio


参数解析

参数 意义 示例值
ip 设备ip string 192.168.50.1
token 设备token string 47495361bbf65ac41f5e9369dba01b34
fanName 设备名字 string 客厅风扇
fanDisable 是否禁用风扇 true/false false
temperatureName 风扇温度名字 string 客厅温度
temperatureDisable 是否禁用风扇温度 true/false false
humidityName 风扇湿度名字 string 客厅湿度
humidityDisable 是否禁用风扇湿度 true/false false
buzzerSwitchName 风扇蜂鸣器开关名字 string 客厅风扇蜂鸣器
buzzerSwitchDisable 是否禁用风扇蜂鸣器开关 true/false false
ledBulbName 风扇LED灯开关名字 string 客厅风扇LED灯
ledBulbDisable 是否禁用风扇LED灯开关 true/false false

  1. 安装插件 homebridge-mi-fan
  2. 修改config.json,按照如下例子进行添加:
"platforms": [{
    "platform": "MiFanPlatform",
    "deviceCfgs": [{
        "ip": "192.168.1.xxx",
        "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "fanName": "room fan",
        "fanDisable": false,
        "temperatureName": "room temperature",
        "temperatureDisable": false,
        "humidityName": "room humidity",
        "humidityDisable": false,
        "buzzerSwitchName": "fan buzzer switch",
        "buzzerSwitchDisable": true,
        "ledBulbName": "fan led switch",
        "ledBulbDisable": true
    }]
}]
  1. 保存config.json,启动Homebridge进行测试。
接入小米无线插座

此部分将引导你接入小米无线插座至HomeBridge

首先请确认您安装了Homebridge,如果没有安装请参阅前面的教程。

本插件需要miio支持,请确认您已安装miio

目前支持的设备

1.MiPlugBase(米家智能插座基础版)
2.MiPlugBaseWithUSB(小米智能插座_USB版)
3.MiIntelligencePinboard(米家智能插线板)
4.MiQingPinboard(青米智能插线板_五孔位版)
5.MiQingPinboardWithUSB(青米智能插线板_USB版)


参数解析

参数 意义 示例值
type 设备类型 string PlugBase
ip 设备ip string 192.168.50.1
token 设备token string 47495361bbf65ac41f5e9369dba01b34
outletName 插座名字 string 客厅插座
outletDisable 是否禁用插座 true/false false
temperatureName 插座温度名字 string 客厅插座温度
temperatureDisable 是否禁用插座温度 true/false false
switchLEDName 插座LED灯开关名字 string 客厅插座LED灯
switchLEDDisable 是否禁用插座LED灯开关 true/false false
switchUSBName 插座USB开关名字 string 客厅插座USB
switchUSBDisable 是否禁用插座USB开关 true/false false

  1. 安装插件 homebridge-mi-outlet
  2. 修改config.json,按照如下例子进行添加:
"platforms": [{
    "platform": "MiOutletPlatform",
    "deviceCfgs": [{
        "type": "MiPlugBase",
        "ip": "192.168.88.xx",
        "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "outletName": "living room outlet",
        "outletDisable": false,
        "temperatureName": "living room outlet temperature",
        "temperatureDisable": false,
        "switchLEDName": "living room led light switch",
        "switchLEDDisable": false
    }, {
        "type": "MiPlugBaseWithUSB",
        "ip": "192.168.88.xx",
        "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "outletName": "study room outlet",
        "outletDisable": false,
        "temperatureName": "study room outlet temperature",
        "temperatureDisable": false,
        "switchUSBName": "study room outlet usb switch",
        "switchUSBDisable": false
    }, {
        "type": "MiIntelligencePinboard",
        "ip": "192.168.88.xx",
        "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "outletName": "master room outlet",
        "outletDisable": false,
        "temperatureName": "master room outlet temperature",
        "temperatureDisable": false,
        "switchLEDName": "master room led light switch",
        "switchLEDDisable": false
    }, {
        "type": "MiQingPinboard",
        "ip": "192.168.88.xx",
        "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "outletName": "dining room outlet",
        "outletDisable": false,
        "temperatureName": "dining room outlet temperature",
        "temperatureDisable": false
    }, {
        "type": "MiQingPinboardWithUSB",
        "ip": "192.168.88.xx",
        "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "outletName": "kitchen room outlet",
        "outletDisable": false,
        "temperatureName": "kitchen room outlet temperature",
        "temperatureDisable": false
    }]
}]
  1. 保存config.json,启动Homebridge进行测试。
接入小米PM2.5传感器

此部分将引导你接入小米PM2.5传感器至HomeBridge

首先请确认您安装了Homebridge,如果没有安装请参阅前面的教程。

本插件需要miio支持,请确认您已安装miio


参数解析

参数 意义 示例值
name 设备名字 string 客厅PM2.5传感器
showTimeSwitchDisable 是否禁用时间开关 true/false false
showTimeSwitchName 时间开关名字 string 客厅PM2.5传感器时间
ip 设备ip string 192.168.50.1
token 设备token string 47495361bbf65ac41f5e9369dba01b34

  1. 安装插件 homebridge-mi-pm2_5
  2. 修改config.json,按照如下例子进行添加:
"accessories": [{
    "accessory": "MiPM2_5",
    "name": "AirQuality Sensor",
    "showTimeSwitchDisable": true, 
    "showTimeSwitchName": "AirQuality Sensor show time",
    "ip": "192.168.88.181",
    "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}]
  1. 保存config.json,启动Homebridge进行测试。
接入小米扫地机器人

此部分将引导你接入米家扫地机器人和石头机器人至HomeBridge

首先请确认您安装了Homebridge,如果没有安装请参阅前面的教程。

本插件需要miio支持,请确认您已安装miio。

小米扫地机器人:插件地址

当前支持的设备:

1.MiRobotVacuum(小米扫地机器人)
2.MiRobotVacuum2(石头扫地机器人)


参数解析

参数 意义 示例值
type 设备类型 string MiRobotVacuum
ip 设备ip string 192.168.88.1
token 设备token string 47495361bbf65ac41f5e9369dba01b34
robotVacuumName 机器人名字 string 客厅扫地机器人
robotVacuumDisable 是否禁用机器人 true/false false
enablePauseToCharge 允许停止自动回充 true/false true

  1. 安装插件 homebridge-mi-robot_vacuum
  2. 修改config.json,按照如下例子进行添加:
"platforms": [{
    "platform": "MiRobotVacuumPlatform",
    "deviceCfgs": [{
        "type": "MiRobotVacuum",
        "ip": "192.168.88.1",
        "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "robotVacuumName": "robot vacuum",
        "enablePauseToCharge": true,
        "robotVacuumDisable": false
    }, {
        "type": "MiRobotVacuum2",
        "ip": "192.168.88.1",
        "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "robotVacuumName": "robot vacuum 2",
        "enablePauseToCharge": true,
        "robotVacuumDisable": false
    }]
}]
  1. 保存config.json,启动Homebridge进行测试。
接入小米花花草草监测仪

此部分将引导你接入米家花花草草监测仪至HomeBridge

首先请确认您安装了Homebridge,如果没有安装请参阅前面的教程。

花花草草监测仪:插件地址

当前支持的设备:

1.FlowerMate(花花草草监测仪)


安装依赖

  1. 安装依赖包 sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev
  2. 进入node_modules文件夹 (可以通过 npm -g root指令找到)
  3. 安装noble npm install noble
  4. 安装其他依赖包 sudo apt-get install libcap2-bin
  5. 运行如下指令:
sudo setcap cap_net_raw+eip $(eval readlink -f `which node`)
sudo hciconfig hci0 up

至此noble与其依赖安装完成。


安装插件

  1. 安装插件 homebridge-mi-flower-mate
  2. 修改config.json,按照如下例子进行添加:
"platforms": [
    {
        "platform": "MiFlowerMatePlatform",
        "defaultValue": {
            "c4:7c:8d:65:51:b1": "花花草草1"
        }
    }
]
  1. 保存config.json,启动Homebridge进行测试。 如果你看见如下输出
[MiFlowerMatePlatform] [BLE]Noble loaded
[MiFlowerMatePlatform] [BLE]Timer Started

则说明你的蓝牙配置完成,插件也正常运行了。

博联杂物堆

目前支持的设备有:

  1. 博联万能遥控器RM PRO,RM mini3
  2. 米家智能插座-ZigBee版

博联万能遥控器

此部分将引导你接入博联万能遥控至HomeBridge

*当前支持的设备:

  1. Broadlink RM PRO
  2. Broadlink RM mini3
  • 当前支持的类型: learn-code
    switch
    switch-multi
    switch-repeat
    fan
    light
    garage-door-opener
    window-covering
    air-conditioner

*第一步:npm -g install homebridge-broadlink-rm

参数解析

参数 意义 示例值
name 显示名称 string 空调
type 类型 string air-conditioner
pseudoDeviceTemperature 类似回风温度 int 25
defaultCoolTemperature 预设制冷温度 int 23
defaultheatTemperature 预设制热温度 int 27
minTemperature 空调支持的最低温度 int 16
maxTemperature 空调支持的最高温度 int 30
data 红外/射频数据 json {......}

空调配置注解(其它类型请查看插件官方wiki

"platforms": [{
	"platform": "BroadlinkRM",
	"name": "Broadlink RM",
	"accessories": [{
			"name": "学习",
			"type": "learn-code" //学码
		},

		{
			"name": "空调",
			"type": "air-conditioner", //类型
			"pseudoDeviceTemperature": 25, //类似回风温度
			"defaultCoolTemperature": 23, //预设制冷温度
			"defaultheatTemperature": 27, //预设制热温度
			"minTemperature": 16, //空调支持的最低温度
			"maxTemperature": 30, //空调支持的最高温度
			"data": {...} //通过学码功能记录下并填写到date里看第三步的代码
				     //格力B2型的可以直接使用下面的代码
			

*第三步:编辑修改config.json

*最后一步,保存配置并启动homebridge测试是否正常运行及操作是否正常。

适用于格力B2空调的配置

#示例配置如下

	"platforms": [{
		"platform": "BroadlinkRM",
		"name": "Broadlink RM",
		"accessories": [{
				"name": "学习",
				"type": "learn-code"
			},

			{
				"name": "空调",
				"type": "air-conditioner",
				"pseudoDeviceTemperature": 25,
				"defaultCoolTemperature": 23,
				"defaultheatTemperature": 27,
				"minTemperature": 16,
				"maxTemperature": 30,
				"data": {
					"off": "260028010a000315000128951338151215121214153615351314131414131535131512381314121415131115151212141512121514131138131413141413121414141115143615121536121514131138141511000292131512141513111514361512151213131512121514131115141311391215121415121215141311151413111515121214151212151413111514131115151112391300052400011f9513381512141311151535153613151115141311381315123813141215131411151413111515121214141312381315111515121115141312141536153612391412151212381414110002931314121513141115141312141413121414131215131411151314111514131214141312151314111513371536131412151314111513141115141311151413123813000d05",
					"temperature30": {
						"pseudo-mode": "heat",
						"data": "260028010001299317361315131412381513111512151115131412381437123815131214131412141414111514131115141312381414111514131115121512141338121513371214151311391413120002921513121414131214133812151215111512151313131412151314113815131214141312141314121414131215121511151413121414131214131412141437121514000522000121931536131414131238151311151215121412141437143712381513131313141214131412151413111512151337131413131413121514121413143613381437121514131138151312000292151311151215121414131215121513131413111514131214141312141314141215121215141212151413121414121314131414131413131314361314141312141300096d0a000d05"
					},
					"temperatur29": {
						"pseudo-mode": "heat",
						"data": "26002401000129951338151214131139131412151413111513371512143715351314121514131115151212151215111514131139141312151413111514131114163515121436151214131138131412000293151212141413111515361412121511141413121513141114151212381314121414121215141311151314111513131214141311141513111513371535131412151500052100013b9418351415141516361416151313161513133916131339153715141612131411151314111415141712141516351314131514161513131516131339163615381712141417351a11160002931a1117131a1117131a1116141a111615191216141a1116141a1116141a1116141a111615191316111a121314151417121415171114151711151517111514171115000d0500000000"
					},
					"temperature28": {
						"pseudo-mode": "heat",
						"data": "2600240100011394143613131412123715111312151212131412121315351337141213121511131314121213141212131511133712141213151114111511141214361213153513131412133615111300029112141213151113131436141115111213151213121412121314121237151212131511141115111313141212131511131314121213151112131511133713131213150005210001139314371312151113371412141115111312151213121436123715111313141213121511131215111412141213361313131314121312141212131535143614361411151113371412130002911412131215111312151114121412131214121213151114121412121314121312151113131313131214121213151114111511141214121312153513371436123715000d0500000000"
					},
					"temperature27": {
						"pseudo-mode": "heat",
						"data": "2600240100012493133913131314133713141511131513131338133713141536131414121314141213141313131414131215133714131412131414121215131312391313123913131214143712141500028e151414121214151113381511131513121314141312141412121415351314141213141511131414121314141217121513171216121712161217361513171215131700052200012f92183515131712153717121513171215131736173515141537181115131712151317121513151416121811153715141513171215131514151317361537173615131712163617121900028f1a111a101b1015131b1017141a1117131a11171319121812191215141811151315141613151218121a1119111b1117131912181219121812191218361936183717000d0500000000"
					},
					"temperature26": {
						"pseudo-mode": "heat",
						"data": "2600240100012b91163615121512133817111611151215121612143716121238161213141512131416121412161215121512153615131412151215131413141215361513143715111411133514121400029016121412151314121536151314121512151215111612141215131436151215121512151314131412151215111612141215121513141215131412151215131411160005220001079315361512151314361512151215121512151214361612143616121412151314121512151314121512151215361512141314131412151215121536153615371412151215361512150002901812161217121414161417111712171215121512161215121513131418121612181216131712171217121711181217121712171217121612183615141736183517000d0500000000"
					},
					"temperature25": {
						"pseudo-mode": "cool",
						"data": "2600240100012592123810141214133611141213111413121138131513151238131512151513121514131215151212151315123813131312111412131214121312381114113814111214123713131300029013131213111513111238111412141213111412131214111411141336121412131214121311141213121412131114121312141213111412131238113811381237110005240001069511381213111412361214111311141114113811141114123612141113111412131114121212141014111412371114111411141212111511131138113811381114111412371114120002911114121212141014111412131114121311141113111412131114111411141113111412131114121311141113111411141114121311141113111412131138123711000d0500000000"
					},
					"temperature24": {
						"pseudo-mode": "cool",
						"data": "2600240100012a92153615121512143614131413151213131512141215121436151214131413151316131312161213131512143617131612161415131613161216361713163617121713163518121600029017121712141313131535151116121412151214121512151316131635171316131613161216131613161316121613161216141513161316121613143617361735180005220001409218351713161316351813151316131612161316131613163517131613161316121613161316131612161316361712171216131613161316121636173617361713161316351713140002901512141315121312171316121613161216141513161316121613161316131612161316131613161216131612171316121613161216141513163617351813163517000d0500000000"
					},
					"temperature23": {
						"pseudo-mode": "cool",
						"data": "2600240100012595143815121414133713151215151212151536153613381612151212151512121515121215151212141612123813151215151212151513111515361413163516121512123814151100029313141315151212151536151216121214161212151512121515121238131412151513121416121215151212151512121515121215151212151536151215371535130005250001269414381512161212381315121515121215153615361338151215121214151311151413121416121215151212381414121515131115151312141635163513391512151311391315120002921414121516121116151212151512121515121215151212151512121515131115161212141612121515121215151212151512121515131115151311391315123813000d0500000000"
					},
					"temperature22": {
						"pseudo-mode": "cool",
						"data": "2600240100012994133914131315123813151215131513131315123814381413131512151314121513151314121512151215133713151215121513141215131412381414123814141215123813151300029112151115131412151239131413141314121512151215121413151336141513131314121612141215121513141314131313151313131511151314121512381437140005230001269311381114111411381315131313141014111411381138111411141114111410141114111411141114111410381214101411141114131511151338143713381413131513361414120002931712171314141712151417121414171215151612151417121514171314141712151417131414171214151512131513131115131311151413133817121514173614000d0500000000"
					},
					"temperature21": {
						"pseudo-mode": "cool",
						"data": "2600240100013095133816121315113913151413131415121437151313381512131512151215141313151214131514131215133714151413121513141315121413381414123811141114113811141100029213151413131412151238151312151313131514121315111513141238131512151215131412151313131511151315111512151214131513141238133813151238130005240001249414381413131413371315121512151215123814141238141412151214131512141314121513141215121512381315131313151115131513131338173616371314151418351314150002921713171116141711131513141314141313151314141417121215131413151015131511151215121513141114131413151215141313151313131513141315133713000d0500000000"
					},
					"temperature20": {
						"pseudo-mode": "cool",
						"data": "2600240100011d951239111412141138121411141214111511141114123812141214111412141114121411141214111412141138121411141214111412141114123811151138111412141138121410000293111411141215101412381114111411141214111412141114111510381313111411141114111510141114111411141113121411141213111412141138111411381300052200010c9513371114111411381313111411141114121411141138121312141114121411141114111412141114111411391213101413121114131213141238123813381314131511381415110002931712171215141613151417121514171215151215151317111614161216141612161417111614161216141711161417111615111416141612163814391637151415000d0500000000"
					},
					"temperature19": {
						"pseudo-mode": "cool",
						"data": "26002401000128951339121513151238141411151413121414371238151311151215111512151214141312141315111514131138151312141413121512151115143613141338121512141238141312000292141411151215111513371215121412141413121412151214121511381513111512151115121412141215131314131115121511151215111513371214131412381400052200011e9315361214131413371413121413141214143612381513131314131115121511141314121412151115121513371413111513131214131413131436133814371214121513371414160002911514161216141513151416141414151315141614141415131514151415141414161415131514161215151414151416121515151315141613151414381638141415000d0500000000"
					},
					"temperature18": {
						"pseudo-mode": "cool",
						"data": "2600240100013195163614141214103812141114131212151413133815131215141312151512131514131413151312141513133815131215141312141613121514361314153713141512133815131200029216131115131512141437131315141214141313141414111415131436151312151314121514131215121413141315121414141115141311141313101413131038150005220001249415371215141312381513121512151215141312381513121413151115131412151314121514131215141312381513121414141115111411131337103813371014131310381312120002931712161315141514141416131514161315141613121512151314121513151115151312151215121513151215121512141414131413151215123913141338151415000d0500000000"
					},
					"temperature17": {
						"pseudo-mode": "cool",
						"data": "2600240100014394153914141515163617131611151417121538141415141712151417111514171215141711151417121514173518111712151417111515161215381711153914151414173518121700028f15151712141417111539131514121215141311151413111515121238131412151413111514131115151212141512121514131115161217121438173615381711150005250001409213391513151417351515171214151612133815121512121414151612151516121415161313151712141516361514171214151612141616121438173618351513151616351613170002901811171215141711161416121514171115151612151317131514161214141811181118121a1118121a111912191218121a111812191317111a1119121936161215000d0500000000"
					},
					"temperature16": {
						"pseudo-mode": "cool",
						"data": "2600240100012a941438131415131138131412151512121415121215141311151512121415121214151212151413111515121138131512141512131414131115153515121536121514131138131412000292131413131612121414361214151311141512121415121115151211381314131415121213151312141412131315121213161212131513111415121337133814121500052200011c9413381512141312371513121315121313151212131612111415131214141213131512111416121213151312371414111415121313151212141535153513381314151212381214130002921713161215141613151317121513181215131713151317121513171315131712151317131513141315141712161316121513171315131712153816361613171315000d0500000000"
					}
				}
			}
		]
	}]
适用于海尔空调的配置

示例配置如下

请注意 本部分使用的是

https://github.com/Zzm317/homebridge-broadlink-rm

的分支插件,请下载覆盖后使用!!!

	{
            "platform":"BroadlinkRM",
            "name":"Broadlink RM",
            "hideScanFrequencyButton": true,
            "hideLearnButton": true,
            "accessories":[
            {
              "name":"客厅空调",
              "type":"air-conditioner-pro",
              "host":"192.168.31.104",
              "minTemperature": 16,
              "maxTemperature": 30,
              "pseudoDeviceTemperature": 26,
              "defaultCoolTemperature": 26,
              "defaultHeatTemperature": 26,
              "data":{
                "off": "2600e80063666691133811121336121312121237133712121435160f10151236121312131211121312371237123713121213111311131213111314111112121311141113121211131213121211131212121311131212121311141212123614111114111311131212121310141213121212121214111112131212121212371214111311131113131112121313111311131113131211131114111311131213111311131213111312121213121211131212131110151213111312131311111212131213121212121212121212141211121311131238111312371213143412131138133712121237123713000d05",
                "heat30":{
                  "pseudo-mode":"heat",
                  "data":"2600e80066646692143515101435141015101435143515101435143515341510143515341510141015351435143514111410141015101311141015101410141015101410141015101336143515101410141015101410141015351410143514111410141015101311131114111410141113111311131213111336131213111311141113111311141113111311141113111311141113111311141113111312131113111311141113111312131113111312131113111411131113111411131113111411131113111411131113111411131113111411131113121311133613121336131113111436131113000d05"
                },
                "heat29":{
                  "pseudo-mode":"heat",
                  "data":"2600e80066656691143613111336141113111336143613111336143613111336143613361311141113361336133614111311141113111311141113111311141113111311141113111336143613111311141113111311141113361311143613111311141113111312131113111312131113111411131113111435141113111411131113111411131113111411131113111411131113121311131113121311131113121311131114111311131114111311131114111311131114111311131213111311131213111311141113111311141113111311141113361311143613111311141113111336143613000d05"
                },
                "heat28":{
                  "pseudo-mode":"heat",
                  "data":"2600e80067646692133613111436131113111435143613111436133613111411133613361312131113361336143613111312131113111312131113111411131113111411131113111436133613111411131113111411131113361411133613111411131113111411131113111411131113111411131113121336131113121311131113121311131114111311131114111311131114111311131114111311131114111311131114111311131213111311131213111311131213111311141113111410141113111311141113111312131113111411131113361411131113361336141113111435143613000d05"
                },
                "heat27":{
                  "pseudo-mode":"heat",
                  "data":"2600e80066656691143613111336141113111336143613111336141113351436143613361311131213361336143514111311141113111311141113111311141113111311141113111336143613111311141113111312131113361311143613111311141113111312131113111312131113111312131113111436131113111411131113111411131113111411131114111311131114111311131113121311131114111311141113111311131213111311141113111311141113111312131113111411131113111411131113121311131113121311131113371311131113371311131114111336133614000d05"
                },
                "heat26":{
                  "pseudo-mode":"heat",
                  "data":"2600e80066646692133613111436131113111436133613111436131113361411133613361411131113361436133613111312131113111411131113111411131113111411131113121336133613111411131113121311131114361311133614111311131114111311131114111311131114111311131213111336131114111311131213111311131213111311141113111311141113111311141113111312131113111312131113111411131113111411131113111411131113111411131113111411131113121311131114111311131114111311131114351411131114111336131113121336133614000d05"
                },
                "heat25":{
                  "pseudo-mode":"heat",
                  "data":"2600e80066646692143514111336131113121336133614111435141015101435133615351311131115351435133614111410131113121311141013121311141015101410131114111336133615101410141113111410141113361410133614111311131213111311141113111311141113111311141113111435141113111311141113111411131113111312131113111411131113111411131113111411141013111411131113121410131113121311131113121311131114111311131114111311131115101311131114111311131213111311141113361311151013111311141113111336133713000d05"
                },
                "heat24":{
                  "pseudo-mode":"heat",
                  "data":"2600e80067636791143514111435151014101435153415101336151014101410153514351410131214351435133615101410151014101410151014101410151014101410151014101435153415101311151014101410151014351410153514101410141114101411141014101510141014101510141013111535141013111510141014101411131114101312141014101510141015101410141014111410141015101410141015101410141015101410131115101410150f15101410141114101410151014101410151014101410151014101410151014351435153415351435141114101336153415000d05"
                },
                "heat23":{
                  "pseudo-mode":"heat",
                  "data":"2600e80067616991143613111336141113111336143613111312133613361336143613361311141113361336133713111311141113111311141113111311141113111312131113111336143613111312131113111411131113361312133613111312131113111411131113111411131113111411131113111436131113111411131113111312131113111411131113121311131113121311131113121311131114111311131114111311131114111311131114111311131213111311131213111311141113111311141113111311141113111311141113361336143613361311141113111336143514000d05"
                },
                "heat22":{
                  "pseudo-mode":"heat",
                  "data":"2600e80066646692133614111336131114111336143514111311133614361311143514361311131213361336133614111311131213111311131213111311141113111311141113111336143613111312131113111312131113361411133613111312131113111411131113111411131113111411131113111436131113111411131113121311131113121311131113121311131113121311131114111311141014111311131114111311131213111311141113111311141113111312131113111311141113111311141113111411131113111411131113361534143613111435141113111435143613000d05"
                },
                "heat21":{
                  "pseudo-mode":"heat",
                  "data":"2600e80066646692143514111336131114111336133614111311133614111336133614361311131213361336133614111311131114111311131213111311131213111311141113111336133713111311141113111311141113361311133713111311141113111311141113111312131113111312131113111436131113111411131113111312131113111411131113111411131113121311131114111311131114111311131114111311131114111311131114111311131213111311131213111311131213111311131213111311141113111311141113341536133713111311141113111336143415000d05"
                },
                "heat20":{
                  "pseudo-mode":"heat",
                  "data":"2600e80066656691153514101336141113111336143613111312133415111411133613361410141113361336143613111311131213111312131113111312131113111312131114101435143613111411131113111312131113361411133613111411131113111411131113111411131113111411131114111336131113121311131114111311131114111311131114111311131113121311131114111311131213111311131213111311131213111311141113111311141113111311141113111312131113111411131113111411131113111411131113361435141113361436131113111436133613000d05"
                },
                "heat19":{
                  "pseudo-mode":"heat",
                  "data":"2600e80066656691143613111336141113111336143613111311141113361336143613361311141113361336143613111311141113111311141113111311141113111312131113111336143613111312141013111411131113361411133613111312131113111312131113111411131113111411131113111436131113121311131113121311131114111311131114111311131114111311131114111311141113111311131213111311131213111311141113111311141113111311141113111312131113111312131113111312131113111411131113361436131113361411131113111436143513000d05"
                },
                "heat18":{
                  "pseudo-mode":"heat",
                  "data":"2600e80067646692133613111337131113111337133613111411131113361312133613361312131113361336143614101411131113111411131113111411131113111411131114111336133613111411131113121311131113361510133613111411131113121311131113121311131113121311131114111336131114111311131114111311141014111311131213111311131213111311131213111311141113111311141114101311141113111312131113111312131113111312131113111411131113111411131113111312131113111411131113361436131113111436131113121336133613000d05"
                },
                "heat17":{
                  "pseudo-mode":"heat",
                  "data":"2600e80066656691143613111336151013111336143613111311141113111336143613361311141113361336153513111311141113111311141114101312131113111312131113111436133613111411131113111411131113361510133613111411131113111411131114101411131113121311131114111336131113121311131114111311131114111311131114111311131114111311131213111311131213111311141113111311131213111311141113111311141113111311141113111311141113111312131113111411131113111411131113361436131113111411131113111436133614000d05"
                },
                "heat16":{
                  "pseudo-mode":"heat",
                  "data":"2600e80066646692133613111436131113111436133613111411131113111411133613361411131113361436133613111312131113111411131113111411131113121311131115101336133613111411131113121311131113361411133613121311131113121311131114111311131113121311131114111336131114111311141014111311131213111311131213111311131213111311141113111311131213111311141113111311141113111312131113111411131113111411131113111411131114111311131113121311131114111311131114361311143514361336131114111336133613000d05"
                },
                "cool30":{
                  "pseudo-mode":"cool",
                  "data":"2600e800676368901534151014351410151014351435150f15351435153415101435153415101410153415351435141015101410150f15101410150f15101410150f15101410150f15101435150f15101410150f15101410153415101435150f1510141015101410141015101410150f15101410141015101410141015351410141015101410150f15101410150f15101410150f15101410150f15101410150f15101410150f1510141015101410141015101410150f15101410150f15101410150f15101410150f15101410150f15101410150f15101410150f153514351534151014101534151014000d05"
                },
                "cool29":{
                  "pseudo-mode":"cool",
                  "data":"2600e80068626890163315111434151113111434153415111335153415111335153415341511141014341535153415111311131114111311131114111311131114111311141014111311143415111311131114111311131114341511133515101411131114101411131114111311131114111311131114111311131114341511131114111311131114111311131114111311141014111311141014111311141014111311141014111311141014111311141014111311141014111311141014111311141014111311141014111311141014111311141014341511143415341511141014111335153415000d05"
                },
                "cool28":{
                  "pseudo-mode":"cool",
                  "data":"2600e80066646692133614111336131114111336133614111336133613111411133613361411131113361435143613111411131113111312131113111411131113111312131113111312133613111312131113111312131113361312133613111311141113111312131113111312131113111312131113111312131113361311141113111311141113111311141113111311141113111311141113111311141113111311141113111311141113111311141113111311141113111311141113111312131113111312131113111312131113111312131113361311143613111336141113111336143613000d05"
                },
                "cool27":{
                  "pseudo-mode":"cool",
                  "data":"2600e80066656691143514111336131213111336133614111336131114361336133614351411131113361436133613111411131113111411131113121311131113121311131113121311133613111411131113121311131113361411133613111411131113111411131113111411131113111411131113121311131113361411131113121311131113121311131114111311131114111311131114111311131114111311131213111311131213111311141113111311141113111311141113111311141113111312131113111312131113111411131113361312133613111312131113111336143613000d05"
                },
                "cool26":{
                  "pseudo-mode":"cool",
                  "data":"2600e80066646692133613111435141113111436133415111435141113361312133613361311141113361336143613111311141113111311141113111311141113111311141113111311143613111311141113111311141113361311143613111311141113111311141113111311141113111311141113111312131113361311141113111312131113111312131113111312131113111411131113111411131113111411131113111411131113111411131113111411131113111411131113111411131113111411131113121311131113121311131113361411131113361436131113111436133613000d05"
                },
                "cool25":{
                  "pseudo-mode":"cool",
                  "data":"2600e80066646692133614111336131114111336133614111336131113121336133613361411131113361434153613111411131113111411131113111411131113111411131113111411133613111411131113111411131113361411133613111411131113111411131113111411131113111411131113121311131113361411131113121311131113121311131113121311131113121311131114111311131114111311131114111311131114111311131114111311131114111311131114111311131114111311131114111311131114111311131213361311131114361311131114111336133613000d05"
                },
                "cool24":{
                  "pseudo-mode":"cool",
                  "data":"2600e80066656691143415111336141113111336143514111336131213111311133614361311131213361336133614111311131114111311131114111311131114111311131114111311133614111311131114111311131114361311133614111311131114111311131114111311131114111311131114111311131114361311131114111311131114111311131114111311131114111311131213111311131213111311131213111311131213111311141113111311131213111311141113111311141113111311141113111311141113111311141113361311141113111336131213111336143514000d05"
                },
                "cool23":{
                  "pseudo-mode":"cool",
                  "data":"2600e80066646692133613111436131113111436133613111411133613361435143613361312131113361336143613111311141113111312131113111312131113111312131113111411133613111312131113111411131113361312133613111312131113111312131113111411131113111411131113111411131113361312131113111411131113111411131113111411131113111411131113111411131113121311131113121311131113121311131113121311131114111311131114111311131114111311131114111311131114111311131114351411131114111311131114111336133614000d05"
                },
                "cool22":{
                  "pseudo-mode":"cool",
                  "data":"2600e80066646692133614111336131114111336133614111311133614361311133614351411131114351436133613121311131113121311131114111311131114111311131114111311133614111311131114111311131114361311133614111311131114111311131114111311131114111311131114111311131114361311131114111311131114111311131213111311131213111311131213111311131213111311141113111311141113111311141113111311141113111311141113111311141113111311141113111311141113111311141113361336143514361336131213111336133614000d05"
                },
                "cool21":{
                  "pseudo-mode":"cool",
                  "data":"2600e80066656691143613111336141113111336143613111311143613111336143613361311141113361336133614111311131213111311131213111311141113111311141113111311143613111311141113111311141113361311143514111311141113111311141113111311141113111311141113111311141113361311141113111311141113111312131113111312131113111411131113111312131113111411131113111411131113111411131113121311131113111411131113111411131113111411131113121311131113121311131114351436133613361411131113111436133613000d05"
                },
                "cool20":{
                  "pseudo-mode":"cool",
                  "data":"2600e80066646691143613111336141113111336143514111311143613111311143613361311141113361336143514111311131213111311141113111311141113111311141113111311143613111311141113111311141113361311143613111311141113111311141113111312131113111411131113111411131113361411131113111411131113111411131113111411131113111411131113111411131113111411131113111411131113121311131113121311131113121311131113121311131114111311131114111311131114111311131114351436133613121336131113111436133613000d05"
                },
                "cool19":{
                  "pseudo-mode":"cool",
                  "data":"2600e80066646692133614111336131114111336133613121311131113361436133613361411131113361436133613111312131113111411131113111411131113111411131113111411133613111411131113111411131113361411133613111411131113121311131113121311131113121311131113121311131114351411131114111311131114111311131114111311131114111311131114111311131114111311131114111311131114111311131213111311131213111311131213111311141113111311131213111311141113111311141113361336133614111311141113111336143514000d05"
                },
                "cool18":{
                  "pseudo-mode":"cool",
                  "data":"2600e80067646691143613111336141113111336143613111312131113361312133613361311141113361336143613111311141113111311141113111311141113111311141113111311143613111311141113111311141113361311143613111311141113111311141113111312131113111312131113111312131113361312131113111411131113111312131113111411131113111411131113111411131113111411131113111411131113111411131113121311131113121311131113121311131114111311131113121311131114111311131114361336131114351436131113121336133613000d05"
                },
                "cool17":{
                  "pseudo-mode":"cool",
                  "data":"2600e80066646692133613111436131113111436133613111411131113111436133613361411131113361336143613111311141113111312131113111312131113111312131113111312133613111312131113111411131113361411133613111312131113111411131113111411131113111411131113111411131113361411131113111411131113111411131113111411131113121311131113121311131114111311131114111311131114111311131114111311131114111311131114111311131114111311131213111311131213111311131213361336131114361311131213111336133614000d05"
                },
                "cool16":{
                  "pseudo-mode":"cool",
                  "data":"2600e80066646692133613111436131113111436133613111411131113111411133613361411131113361435143613111312131113111411131113111411131113111411131113111411133613111411131113111411131113361411133613111411131113111411131113111411131113111411131113111411131113361411131113111411131113111411131113121311131113121311131113121311131114111311131114111311131114111311131114111311131114111311131114111311131114111311131114111311131213111311131213361336131114111336131114111336133614000d05"
                },
                "auto30":{
                  "pseudo-mode":"auto",
                  "data":"2600e80066646692133614111336131113121336133613121336133613361411133613361411131113361436133613111411131113111411131113121311131113121311131113121311133614111311131113121311131114361311133614111311131114111311141014111311131213111311141113111311141113111311141113111311141113111312131113111312131113111411131113111411131113111411131113111411131113121311131114111311131114111311131213111311131114111311141113111311131213111311141113111311143613111336131213111336141113000d05"
                },
                "auto29":{
                  "pseudo-mode":"auto",
                  "data":"2600e80066626892133415111434151113111337133614101436133613111336143613361312131113361336143514111312131113111411131113111411131113111411131113111411133613111411131113111411131113361312133613111411131113111411131113111411131113121311131113121311131113121311131114111311131113121311131114111311131113121410131213111311131213111311131213111311141113111311141113111311141113111311131213111311141113111312141013111312131113111411131113361312133613111411131113111436133613000d05"
                },
                "auto28":{
                  "pseudo-mode":"auto",
                  "data":"2600e80066646692133614111336131113121336133613121336133613121212133613361411131113361436133613111411131113121311131113121311131113121311131113121311133614111311131113121311131213361311133614111311131213111311131213111311141113111311141113111311141113111312131113111312131113111411131113111411131113121311131114111311131114111212131213111311131213111311131213111312131113111312131113111312131113111411131113121311131113121311131114361311131114361336131113121336133613000d05"
                },
                "auto27":{
                  "pseudo-mode":"auto",
                  "data":"2600e80066646692143613111336141113111336143613111336141113361336143613361410141113361336133713111311141113111311141113111311141113111312131113111312133613111312131113111411131113361213133613111312131113111411131113111411131113111411131113121311131113121311131113121410131113121311131114111311131114111311131114111311131213111311131213111311131214101311141113111311141113111311141113111311141113111311141113111312131113111312131113361312131113361312131113111435143613000d05"
                },
                "auto26":{
                  "pseudo-mode":"auto",
                  "data":"2600e80066646692133613111436131113111436133613111436131113361312133613361411131113361435143613111411131113121311131113111411131113121311131114111311133613121311131114111311131114361311133613121311131114111311131213111311141113111311131213111311141113111311141113111311141113111410141113111312131113111411131113111312131113111411131113121311131114111311131114111311131114111311131213111311141113111311141113111312131113111312131113361411131113111436131113111436133613000d05"
                },
                "auto25":{
                  "pseudo-mode":"auto",
                  "data":"2600e80066656691153513111336141113111336143613111336141113111336143613361311141113361336143613111311141113111312131113111312131113111312131113111312133613111411131113111411131113361411133613111411131113121311131114111311131113121311131114111311131114111311131114111311131213111311131213111311131213111311141113111311141113111311141113111312131113111312131113111312131113111411131113111411131113111312131113121311131113121311131113361411131113121311131113121336133613000d05"
                },
                "auto24":{
                  "pseudo-mode":"auto",
                  "data":"2600e80066646692133613111436131113121336133613111436131113111411133613361411131113361535133613111411131113111411131113121311131113121311131113121311133614111311131113121410131114361311133614111311141014111311131213111311141113111311141113111311141113111311141113111311141113111312131113111312131113111411131113121311131113121311131114111311131114111311131213111311131213111311141113111311141114101312131113111312131114101411131113361436133613361436131113111337133613000d05"
                },
                "auto23":{
                  "pseudo-mode":"auto",
                  "data":" 2600e80066646692133713111336141113111336143613111311143613361336143613361311131213361336133713111311131213111311141113111311141113111311141113111312133613111411131113111312131113361312133613111411131113111411131113111411131113121311131113121311131113121311131113121311131114111311141014111311131213111311131213111311141113111311141113111311141113111311131213111312131113111411131113111312131113111312131113111411131113111411131113361436133613361411131113111434153613000d05"
                },
                "auto22":{
                  "pseudo-mode":"auto",
                  "data":"2600e80066646692133613111436131113111535133613111411133613361411133614351411131113361436133613111411131113121311131114111311131113121311131114111311133614111311131213111311131213361311133713111311141114101311141113111410141113111312131113111312131113111411131113111411131113111411131113111411131113121311131113121311131113121311131113121311131114111311131114111311131213111311131213111311131213111311141113111311141113111311141113361336143613111336141113111336143613000d05"
                },
                "auto21":{
                  "pseudo-mode":"auto",
                  "data":"2600e80067656691143613111336131213111336143613111312133613111336143613361311151013361336143613111311141113111411131113111312131113111411131113111411133613111411131113111411141013361411133613121311131113121311131114111311131114111311131114111311131114111311131213111311131213111311131213111311141113111311141113111311141113111311141113111312131113111411131113111411131113111411131113111312131113111411131113111411131113121311131113371336133614111311131113121237133613000d05"
                },
                "auto20":{
                  "pseudo-mode":"auto",
                  "data":"2600e80066646692143514111336131213111336133614111311133713111311133614361311131213361336133614111311131213111311131213111311131213111311141113111311143613111311141113111312131113361411133613111312131113111312131113111411131112121411131113111411131113121311131113121311131113121311131114111311131213111311131213111311131213111311131213111311141113111311141113111311141113111312131113111312131113111312131113111411141013111411131113361436131113361436131113111436133613000d05"
                },
                "auto19":{
                  "pseudo-mode":"auto",
                  "data":"2600e80066656593133613111436131113111337133614101312131113361436133613361411131113361337133613111312131113111411131113111411131113121311131114111311133614111311131113121311131114361311133614111311131114111311131212121311131213111311131213111311131213111410131213111312131113111312131112121312131112121411131113111411131113111411131113121311121213121212131113121311131114111311131114111311131213111311131213111212131213111311131213361336131213361410131213111336143613000d05"
                },
                "auto18":{
                  "pseudo-mode":"auto",
                  "data":"2600e80066646692133613121336131113121336133613121311131113361312133614361311131114351436133613121311131114111311131114111311131114111311141113111311133713111311141113111311131213361311143613111311141113111312141013111312131113111411141013111312131113111411131112131311131113121311131113121311131113121311131114111311141113111311131213111311141113111311141113111311141113111311141113111312131113111411131113111312131113111411131113361436131113111436131113111436133613000d05"
                },
                "auto17":{
                  "pseudo-mode":"auto",
                  "data":"2600e80066646692133613111436131113111436133613111411131113121336123713361411131113361436133614101411131113121311131113121311131114111311131114111311133614111311131114111311131213361410133614111311131213111311141113111311131213111311131213111312131113111312131113111312141013111411131113111411131113121311131113121311131113121311131114111311131114111311131114111311131213111410131213111311141113111311141113111311141113111311141113361336141113111312131113111336143613000d05"
                },
                "auto16":{
                  "pseudo-mode":"auto",
                  "data":"2600e80066656691153512121336141113111336143613111311141113111312123713361312131114351336143613111312131113111312131113111411131113121311131114111311133613121311131113121311131114361311143514111311141113111311131213111311131213111311141113111311131213111312131113111312131113111312131113111312131113111411131113111411141013121311131114111311131113121311131114111311131213111311131213111311131213111311141113111311131213111311141113361311143613361336131213111336143613000d05"
                }
              }
            }
		}
博联无线插座(SP2/SP3)

此部分将引导你接入博联无线插座至HomeBridge

首先请确认您安装了Homebridge,如果没有安装请参阅前面的教程。

参数解析

参数 意义 示例值
name 显示名称 string My Broadlink SP1
ip 设备ip string 192.168.50.1

  1. 安装插件 homebridge-broadlink-sp
  2. 使用e-control(易控)来设置你的SP插座
  3. 修改config.json,按照如下例子进行添加:
"accessories": [
	{
		"accessory": "broadlinkSP",
		"name": "My Broadlink SP1",
		"ip": "192.168.1.13"
	},
	{
		"accessory": "broadlinkSP",
		"name": "My Broadlink SP2",
		"mac": "34:ea:34:e4:00:22"
	}
]
  1. 保存config.json,启动Homebridge进行测试。
Hex2Base64

HexBase64转换器

RF射频码转换

Base64转换为Hex

网址: Hex2Base64

斐讯巴士

目前支持的设备有:

  1. 悟空M1
悟空M1

此部分将引导你接入悟空M1至HomeBridge

此插件基于Domoticz论坛用户Zackr的斐讯M1插件V1.2.0

Homebridge插件由Zzm317编写

支持功能:

温湿度显示
空气质量显示
甲醛值不显示
屏幕亮度控制
支持心跳包(定时更新数据)
支持接入多设备

注:
1.由于插件必须要监听9000及443端口,如有其它程序占用,请将该程序的端口更改。
2.数据并非实时(M1上传数据间隔5分钟)

劫持DNS

路由器需支持dnsmasq
打开/etc/dnsmasq.conf,添加以下规则,IP为Pi所在IP

address=/.aircat.phicomm.com/192.168.31.5 

也可以使用DNS投毒方法 参见 DNS投毒

安装插件

  1. 安装插件 homebridge-phicomm-m1
  2. 修改config.json,按照如下例子进行添加:
"platforms": [
    {
        "platform"  : "PhicommM1Platform" ,
        "heartbeat" : 5 ,
        "defaultValue": {
            "192.168.31.92": "PhicommM1"
        }
    }
]
  1. 保存config.json,启动Homebridge进行测试。 如果你看见如下输出
[2018-1-9 10:59:44] [PhicommM1Platform] [Network]Loading Network
[2018-1-9 10:59:44] [PhicommM1Platform] [Network]TCP Server Starting on 9000

则插件已正常启动

需要使用转发的情况

如果您需要将得到的数据包转发给其他服务器,可以这样配置

"platforms": [
    {
        "platform"  : "PhicommM1Platform",
        "heartbeat" : 5 ,
        "forwardTo" : "192.168.31.246:15000",
        "enable443" : true,
        "defaultValue": {
            "192.168.31.92": "PhicommM1"
        }
    }
]

将上面的forwardTo改成您需要转发到的服务器即可。 如果需要转发443端口,请开启enable443(必须首先填写forwardTo!)

使用DNS投毒方法接入斐讯设备

欢迎来到本教程

首先,我们来理解一下什么是DNS投毒

  • 域名服务器缓存污染(DNS cache pollution),又称域名服务器缓存投毒(DNS cache poisoning),是指一些刻意制造或无意中制造出来的域名服务器封包,把域名指往不正确的IP地址。一般来说,在互联网上都有可信赖的域名服务器,但为减低网络上的流量压力,一般的域名服务器都会把从上游的域名服务器获得的解析记录暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。一旦有关域名的局域域名服务器的缓存受到污染,就会把域名内的电脑导引往错误的服务器或服务器的网址。

原理很简单,通过DNS污染,将斐讯服务器aircat.phicomm.com解析到对应的Homebridge所在的ip,之后通过Zzm317写的插件,将数据重新转发给斐讯服务器,达到斐讯设备与斐讯服务器的正常通信(未测试,理论上是可以的)

那么接下来介绍如何安装使用

安装使用

  1. 安装screen和ettercap-text-only
apt-get install -y screen ettercap-text-only
  1. 进入ettercap目录,添加斐讯地址到etter.dns
cd /etc/ettercap
vi etter.dns
在末尾加上 aircat.phicomm.com   A    homebridge所在设备的ip
比如 aircat.phicomm.com   A    192.168.31.212
  • 如果不会使用vi,可以使用其他工具
  1. 新建一个screen
screen -S ettercap
  1. 启动ettercap
ettercap -q -T -M arp:remote -P dns_spoof -i eth0 /192.168.31.1// /192.168.31.92//
  • 注意,这边的eth0为你设备的网卡,一般有线是eth0,192.168.31.1为你的网关的ip,一般是.1结尾的,192.168.31.92则是你要投毒的对象,改成斐讯的M1即可.
  • 投毒生效需要一段时间,请耐心等待。

如果homebridge不久后成功加载出斐讯M1,则投毒成功。可以正常使用啦!

screen基本使用教程

screen -S name 创建名字为name的screen
screen -r name 返回名字为name的screen
screen -ls         查看运行中的screen
screen -d name 断开和名字为name的screen的连接
MQTThing

mqtt相关

sonoff
esp8266
hassmart
关于我们

感谢您观看本教程,如果您觉得这对您很有用,请点个赞收藏一下然后投个硬币。(然而并不是UP主)

感谢本教程作者们的共同编辑。如果您想加入进来或者有什么意见或建议,欢迎电邮至admin@loli.ren。

欢迎加入我们的QQ群 545171648

在这里你能得到更多的帮助~