import { ParserError } from './errors'; import { HexingParserBase } from './HexingParserBase'; import { ChecksumValidation } from './ObisParser'; import { CurrentPhaseAModel, CurrentPhaseBModel, CurrentPhaseCModel, DemandResetCounterModel, FirmwareVersionModel, MeterModelModel, NoLoadTimeModel, OverCurrentCounterModel, PhaseAReverseCountModel, PhaseBReverseCountModel, PhaseCReverseCountModel, PowerFailCounterModel, RegisterModel, SerialNumberModel, TerminalCoverOpeningCounter, TotalActiveEnergyAbsoluteModel, TotalCumulativeMaximumDemandImportModel, TotalInductiveReactiveEnergyImportModel, TotalMaximumDemandImportModel, TotalMaximumDemandImportPreviousModel, TotalServiceTimeModel, VoltagePhaseAModel, VoltagePhaseBModel, VoltagePhaseCModel, } from './registers'; export class HexingParser extends HexingParserBase { hexingHXE12CodeToObisMap: [RegisterModel, string][] = [ [TotalActiveEnergyAbsoluteModel, '15.8.0'], [TotalInductiveReactiveEnergyImportModel, '5.8.0'], [TotalMaximumDemandImportModel, '1.6.0'], [CurrentPhaseAModel, '31.7.0'], [VoltagePhaseAModel, '32.7.0'], [MeterModelModel, '0.0.1'], [FirmwareVersionModel, '0.2.0'], [SerialNumberModel, 'C.1.0'], [DemandResetCounterModel, 'C.50.0'], [OverCurrentCounterModel, 'C.53.0'], [PowerFailCounterModel, 'C.7.5'], [NoLoadTimeModel, 'C1.9F'], [PhaseAReverseCountModel, '12.48.0'], [TotalServiceTimeModel, 'C.1.186'], ]; hexingHXE34CodeToObisMap: [RegisterModel, string][] = [ [MeterModelModel, '0.0.1'], [FirmwareVersionModel, '0.2.0'], [SerialNumberModel, 'C.1.0'], [TotalActiveEnergyAbsoluteModel, '15.8.0'], [TotalInductiveReactiveEnergyImportModel, '5.8.0'], [TotalMaximumDemandImportModel, '1.6.0'], [TotalCumulativeMaximumDemandImportModel, '1.2.0'], [CurrentPhaseAModel, '31.7.0'], [CurrentPhaseBModel, '51.7.0'], [CurrentPhaseCModel, '71.7.0'], [VoltagePhaseAModel, '32.7.0'], [VoltagePhaseBModel, '52.7.0'], [VoltagePhaseCModel, '72.7.0'], [DemandResetCounterModel, 'C.50.0'], [PhaseAReverseCountModel, '32.48.0'], [PhaseBReverseCountModel, '52.48.0'], [PhaseCReverseCountModel, '72.48.0'], [PowerFailCounterModel, 'C.7.5'], [NoLoadTimeModel, 'C1.9F'], [TotalServiceTimeModel, 'C.1.186'], [TotalMaximumDemandImportPreviousModel, '1.6.0.1'], [TerminalCoverOpeningCounter, 'C.51.1'], ]; anotherPossibleObis: object = { 'C.1.0': 'C.1.0.2', '15.8.0': '1.8.0', }; getChecksumValidation(): ChecksumValidation { switch (this.interpretationCode) { case 1: return ChecksumValidation.CRC_EXCLUDE_BOTH; case 2: return ChecksumValidation.CRC_INCLUDE_START; default: throw new ParserError('Invalid interpretation code'); } } getCodeMapper() { switch (this.interpretationCode) { case 1: return this.hexingHXE12CodeToObisMap; case 2: return this.hexingHXE34CodeToObisMap; default: throw new ParserError('Invalid interpretation code'); } } }