HomeAssistant(7) - HelloMorningStar/HomeAssistant GitHub Wiki
在Linux上安装MQTT broker 参考
sudo service mosquitto status
● mosquitto.service - LSB: mosquitto MQTT v3.1 message broker
Loaded: loaded (/etc/init.d/mosquitto; generated)
Active: active (running) since Mon 2019-05-06 14:40:03 CST; 1min 1s ago
Docs: man:systemd-sysv-generator(8)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/mosquitto.service
└─26379 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
May 06 14:40:03 cat_cat systemd[1]: Starting LSB: mosquitto MQTT v3.1 message broker...
May 06 14:40:03 cat_cat mosquitto[26371]: * Starting network daemon: mosquitto
May 06 14:40:03 cat_cat mosquitto[26371]: ...done.
May 06 14:40:03 cat_cat systemd[1]: Started LSB: mosquitto MQTT v3.1 message broker.
测试:
发送消息:
mosquitto_pub -h 127.0.0.1 -t home-assistant/switch/1/on -m "Switch is ON"
或者在GUI发送消息:


接收消息:
mosquitto_sub -h 127.0.0.1 -v -t "home-assistant/#"
home-assistant/switch/1/on Switch is ON home-assistant/switch/1/on test home-assistant/switch/1/on gui test home-assistant/switch/1/on hello mosquitto
启用自动发现,参考MQTT自动发现
On each Tasmota device which should be automatically discovered by Hass, enter the following commands in the web console:
SetOption19 1 - Enables MQTT discovery\
进入设备控制台输入以上命令: http://192.168.2.173/cs?
更多命令参考:https://github.com/arendst/Sonoff-Tasmota/wiki/Commands
开关上电状态可以设置为PowerOnState 1这样就可以与物理开关状态一致(但是,物理开关关闭后sonoff在homeassistant就显示为不可用了),否则需要考虑增加射频开关(怎样增加射频开关?)
也可以参考Sonoff按钮总结
- 刷tasmota firmware;
- 配置wifi,配置MQTT host ip,开关的名字Topic别忘记取;
- 控制台启用自动发现
SetOption19 1,物理开关状态设置PowerOnState 1 - Use
Backlog LedPower 0; SetOption31 1to disable LED even when Wi-Fi or MQTT is not connected
DHT22
*确认配置和硬件连接正常情况下,遇到温湿度没有读数时,用墙壁开关断开再闭合


AM2301 + out -分别对应连接Sonoff 3.3V GPIO14 GND
Tasmota配置如下图


硬件连接如图,其中电源和GND分别连接Sonoff电影输出和GND,HC-SR501中间的out连接Sonoff GPIO14,JUMPER选择重复触发
执行“SwitchMode2 1”


1.感应模块通电后有一分钟左右的初始化时间,在此期间模块会间隔地输出0-3 次,一分钟后进入待机状态。
2.应尽量避免灯光等干扰源近距离直射模块表面的透镜,以免引进干扰信号产生误动作;使用环境尽量避免流动的风,风也会对感应器造成干扰。
3.感应模块采用双元探头,探头的窗口为长方形,双元(A元B元)位于较长方向的两端,当人体从左到右或从右到左走过时,红外光谱到达双元的时间、距离有差值,差值越大,感应越灵敏,当人体从正面走向探头或从上到下或从下到上方向走过时,双元检测不到红外光谱距离的变化,无差值,因此感应不灵敏或不工作;所以安装感应器时应使探头双元的方向与人体活动最多的方向尽量相平行,保证人体经过时先后被探头双元所感应。为了增加感应角度范围,本模块采用圆形透镜,也使得探头四面都感应,但左右两侧仍然比上下两个方向感应范围大、灵敏度强,安装时仍须尽量按以上要求。
Sonoff配置

出现两个开关,其中一个作为开关正常使用,另外一个作为人体传感器ON/OFF状态显示

configurational.yaml配置如下:
binary_sensor:
- platform: mqtt
name: "PIR"
qos: 1
state_topic: "sonoff_MasterRoom_Lamp2/stat/POWER2"
payload_on: "ON"
payload_off: "OFF"
device_class: motion
- alias: turn on the lamp when human body sensor detect somebody in kitchen #
initial_state: true
hide_entity: true
trigger:
- platform: state
entity_id: binary_sensor.pir
to: 'on'
# condition:
# condition: or
# conditions:
# - condition: state
# entity_id: script.timer_off1
# state: 'on'
action:
- service: homeassistant.turn_on
entity_id: script.timed_switch1
scripts.yaml配置如下:
#PIR
timed_switch1:
sequence:
# Cancel ev. old timers
- service: script.turn_off
entity_id: script.timer_off1
# Set new timer
- service: script.turn_on
entity_id: script.timer_off1
# - condition: state
# entity_id: switch.wall_switch_left_158d0002234aaf
# state: 'off'
- service: homeassistant.turn_on
entity_id:
- switch.wall_switch_left_158d0002234aaf
- switch.chou_you_yan_ji #油烟机
timer_off1:
sequence:
- delay: '00:00:55'
- service: homeassistant.turn_off
entity_id:
- switch.wall_switch_left_158d0002234aaf
- switch.chou_you_yan_ji #油烟机
以上设置可以保证在人体传感器能够检测到人的情况下,不会因反复触发而开关电气,这里设置55秒内只要检测有人就会保持工作台灯和抽油烟机开启,人离开以后55秒内会关闭灯以及抽油烟机。
关于HC-SR501这篇文章写得很清楚了
我的焊接水平 —— 超级烂!!! GPIO14被我焊没了,改用GPIO3还是可以用的,不过只能用3.3V供电了,上220V SONOFF就不能正常工作。汲取的教训,后续Sonoff的焊接还可以,没有出现以上故障。
Sonoff用IFTTT不好玩,反应比较慢。
root@ubuntu:~# vim /etc/netplan/50-cloud-init.yaml
network:
ethernets:
eth0:
addresses:
- 192.168.15.72/20
gateway4: 192.168.12.2
nameservers:
addresses:
- 223.5.5.5
search: []
optional: true
version: 2
执行命令 使配置生效
root@ubuntu:~# netplan apply