智能家居填坑006 新风接入

设备简介

前面将设备的部署与接入已经描述完毕,从这篇开始将描述各类设备的接入,比如新风、浴霸、风扇灯、传感器等。
全热交换新风、带粗滤、风量250、最大78w、三档调速。
经和卖家沟通了解此风机使用的是四线风扇电机,接线原理图如下:
风扇接线
透过原理图可知,我们分别接通1、2、3号开关即可实现低、中、高三档风力调节。
即,使用三个继电器就能轻松控制:


但是,基于我的理解这三个开关只能同时接通一个,不能多个同时接通,他们三者之间是线圈连接,也就是说他们之间有很长的导线,会产生一个相位差(应该是这个名词),存在短路的风险,我的新风机是我一个人花了一天慢慢顶螺丝才装上去的,我可不想再拆装他一次。那么必须要让他们做到同时只能接通一个,我拿出了如下方案:
1、 在自带的新风控制器的旋钮上装一个步进电机,带动旋钮实现换挡:太蠢了。
2、 直接接三个继电器,在服务器里面通过软件实现独立工作:经以往玩51和树莓派的经历,很多单片机在通电复位的时候都会同时给io口供电,也就是说存在不可控的状态,更何况不能保证在服务器里的操作就万无一失,此方案暂议。
3、 基于2知道必须在硬件方面要做到他们互斥,又必须高效可行,几经思考我做出如下结构

我们定义一个数组来表示三个继电器的状态[0,0,0] 。(0表示断开,1表示接通)
[0,0,0] 第一个继电器断开,断开后蓝色线路和黄色线路、红色线路就彻底断开,此时处于关闭状态。
[1,0,0] 第一个继电器接通,蓝色和黄色接通 和红色断开,此时处于低档状态。
[1,1,0] 第一、二个继电器接通,红、黄、蓝和中接通,此时处于中档状态。
[1,1,1] 所有继电器接通,此时处于高档状态。
此装置总共8种状态,就此四种即可满足要求,其余几种都不起作用或功能重复就不列出,但任何一种状态都是处于互斥。

实际接入

1、 准备阶段
装备nodered的服务器或者别的上位机、单片机都可:此处使用node-red,其余软件原理相同请自行演化。
已部署好的mqtt服务器:mqtt服务器自行部署,可使用类似onenet、aliyun等成品方案。
Arduino单片机或者8266模块一个:此处使用8266模块刷写espeasy(未使用esphome:网络不好编译总是失败,easy蛮好用的)
三位继电器模块:io输出需要使用放大和光耦隔离,建议使用模块更方便整洁。
电源:参考继电器模块需求,一般是5v或者12v,此处还应为8266准备一块降压板,若使用nodemcu则可统一使用5v供电。
2、 参照上述硬件原理,连接好8266和继电器模块




3、 这是硬件接好后的成品,使用12、13、14号io口控制
4、 登录espeasy,设置你的设备名。
5、 在controllser页新建一个mqtt连接 填入地址、端口、账号、密码并勾选启用
6、 在devices也随便新建一个switch,启用就好了

7、 在nodered里新建一个mqtt的输出节点 订阅名就是 设备名/devices名/GPIO/端口号 通过输入0或1就可轻松控制设备了

软硬兼施! 太牛了

想法真的很好,大侠的软件肯定OK了。个人只是有点担心这个硬件的稳定性:) 大侠有没有考虑如果硬件死机后的处理?

@komoya 服务器死机还是8266死机啊

8266以及手工DIY部分的可靠性,我有点担心 :slightly_smiling_face:

@komoya 目前无故障、持续运行了一个多月了

风骚的一批,厉害了

大佬,是如何控制的啊?能分享下你的流吗?
我也想弄个这样的,看了下原理,自己试了下,觉得接线没有错,但是模拟了下,不行

[
    {
        "id": "ce2bec50.870d4",
        "type": "mqtt out",
        "z": "582f4e75.096a68",
        "name": "",
        "topic": "ESP_Newair/newair01/GPIO/12",
        "qos": "2",
        "retain": "",
        "broker": "a77f27f3.9ad5b",
        "x": 790,
        "y": 1560,
        "wires": []
    },
    {
        "id": "66545c91.d93a24",
        "type": "mqtt out",
        "z": "582f4e75.096a68",
        "name": "",
        "topic": "ESP_Newair/newair01/GPIO/13",
        "qos": "2",
        "retain": "",
        "broker": "a77f27f3.9ad5b",
        "x": 790,
        "y": 1600,
        "wires": []
    },
    {
        "id": "e05f7ed4.24263",
        "type": "mqtt out",
        "z": "582f4e75.096a68",
        "name": "",
        "topic": "ESP_Newair/newair01/GPIO/14",
        "qos": "2",
        "retain": "",
        "broker": "a77f27f3.9ad5b",
        "x": 790,
        "y": 1640,
        "wires": []
    },
    {
        "id": "f2d2633e.c83c18",
        "type": "function",
        "z": "582f4e75.096a68",
        "name": "新风状态",
        "func": "var msg1 = {payload:0};\nvar msg2 = {payload:0};\nvar msg3 = {payload:0};\nswitch(msg.payload)\n{\n   case 0: {msg1.payload=0;msg2.payload=0;msg3.payload=0;} break;\n   case 1: {msg1.payload=1;msg2.payload=0;msg3.payload=0;} break;\n   case 2: {msg1.payload=1;msg2.payload=1;msg3.payload=0;} break;\n   case 3: {msg1.payload=1;msg2.payload=1;msg3.payload=1;} break;\n}\n\nreturn [msg1,msg2,msg3];",
        "outputs": 3,
        "noerr": 0,
        "x": 520,
        "y": 1600,
        "wires": [
            [
                "ce2bec50.870d4"
            ],
            [
                "66545c91.d93a24"
            ],
            [
                "e05f7ed4.24263"
            ]
        ]
    },
    {
        "id": "a77f27f3.9ad5b",
        "type": "mqtt-broker",
        "z": "",
        "name": "",
        "broker": "192.168.0.200",
        "port": "1883",
        "clientid": "",
        "usetls": false,
        "compatmode": false,
        "keepalive": "60",
        "cleansession": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "closeTopic": "",
        "closeQos": "0",
        "closePayload": "",
        "willTopic": "",
        "willQos": "0",
        "willPayload": ""
    }
]

论坛支持 MarkDown 格式代码用 ```代码```数字1左边的按钮,来框住就行。

好的了解了 谢谢

感谢,晚上回去试试看

大佬,还需要您的帮助,我导入了你的流,然后也可以输入新风状态实现控制设备GPIO开启关闭了,但是可能是接线有问题。按照我的理解1#继电器接地那里是接火线,然后2#接低风,3#接中风和高风,好像错了!我实验了下,继电器控制不能按照你列的数组,应该是接线问题吧?
请问下物理接线应该怎么接喃?