Versions in this module Expand all Collapse all v0 v0.2.0 Sep 19, 2022 Changes in this version + const MetMethod69LinearExtrapolation + const Method20ChurnCorrection + const Method21FiveMinuteNoHistoricalData + const Method59FiveMinuteNoHistoricalData v0.1.1 Feb 4, 2022 v0.1.0 Dec 17, 2021 Changes in this version + const Date8Format + const DateTime12Format + const DateTime14Format + const IntervalLengthPT15M + const IntervalLengthPT24H + const IntervalLengthPT30M + const IntervalLengthPT5M + const Method11Check + const Method12Calculated + const Method13SCADA + const Method14LikeDay + const Method15AverageLikeDay + const Method16Agreed + const Method17Linear + const Method18Alternate + const Method19Zero + const Method51PreviousYear + const Method52PreviousRead + const Method53Revision + const Method54Linear + const Method55Agreed + const Method56PriortoFirstReadAgreed + const Method57CustomerClass + const Method58Zero + const Method61PreviousYear + const Method62PreviousRead + const Method63CustomerClass + const Method64Agreed + const Method65ADL + const Method66Revision + const Method67CustomerRead + const Method68Zero + const Method71Recalculation + const Method72RevisedTable + const Method73RevisedAlgorithm + const Method74Agreed + const Method75ExistingTable + const MethodUndefined + const ReasonAccessBlocked + const ReasonAddedIntervalDataCorrection + const ReasonBlankScreen + const ReasonChannelAddedRemoved + const ReasonClockErrorAlarm + const ReasonCommunicationsFault + const ReasonConsumerWanted + const ReasonCrcError + const ReasonCtVtFault + const ReasonCustomerRead + const ReasonDamagedEquipmentPanel + const ReasonDangerousDog + const ReasonDataMissingAlarm + const ReasonDataOutOfLimits + const ReasonDeEnergisedPremises + const ReasonDeEnergisedWithoutReadings + const ReasonDialsObscured + const ReasonDogOnPremises + const ReasonEnergyTypeRegisterChanged + const ReasonEquipmentTampered + const ReasonEstimatedIntervalDataCorrection + const ReasonEstimationForecast + const ReasonExcludedData + const ReasonExtremeWeatherConditions + const ReasonExtremeWeatherHot + const ReasonFaultyMeterDisplayDials + const ReasonFreeTextDescription + const ReasonHighConsumption + const ReasonIllegalConnection + const ReasonInWrongRoute + const ReasonInstallationDemolished + const ReasonKeyRequired + const ReasonLoadControl + const ReasonLockDamagedUnableToOpen + const ReasonLockedGate + const ReasonLockedMeterBox + const ReasonLockedPremises + const ReasonLongIntervalAlarm + const ReasonLowConsumption + const ReasonMainSwitchOff + const ReasonMeterBoxDamagedFaulty + const ReasonMeterEquipmentChanged + const ReasonMeterEquipmentSealsMissing + const ReasonMeterHighLadderRequired + const ReasonMeterNotInHandheld + const ReasonMeterOkSupplyFailure + const ReasonMeterStopSwitchOn + const ReasonMeterTesting + const ReasonMeterUnderChurn + const ReasonNegativeConsumptionGeneration + const ReasonNotAllMetersRead + const ReasonNoxiousWeeds + const ReasonNsrdWindowExpired + const ReasonNullData + const ReasonOvergrownVegetation + const ReasonParityError + const ReasonPestsInMeterBox + const ReasonPowerOutage + const ReasonPowerOutageAlarm + const ReasonProbeReadError + const ReasonProbeReportsTampering + const ReasonPulseOverflowAlarm + const ReasonQuarantinedPremises + const ReasonRAMChecksumError + const ReasonROMChecksumError + const ReasonReCalculatedBasedOnActualMeteringData + const ReasonReEnergisedWithoutReadings + const ReasonReadLessThanPrevious + const ReasonReaderError + const ReasonReadingExceedsSubstitute + const ReasonReadingsFailedToValidate + const ReasonRefusedAccess + const ReasonRelayFaultyDamaged + const ReasonReplacedIntervalDataCorrection + const ReasonResetOccurred + const ReasonReverseEnergyObserved + const ReasonRolr + const ReasonShortIntervalAlarm + const ReasonSubstitutedReplacedDataDataCorrection + const ReasonTestMode + const ReasonTimeResetOccurred + const ReasonTimeswitchFaultyResetRequired + const ReasonUnableToLocateMeter + const ReasonUnableToLocatePremises + const ReasonUndefined + const ReasonUnderInvestigation + const ReasonUnmarriedLock + const ReasonUnrestrainedLivestock + const ReasonUnsafeEquipmentLocation + const ReasonVacantPremises + const ReasonWatchdogTimeoutAlarm + const ReasonWetPaint + const ReasonWrongKeyProvided + const ReasonWrongTarif + const ReasonZeroConsumption + var ErrFieldIndexReadLengthInvalid = fmt.Errorf("field index read %w", ErrLengthInvalid) + var ErrFieldIntervalExceedsMaximum = errors.New("field interval exceeds maximum value") + var ErrFieldIntervalLengthInvalid = fmt.Errorf("field interval %w", ErrLengthInvalid) + var ErrFieldIntervalNegativeInvalid = fmt.Errorf("field interval negative %w", ErrIsInvalid) + var ErrFieldIntervalValueNegative = fmt.Errorf("field interval value negative %w", ErrIsInvalid) + var ErrFieldInvalid = fmt.Errorf("field %w", ErrIsInvalid) + var ErrFieldMDMDataStreamIdentifierInvalid = fmt.Errorf("field MDM data stream identifier %w", ErrIsInvalid) + var ErrFieldMeterSerialNumberInvalid = fmt.Errorf("field meter serial number %w", ErrIsInvalid) + var ErrFieldNMIConfigurationMissingNMISuffix = fmt.Errorf("nmi configuration nmi suffix %w", ErrIsMissing) + var ErrFieldNMIConfigurationNMISuffixDuplicate = fmt.Errorf("nmi configuration has a nmi suffix that %w", ErrIsDuplicated) + var ErrFieldNil = fmt.Errorf("field %w", ErrIsNil) + var ErrFieldParticipantLengthInvalid = fmt.Errorf("field participan %w", ErrLengthInvalid) + var ErrFieldReasonDescriptionLengthInvalid = fmt.Errorf("field reason description %w", ErrLengthInvalid) + var ErrFieldRegisterIDInvalid = fmt.Errorf("field register id %w", ErrIsInvalid) + var ErrFieldRetServiceOrderLengthInvalid = fmt.Errorf("field ret service order %w", ErrLengthInvalid) + var ErrFieldTypeInvalid = fmt.Errorf("field type %w", ErrIsInvalid) + var ErrFieldVersionHeaderInvalid = fmt.Errorf("field version header %w", ErrIsInvalid) + var ErrInstallInvalid = fmt.Errorf("install %w", ErrIsInvalid) + var ErrInstallNil = fmt.Errorf("install %w", ErrIsNil) + var ErrIntervalMetadataNil = fmt.Errorf("interval metadata %w", ErrIsNil) + var ErrIntervalNil = fmt.Errorf("interval %w", ErrIsNil) + var ErrIsDuplicated = errors.New("is duplicated") + var ErrIsInvalid = errors.New("is invalid") + var ErrIsMissing = errors.New("is missing") + var ErrIsNil = errors.New("is nil") + var ErrLengthInvalid = fmt.Errorf("length %w", ErrIsInvalid) + var ErrMethodInvalid = fmt.Errorf("method flag %w", ErrIsInvalid) + var ErrMethodNil = fmt.Errorf("method flag %w", ErrIsNil) + var ErrMethodTypeInvalid = fmt.Errorf("method type %w", ErrIsInvalid) + var ErrMethodTypeNil = fmt.Errorf("method type %w", ErrIsNil) + var ErrParseFailed = errors.New("parse has failed") + var ErrParseFieldCountInvalid = fmt.Errorf("parse fields count %w", ErrIsInvalid) + var ErrParseIntervalDataLengthInvalid = fmt.Errorf("interval data length invalid: %w", ErrParseFailed) + var ErrParseIntervalLengthInvalid = fmt.Errorf("interval length invalid: %w", ErrParseFailed) + var ErrParseInvalidState = fmt.Errorf("invalid state: %w", ErrParseFailed) + var ErrParseRecordEndMissing = fmt.Errorf("record end missing: %w", ErrParseFailed) + var ErrParseRecordHeaderMissing = fmt.Errorf("record header missing: %w", ErrParseFailed) + var ErrParseRecordIntervalDataMissing = fmt.Errorf("record interval data missing: %w", ErrParseFailed) + var ErrParseRecordIntervalEventMissing = fmt.Errorf("record interval event missing: %w", ErrParseFailed) + var ErrParseRecordNMIDataDetailsMissing = fmt.Errorf("record NMI data details missing: %w", ErrParseFailed) + var ErrParseUnexpectedEOF = fmt.Errorf("unexpected EOF: %w", ErrParseFailed) + var ErrQualityInvalid = fmt.Errorf("quality flag %w", ErrIsInvalid) + var ErrQualityMethodInvalid = fmt.Errorf("quality method %w", ErrIsInvalid) + var ErrQualityMethodLengthInvalid = fmt.Errorf("quality method %w", ErrLengthInvalid) + var ErrQualityMethodNil = fmt.Errorf("quality method %w", ErrIsNil) + var ErrQualityMissingMethod = fmt.Errorf("quality method required method %w", ErrIsMissing) + var ErrQualityNil = fmt.Errorf("quality flag %w", ErrIsNil) + var ErrReaderNil = fmt.Errorf("reader %w", ErrIsNil) + var ErrReasonCodeInvalid = fmt.Errorf("reason code %w", ErrIsInvalid) + var ErrReasonCodeNil = fmt.Errorf("reason code %w", ErrIsNil) + var ErrRecordFieldLengthInvalid = fmt.Errorf("record field %w", ErrLengthInvalid) + var ErrRecordIndicatorInvalid = fmt.Errorf("record indicator %w", ErrIsInvalid) + var ErrRecordIndicatorNil = fmt.Errorf("record indicator %w", ErrIsNil) + var ErrRecordIntervalDataWithoutIntervalCountInvalid = fmt.Errorf("record interval data without interval count %w", ErrIsInvalid) + var ErrRecordNil = fmt.Errorf("record %w", ErrIsNil) + var ErrSuffixLengthInvalid = fmt.Errorf("suffix %w", ErrIsInvalid) + var ErrSuffixMeterInvalid = fmt.Errorf("suffix meter %w", ErrIsInvalid) + var ErrSuffixNil = fmt.Errorf("suffix %w", ErrIsNil) + var ErrSuffixTypeInvalid = fmt.Errorf("suffix type %w", ErrIsInvalid) + var ErrSuffixTypeNil = fmt.Errorf("suffix type %w", ErrIsNil) + var ErrTransactionCodeInvalid = fmt.Errorf("transaction code %w", ErrIsInvalid) + var ErrTransactionCodeNil = fmt.Errorf("transaction code %w", ErrIsNil) + var ErrUnitOfMeasureInvalid = fmt.Errorf("unit of measure %w", ErrIsInvalid) + var ErrUnitOfMeasureNil = fmt.Errorf("unit of measure %w", ErrIsNil) + var InstallName = map[Install]string + var InstallValue = map[string]Install + var IntervalLengths = []time.Duration + var MethodName = map[Method]string + var MethodTypeName = map[MethodType]string + var MethodTypeValue = map[string]MethodType + var MethodValue = map[string]Method + var QualityName = map[Quality]string + var QualityValue = map[string]Quality + var ReasonName = map[Reason]string + var ReasonValue = map[string]Reason + var RecordIndicatorName = map[RecordIndicator]string + var RecordIndicatorValue = map[string]RecordIndicator + var SuffixName = map[SuffixType]string + var SuffixValue = map[string]SuffixType + var TransactionName = map[TransactionCode]string + var TransactionValue = map[string]TransactionCode + var UnitName = map[UnitOfMeasure]string + var UnitValue = map[string]UnitOfMeasure + func NEMTime() *time.Location + func ValidateSuffixMeter(s string) error + type Field struct + Type FieldType + Value string + func NewField(ft FieldType, v string) (f Field, err error) + func (f Field) GoString() string + func (f Field) Validate() error + type FieldType int + const FieldDateTime + const FieldFinishInterval + const FieldFromParticipant + const FieldIndexRead + const FieldIntervalDate + const FieldIntervalLength + const FieldIntervalValue + const FieldMDMDataStreamIdentifier + const FieldMSATSLoadDateTime + const FieldMeterSerialNumber + const FieldNMI + const FieldNMIConfiguration + const FieldNMISuffix + const FieldNextScheduledReadDate + const FieldQualityMethod + const FieldReadDateTime + const FieldReasonCode + const FieldReasonDescription + const FieldRecordIndicator + const FieldRegisterID + const FieldRetServiceOrder + const FieldStartInterval + const FieldToParticipant + const FieldTransactionCode + const FieldUndefined + const FieldUnitOfMeasurement + const FieldUpdateDateTime + const FieldVersionHeader + func Fields() []FieldType + func (f FieldType) GoString() string + func (f FieldType) Identifier() string + type Flag interface + Description func() (string, error) + Identifier func() string + type Install int + const InstallBasic + const InstallComms1 + const InstallComms2 + const InstallComms3 + const InstallComms4 + const InstallMRIM + const InstallUndefined + const InstallUnmetered + func Installs() []Install + func NewInstall(s string) (Install, error) + func (i Install) Description() (string, error) + func (i Install) GoString() string + func (i Install) Identifier() string + func (i Install) String() string + type Interval struct + IntervalLength time.Duration + Metadata *IntervalMetadata + Time time.Time + Value IntervalValue + func (i *Interval) Normalize(uom *UnitOfMeasure) (*Interval, error) + type IntervalLength time.Duration + type IntervalMetadata struct + Meter *nmi.Meter + Nmi *nmi.Nmi + Suffix *Suffix + UnitOfMeasure *UnitOfMeasure + type IntervalSet struct + Data Intervals + Metadata *IntervalMetadata + func (is *IntervalSet) Normalize() (*IntervalSet, error) + type IntervalValue struct + DecimalValue decimal.Decimal + MSATSLoadDateTime *time.Time + MethodFlag *Method + QualityFlag Quality + ReasonCode *Reason + ReasonDescription *string + UpdateDateTime *time.Time + Value float64 + type Intervals []*Interval + type Method int + func Methods() []Method + func NewMethodFlag(s string) (Method, error) + func (m Method) Description() (string, error) + func (m Method) GoString() string + func (m Method) Identifier() string + func (m Method) InstallationTypes() []Install + func (m Method) String() string + func (m Method) Types() []MethodType + func (m Method) Validate() error + type MethodType int + const MethodTypeEstimated + const MethodTypeSubstituted + const MethodTypeUndefined + func MethodTypes() []MethodType + func NewMethodType(s string) (MethodType, error) + func (m MethodType) Description() (string, error) + func (m MethodType) GoString() string + func (m MethodType) Identifier() string + func (m MethodType) String() string + func (m MethodType) Validate() error + type ParseError struct + Err error + Field int + Line int + func (e *ParseError) Error() string + func (e *ParseError) Unwrap() error + type ParseMode int + const ParseModeIgnoreX + const ParseModeStrict + type Parser interface + ReadDay func() (*IntervalSet, error) + func NewParser(r io.Reader) Parser + type Quality int + const QualityActual + const QualityEstimated + const QualityFinal + const QualityNull + const QualitySubstituted + const QualityUndefined + const QualityVariable + func NewQualityFlag(s string) (Quality, error) + func Qualities() []Quality + func (q *Quality) MarshalJSON() ([]byte, error) + func (q *Quality) UnmarshalJSON(data []byte) error + func (q Quality) Description() (string, error) + func (q Quality) GoString() string + func (q Quality) Identifier() string + func (q Quality) MustNotHaveReason() bool + func (q Quality) RequiresMethod() (b bool) + func (q Quality) RequiresReason() (b bool) + func (q Quality) String() string + func (q Quality) Validate() (err error) + type QualityMethod string + func NewQualityMethod(s string) (QualityMethod, error) + func (qm QualityMethod) Method() (Method, error) + func (qm QualityMethod) Quality() (Quality, error) + func (qm QualityMethod) Validate() error + type Reason int + func ActiveReasons() []Reason + func DeprecatedReasons() []Reason + func NewReason(s string) (Reason, error) + func Reasons() []Reason + func (r Reason) Deprecated() bool + func (r Reason) Description() (string, error) + func (r Reason) GoString() string + func (r Reason) Identifier() string + func (r Reason) RequiresDescription() bool + func (r Reason) String() string + func (r Reason) Validate() error + type Record []Field + func NewRecord(vals []string) (r Record, err error) + func NewRecordIntervalData(n int, vals []string) (Record, error) + func (r Record) Field(n int) Field + func (r Record) Indicator() RecordIndicator + type RecordIndicator int + const RecordB2BDetails + const RecordEnd + const RecordHeader + const RecordIntervalData + const RecordIntervalEvent + const RecordNMIDataDetails + const RecordUndefined + func NewRecordIndicator(s string) (RecordIndicator, error) + func RecordIndicators() []RecordIndicator + func (r RecordIndicator) Description() (string, error) + func (r RecordIndicator) Fields() []FieldType + func (r RecordIndicator) GoString() string + func (r RecordIndicator) Identifier() string + func (r RecordIndicator) IntervalDataFields(n int) ([]FieldType, error) + func (r RecordIndicator) String() string + func (r RecordIndicator) Validate() error + type Suffix struct + Meter rune + Type SuffixType + func NewSuffix(s string) (Suffix, error) + type SuffixType int + const SuffixExportVoltAmpReactiveHourAverage + const SuffixExportVoltAmpReactiveHourCheck + const SuffixExportVoltAmpReactiveHourMaster + const SuffixExportWattHourAverage + const SuffixExportWattHourCheck + const SuffixExportWattHourMaster + const SuffixImportVoltAmpReactiveHourAverage + const SuffixImportVoltAmpReactiveHourCheck + const SuffixImportVoltAmpReactiveHourMaster + const SuffixImportWattHourAverage + const SuffixImportWattHourCheck + const SuffixImportWattHourMaster + const SuffixParMeteringCheck + const SuffixParMeteringMaster + const SuffixPowerFactorMaster + const SuffixQMeteringCheck + const SuffixQMeteringMaster + const SuffixUndefined + const SuffixVoltAmpHourAverage + const SuffixVoltAmpHourCheck + const SuffixVoltAmpHourMaster + const SuffixVoltAmpReactiveHourNet + const SuffixVoltsOrAmpsCheck + const SuffixVoltsOrAmpsMaster + const SuffixWattHourNet + func NewSuffixType(s string) (SuffixType, error) + func SuffixTypes() []SuffixType + func (s *SuffixType) MarshalJSON() ([]byte, error) + func (s *SuffixType) UnmarshalJSON(data []byte) error + func (s SuffixType) Description() string + func (s SuffixType) GoString() string + func (s SuffixType) Identifier() string + func (s SuffixType) Stream() string + func (s SuffixType) String() string + func (s SuffixType) Unit() UnitOfMeasure + type TransactionCode int + const TransactionAlteration + const TransactionDeEnergisation + const TransactionEstimate + const TransactionMeterReconfiguration + const TransactionNormalRead + const TransactionOther + const TransactionReEnergisation + const TransactionRemovalOfMeter + const TransactionSpecialRead + const TransactionUndefined + func NewTransactionCode(s string) (TransactionCode, error) + func Transactions() []TransactionCode + func (t TransactionCode) Description() (string, error) + func (t TransactionCode) GoString() string + func (t TransactionCode) Identifier() string + func (t TransactionCode) String() string + type UnitOfMeasure int + const UnitAmpere + const UnitKiloampere + const UnitKilovolt + const UnitKilovoltAmpere + const UnitKilovoltAmpereHour + const UnitKilovoltAmpereReactive + const UnitKilovoltAmpereReactiveHour + const UnitKilowatt + const UnitKilowattHour + const UnitMegavoltAmpere + const UnitMegavoltAmpereHour + const UnitMegavoltAmpereReactive + const UnitMegavoltAmpereReactiveHour + const UnitMegawatt + const UnitMegawattHour + const UnitPowerFactor + const UnitUndefined + const UnitVolt + const UnitVoltAmpere + const UnitVoltAmpereHour + const UnitVoltAmpereReactive + const UnitVoltAmpereReactiveHour + const UnitWatt + const UnitWattHour + func NewUnit(s string) (UnitOfMeasure, error) + func Units() []UnitOfMeasure + func (u *UnitOfMeasure) MarshalJSON() ([]byte, error) + func (u *UnitOfMeasure) UnmarshalJSON(data []byte) error + func (u UnitOfMeasure) Base() UnitOfMeasure + func (u UnitOfMeasure) DecimalMultiplier() decimal.Decimal + func (u UnitOfMeasure) Description() (string, error) + func (u UnitOfMeasure) GoString() string + func (u UnitOfMeasure) Identifier() string + func (u UnitOfMeasure) Multiplier() float64 + func (u UnitOfMeasure) Name() (string, error) + func (u UnitOfMeasure) String() string + func (u UnitOfMeasure) Validate() error