夏天到了,天气炎热,还有时间开空调。 而且,如果您喜欢现代技术和智能家居,那么您想以某种方式巧妙地(或者至少以现代方式)进行空调控制。 以下是有关我尝试将房屋中的天气与语音控制和跨平台界面集成的一系列说明。
挑战赛
公寓中有四个空调,您需要学习如何管理它们:
- 从Web界面(我有Home Assistant,它在单独的Raspberry Pi上旋转,但理想情况下,我希望与任何系统进行简单连接);
- 语音(Google助理会做,然后考虑爱丽丝);
- 脚本;
- 便宜的...
市场调查
本机解决方案
也许我什至不告诉。 我的空调制造商的决定涉及一束电线,每个单元至少要有两个附加模块,每间房间的价格约为200美元。 加上专有协议,古老的应用程序以及所有这些。 划掉。
每间房大约100美元,可以与Google Assistant和IFTTT结合使用,看起来很漂亮,但还是有点贵。
tado° -类似(甚至更贵)。
小米Aqara / Mi Home,Broadlink RM Pro /迷你
通用红外发射器在理论上有些支持“开箱即用”的必要空调,但有一个缺点,就是它们与家庭助理集成了一半,但总的来说,这是一个一般的解决方案,尽管价格已经很接近负担得起的价格(每间房20-35美元,取决于功能) ) 是的,我不希望使用中文(在某些情况下)进行申请。
自己动手做
最便宜,最灵活的方式,我将详细介绍。
元件选择
有一些事情要考虑,但总的来说,我们需要:
铁
控制者
我们愚蠢地采用ESP8266,为了简化固件和供电,我们将使用D1 mini。 我们显然将通过WiFi管理该系统。
红外线发射器
对于原型,我们将使用简单的IR LED,电阻和晶体管,然后我们将考虑如何进行改进。
温度传感器
这样做更有趣,您可以设置目标温度,并自动打开/关闭。 首先,愚蠢地服用DHT22。
萤幕
我们将显示系统的当前状态(用于调试),也许还会显示当前的ip地址(会派上用场吗?)。
软体类
集成开发环境
我们将使用开放库在Arduino IDE中实现所有功能(我以前从未使用过)。
后来,当项目已经在运行时,我使用
PlatformIO插件切换到Visual Studio Code。
协议书
我们将通过MQTT(
PubSubClient库)与家庭助理进行通信,因为 它是一个开放协议,并且有一个特殊的
组件 。
例如,配置看起来像这样:
climate: - platform: mqtt name: Living Room HVAC modes: - "off" - "auto" - "heat" - "cool" - "dry" - "fan" swing_modes: - "auto" - "off" fan_modes: - "auto" - "low" - "medium" - "high" mode_command_topic: "livingroom/meteo/mode/set" mode_state_topic: "livingroom/meteo/mode" temperature_command_topic: "livingroom/meteo/target/set" temperature_state_topic: "livingroom/meteo/target" fan_mode_command_topic: "livingroom/meteo/fan/set" fan_mode_state_topic: "livingroom/meteo/fan" swing_mode_command_topic: "livingroom/meteo/swing/set" swing_mode_state_topic: "livingroom/meteo/swing" current_temperature_topic: "livingroom/meteo/temperature"
管理学
HeatpumpIR库将帮助我们向空调发送信号(空调模型仍是硬编码的)。
杂项
您将需要更多的
计时器库,以便与
温度传感器和
屏幕配合使用,但这只是琐事。 我们将以通常的手势添加WiFiManager和ArduinoOTA,以通过网络界面(而非USB)更新固件。
原型(00)
我们在速卖通上购买随机组件,将它们放到妄想板上,测试这一想法。
我们了解:
- 屏幕订购太大,腿太多。
- 一个LED不会击中很远,也不是很可靠。
但是总的来说,这个想法可行! “本地” HVAC组件出现在Home Assistant界面中,这意味着我们可以从世界任何地方进行控制。 Home Assistant与Google Assistant的本地集成增加了语音命令和反馈:您可以向助手询问房间的温度,他将回答目标温度和当前温度。
也可以在Web界面中更改目标温度,吹气速度和空调模式(最重要的是,它可以正常工作!)。
测试样品(01)
让我们更改几个组件:订购较小的屏幕,并通过I2C进行工作(我们将使用
其他库)。
我们还将红外LED替换为现成的模块。
事实证明,不宜在速卖通上订购带有一个LED的模块(如左图所示):它们不包含晶体管,而它们所具有的一只脚(VCC)本质上是假的。
但是,如果订购带有两个LED的模块(如右图所示),则所有必需的组件均已安装到位,这样的模块可以轻松自然地连接在一起,并进一步加工。
到了将所有这些放到我的印刷电路板上的时候了……对于从未设计印刷电路板的人来说,这是最困难的时刻之一,可以肯定的是我做错了一切。
为了进行设计,我使用EasyEDA,为OSHPark订购了成品(同样,可以肯定,您可以找到一个更便宜的选择),结果我得到了这样的东西:
该按钮是在最后一刻添加的,它的位置完全是偶然发现的。 事实证明,使用该按钮,一切都变得更加有趣,您不能一直保持屏幕打开(这对于OLED不利),而是通过按一下显示状态。
好吧,已经很好了,有待补充。 为此,运行Blender,做一堆平行六面体,应用许多布尔运算...
并发送到3D打印机。
总的来说,它的价格便宜(每本不到10美元),灵活(它几乎可以与任何空调一起使用),易于集成,通过语音控制和通过网络进行控制,并且始终从五米处完成。 总的来说,关于我想要的。
如何将所有这些做得更好一些?
系列型号(02)
有许多改进最终产品的指导(更准确地说,是将实验变成产品的改进机会):
- 温度传感器的尺寸更小,精度更高,例如BME280,HTU21D或Si7021,可让您将其悬挂在与屏幕(I2C)相同的支脚上,从而大大减小了成品器件的尺寸并简化了PCB布局。 实际上,事实证明,非常相同的BME280开始受到ESP8266本身发热的强烈影响,并且需要对发布的读数进行调整。
- (从第一段起)保持ESP8266的持续运行并非易事;您需要定期进入深度睡眠模式,仅偶尔醒来以发送见证和接收命令。
- (从第二点开始)常规MQTT不再非常适合,您需要使用MQTT-SN,以便在唤醒时记住控制命令并将其传送给控制器。
- 上述各项的实现将使您能够更改电池的“有线”电源。
- 当前将组件固定到印刷电路板上的方法(传统的焊接)难以实施且不够灵活:焊接头座是有意义的,以便可以像手套一样更换相同的温度传感器。
- 最后(与上一段落相反),所有模块都一样好且简单,但体积稍大,理想情况下,裸露的ESP8266代替了D1 mini,并且温度传感器,按钮和IR LED将焊接在一块板上(就像在串行产品中一样),这将减少设备的尺寸并降低其串行价格;
- 无论如何,最好在固件中包含一键轻松选择空调型号的功能……
结论
那是一次光荣的冒险,我了解很多。 例如,我理解了为什么串行设备如此昂贵,以及必须付出多少努力才能使它们达到同一水平。 另一方面,我在该项目中做了很多工作(在Arduino IDE中工作,订购印刷电路板,为3D打印机创建模型),获得这种经验非常宝贵。 但是,源代码将不会显示:我为他们感到:愧:)
但是我仍然实现了我的目标,事实证明,对空调进行廉价而灵活的控制是可以实现的。