FireDetector¶
Overview¶
Generic fire detection sensor covering smoke, heat/thermal, flame, combustion, manual call points, and suppression water-flow. Parallel to IntrusionDetector: a zone that reports fire conditions carries this function. A single device may carry both IntrusionDetector and FireDetector when the same physical zone can report either (e.g. panel zones whose reaction is configured in the panel), so the fire actions are prefixed (Fire...) to avoid colliding with the intrusion action shortcuts on the same Thing.
- Added in: PQ Framework 2.2
- Namespace:
Pq.Adapters.Framework
When to Use¶
- Smoke detectors
- Heat / thermal detectors
- Flame / combustion detectors
- Manual call points (fire buttons)
- Sprinkler / suppression water-flow switches
- Any fire-reaction zone on an intrusion panel
States¶
| State | Description | Status String |
|---|---|---|
Normal |
No fire condition present | pq.state.detection.clear |
Alarm |
Fire alarm active | pq.state.fire.alarm |
AlarmGeneral |
General fire alarm active | pq.state.fire.alarm.general |
AlarmSection |
Section or zone-level fire alarm active | pq.state.fire.alarm.section |
AlarmConditional |
Conditional fire alarm active | pq.state.fire.alarm.conditional |
Prealarm |
Pre-alarm / verification in progress | pq.state.fire.prealarm |
Smoke |
Smoke detected | pq.state.fire.smoke |
Heat |
High temperature / heat detected | pq.state.fire.heat |
Disabled |
Detector/address intentionally disabled | pq.state.fire.disabled |
TestActivation |
Test activation condition active | pq.state.fire.test.activation |
Trouble |
Detector fault / fire trouble | pq.state.fire.trouble |
Fault |
Generic supervision fault | pq.state.supervision.fault |
Test |
Generic supervision test mode | pq.state.supervision.test |
Actions¶
Alarm Events¶
FireAlarm(timestamp)
- Description: Fire alarm triggered (generic / flame / combustion / thermal / duct)
- Target State:
Alarm - Events:
pq.event.fire.alarm(Critical)
FireGeneralAlarm(timestamp)
- Description: General fire alarm triggered
- Target State:
AlarmGeneral - Events:
pq.event.fire.alarm.general(Critical)
FireSectionAlarm(timestamp)
- Description: Section or zone-level fire alarm triggered
- Target State:
AlarmSection - Events:
pq.event.fire.alarm.section(Critical)
FireConditionalAlarm(timestamp)
- Description: Conditional fire alarm triggered
- Target State:
AlarmConditional - Events:
pq.event.fire.alarm.conditional(Critical)
FirePreAlarm(timestamp)
- Description: Fire pre-alarm / verification condition
- Target State:
Prealarm - Events:
pq.event.fire.prealarm(Warn)
SmokeDetected(timestamp)
- Description: Smoke detected
- Target State:
Smoke - Events:
pq.event.fire.smoke.detected(Critical)
SmokeCleared(timestamp)
- Description: Smoke cleared
- Target State:
Normal - Events:
pq.event.fire.smoke.cleared(Info)
ManualFireAlarm(timestamp)
- Description: Manual call point (fire button) activated
- Target State:
Alarm - Events:
pq.event.fire.manual(Critical)
SuppressionFlow(timestamp)
- Description: Water flow detected in suppression system
- Target State:
Alarm - Events:
pq.event.fire.suppression.flow(Critical)
FireCleared(timestamp)
- Description: Fire condition cleared, return to normal
- Target State:
Normal - Events:
pq.event.fire.cleared(Info)
Fault Events¶
FireFault(timestamp)
- Description: Fire detector fault / supervisory trouble
- Target State:
Fault - Events:
pq.event.supervision.fault(Warn)
FireFaultRestored(timestamp)
- Description: Fire detector fault restored
- Target State:
Normal - Events:
pq.event.technical.fault.cleared(Info)
Test Events¶
FireTestStarted(timestamp)
- Description: Fire zone test mode activated
- Target State:
Test - Events:
pq.event.intrusion.testing.started(Info)
FireTestEnded(timestamp)
- Description: Fire zone test mode deactivated
- Target State:
Normal - Events:
pq.event.intrusion.testing.completed(Info)
FireTestActivation(timestamp)
- Description: Fire point activated while in test mode
- Target State:
TestActivation - Events:
pq.event.fire.test.activation(Info)
FireTestFault(timestamp)
- Description: Fire point reported a fault while in test mode
- Target State:
TestActivation - Events:
pq.event.fire.test.fault(Warn)
Properties¶
None. All configuration is adapter-specific. Define properties in adapter-registration.yaml if needed.
YAML Example¶
device_types:
- type_id: SmokeDetector
name: "Smoke Detector"
functions:
FireDetector:
# A panel zone that can report either intrusion OR fire carries both functions:
- type_id: AcmeZone
name: "Zone"
functions:
IntrusionDetector:
FireDetector:
Code Usage¶
// route the vendor fire event to the fire-specific action
router.When(e => e.Code is 111) // smoke
.WithAddress<Zone, int>(e => e.SourceNumber)
.Handle((zone, e) => e.Restore ? zone.SmokeCleared(e.Timestamp) : zone.SmokeDetected(e.Timestamp));
router.When(e => e.Code is 115) // manual call point
.WithAddress<Zone, int>(e => e.SourceNumber)
.Handle((zone, e) => e.Restore ? zone.FireCleared(e.Timestamp) : zone.ManualFireAlarm(e.Timestamp));
Notes¶
- Fire-prefixed names: Actions that would otherwise collide with
IntrusionDetectorshortcuts on the same Thing (Cleared,Fault,PreAlarm,TestMode*) are prefixedFire.... The generator flattens each function's actions directly onto the Thing, so overlapping names on one device would clash. - Thermal without temperature: Heat/thermal fire (Acme 114) maps to
FireAlarm, notpq.event.fire.heat.detected, because the latter requires a measured temperature the panel does not supply. - EPS panels: Use FirePanel, FirePoint, FireSounder, FireRouting, and FireControlOutput for fire panel concepts that are not a physical detector.
- Migration: Adapters that previously published
PqEvent.Fire.*directly from a hand-written Thing method can migrate to this function for consistency.
See Also¶
- Functions: IntrusionDetector - Intrusion detection sensor
- Functions: SecurityKeypad - Panic/duress/medical buttons