Nube iO - Rubix Wires: Creating Logic Flows

Rubix Wires: Flow Programming


A Flow is a type of logical programming that is created by linking nodes together to create custom functionality.  These flows are build and modified in live runtime.  Flows can be exported and imported as JSON. 

Linking Nodes to Create Logic Flows

The outputs of nodes can be wired/linked to the inputs of other nodes to create logic flows. Once an output is linked to an input, the value of the output is passed to the input of the linked node.  For most nodes, the value is passed continuously; however, some nodes will pass their values asynchronously as messages.

Example: The nodes below form a logic flow which increases the ‘count’ output every second (1000 millis).


Importing/Exporting Nodes and Logic Flows

Individual nodes, or groups of nodes and their links (logic flows) can be exported to the users clipboard.  These exported flows can be saved (pasted into a text file).  They can also be imported back into Rubix Wires.


The exported flow from above will result in the following text when pasted:
[{"cid":0,"id":19,"type":"boolean/ticker","pos":[-85,-1750],"size":[178,51],"settings":{"interval":{"description":"Interval (millis)","value":1000,"type":"number"},"enable":{"description":"Enable","value":true,"type":"boolean"},"false":{"description":"Generate False","value":true,"type":"boolean"}},"properties":{},"flags":{},"inputs":{"0":{"hasSettings":false,"name":"[interval]","type":"number"},"1":{"hasSettings":false,"name":"[enable]","type":"boolean"}},"outputs":{"0":{"name":"output","type":"boolean","links":[{"target_node_id":20,"target_slot":1}]}},"_id":"c0n19"},{"cid":0,"id":20,"type":"count/counter","pos":[156,-1747],"size":[194.79999999999998,81],"settings":{"":{"description":""},"set value":{"description":"Set Value","value":0,"type":"number"}},"properties":{},"flags":{},"inputs":{"0":{"hasSettings":false,"name":"[set value]","type":"number"},"1":{"hasSettings":false,"name":"count up","type":"boolean","link":{"target_node_id":19,"target_slot":0}},"2":{"hasSettings":false,"name":"count down","type":"boolean"},"3":{"hasSettings":false,"name":"reset","type":"boolean"}},"outputs":{"0":{"name":"count","type":"number","links":null}},"_id":"c0n20"}]

The exported flow can be imported by selecting ‘Import’ from the context menu.



Viewing Live Values

Live values, which are displayed on the right side of each input/output slot, can be toggled ON and OFF by clicking on the Eye button at the bottom right of Rubix Wires.
View / Hide Values

Runtime Logic

Pausing Runtime Logic

The runtime logic can be paused by clicking on the  Pause button at the bottom right of Rubix Wires.  This will stop the values being passed between nodes, and stop the node functions from being processed.  When runtime is paused, the button will change to the Play button. Clicking the Play button will start the runtime logic.

Stepping Through Runtime Logic

The runtime logic can be paused by clicking on the Play button at the bottom right of Rubix Wires.  Once paused the Step button can be used to step forward through the runtime logic.  This allows the user to debug/examine the logic step by step to identify issues and confirm it is working as intended.


Hiding Wire Links

Wire links can be hidden so that the flows can be more easily understood.  Clicking the Crossed Link (Hide Wire Links) button, at the bottom right of Rubix Wires.  This will hide all wire links, except for the ones connected to selected nodes.  Once clicked, the Hide Wire Links button will change to a Link (Show Wire Links) button.  Clicking the Show Wire Links button will show all the wire links again. See the below image as an example.

All links visible:


No links visible (no nodes selected):


Only links connected to ‘Counter’ are visible (‘Counter’ node selected):



Related Articles:

  1. Rubix Wires: Getting Started Guide


    • Related Articles

    • Rubix Wires: Working with Nodes

      A node is a block of logic in Wires.  There are many nodes representing many functions.  You can connect the inputs and outputs of a node to other nodes to send values between nodes (thus creating logic flows). See Rubix Wires: Node Reference Guide ...
    • Rubix Wires: Container Nodes

      This article describes the Rubix Wires nodes that are in the Container category. Container The `Container` category has nodes that support organizing nodes/flows into a subflows within Folder (container) nodes.  Values can be wired/linked into and ...
    • Rubix Wires: LoRa Sensor Nodes

      This article describes the Rubix Wires nodes that are in the LoRa category.  Preparation Rubix Wires: Getting Started Guide Rubix Platform: Adding and Editing Wireless LoRa Droplet Sensors Rubix Platform: Adding and Editing Wireless Microedge Sensors ...
    • Rubix Wires: Dashboard Nodes

      This article describes the Rubix Wires nodes that are in the Dashboard category. Dashboard The `Dashboard` category contains nodes that interact with the Wires Dashboard.  The Wires Dashboard provides a way to interact with the nodes/flows built in ...
    • Rubix Wires: Latch Nodes

      This article describes the Rubix Wires nodes that are in the Latch category. Latch The `Latch` category contains value latching functionality for each data type.  Latch nodes will maintain an output value between trigger events. Any-Latch This node ...