CommonJS Helpers for EST device data. Work in progress.
yarn add @tysonalcorn/est-helpers
or
npm install @tysonalcorn/est-helpers
import {Devices} from '@tysonalcorn/est-helpers'; /* logic to extract device data from EST report ... let devices = data */ let config = { restartLoopsAfterPanel: true, // resets loop to 1 for each panel; loops are numbered consecutively by panel and then card otherwise continuousAddressing: false, //if true, device addressing continues after each loop, even if on different cards (i.e. loop 3 would start with device 501) separateAddressing: true, //restart device numbering after each loop, even if on the same card facp: 'est3' //or 'io'; type of panel being used }; const deviceSetter = new Devices(devices, config); let loops = deviceSetter().getLoops(); //returns array with loop data /* logic to allow user to edit loop numbers if necessary to match fire alarm drawings ... */ //to merge devices with existing device data devices = deviceSetter().setLoops(loops).merge(oldDevices); //without merging with existing device data devices = deviceSetter().setLoops(loops).init(); //returns array of device objects with loop data includedWithout editing loops:
import {Devices} from '@tysonalcorn/est-helpers'; /* logic to extract device data from EST report ... let devices = data */ let config = { restartLoopsAfterPanel: true, // resets loop to 1 for each panel; loops are numbered consecutively by panel and then card otherwise continuousAddressing: false, //if true, device addressing continues after each loop, even if on different cards (i.e. loop 3 would start with device 501) separateAddressing: true, //restart device numbering after each loop, even if on the same card. Will restart after panel if restartLoopsAfterPanel is true facp: 'est3' //or 'io'; type of panel being used }; const deviceSetter = new Devices(devices, config); //to merge devices with existing device data devices = deviceSetter().merge(oldDevices); //without merging with existing device data devices = deviceSetter().init();[ { panelCard: '0102', panel: 1, card: 2, loop1: 1, loop2: 2, loops: [1,2] } ][ { panelName: 'FACP', label: 'SD_1_DLR', panel: 1, card: 2, address: 1, message1: 'SMOKE DETECTOR L1D1', message2: 'AT FACP', model: 'PS', barcode: '3902009904', logicalAddress: '01020001', type: 'SMOKE', deviceType: '12', scanned: true, dualModule: false, secondPort: false, loop: 1, alias: {}, custom: {}, shortName: 'Smoke', message: 'SMOKE DETECTOR L1D1 AT FACP' } ][ { panel: 1, card: 2, address: 1, message1: 'SMOKE DETECTOR L1D1', message2: 'ABOVE FACP', model: 'PS', barcode: null, type: 'Smoke', deviceType: '12', scanned: false, dualModule: false, secondPort: false, loop: 1, alias: {}, custom: {}, shortName: 'Smoke', message: 'SMOKE DETECTOR L1D1 ABOVE FACP' } ]import {Devices, createDialerStrings} from '@tysonalcorn/est-helpers'; /* logic to extract device data from EST report and accept user input ... let devices = data */ let config = { restartLoopsAfterPanel: true, continuousAddressing: false, separateAddressing: true, facp: 'est3' }; const defaultStrings = ['trouble, sup, alarm'], defaultPartition = '01', defaultZone = '001'; const deviceSetter = new Devices(devices, config); devices = deviceSetter().init(); const dialerStrings = createDialerStrings(devices, matchLabel, modcomLabel, defaultStrings, defaultPartition, defaultZone); //[{input: '', output: ''}...]devices: Array of device objects with loop data
matchLabel: User defined match string for device labels where '*' is used as a wild card, '@' is used to match the partition n-variable, and '#' is used to match the zone n-variable
- Given the device label
'SD_ANN3_1-2', match label'*_@-#'would include the device in the dialer string input with a partition number of 1 and a zone number of 2
modcomLabel: User defined string that should be equal to the modcom label intended to be used in the 3-SDU rules
defaultStrings: Array of first event dialer strings to include by default. Can include 'trouble', 'sup', and 'alarm'
defaultPartition: User defined string that defines the partition for any first event dialer strings
defaultZone: User defined string that defines the zone for any first event dialer strings
import {Devices, createNVarInput} from '@tysonalcorn/est-helpers'; /* logic to extract device data from EST report and accept user input ... let devices = data */ let config = { restartLoopsAfterPanel: true, continuousAddressing: false, separateAddressing: true, facp: 'est3' }; const defaultStrings = ['trouble, sup, alarm'], defaultPartition = '01', defaultZone = '001'; const deviceSetter = new Devices(devices, config); devices = deviceSetter().init(); const nVarInputs = createNVarInput(devices, matchLabel); //[{input: ''}...]devices: Array of device objects with loop data
matchLabel: User defined match string for device labels where '*' is used as a wild card and '#' is used to match the n-variable
- Given the device label
'SD_ANN3_1-2', match label'*_ANN#_*'would include '3' in the n-variable input
Array of device type objects
import {constants} from '@tysonalcorn/est-helpers'; console.log(constants.deviceTypes); /* [ { type: "Heat", value: 10, validBarcodes: [36, 38, 48], names: ["HEAT"], shortName: 'Heat', event: "ALARM", cid: 114 }, ... ] */Array of objects containing data relevant to device barcodes
import {constants} from '@tysonalcorn/est-helpers'; console.log(constants.barcodeTypes); /* [ { type: 'io', dual: false, module: true, defaultModel: 'IO', value: 47, }, ... ] */