Step 2: Get Data Flowing

Goal: Attach a data source to your connection and verify telemetry is streaming.


What is a Simulator?

Simulators generate realistic telemetry data without requiring physical devices:

  • Built-in simulator - Configure custom variables and message templates
  • Real device - Your actual OT equipment (covered in advanced guides)

For this quickstart, we'll configure a simple simulator with temperature and humidity data.


Option A: Drag and Drop

  1. Locate the Simulator in the Node Bank (flask icon, top of the left panel)
  2. Drag the Simulator onto the canvas
  3. Click the Simulator node to open the Inspector
  4. Configure the simulator (see "Configuring the Simulator" below)
  5. Connect it to your "BreweryRoom" connection node by drawing a line between them
Simulator node connected to the BreweryRoom Connection node via an edge. The connection shows data flowing between the two nodes.
Thinking Tip:

Draw a line from the simulator output to the connection input. You'll see cyan data flow particles when the connection is active.


Configuring the Simulator

The simulator has three configuration tabs in the Inspector:

Settings Tab

SettingDescriptionExample Value
NameSimulator identifier"BreweryTelemetry"
Message Interval (ms)Time between messages5000 (5 seconds)
Messages per DeviceTotal messages (0 = infinite)0

Variables Tab

Click Add Variable to define your data points:

Variable NameTypeConfiguration
temperatureRandom IntegerMin: 65, Max: 75
humidityRandom IntegerMin: 40, Max: 60

Template Tab

Use the Template UI to map your variables to the message structure. The UI lets you define field names and assign variables to each field.

Thinking Tip:

The deviceId and timestamp are automatically included - you only need to map your custom variables like temperature and humidity.


Option B: Ask Azi

This is a great opportunity to see multi-turn conversations with Azi:

  1. Open the Azi chat panel
  2. Type: "Create a simulator for my BreweryRoom connection with temperature and humidity"
  1. Refine your request: "Limit the temperature between 65 and 75 and the humidity between 40 and 60"
  1. Review Azi's proposal
  2. Click the checkmark (✓) to approve
Thinking Tip:

Need more complex simulation? You can write custom simulators in any language using the Azure IoT Hub SDK. See the Simulator Guide for details.


Save and Deploy

Now let's deploy so data starts flowing:

  1. Click the Save icon (upper-left, floppy disk) - it glows purple when there are uncommitted changes
  2. Click Deploy when the button becomes active (green checkmark appears)
Save icon in the upper-left corner with purple glow indicating uncommitted changes. Click to commit your changes. Deploy button showing green checkmark, indicating changes are ready to be deployed to make them live.

Why deploy now? The connection takes a moment to establish. By deploying here, data starts flowing while you continue learning. When you build your first query in Step 4, you'll have live data to work with.


Verify

Data is flowing when:

  • Connection node shows cyan data flow particles around it
  • LIVE STREAM panel (bottom of screen) shows incoming events
  • Each event (called an "impulse") displays with a cyan border, connection ID, and timestamp
LIVE STREAM panel at the bottom of the workspace showing incoming telemetry impulses. Each impulse shows the connection ID, timestamp, and data payload.
Thinking Tip:

Watch the LIVE STREAM panel at the bottom - you'll see impulses arriving once the deployment completes!

You now have live telemetry flowing into your workspace. This same data will be queryable by any MCP-native AI - that's the "Bring Any AI" promise in action.


Understanding the Data

The simulator sends structured JSON combining your variables with automatic fields:

{
  "deviceId": "BreweryRoom",
  "temperature": 68,
  "humidity": 45,
  "timestamp": "2026-01-18T10:30:00Z"
}
  • deviceId - Automatically set from your connection name
  • timestamp - Automatically generated
  • temperature, humidity - Your simulated variables

This data is now in your workspace - but it's not yet routed to an execution boundary. That's what surfaces are for.


What's Next

Data is flowing, but it's just passing through. In the next step, we'll connect it to a Surface - the execution boundary where queries run.

Next: Step 3 - Connect to Surface →

On this page