失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > gohu恒温花洒使用教程_使用家庭助理构建更好的恒温器

gohu恒温花洒使用教程_使用家庭助理构建更好的恒温器

时间:2022-07-27 01:54:05

相关推荐

gohu恒温花洒使用教程_使用家庭助理构建更好的恒温器

gohu恒温花洒使用教程

几年前,我在热浪中进行了15天的旅行,回到家中,而我的公寓太热了—内部温度至少为45ºC(113ºF)。 不用说,这不是最舒适的回家方式,尤其是因为我的壁挂式空调(AC)单元为公寓降温需要几个小时。

我的公寓里有两个空调房。 一个在客厅,另一个在我的卧室。 为了最大程度地减少不必要的功耗,我不在时关闭了交流电源。 经历了这段经历之后,我决定该是时候找到一种方法来远程控制我的AC单元了,这样我回到家时,我的公寓就不会太热(而且我也不会因为高温而冒着损坏计算机的风险)。 但是,我公寓的空调设备没有像大多数现代空调系统那样具有恒温器,可以让您为房间设置温度。 我的设备只有开/关开关,这意味着我需要一个恒温器。

硬件

首先,我需要一些硬件来读取公寓中的温度并控制AC单元。 我从控制端开始,因为我认为处理温度传感器是更简单的问题。 我开始考虑如何远程控制空调设备。 我的第一个倾向是使用可通过家庭网络访问的微控制器来利用现有控件。

AC仅具有模拟控件,用于该模式的旋转选择器开关和用于风扇速度的电位计,因此很容易使用它。

我的公寓随附的空调设备。

但是我不拥有空调设备,它们已包含在公寓中。 我决定我可能不应该拆开它们并在其中焊接导线,否则我搬出时可能不得不购买这些设备。 这绝对是我不想担心的事情。

我的下一个想法是实现一种自动控制形式,以转动AC装置上的转盘。 虽然在实际操作中看起来确实很酷,但它并不是最可靠的选择。 旋钮以前已经坏了,我不得不从公寓大楼得到更换。 我觉得让东西自动转动旋钮只是在要求它们再次断开。

然后,我意识到我不需要控制交流拨盘,而是可以控制交流单元的电源。 我可以将AC单元保持打开状态,并在需要为房间冷却时打开电源,而在不需要时关闭电源。 虽然我仍然必须在必要时手动调整模式,但仅控制电源状态就可以满足我的需求。 因此,我开始寻找继电器来控制AC单元的电源。

我有两个限制因素要考虑,这影响了我的选择。 首先,根据我的公寓布局以及墙壁上安装AC单元的位置,我想要无线控制。 虽然我可以将电线连接到AC单元,但是无线会更容易(尤其是在客厅,因为AC单元附近没有东西)。 第二个约束是继电器需要针对交流单元的负载进行评估。 我必须用钳形表来测量它,因为在单元上的任何地方都没有型号,而且我也没有任何文档。

显示AC单元位置的公寓平面图。

我开始研究可远程控制的电源开关的选项。 物联网(IoT)无线通信协议市场上有很多不同的选择,但是最受欢迎的选择是Z-Wave和ZigBee 。 我在大学期间使用过ZigBee设备,使用它们实在是一件很痛苦的事情,所以我想避免使用它们。

我的阅读建议Z-Wave设备易于使用且具有一致的生态系统。 我对Z-Wave唯一的犹豫是它不是一个开放平台。 一些规格是公开的,并且有一个用于与Z-Wave网络进行交互的开源库OpenZWave ,它也具有Python绑定 。 虽然不理想,但我可能会解决所出现的任何问题。 因此,我订购了一个USB Z-Wave控制器和两个启用Z-Wave的电源开关 (每个AC单元一个)。

我仍然需要一个温度传感器。 因为我已经在构建Z-Wave网络,所以我订购了Z-Wave MultiSensor 6 。 它在小型设备中包括各种传感器(包括温度)。 虽然我可以使用另一个温度传感器,但这似乎是一个不错的选择,因为它是便携式无线设备,可以放置在我想要的任何位置。

软件

接下来,我需要研究将我的硬件采购用作恒温器的软件。 虽然我所有的设备都是Z-Wave,而OpenZWave提供了我可以用来访问和控制我的设备的C ++和Python接口,但是对于我来说,它有点太底层了。

相反,出于某些原因,我决定使用Home Assistant项目。 首先,我认识很多使用它,破解它或两者兼而有之的人。 其次,虽然我目前所有的设备都是Z-Wave,但如果需要的话,Home Assistant可以让我扩展到使用其他类型的设备。 Home Assistant支持大量不同的设备和服务-您可以查看组件列表以查看所有内容。 对于Z-Wave支持,它利用OpenZWave并提供了一个更易于处理的更高级别的界面。 Home Assistant用Python 3编写,这对我来说非常方便,因为我用Python进行了大多数编程工作。 它还有一个积极响应和乐于助人的社区 。

我在其中一台服务器上安装了Home Assistant,然后继续配置其与设备的接口。 关于设置家庭助理的信息很多,您可以参考官方文档作为起点。 有关特定的Z-Wave指令,请参阅Home Assistant文档中的Z-Wave部分 。

