在我当前的项目中,我们尝试使用Node-RED实现当前的应用程序功能.功能如下所示.这里,Fire状态接收两个输入:(1)TemperatureSensor
(2)SmokeDetector
.两个传感器都使用MQTT发布者发布数据.和Firestate
组件可以通过MQTT子网接收数据.
火灾状态可以基于这两个参数产生输出if temperaturevalue > 70 and Smokevalue == true
.鉴于此,我的问题是 - Node-RED是否支持两种输入功能?如果是,那么我们如何实现这一功能呢?如果没有,那么..我可以说使用Node-RED无法实现两个输入功能吗?我们已经看到Node-RED提供多个输出,但不提供输入.
您将需要使用函数节点并使用该context
变量来保持消息之间的状态,并使用消息主题来确定消息来自哪个输入.
像这样的东西:
context.temp = context.temp || 0.0; context.smoke = context.smoke || false; if (msg.topic === 'smokeDetector') { context.smoke = msg.payload; } else if (msg.topic === 'tempSensor') { context.temp = msg.payload; } if (context.temp >= 70.0 && context.smoke) { return {topic: 'fireState', payload: 'FIRE!'} } else { return null }
更多细节可以在这里的函数节点doc中找到