-
Notifications
You must be signed in to change notification settings - Fork 0
API Reference: Event Detection
Inherits from:
handle
det = EventDetector() det = EventDetector('MinDuration', 2, 'OnEventStart', @myCallback) events = det.detect(t, values, thresholdValue, direction, thresholdLabel, sensorName)
obj = EventDetector(varargin)| Property | Default | Description |
|---|---|---|
| MinDuration | numeric: minimum event duration (default 0) | |
| OnEventStart | function handle: callback f(event) on new event | |
| MaxCallsPerEvent | numeric: max callback invocations per event (default 1) |
DETECT Find events from threshold violations. events = det.detect(t, values, thresholdValue, direction, thresholdLabel, sensorName) Returns Event array.
Inherits from:
handle
Tracks last-processed index per sensor and carries over open events.
obj = IncrementalEventDetector(varargin)| Property | Default | Description |
|---|---|---|
| MinDuration | 0 |
|
| MaxCallsPerEvent | 1 |
|
| OnEventStart | [] |
|
| EscalateSeverity | true |
e = Event(startTime, endTime, sensorName, thresholdLabel, thresholdValue, direction) e = e.setStats(peakValue, numPoints, minVal, maxVal, meanVal, rmsVal, stdVal)
obj = Event(startTime, endTime, sensorName, thresholdLabel, thresholdValue, direction)| Property | Default | Description |
|---|---|---|
| DIRECTIONS | {'high', 'low'} |
SETSTATS Set event statistics.
ESCALATETOP Escalate event to a higher severity threshold.
Inherits from:
handle
cfg = EventConfig() cfg.MinDuration = 2; cfg.addSensor(sensor); events = cfg.runDetection();
obj = EventConfig()| Property | Default | Description |
|---|---|---|
| Sensors | cell array of Sensor objects | |
| SensorData | struct array: name, t, y (for viewer click-to-plot) | |
| MinDuration | numeric: debounce (default 0) | |
| MaxCallsPerEvent | numeric: callback limit (default 1) | |
| OnEventStart | function handle: callback | |
| ThresholdColors | containers.Map: label -> [R G B] | |
| AutoOpenViewer | logical: auto-open EventViewer after detection | |
| EscalateSeverity | logical: escalate events to higher thresholds (default true) | |
| EventFile | char: path to .mat file for auto-saving events (empty = disabled) | |
| MaxBackups | numeric: number of backup files to keep (default 5, 0 = no backups) |
ADDSENSOR Register a sensor with its data.
SETCOLOR Set color for a threshold label.
BUILDDETECTOR Create a configured EventDetector.
RUNDETECTION Detect events across all configured sensors.
Inherits from:
handle
obj = EventStore(filePath, varargin)| Property | Default | Description |
|---|---|---|
| FilePath | '' |
|
| MaxBackups | 5 |
|
| PipelineConfig | struct() |
|
| SensorData | [] |
struct array: name, t, y (for EventViewer click-to-plot) |
| ThresholdColors | struct() |
serialized threshold colors struct |
| Timestamp | [] |
datetime: when events were saved |
Inherits from:
handle
viewer = EventViewer(events) viewer = EventViewer(events, sensorData) viewer = EventViewer(events, sensorData, thresholdColors) viewer.update(newEvents)
obj = EventViewer(events, sensorData, thresholdColors)| Property | Default | Description |
|---|---|---|
| Events | Event array | |
| SensorData | struct array: name, t, y (for click-to-plot) | |
| ThresholdColors | containers.Map: label -> [R G B] | |
| hFigure | figure handle | |
| BarPositions | Nx4 matrix: [x, y, w, h] cached from drawTimeline | |
| BarRects | rectangle handles for hover detection | |
| BarEvents | Event objects corresponding to BarRects |
UPDATE Refresh the viewer with new events.
GETSENSORNAMES Get unique sensor names from events.
GETTHRESHOLDLABELS Get unique threshold labels from events.
REFRESHFROMFILE Reload events from the source .mat file.
STARTAUTOREFRESH Start polling the source file at given interval. obj.startAutoRefresh(5) % refresh every 5 seconds
STOPAUTOREFRESH Stop the auto-refresh timer.
FROMFILE Open EventViewer from a saved .mat event store file. viewer = EventViewer.fromFile('events.mat')
Inherits from:
handle
obj = LiveEventPipeline(sensors, dataSourceMap, varargin)| Property | Default | Description |
|---|---|---|
| Sensors | containers.Map: key -> Sensor | |
| DataSourceMap | DataSourceMap | |
| EventStore | EventStore | |
| NotificationService | NotificationService | |
| Interval | 15 |
seconds |
| Status | 'stopped' |
|
| MinDuration | 0 |
|
| EscalateSeverity | true |
|
| MaxCallsPerEvent | 1 |
|
| OnEventStart | [] |
Inherits from:
handle
obj = NotificationService(varargin)| Property | Default | Description |
|---|---|---|
| Rules | NotificationRule.empty() |
|
| DefaultRule | [] |
|
| Enabled | true |
|
| DryRun | false |
|
| SnapshotDir | '' |
|
| SnapshotRetention | 7 |
days |
| SmtpServer | '' |
|
| SmtpPort | 25 |
|
| SmtpUser | '' |
|
| SmtpPassword | '' |
|
| FromAddress | 'fastplot@noreply.com' |
|
| NotificationCount | 0 |
Inherits from:
handle
obj = NotificationRule(varargin)| Property | Default | Description |
|---|---|---|
| SensorKey | '' |
|
| ThresholdLabel | '' |
|
| Recipients | {{}} |
|
| Subject | 'Event: {sensor} - {threshold}' |
|
| Message | '{sensor} exceeded {threshold} ({direction}) at {startTime}. Peak: {peak}' |
|
| IncludeSnapshot | true |
|
| ContextHours | 2 |
|
| SnapshotPadding | 0.1 |
|
| SnapshotSize | [800, 400] |
Returns match score: 3=sensor+threshold, 2=sensor, 1=default, 0=no match
Inherits from:
handle
Subclasses must implement fetchNew() which returns a struct: .X — 1xN datenum timestamps .Y — 1xN (or MxN) values .stateX — 1xK datenum state timestamps (empty if none) .stateY — 1xK state values (empty if none) .changed — logical, true if new data since last call
Inherits from:
DataSource
obj = MatFileDataSource(filePath, varargin)| Property | Default | Description |
|---|---|---|
| FilePath | '' |
|
| XVar | 'X' |
|
| YVar | 'Y' |
|
| StateXVar | '' |
|
| StateYVar | '' |
Inherits from:
handle
obj = DataSourceMap()Inherits from:
DataSource
obj = MockDataSource(varargin)| Property | Default | Description |
|---|---|---|
| BaseValue | 100 |
|
| NoiseStd | 1 |
|
| DriftRate | 0 |
drift per second |
| SampleInterval | 3 |
seconds between points |
| BacklogDays | 3 |
days of history on first fetch |
| ViolationProbability | 0.005 |
chance per point of starting violation |
| ViolationAmplitude | 20 |
how far signal ramps beyond base |
| ViolationDuration | 60 |
seconds per violation episode |
| StateValues | {{}} |
cell of char, e.g. {'idle','running'} |
| StateChangeProbability | 0.001 |
chance per point of state transition |
| Seed | [] |
optional RNG seed |
| PipelineInterval | 15 |
seconds per fetch cycle |
FastPlot Wiki
API Reference
Guides
Use Cases
Internals
Resources