基于Appdaemon+Homeassistant的Sonoff basic开关刷Tasmota搭载光照度+...
本帖最后由 cnk700i 于 2018-7-3 19:30 编辑> 听说标题长才有人看
## 零 ##
之前看blindlight大神的[帖子](https://bbs.hassbian.com/thread-2826-1-1.html)被安利了Appdaemon,最近腾出时间看了几天官方的E文教程,然后想来实践下。于是翻出角落里N久前刷好了Tasmota固件然后吃灰的Sonoff、一时兴起买的光照度传感器和红外传感器,就决定做个简单的走廊灯自动控制吧。期间还是折腾了一番,感觉Tasmota还有Appdaemon还有太多的东西要学了,还是先写点东西作个总结吧。
本来只想附个代码为论坛不多的Appdaemon资料充充数算了,结果强迫症发作还是把整个流程都介绍了。所参考的各位大大教程都标注出来了,涉及的东西有点多,自行按需食用。
> PS:因为实践时间跨度有点长,估计会有遗漏的地方,以出处为准吧。
> PS2:代码中有中文的地方请自行替换
## 一、准备 ##
1.硬件(买买买)
- sonoff basic(淘宝28元左右那款)
- BH1750光照度传感器(6元左右)
- HC-SR501人体传感器(6元左右)
- CH340G USB转TTL模块(8元左右)
- 杜邦线7条
- 排针(2.54MM间距,17MM长,买长点容易掰弯走线)
- 电烙铁+焊锡+松香
2.软件环境
- Ubuntu 18.04 (详见百度)
- mosquitto 1.4.15([详见Jones大教程](https://bbs.hassbian.com/thread-28-1-1.html))
- Homeassistant 0.71.0 ([详见Jones大教程](https://bbs.hassbian.com/thread-27-1-1.html))
- Docker 18.03.1-ce([详见我之前的教程](https://bbs.hassbian.com/thread-3903-1-1.html))
- Appdaemon 3.0.1
3.预期效果
- 光线暗并且感应到人,开灯
- 感应到没人,延时一段时间(自定义)后关灯
> HC-SR501检测到人之后设置一个计时器,计时器结束后才输出低电平。期间检测到人活动,会重置计时器,所以关灯的时间是HC-SR501的计时器(可通过旋钮调)+自定义时间
- 使用无线开关进行物理控制
## 二、Sonoff ##
### Step1.刷固件 ###
先把排针焊接在中间的5个孔上
> 我买的两个焊盘都堵上了,试过吸锡器也不好用,最后是把排针拆成一个一个,加热锡盘时候把排针顶进去。
然后按(https://bbs.hassbian.com/thread-419-1-1.html)刷固件,注意com参数的Flash Mode: DIO要改成DOUT!
### Step2.接线 ###
传感器需要共用3.3V和GND供电,可以把杜邦线的头抽出来(挑起条形的挡片就能抽出来了),然后把另一根线的头剪掉、剥线绕在抽出。
光照传感器 - Sonoff
VCC - 3.3V
SCL - GPIO 3
SDA - GPIO 1
GND - GND
人体传感器 - Sonoff
VCC - 3.3V
OUT - GPIO 14
GND - GND
> PS:人体传感器一般供电是5V,可能是3.3V供电影响,距离旋钮不能调大,不然好像工作不正常,具体请自行测试。
### Step3.配置 ###
设置时区
主页>Console
输入 Timezone 8
设置switch2的模式
主页>Console
输入 SwitchMode2 1
> PS:默认工作模式是0,详细解释可见[帖子](https://bbs.hassbian.com/thread-1358-1-1.html)
设置传感器上报间隔
主页>Configuration>Configure Logging
配置Telemetry period,最小是10,一般60就可以
> PS:这个只影响照度的上传频率,因为代码可以通过http接口主动取数据,不用担心设置过大影响准确率
设置mqtt
主页>Configuration>Configure MQTT
按mosquitto的设置配置Host、Port、User、Password
主页>Configuration>Configure Other
勾上MQTT enable
设置数据端口([详见27hh大的教程](https://bbs.hassbian.com/thread-1120-1-1.html))
主页>Configuration>Configure Module
GPIO 4设置成Relay2,GPIO 14设置成Switch2。原理应该是借助Relay的状态来间接传递人体传感器的输出(有人>高电平>Switch2接通>Relay2接通>MQTT传递状态)。
GPIO 3、GPIO 1按Step2的接线分别设置SCL、SDA,接收光照传感器数据。
## 三、Homeassistant ##
增加一个sensor,用于接收光照度信息;增加一个binary_sensor,用于接收触发状态;增加mqtt,与mosquitto主机通信;增加一个light/switch,Sonoff控制的灯。
sensor:
- platform: mqtt
name: illuminance_hallway
state_topic: "tele/sonoff/SENSOR"
value_template: "{{ value_json['BH1750'].Illuminance }}"
unit_of_measurement: "lux"
binary_sensor:
- platform: mqtt
name: motion_hallway
qos: 1
state_topic: "stat/sonoff/POWER2"
payload_on: "ON"
payload_off: "OFF"
device_class: motion
mqtt:
# MQTT Broker的IP地址或者域名
broker:
# MQTT Broker的端口号,缺省为1883
port: 1883
# 用户名
username: [自定义]
# 密码
password: [自定义]
light:
- platform: mqtt
name: hallway
state_topic: "stat/sonoff/POWER1"
command_topic: "cmnd/sonoff/POWER1"
qos: 1
payload_on: "ON"
payload_off: "OFF"
retain: true
## 四、Appdaemon ##
**** Hidden Message *****
学习一下
学习学习 学习一下 感謝樓主分享 进来学下一下
学习一下 学习一下
谢谢分享 感谢分享