Skip to content

Automation

Automation rules watch your device data and trigger actions when conditions are met: sending you a notification, controlling another device, or both. Notification actions (email, Discord, Slack, Telegram, webhooks) are available on every plan. Multi-condition logic and device commands require the Business plan or higher.

Alerts and automation are the same system. If you’re looking for “alerts,” this is the page.

  1. Go to Dashboard → Automation
  2. Click Create Rule, or pick a starter template (auto-off after a delay, sustained-threshold alert, device-offline alert, daily check-in) to prefill sensible defaults
  3. Fill in 1. When this happens (the trigger), 2. Do this (control a device and/or notify you), and optionally 3. Advanced settings
  4. Check the live summary line at the top of the form (“When X, do Y”) to confirm the rule reads the way you intend
  5. Click Create Rule

The builder can be expanded to fill the screen using the maximize icon in its header, the same control used on the Historical Plot chart.

A rule fires one of three ways. Pick one per rule.

Condition

Fires when a device’s telemetry matches one or more conditions, e.g. “temperature above 38°C.”

Schedule

Fires daily at a fixed time, or on a repeating interval, independent of any sensor reading.

Device status

Fires when a device goes offline or comes back online, detected server-side from missed check-ins.

SettingDescription
DeviceThe device to monitor
FieldThe telemetry field to check (e.g., “temperature”)
OperatorGreater/less than, equals, between, or changed. See Operators for the full list
ValueThe threshold value (two values for between)
Sustained forOptional: the comparison must hold continuously for this many seconds before it counts, filtering out a brief spike
HysteresisOptional, numeric operators only: once triggered, stays triggered until the reading crosses back past the threshold by this much, instead of flipping on every small wobble around the exact line
Time windowOptional (in Advanced settings): only evaluate this rule during a daily UTC time range, e.g. motion detection that should only matter overnight

Operators:

OperatorMeaningExample
Greater than / equal> / >=temperature > 38
Less than / equal< / <=battery < 20
Equals / not equals= / !=status = “error”
BetweenValue falls within a rangehumidity between 40 and 60
ChangedFires on any change from the last readingdoor_state changed

Example: “When temperature on Sensor A is greater than 38, sustained for 5 minutes”

Business and Scale plan users can add multiple conditions with AND/OR logic:

  • All conditions (AND): rule fires only when every condition is true
  • Any condition (OR): rule fires when at least one condition is true

Free and Starter users are limited to a single condition per rule.

Fires independent of any telemetry value:

TypeDescription
DailyFires once at a fixed time (UTC) each day
IntervalFires roughly every N minutes, paced by the Cooldown setting

Fires when a device transitions online ↔ offline. A device is considered offline once it’s gone silent for 3x its own reporting interval, with a 5-minute floor. Useful as a “did this sensor stop reporting” watchdog independent of any specific reading.

Each rule can have multiple actions that execute when it triggers.

ActionDescriptionSetup
EmailSends alert to your account emailAutomatic
DiscordPosts to a Discord channelWebhook URL
SlackPosts to a Slack channelWebhook URL
TelegramSends message via Telegram botBot token + chat ID
Custom WebhookHTTP POST to any URLEndpoint URL

See Alert Integrations for detailed setup guides for each channel.

Sends an SMS to your verified phone number. Requires a Business plan or higher with SMS alerts enabled. Monthly limits: Business (100/mo), Scale (200/mo).

Sends a command to a device via MQTT, and controls another device (or the same one) rather than just notifying you. Configure:

  • Target device: which device receives the command
  • Command name: the command identifier (e.g., relay)
  • Value: the command value (e.g., true), or leave blank on a toggle-type command to flip its current state instead of setting an absolute value
  • Delay: optional, run this action N seconds after the rule fires rather than immediately (e.g., “turn the relay off 60 seconds after it turns on”)

A rule can carry more than one command action, each with its own target device and delay, so one rule can control several devices at once.

The command is published to the device’s command topic (d/{device_id}/c).

Makes an HTTP POST request to a URL with the full trigger data as JSON body. Useful for integrating with external automation platforms like n8n, Node-RED, or Zapier. See Alert Integrations for the exact payload shape.

SettingDescription
SeverityInfo, Warning, or Critical, shown on the rule and in its history
CooldownMinimum time between fires. Default 5 minutes, range 10 seconds to 24 hours
Only notify when it changes (edge-triggered)Fires once on the transition into the triggered state, not repeatedly while it stays true. Cooldown still applies on top. Turn off for repeated reminders while a condition persists
Time windowCondition-based rules only, restricts evaluation to a daily UTC time range

Two protections apply automatically to every rule, no configuration needed:

  • Self-loop prevention. You can’t save a rule whose own command action would undo the exact condition that triggers it (e.g., a rule that turns a relay off when triggered by that same relay being on, with no delay). Add a delay, or target a different device/command instead.
  • Runaway-cascade limit. If your rules collectively fire 30+ times within 5 minutes (for example, rule A’s action satisfies rule B’s trigger, which satisfies rule A again), further fires are silently held back until the window clears. Per-rule cooldown alone can’t catch a cascade across multiple rules, so this is a backstop, not something you need to tune.

Toggle the switch next to any rule to enable or disable it. Disabled rules are not evaluated.

View the history tab to see when rules fired, which conditions matched, and which actions executed. Each entry shows success or failure status with timestamps. More than 3 fires in an hour are grouped into a single entry to avoid flooding the history.

Mark triggered events as acknowledged to track which ones have been reviewed.

Use the edit and delete icons on each rule card.

TriggerActionUse Case
Temperature > 35°C, sustained 5 minEmail + DiscordCritical temperature alert without false alarms on a brief spike
Soil moisture < 30%Send valve_open commandIrrigation control
Humidity between 40 and 60EmailKeep a greenhouse or server room in range
Temperature > 80, hysteresis 2EmailThermostat-style alert that doesn’t flap right at the threshold
Motion detected, time window 22:00 to 06:00SMSOvernight-only motion alert
Relay on, delay 60sSend relay command (blank value)Auto-off a pump or light after a fixed run time
Every 30 minutes (schedule)Send pump command (blank value)Periodic toggle without a sensor trigger
Device offlineEmail + SMSCatch a sensor that’s stopped reporting, which the device itself can never signal
Vibration > thresholdWebhook to maintenance systemPredictive maintenance
Temperature > 40°C AND humidity < 20%SMS + email + commandMulti-condition safety alert
FeatureFree/StarterBusinessScaleEnterprise
Single condition rulesYesYesYesYes
Schedule and device-status triggersYesYesYesYes
Between / sustained-for / hysteresis / time windowYesYesYesYes
Multi-condition (AND/OR)NoYesYesYes
Email notificationsYesYesYesYes
Discord/Slack/TelegramYesYesYesYes
Custom webhooksYesYesYesYes
SMS notificationsNoYes (100/mo)Yes (200/mo)Yes
Device commands (including delayed and multi-device)NoYesYesYes
AI-suggested rulesNoNoYesYes

Managing rules across many devices by hand doesn’t scale well past a handful. If you’re scripting rule creation from your own backend or provisioning system, see Alerts in the Public API reference for creating, updating, and deleting rules programmatically.