Flow Editor

Last updated March 19, 2026


What Is the Flow Editor?

The Flow Editor is the visual canvas at the heart of the LoopString Configurator. It shows your automation as a diagram — each hardware part appears as a card, and lines between cards represent data flowing from one component to the next.

When you finish the Setup Wizard, the Flow Editor opens automatically with your parts placed and wired according to your wizard answers. You can also open it any time to make manual adjustments, add new parts, change wiring, or restructure your rooms.

The Flow Editor is best suited for:

  • Editing a configuration after the wizard has set up the basics
  • Building complex multi-room setups with many sensors or controllers
  • Wiring one sensor to multiple controllers
  • Running multiple instances of the same hardware part (for example, four DS18B20 probes)
  • Inspecting which signals flow where before deploying

The Three-Column Layout

Parts on the canvas are arranged in three columns from left to right:

Sensors appear in the leftmost column, shown with a green glow. A sensor reads data from hardware and produces one or more output signals — for example, a BME280 produces separate temperature, humidity, and pressure outputs.

Controllers appear in the center column, shown with a blue glow. A controller receives a sensor signal, compares it to a target, and produces a control output. The two controller types are the PID controller (for precise setpoint tracking) and the hysteresis controller (for simple on/off threshold control).

Actuators appear in the rightmost column, shown with an amber glow. An actuator receives a control signal and acts on it — toggling a relay, adjusting a PWM duty cycle, or opening a valve.

When you open the Flow Editor for the first time on a configuration, parts are automatically placed into this layout. You can drag any card to reposition it; the position is saved automatically.

Part Cards

Each part appears as a glassy card on the canvas. The card shows:

  • An icon and the part's short name at the top
  • A brief summary of its key configuration (GPIO pin, I2C address, polling interval, setpoint, etc.) in small text below the name
  • A room selector dropdown near the bottom, so you can reassign it to a different room without leaving the canvas
  • A color-coded type label (Sensor, Controller, or Actuator) at the very bottom

