27hh 发表于 2017-9-9 21:37:49

Sonoff Tasmota接入温湿度+光照+人体传感器并支持物理开关控制

本帖最后由 27hh 于 2019-4-9 12:21 编辑

在本论坛中,先后有大神发出了sonoff接人体、光线的固件和整合固件,但是其所基于的固件,功能根本无法与强大的Tasmota相比。事实上,Tasmota原生支持这些传感器,我们来看看如何把它们加入,并接入HA中。
-----------------------------------------------
可用硬件:
温湿度传感器:DHT22购买>>
光照传感器:BH1750   购买>>
人体传感器:HC-SR501购买>>
-----------------------------------------------
在接入传感器之前,我们首先来认识针脚:

https://camo.githubusercontent.com/f014130fdde36f97f37a5af20fc223621b192e1b/687474703a2f2f74696e6b65726d616e2e6361742f77702d636f6e74656e742f75706c6f6164732f323031362f30362f70696e6f75745f6261636b2e6a7067
https://camo.githubusercontent.com/90d51860fa05a2c0992d9f82e7a8bbaf5b5ebb5c/68747470733a2f2f63646e2e696e73747275637461626c65732e636f6d2f4638512f305538392f4a315745514b374a2f463851305538394a315745514b374a2e4d454449554d2e6a7067


其中,3V3就是3.3V电压输出,连接传感器的正极;GND连接传感器的负极。剩下的三根针,都是数据接口,RX为GPIO3,TX为GPIO1,可以任意选择使用。
-----------------------------------------------
我们以最简单的温湿度传感器为例:


https://bbs.hassbian.com/data/attachment/forum/201705/17/160619o1jer4mooq1ggo1r.jpg


“+”连接3V3,“-”连接GND,“out”为数据,所以连接任意一根,这里我连接到GPIO14。
然后在sonoff的配置页面,设置GPIO14为DHT22。保存后,在主页即可看到温湿度数据。



(欲修改温度和湿度的小数位数,可以分别在Console中执行 tempres # 和 humres #,#为小数位数,0到3。)

要将DHT22加入HA,可以如下配置sensor:
- platform: mqtt
    name: "wendu"
    state_topic: "tele/sonoff/SENSOR"
    value_template: "{{ value_json['DHT22'].Temperature }}"
    unit_of_measurement: "°C"

- platform: mqtt
    name: "shidu"
    state_topic: "tele/sonoff/SENSOR"
    value_template: "{{ value_json['DHT22'].Humidity }}"
    unit_of_measurement: "%"

(其中sonoff是你配置的MQTT Topic)
成果如下:



-----------------------------------------------
接入光照传感器步骤要多一步,因为他有两条数据线:SCL 和 SDA。但是有了上面的接口对应图,操作也变得简单了。



(图中多出来的一根线是留着做物理开关用的,后文会提到)
如果按照图中所示方法连线的话,那么经过这样一番设置:



亮度也就显示出来了。

配置接入HA:
- platform: mqtt
    name: "liangdu"
    state_topic: "tele/sonoff/SENSOR"
    value_template: "{{ value_json['BH1750'].Illuminance }}"
    unit_of_measurement: "lux"
-----------------------------------------------
接下来是接入人体感应器:

【注:人体感应器技术参数工作电压为5V,但本人实测3.3V在低功率下(不调大功率旋钮)可以正常工作】
我们驾轻就熟地连接好线后,问题来了:SR501采用高低电平的形式来指示是否有人,Tasmota官方没有提供相应的接口。但是,当我们把它的数据接口配置为“Switch”时,我们发现,sonoff人来通电,人走断电。这样,我们就有办法了。

在Tasmota的设置界面中,设置GPIO4为Relay2,并将人体传感器的数据针脚设为Switch2。保存重启后,界面上会出现2个开关,第二个指示了人体传感器的状态。为了实现ON为有人,OFF为无人的状态表示,需要在终端里执行:
SwitchMode2 1

然后按下面配置传感器:
binary_sensor:
- platform: mqtt
    name: "PIR"
    qos: 1
    state_topic: "stat/PIR/POWER2"
    payload_on: "ON"
    payload_off: "OFF"
    device_class: motion
即可在HA中看到此传感器了。
-----------------------------------------------
接入物理开关需要两根线,分别连接GND和一根数据针脚。这时出现了针脚冲突的问题。实际上,用于供电的3V3和GND可以并联出多股线来。
制作多股线的方法是:用针将杜邦线的黑色塑料壳的卡榫微微提起,将线和金属头抽出。将另一根杜邦线的头剪下,并剥开1.5cm的外皮,然后将其中0.5cm的部分绕在金属头的凹槽上,然后一起插回塑料壳即可。成品如下:



最后,将用于物理开关的两根线与物理开关的两头相连,并在配置页面设置使用的数据针脚为Switch1。这样,你的物理开关便可以继续发挥余热了。

27hh 发表于 2017-9-9 22:17:07

本方法尤其适合想要控制界面、想要同时支持物理开关控制、想要更强大功能的用户使用。

倾微qiwe 发表于 2017-9-9 23:28:57

感谢楼主分享。
事实上tasmota固件可以玩的还远不止这些!
指正一下:接了人体之后还可以再接物理开关哈。把gpio4改为relay2,人体的IO为Switch2.另一个IO就可以接物理开关了。   
tasmota固件除了传感器,物理开关。还可以再接继电器,接灯带实现彩灯的效果,还有特效哦。还可以设置虚拟开关以联动控制其他开关,方便实现物理双控甚至多控。接入ws2812灯带甚至可以单独控制每一颗LDE的开关/颜色。。。。   还可以接PMW可以实现电机无极调速。。。
还有什么自锁/点动。 断电通电后接通还是断开还是记忆什么的都可以设置。扩展性相当强大!
更多好玩儿的,大家一起探讨吧
有sonoff开关的朋友们都试试吧

27hh 发表于 2017-9-9 23:37:47

倾微qiwe 发表于 2017-9-9 23:28
感谢楼主分享。
事实上tasmota固件可以玩的还远不止这些!
指正一下:接了人体之后还可以再接物理开关哈。 ...

真的?我马上就去试试!

27hh 发表于 2017-9-9 23:56:44

本帖最后由 27hh 于 2017-9-27 19:39 编辑

实测可用,感谢分享

s6066131 发表于 2017-9-10 00:58:16

小白前来学习

wind0021 发表于 2017-9-10 09:56:40

新手来学习下 感谢大神分享:lol

dawn98 发表于 2017-9-10 11:36:39

感谢分享

Lee 发表于 2017-9-10 13:07:37

感谢分享

27hh 发表于 2017-9-15 22:09:36

自顶:lol
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: Sonoff Tasmota接入温湿度+光照+人体传感器并支持物理开关控制