旋钮作为智能家居体系里的输入设备,可以通过旋转事件来控制 窗帘的开合、灯光的色温或者亮度、媒体设备的音量、风扇的转速等等,如何使用一个旋钮来切换控制多种不同类型的设备,这里在 Node-Red 中实现做一些详细的实例说明(这里使用AQARA的H1无线旋钮做例子,其他品牌操作方法类似)
第一步
首先我们需要利用系统提供的多选项控件来保存不同设备的变量
进入Node-Red,并创建我们的第一个流:单击旋钮在不同的要操作的目标设备之间切换
节点 | 功能 | 备注 |
---|---|---|
事件节点 | 接收指定设备的事件并根据需要进行事件过滤 | 通常所有的无线控制设备都使用此节点 |
切换节点 | 当接收到任意消息时,从第一个输出口顺序向下输出 | - |
操作节点 | 大部分流的终止节点,所有设定的条件符合最终操作设备所使用 | - |
逻辑解析
1.我们单击旋钮 → 事件节点接收到单击事件 → 进入切换节点进行判断 → 从一号输出口输出 → 经过操作节点将我们建立的多选项控件的值设置为 “灯光”
2.再次单击旋钮 → 事件节点接收到单击事件 → 进入切换节点进行判断 → 从二号输出口输出 → 经过操作节点将我们建立的多选项控件的值设置为 “窗帘”
3.如果再次单击,那么仍然依照上面的逻辑直到进行到最后一个输出口 → 又会从第一个口输出(循环往复),我们借助这种机制来进行同一个操作(单击旋钮)进行不同的操作(切换多选项控件里的选项)
知识点
1.事件节点会接受你指定设备在系统中允许的所有事件,并根据你设置的条件进行过滤,符合条件则输出,不符合条件则忽略事件
2.切换节点接收前一个节点发送过来的消息(这个消息可以是任意消息),当收到消息时,从最后一次所停留的输出口进行输出,如果第一次使用,则从第一个输出口输出,具体多少个输出口可以在节点中进行设置,如果设置了重置时间,那么在重置时间内没有接收到新的消息,节点会自动重置计数(1号输出口)
3.在编写自动化的过程中我们通常需要存储一些值用来进行后续的判断,这里我们使用系统提供的多选项控件来实现此目的,我们可以直观的在界面中查看当前控件的值是哪一个,方便我们调试
4.所有节点设置完毕,一定要点右上角的 部署 按钮,让流生效
第二步
创建我们的第二个流:顺时针、逆时针旋转旋钮并根据需要输出到对应的设备上(灯光、窗帘、风扇)
节点 | 功能 | 备注 |
---|---|---|
事件节点 | 接收指定设备的事件并根据需要进行事件过滤 | 这里我们添加两个旋转事件 |
获取状态 | 当接收到旋转事件时,判断当前多选项控件的值并进行输出 | - |
操作节点 | 这里每个操作节点对应一种设备的具体操作(亮度调节、窗帘开合、风扇转速) | - |
逻辑解析
1.顺时针旋转旋钮 → 事件节点接收到旋转事件并进行过滤,从第一个输出口输出 → 进入获取状态节点进行判断 → 如果多选项控件此时的值是灯光 → 从第一个口输出 → 此时对应的操作节点中的操作是对指定灯进行亮度增加,并设置调整幅度为 10
2.顺时针旋转旋钮 → 事件节点接收到旋转事件并进行过滤,从第一个输出口输出 → 进入获取状态节点进行判断 → 如果多选项控件此时的值是窗帘 → 从第二个口输出 → 此时对应的操作节点中的操作是对指定窗帘进行开合度调整
3.顺时针旋转旋钮 → 事件节点接收到旋转事件并进行过滤,从第一个输出口输出 → 进入获取状态节点进行判断 → 如果多选项控件此时的值是风扇 → 从第三个口输出 → 此时对应的操作节点中的操作是对指定风扇进行风速调整
4.这里我们只做了顺时针旋转的流程,那么根据上述流程,可以继续完成逆时针旋转的流程,最终看起来像下图
知识点
1.我们先创建了多选项虚拟控件用以存储变量的值,这里对应到具体的值就是:需要操作的设备类型(灯光、窗帘、风扇)
2.使用事件节点来接收指定设备的事件,并使用条件进行事件过滤(此次教程中我们需要的事件是 单击、顺时针旋转、逆时针旋转),所有无线遥控类的设备事件触发都需要使用此节点,很多新手通常会使用状态触发节点是错误的
3.使用切换节点来实现每收到一次消息,就依次向下一个输出口进行输出(往复循环),首次收到消息从第一个口输出,我们利用这种特性来实现单一按键功能输出到不同的节点进行操作,这里我们实际是用来切换多选项控件中的值
4.在第二个流中我们同样使用事件节点来接收事件,不同的是我们添加了两个事件,顺时针旋转和逆时针旋转,根据不同的需要,用户可以添加任意多个事件来完成对应的功能,在接收到旋转事件的时候,首先经过条件判断是顺时针旋转还是逆时针旋转,然后使用获取状态节点来判断当前的多选项控件的值是哪一个,找到对应的那一个值进行输出,最后使用操作节点来完成目标设备的调节
5.现在来看一下最终效果,直接顺时针旋转,由于我们的多选项控件默认值是第一位的灯光,此时得到的结果应该是调整灯光的亮度。接下来单击旋钮,然后再次旋转,此时由于第一个流的作用,多选项控件的值已经切换至窗帘,那么根据这个值,得到的结果应该是对窗帘进行开合度调节,再次单击,然后再次旋转旋钮,同理,此时应该针对风扇进行调节操作
6.由于切换节点和多选项控件的存在,我们可以在很多场景下使用此组合,比如单按键控制同一设备的不同功能或者是不同设备的同类型功能