Skip to content

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 IntrusionDetector shortcuts on the same Thing (Cleared, Fault, PreAlarm, TestMode*) are prefixed Fire.... 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, not pq.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