本帖最后由 alei643 于 2017-7-24 10:49 编辑
新家装修,最初计划采用一套比较完善的485智能家居控制系统,后来接触了HA,灵活性和扩展性甩以前接触的各类智能家居控制系统几条街。新房中最初设计的开关比较多,存在较多的双控或者多控情境开关,布线时每个开关暗盒预留485控制线和零火线。既然已经计划抛弃485控制的方案,从现有布线方案上去做多控开关,一直没有找到比较好的解决方案,现在用sonoff配合HA自动化轻松解决。
进入正题,我使用的测试模块
1、sonoff Basic 单控,接入灯具
2、sonoff SV 1.0 用作多控开关,目前最多可以连接4开机械开关
3、sonoff Tasmota 固件,需要修改部分代码
场景应用:
家里所有的灯具全部采用sonoff Basic接入,接线方式按常规接线方式,即模块零火供电,继电器辅助触点接灯具。使用sonoff SV 作为远程控制或者多控场景控制,4组GPIO的触点最多可以接4开机械开关,模块仅需要供电,每个机械开关对应一路功能,可以远程控制sonoff Basic接入的灯具,不受区域限制。
这里举个例子方便大家理解,比如主卧有主灯,筒灯,灯带,床头灯四种灯具,每个灯具使用sonoff Basic实现单独控制,床头可以使用sonoff SV四组GPIO接入四开机械开关配合HA自动化实现对这四种灯具的远程控制和场景控制,并且保持HA,原来的单控机械开关,现有的四开机械开关状态同步。
问题解答:
1、为什么使用SV模块?
SV模块支持5~24V宽电压,无变压器,功耗低,热量低,可利用的GPIO多,另外新家开关暗盒中零火环境难以全部实现,利用已经预埋的8芯双绞线,可实现低压集中供电。
2、双控或者多控其实通过HA可以完美做到,为什么要搞这么复杂?
不是每个人都是技术宅,最重要是通过智能化场景更加方便家人在传统的环境下使用
3、可以接入开关的类型?
你想到的开关几乎都可以,传统机械开关,复位机械开关,轻点开关,点动开关,干接点开关。使用sonoff Tasmota固件接入普通的机械开关,不会区分“开”和“关”的物理动作,所有开关的动作都是在当前状态进行翻转。有强迫症的童鞋,可以使用复位开关。 4、有人肯定会问,停电怎么关灯?
tasmota固件可以设置上电时的输出状态。所以无论是单控还是多控,这个上电初始状态的值必须都一致。
贴上HA自动化代码和arduino代码,供大家研究
1、需要修改tasmota固件中sonoff_template.h中关于sonooff sv模块 GPIO针脚的定义,GPIO_USER代表需要用户需要自行定义该GPIO引脚当前的作用。请注意,按照下面代码修改的Tasmota固件,刷完后需要在WEB页面指定4个引脚为switch,4个引脚为relay。这样才能区分出4个开关。
{ "Sonoff SV", // Sonoff SV (ESP8266)
GPIO_USER, // GPIO00 Button,该引脚对应SV模块上的轻触按钮,修改后按钮功能失效,请慎用!不慎修改可在WEB页面恢复该按钮功能。
GPIO_USER, // GPIO01 Serial RXD and Optional sensor
0,
GPIO_USER, // GPIO03 Serial TXD and Optional sensor
GPIO_USER, // GPIO04 Optional sensor
GPIO_USER, // GPIO05 Optional sensor
0, 0, 0, 0, 0, 0, // Flash connection
GPIO_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On)
GPIO_USER, // GPIO13 Green Led (0 = On, 1 = Off)
GPIO_USER, // GPIO14 Optional sensor
GPIO_USER, // GOIO15 Optional
0,
GPIO_ADC0 // ADC0 Analog input
},
2、HA自动化代码,下面的代码只是做了一个示例,模拟的是通过SV模块上接入的4开机械开关,远程控制sonoff Basic上接入的灯具。加上sonoff Basic上接入的一路机械开关,一共是5路机械开关,5路开关其中任何一路开关动作,灯具状态改变。
- id: my_unique_id
alias: Hello world
trigger:
- platform: state
entity_id:
- switch.sv1
- switch.sv2
- switch.sv3
- switch.sv4
to: 'on'
action:
service: switch.turn_on
entity_id: switch.sonoff
- id: '1500277745640'
alias: New Automation
trigger:
- platform: state
entity_id:
- switch.sv1
- switch.sv2
- switch.sv3
- switch.sv4
to: 'off'
action:
service: switch.turn_off
entity_id: switch.sonoff
- id: '1500456131605'
alias: sv2
trigger:
- platform: state
entity_id: switch.sonoff
to: 'off'
action:
service: switch.turn_off
entity_id:
- switch.sv1
- switch.sv2
- switch.sv3
- switch.sv4
- id: '1500456204744'
alias: sv3
trigger:
- platform: state
entity_id: switch.sonoff
to: 'on'
action:
service: switch.turn_on
entity_id:
- switch.sv1
- switch.sv2
- switch.sv3
- switch.sv4
|