When multiple instances of the same part exist in the same room, each card is numbered (DS18B20 #1, DS18B20 #2, etc.) so you can tell them apart.

Adding Parts to the Canvas

To add a new part, use the Configurator's Parts Library panel (accessible from the sidebar or the Add Part button within a room). Select the part and it is added to the active room, then appears on the canvas.

Any part that has been added to your project but has not been assigned to a room yet appears in the Unassigned Parts area below the canvas. Assign it to a room using the room dropdown on the card or the Unassigned Parts panel.

Making Connections

Connections represent data flowing from one part to another. To draw a connection:

  1. Hover over a part card. Small circular handles appear on the left and right edges of the card.
  2. Click and drag from an output handle (right side) toward an input handle (left side) on another card.
  3. When the connection line snaps to a valid input handle, release the mouse to create the connection.

Output handles are on the right side of sensor and controller cards. Input handles are on the left side of controller and actuator cards. The canvas enforces this direction — you cannot draw a connection backward.

To remove a connection, click the line to select it and press Backspace or Delete. You can also select multiple connections and delete them all at once.

If you draw a new connection to an input that already has one, the old connection is replaced automatically.

Port Colors and What They Mean

Each handle is color-coded by part type:

  • Green handles belong to sensor output ports
  • Blue handles belong to controller input and output ports
  • Amber handles belong to actuator input ports (and sensor input ports on parts that accept a signal)

When a part has more than one output or input port (for example, a multi-channel relay HAT or a multi-measurement sensor), the ports are spaced vertically along the edge of the card with labels beside each one identifying the signal (Temperature, Humidity, Channel 1, Channel 2, etc.).

Typed Ports and Signal Compatibility

Every output port carries a specific signal type — temperature, humidity, CO2, boolean, PWM, and others. Input ports on controllers are also typed to accept only a specific kind of signal.

The canvas only allows connections between compatible port types. If you try to drag a connection from a humidity sensor output to a temperature PID controller input, the canvas will not allow the connection to form.

A practical example: a DS18B20 temperature sensor has a single output that carries a temperature signal. A PID temperature controller has an input that accepts a temperature signal. These two are compatible and can be wired together. The same DS18B20 cannot be wired to a CO2 hysteresis controller because the signal types do not match.

This prevents a whole category of configuration mistakes before you ever deploy to the Pi.

Auto-Wiring

When you first open the Flow Editor for a configuration that has no connections yet, auto-wiring runs automatically. It scans all the parts in each room and attempts to create sensible default connections:

  • Each sensor output port is connected to the first available controller input in the same room
  • Multi-output sensors (like the BME280) iterate through all their output ports and connect each one to the next available controller
  • Each controller output is connected to the first available actuator input in the same room
  • Multi-channel actuators accept connections on each of their input ports before moving on to the next actuator

Auto-wiring never creates connections between rooms. If a room has sensors but no controllers, or controllers but no actuators, the unconnected parts remain unconnected.

After auto-wiring runs, you can modify any connection manually. Auto-wiring does not run again unless you clear all connections and re-enter the editor.

Room Management

Rooms organize your parts into logical groups. Each room becomes a separate tab on your dashboard. The Flow Editor shows one room at a time; use the room tabs at the top of the canvas to switch between rooms.

Each room tab shows the room name and a badge with the count of parts in that room.

Creating a Room

Click the Add Room button at the right end of the tab bar. A new room is created with a default name (Room 2, Room 3, etc.). The new room becomes active immediately.

Renaming a Room

Double-click any room tab to enter edit mode. Type the new name and press Enter to confirm, or press Escape to cancel. You can also click away from the input to confirm.

Deleting a Room

Click the small X icon on a room tab to delete it. If the room contains parts, a confirmation prompt lists how many parts will be unassigned. Deleted rooms cannot be recovered, but the parts themselves remain in your project and appear in the Unassigned Parts area.

The last remaining room cannot be deleted.

Reassigning a Part to a Different Room

Each part card has a small room selector dropdown near its bottom. Click the dropdown to choose a different room. The part moves to that room immediately and disappears from the current room's canvas view.

You can also use the Move to Room option from the right-click context menu on a card in the Setup Wizard's parts list.

Canvas Navigation

The canvas supports standard pan and zoom navigation:

  • Scroll the mouse wheel to zoom in and out
  • Click and drag on an empty area of the canvas to pan
  • Use the zoom controls in the lower-left corner to zoom in, zoom out, or fit all parts to the view
  • The minimap in the lower-right corner shows the full layout and lets you click to jump to any area

The canvas supports dark mode automatically, following your system or app preference.

Validation Indicators

The FlowSyncBadge at the top of the Configurator shows whether your current configuration has passed validation. Warnings and errors found during pre-deploy validation are also surfaced on the canvas:

  • A PID controller with no sensor connected displays an orphan warning
  • Connections between incompatible port types are blocked before they can be created
  • Signal mismatches (for example, a sensor output type that does not match the controller input type) appear as validation errors

Resolve all errors before deploying. Warnings are advisory — you can deploy with warnings present, but they indicate parts of your configuration that may not work as expected.

Use Cases

Multi-Room Grow Tent

A grower running two grow tents sets up two rooms: Veg Tent and Flower Tent. Each room has a temperature sensor, a humidity sensor, a PID temperature controller, a hysteresis humidity controller, a fan relay, and a humidifier relay.

In the Veg Tent room, the temperature sensor's output is wired to the PID controller's input, and the PID controller's output is wired to the fan relay. The humidity sensor's output is wired to the hysteresis controller, which drives the humidifier relay. The Flower Tent room is wired identically but controls completely independent hardware.

Because the two rooms are separate, they have independent setpoints, separate dashboard tabs, and independent PID tuning. A sensor from one room cannot accidentally wire into a controller in the other room.

Industrial Multi-Sensor pH and Dosing System

A food production facility monitors pH in a mixing tank using two EZO-pH sensors for redundancy and uses a peristaltic dosing pump to correct pH drift. Both EZO-pH sensors are added to the same room as two separate instances.

The first sensor's output wires to a hysteresis pH controller, which drives the dosing pump relay. The second sensor's output wires to a separate monitoring-only path that publishes to the cloud for trend analysis without controlling any actuator.

This demonstrates wiring one sensor to a controller while leaving a second sensor unwired to an actuator — a perfectly valid configuration that the canvas supports.

Troubleshooting

I cannot connect two ports

If a connection line snaps away or the connection does not form when you release, the most likely cause is a port type mismatch. Check the signal type labels on the output you are dragging from and compare to the input you are targeting. A temperature output cannot connect to a humidity input. If the part types look compatible but the connection still fails, verify that the input port does not already have a connection — each input accepts only one connection at a time.

A part is not visible on the canvas

If a part you added does not appear on the canvas, it may not be assigned to the active room. Check the Unassigned Parts area below the canvas. If the part appears there, use the room dropdown on its card to assign it to the correct room. Also confirm that you are viewing the right room tab — the canvas shows only the parts belonging to the currently active room.

Canvas is slow or laggy with many parts

The canvas handles dozens of parts without issue, but very large configurations (more than around 50 parts in a single room) can slow down panning and zooming on older hardware. The best practice is to distribute parts across multiple rooms. This also makes the dashboard easier to navigate, since each room becomes its own dashboard tab.

My connections disappeared after switching rooms

Connections between parts in different rooms are not shown on any single room's canvas view. The canvas shows only connections where both the source and the destination part belong to the same active room. Cross-room connections are not currently supported — all wiring must be within a single room.

The auto-wire result does not match what I expected

Auto-wiring uses a simple left-to-right, top-to-bottom algorithm. It connects each sensor output to the next unoccupied controller input, then each controller output to the next available actuator input. It does not understand your intended setpoints or signal semantics. If the auto-wired result is wrong, simply delete the incorrect connections and draw the correct ones manually.

Known Limitations

Mobile experience: The canvas is designed for mouse-based interaction. On touch screens, panning and zooming work, but drawing connections between ports requires precise finger placement on small handles and can be difficult. For the best experience on mobile, use the Setup Wizard instead, which is fully optimized for touch.

No cross-room wiring: Parts in different rooms cannot be connected to each other. If you need one sensor to feed controllers in two rooms, add the sensor to both rooms as separate instances with separate hardware assignments, or combine both rooms into a single room.

Position memory per room: Node positions are saved per room and per session. If you open a configuration on a different browser or device, parts may revert to the default auto-layout positions.

Next Steps

wiringflow-editorconnectionsroomscanvaswiringflow-editorconnections