设置Home Assistant之后,我有了一个Web界面和API,用于控制我的新电源开关并显示来自MultiSensor的数据。 但是,我仍然没有恒温器,只是一个漂亮的界面(可以远程使用),可以手动打开或关闭交流电。

第一次自动化尝试

Home Assistant提供了一个自动化界面,使您可以编写规则,以在任何设备上的特定触发器上执行。 阅读有关编写自动化规则的文档后,我决定可以使用此界面来构建恒温器功能。 我着手编写了这样的一堆规则,该规则说,如果客厅的交流电源关闭,并且温度传感器的读数高于25C,则打开交流电源。

alias: 'Turn on Living Room AC when above 25 C'

trigger:

platform: numeric_state

entity_id: sensor.aeotec_zw100_multisensor_6_temperature_4

above: 25

condition:

- condition: state

entity_id: switch.aeotec_zw096_smart_switch_6_switch_2

state: 'off'

action:

service: switch.turn_on

entity_id: switch.aeotec_zw096_smart_switch_6_switch_2

这种工作有效,但是存在几个问题。 显而易见的是,我必须为我认为系统可能遇到的每种情况编写一条单独的规则。 我最终会写出许多不同的规则(包括用于打开和关闭的单独规则)。 另外,如果我想更改恒温器的设定值,则必须手动修改所有规则并重新加载自动化配置。 然后是可靠性的问题—如果由于某种原因未触发规则(由于我无法预测的状态或错过的条件),那么为什么不发生规则就没有任何透明度; 我只知道规则永远不会执行。 这使我处于一个奇怪的地方,因为我设想的方法行不通。

我并没有因此而灰心,而是开始浏览Home Assistant源代码,偶然发现了完美的解决方案。

温控器组件

事实证明,家庭助理基本上已经为我的确切用例实现了一个组件。 在“恒温器”组件(此后已重命名为“气候”)下,有一个名为heat_control组件。 编写该模块的目的是用作带有温度传感器的温度调节器和控制插入式空间加热器的功率继电器。 这使用户可以设置温度并使加热器打开,直到达到所需温度,然后关闭。

除了空调而不是空间加热器,这是我需要做的。 因此,我Swift整理了一个补丁,以增加对使用冷却装置而非加热器的支持。 它添加了一个配置选项,以将开关设备视为交流单元(或任何其他冷却设备)而不是加热器。

在本地安装补丁并重新配置Home Assistant之后,我基本上有了一个恒温器。 我也有一个不错的Web界面来控制设定值并查看AC单元的状态。

智能手机上的恒温器界面。

Web浏览器中的恒温器界面。

自从我推了这个补丁以来,heat-control恒温器模块和组件类型已重命名为通用恒温器气候组件 ,它通过添加AC支持更好地描述了其更大的范围。 有了这个组件,我就成功地实现了最初的目标,那就是建立一个恒温器,甚至还有一个漂亮的,便于移动的Web界面来控制AC。

解决更多问题

在这一点上,我有一个很酷的设置。 家庭助理的行为就像一个真正的恒温器,我可以为自己的公寓设定一个舒适的温度。 但这仍然不是完美的。

多个区域

我的第一个问题是,位于客厅的单个温度传感器同时控制着卧室和客厅的交流电源。 如下图所示,房间大小不一。 空调单元是相同的,但是卧室比起居室要小得多,这意味着卧室比公寓的其余部分要冷得多。

公寓平面图,显示了覆盖在客厅的卧室区域。

虽然我本可以订购另一台Z-Wave MultiSensor,但对于我的需求而言,它们有些昂贵且过高。 我也没有在卧室对无线控制的需求,因为它已经具有用于其他机器的网络电缆。 我还希望获得两种不同的读数-一个在我的卧室里,另一个在我的卧室壁橱里,以便存放服务器和网络设备。

我记得我的衣橱里有一个备用的Raspberry Pi 2,所以我决定通过将几个温度传感器连接到壁橱中并将其用作卧室的数据源来利用它。 在网上阅读了我的选择之后,我决定使用Dallas 1-Wire温度传感器DS18B20 ,它在Raspberry Pi人群中似乎非常受欢迎。 (这对我在大学里修过1-Wire协议很有帮助,所以我有点熟悉它。)

使用温度传感器的Raspberry Pi 2设置。

1-Wire传感器的好处是您可以并行连接所有设备。 所有设备都单独寻址,因此子板只需将两个传感器并联(带有上拉电阻)即可。 在将东西连接到Raspberry Pi 2上的情况下,我有一个接口可以本地轮询卧室(和“数据柜”)的温度,但是我需要一个良好的接口将数据导入到运行在另一台机器上的Home Assistant。 。

这使我可以利用安装Home Assistant时建立的MQTT基础结构。 我编写了一个守护程序,以定期发布任意数量的Dallas 1-Wire传感器的结果(将来可以与其他类别的传感器一起使用)。 我在Home Assistant配置中添加了新的温度传感器(使用MQTT传感器组件),并重新配置了卧室恒温器以使用新的传感器,因此现在我的衣橱和卧室有两个可单独控制的恒温器区域和温度读数。

