Skip to main content

Data Push

Data Push automatically sends NeoMind device telemetry to external systems — either the moment a device publishes new data or on a fixed interval, to a Webhook endpoint or MQTT Broker you configure. Typical uses:

  • Forward sensor data to an enterprise data platform / data lake
  • Sync device state in real time to third-party monitoring systems (e.g. Grafana, ThingsBoard)
  • Push AI inference results to a business system to trigger downstream workflows
  • Bridge NeoMind to another IoT platform

Data Push lives under the Push tab on the Data Explorer page, complementing Rules (condition-triggered actions) and Data Transforms (real-time data processing).

Interface Overview

Open Data Explorer (database icon) in the left nav and switch to the Push tab:

Data push list — target name, type, status, schedule, data sources

The page lists all push targets in a table, each row containing:

ColumnDescription
NameDisplay name of the push target
TypeWebhook / MQTT
StatusRunning / Stopped
ScheduleEvent Driven / Interval
Data SourcesMatched source patterns (e.g. device:*:temperature)
UpdatedLast modified time
ActionsEdit, delete, test, view logs

Creating a Push Target

Click Create to open the full-screen configuration dialog:

Push target create dialog — name, type, target URL, schedule

1. Basic Info

FieldDescription
NameIdentifier for the push target
Target TypeWebhook — HTTP POST to a URL; MQTT — publish to an MQTT Broker

2. Target Configuration

Webhook type:

FieldDescription
URLHTTP endpoint that receives data (e.g. https://api.example.com/ingest)
MethodHTTP method (default POST)
HeadersCustom request headers (e.g. Authorization: Bearer <token>, Content-Type: application/json)

MQTT type:

FieldDescription
Broker URLMQTT Broker address (e.g. mqtt://broker.example.com:1883)
TopicPublish topic (e.g. factory/line1/sensors)
Username / PasswordAuthentication credentials (optional)

3. Schedule

Schedule typeDescriptionUse case
Event DrivenPush as soon as new data arrivesReal-time sync, low-latency scenarios
IntervalBatch push every N secondsReduce request frequency, batch scenarios

4. Data Source Filter

Push target — data source selection panel, multi-select grouped by type

Choose which data sources to push:

SettingDescription
Source PatternsWildcard matching. device:*:temperature = all devices' temperature metric; device:sensor-01:* = all metrics of sensor-01
Only ChangesWhen enabled, pushes only when the data value actually changes, skipping duplicates to reduce traffic

The source panel is grouped by type (Device / Extension / Transform / System) with search and multi-select.

5. Retry & Batch

Push target — retry strategy and batch config

Retry Config:

FieldDescriptionDefault
Max RetriesMaximum retry attempts3
Backoff (secs)Initial backoff seconds5
Max Backoff (secs)Maximum backoff cap60

Retry uses exponential backoff: 1st retry waits 5s, 2nd 10s, 3rd 20s … up to the Max Backoff cap.

Batch Config:

FieldDescription
Batch SizeMaximum items per batch
Batch Interval (ms)Batch send interval in milliseconds

Click Save when done.

Push Target Actions

Each push target supports the following actions:

ActionDescription
Start / StopStart / stop the push
TestSend a test payload to verify the connection
LogsView delivery logs (success / failure / retries)
EditEdit the configuration
DeleteDelete the push target

Delivery Logs

Click Logs on a push target to view delivery history:

Each log records:

  • Status: Pending / Success / Failed / Retrying
  • Source: The pushed source ID
  • Payload: The actual payload sent
  • Response: The response returned by the target (on success)
  • Attempts: Current retry attempt number
  • Error: Error details on failure
  • Time: Send time and completion time

CLI Management

# List all push targets
neomind data-push list

# Create a push target
neomind data-push create --json '{
"name": "Temperature to API",
"target_type": "webhook",
"config": {
"url": "https://api.example.com/ingest",
"method": "POST",
"headers": {"Content-Type": "application/json"}
},
"schedule": {"type": "event_driven"},
"data_filter": {"source_patterns": ["device:*:temperature"], "only_changes": false}
}'

# Start / stop
neomind data-push start <target_id>
neomind data-push stop <target_id>

# Test push
neomind data-push test <target_id>

# View delivery logs
neomind data-push logs <target_id>

# View stats
neomind data-push stats

# Delete
neomind data-push delete <target_id>

REST API

# Create push target
curl -X POST http://localhost:9375/api/data-push \
-H "Content-Type: application/json" \
-d '{
"name": "Temperature to API",
"target_type": "webhook",
"config": {"url": "https://api.example.com/ingest", "method": "POST"},
"schedule": {"type": "event_driven"},
"data_filter": {"source_patterns": ["device:*:temperature"], "only_changes": false},
"enabled": true
}'

# List all push targets
curl http://localhost:9375/api/data-push

# Start push
curl -X POST http://localhost:9375/api/data-push/<id>/start

# Test push
curl -X POST http://localhost:9375/api/data-push/<id>/test

# View delivery logs
curl http://localhost:9375/api/data-push/<id>/logs

# View stats
curl http://localhost:9375/api/data-push/stats

Typical Scenarios

Scenario 1: Real-time Temperature Push to Enterprise API

  • Type: Webhook
  • Schedule: Event Driven (push on new data)
  • Source: device:*:temperature
  • Only Changes: enabled (avoid duplicate values)
  • Retry: 3 attempts, exponential backoff

Scenario 2: Batch Sync Device Status to MQTT Broker

  • Type: MQTT
  • Schedule: Interval, every 60 seconds
  • Source: device:*:online
  • Batch: 100 items per batch, 5-second interval
  • Only Changes: enabled (push only state changes)

Scenario 3: Push AI Inference Results to Business System

  • Type: Webhook
  • Schedule: Event Driven
  • Source: extension:yolo-detector:detections
  • Target URL: The business system's ingest endpoint

Integration with Other Modules

ModuleDescription
DevicesPush raw telemetry published by devices
Data TransformsPush derived metrics generated by Transforms
ExtensionsPush metrics output by extensions (e.g. YOLO detections)
RulesRules evaluate data internally; Push sends data externally

Best Practices

  • Enable Only Changes: For state-like data (e.g. online), this drastically cuts redundant pushes
  • Batch wisely: High-frequency data should use Interval + batch to avoid request storms on the target system
  • Configure retry: With network instability, 3 exponential-backoff retries cover most transient faults
  • Test before enabling: After creating, use Test to verify the connection works before starting the push
  • Monitor delivery logs: Periodically review failed logs to catch target-system issues early

Last updated: 2026-06-16