cnk700i 发表于 2018-7-2 23:24:46

基于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 *****






zengweijj 发表于 2018-7-2 23:49:12

学习一下

goldstep 发表于 2018-7-2 23:59:48

学习学习

qq275874577 发表于 2018-7-3 00:17:58

学习一下

nice2943 发表于 2018-7-3 00:32:23

感謝樓主分享

Aiden1 发表于 2018-7-3 08:40:42

进来学下一下

karl_31 发表于 2018-7-3 08:48:37

学习一下

xlf123 发表于 2018-7-3 09:18:18

学习一下

robotxc 发表于 2018-7-3 10:07:35

谢谢分享

villen 发表于 2018-7-3 10:17:54

感谢分享
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 基于Appdaemon+Homeassistant的Sonoff basic开关刷Tasmota搭载光照度+...