Operating state and detectors (Anomaly Watch)¶
Two optional per-asset keys serve Anomaly Watch (section 8.5). A model without them loads and scores as before.
{ "id": "line2.blower1", "name": "Blower 1",
"tags": [ { "path": "[default]Line2/Blower1/Torque", "role": "measurement", "unit": "%" } ],
"state": { "run": "[default]Line2/Blower1/Running", "product": "[default]Line2/Product",
"changeover": "[default]Line2/Changeover" } }
statenames up to three tag paths.runtrue means the asset is running: a Boolean true, or a value of 0.5 or more as read for each 5-minute step (so a status code of -1 or 0.3 reads as stopped);changeovertrue, by the same rule, means a changeover, which wins overrun;productis read as a label, so baselines are kept per state and product. Leavestateout and the asset is screened against one undivided baseline. A run or changeover tag the gateway reports as string-valued is refused at save; a path that is not one of the asset's tags, does not exist or keeps no history is a warning (a baseline split by state needs the signal's history too).detectorsare written by Anomaly Watch when a person confirms an anomaly, then only by people (the Detector view's Edit the rule, which opens the context-model editor, and Reject). Each holdsid(unique in the collection),name,tag(the watched tag),path(where the detector's own expression tag goes,[provider]Folder/Name),kind(drift,band,stuck,rate,quality),rule(basis,aggregate,windowMinutes,operator,percent,value,low,high,holdMinutes,deadband: the return margin in the tag's units: once fired, the rule stays fired until the value is back past its line by that much),state(when it is armed:running,stoppedorany),expression,alarm(name,mode,setpointA,setpointB,priority,timeOnDelaySeconds,timeOffDelaySeconds,deadband,deadbandMode),status(proposedorrejected),createdAt,createdBy,fromFindingId,score(windowDays,fired,matched,falseAlerts,waiting,computedAt) andwhy(the writer's explanation, at most 1,000 characters). At most 20 per asset and 500 per collection. Alarmmodeuses Ignition's own names (AboveValue,BelowValue,Equality,Inequality,OutsideValues).appliedis never stored. Once a person has imported a detector's tag,contextModel.getlists it asappliedunder a separatedetectorskey, read from the tag each time.