循环时间

在运行多区域设置几天后,我发现了另一个我从未想过的问题:我正在短暂地循环AC单元。 换句话说,一旦房间达到所需的温度,它将立即为开关供电,这将导致AC单元在两到四分钟的周期内打开和关闭。 在我看来,这似乎不合适。

该图显示了空调的短循环。

在对空调设备进行了一些阅读(并深入研究杂草之后,例如找到80年代末的ASHRAE论文,探索循环时间对各种HVAC系统的影响)之后,我了解到空调设备在稳定状态下效率最高。开机后的前几分钟效率会大大降低。 我的软件恒温器的行为远非理想。

我需要在系统上增加一些迟滞 (换句话说,是一个软糖因素),所以我并没有不断地循环使用这些装置。 温控器执行此操作的一种方法是在设定温度周围添加一点迟滞,因此它不会等到精确地设定温度,而是等待直到它通过几个角度。 另一种方法是设置定义的最大开关频率,该最大开关频率为设备在房间中打开/关闭的频率设置上限。 这不是原始heat-control模块的一部分,因此我在Home Assistant中推出了另一个补丁 ,其中添加了一个选项来设置最大开关频率。

新的选项设置了最小周期持续时间,我认为这比将其描述为一个频率要更清楚一些(您希望以µHz表示,因为通常您每隔几分钟要处理一次频率)。 自从我提交了补丁以来,其他人已经添加了一些选项,可以手动调节恒温器的开关行为。 此选项使我可以设置家庭助理将AC装置上的电源重新打开的频率。 我将其设置为至少等待20分钟后再进行切换,主要是因为这似乎是一个合理的值。 由于我没有AC单元的型号,因此无法访问它们的数据表或规格。 因此,我不知道它们的效率曲线是什么样子,所以我不得不猜测一个好的值。

校正后的循环时间图。

提升一个档次

现在我已经实现了最初的目标,我决定变得更加有趣,并将项目进一步发展。 由于我使用家庭自动化平台构建了恒温器,因此将其与其他设备和输入设备捆绑在一起非常容易。

基于位置的设置

由于大多数时候我会携带多个联网设备,因此我决定将其与位置数据绑定。 使用OwnTracks项目,我让手机定期给家打电话,并告诉家政助理我的位置。 OwnTracks使用MQTT,但它允许我控制数据(并使用TLS加密数据流量),因此我的位置数据不会发送到第三方系统。 它还使用Home Assistant的OwnTracks组件很好地集成到Home Assistant中。 这使我能够编写自动化规则来根据我是否在家来更改AC设备的设定值。

我还能够编写如下规则:

alias: Set Living Room AC to 26 C when leaving starbucks route 9

trigger:

platform: state

entity_id: device_tracker.myphone

from: 'Starbucks Route 9'

action:

- delay:

minutes: 5

- service: climate.set_temperature

entity_id: climate.living_room

data:

temperature: 26

它说,当我离开当地的星巴克时(有时我需要在家中休息时在这里工作),请等待五分钟,然后将设定值更改为更舒适的温度。 五分钟的延迟时间是根据我从星巴克回家所需的时间以及在炎热的天气里为公寓降温所需的时间而定的。

环境条件

使用Home Assistant时,我意识到自己拥有可以绑定到系统中的其他设备。 我编写了更多的自动化规则,以不同的方式将它们与恒温器结合起来,例如:

alias: Turn off AC when it's cold outside

trigger:

platform: numeric_state

entity_id: sensor.pws_temp_c

below: 22.0

action:

service: thermostat.set_operation_mode

entity_id: thermostat.living_room

data:

operation_mode: off

如果室外温度低于22ºC(72ºF),它将检查“ 地下天气”并关闭AC,因为在该温度下,我应该打开一个窗口而不是运行AC。 我计划将推送通知添加到此规则,以便家庭助理将向我的手机发送通知以提醒我打开一个窗口。

alias: Raise volume when AC turns on

trigger:

platform: state

entity_id: switch.aeotec_zw096_smart_switch_6_switch_2_0

to: 'on'

conditions:

- condition: state

entity_id: media_player.living_room_av_reciever

state: 'on'

- condition: template

value_template: |

'{{ states.media_player.reciever.volume_level < 0.7 }}'

action:

service: media_player.volume_up

entity_id: media_player.living_room_av_reciever

我最喜欢的规则是我在客厅看电视或听音乐的时间。 我的AC单元非常响亮-通常比我的扬声器响亮。 当交流电源打开时,当我的扬声器的音量低于最大音量的70%时,该规则会自动将音量调高几步,因此我无需手动调整音量。

我对这个系统非常满意。 我完成了我打算做的所有事情:出门在外时要进行温度控制,这样我回到家时公寓就不会发烫。 但是,它也是进入家庭自动化领域的门户,这已成为一种有趣的爱好。

翻译自: /article/18/8/build-thermostat-open-source-tools

gohu恒温花洒使用教程

如果觉得《gohu恒温花洒使用教程_使用家庭助理构建更好的恒温器》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。