A finite state machine (FSM) implementation for node red. Displays also a graphical representation of the state machine.
~/.node-red
npm install node-red-contrib-finite-statemachine
You can find detailed usage information in the Usage Manual.
The statemachine of finite state machine
is defined by a JSON object within the line FSM (Finite State Machine):
{
"state": {
"status": "IDLE"
},
"transitions": {
"IDLE": {
"run": "RUNNING"
},
"RUNNING": {
"stop": "IDLE",
"set": "RUNNING"
}
}
}
The input topics of the finite state machine
are defined by the transition table setup in the node configuration.
msg
to the node containing a msg.topic
set to a defined transition string triggers a state change.msg.control
= reset sets the machine to its initial state ("state")msg.control
= sync is used to set the state manually. Its payload needs to be a JSON object, containing a status fieldmsg.control
= query triggers a state query event and the current state is sent to the output of the state machine. The option Always send state change needs to be enabled for this.The output of finite state machine
sends a msg
whenever there is a valid transition.
Remark: This also may be a valid transition without any state change.
The payload contains:
Check Node-REDs info panel to see more information on how to configure the state machine.
Remark: Example flows are present in the examples subdirectory. In Node-RED they can be imported via the import function and then selecting Examples in the vertical tab menue.
For more examples, read the Usage Manual.
This example shows a state machine with two states. There is only one msg.topic
("toggleState") which toggles between the two states IDLE and RUNNING.
{
"state": {
"status": "IDLE"
},
"transitions": {
"IDLE": {
"toggleState": "RUNNING"
},
"RUNNING": {
"toggleState": "IDLE"
}
}
}
npm install
npm install -g grunt-cli
npm run build
npm install <local dir>
within the node-red install directory