Documentation
¶
Index ¶
- Constants
- func BuildReadFrame(meterAddr [AddrLen]byte, dataID [DataIDLen]byte) []byte
- func BuildWriteFrame(meterAddr [AddrLen]byte, dataID [DataIDLen]byte, payload []byte) []byte
- func DataIDString(di [DataIDLen]byte) string
- func DecodeValue(raw []byte, dataType string, scale float64, offset float64) (any, error)
- func EncodeMeterAddress(addr string) ([AddrLen]byte, error)
- func MeterAddressString(addr [AddrLen]byte) string
- func NewDLT645Driver() driver.Driver
- func ParseDataID(di string) ([DataIDLen]byte, error)
- func ParseReadResponse(frame *Frame) (dataID [DataIDLen]byte, value []byte, err error)
- type DLT645Decoder
- type DLT645Driver
- func (d *DLT645Driver) Connect(ctx context.Context) error
- func (d *DLT645Driver) Disconnect() error
- func (d *DLT645Driver) GetConnectionMetrics() (connectionSeconds int64, reconnectCount int64, localAddr string, ...)
- func (d *DLT645Driver) GetMetrics() model.ChannelMetrics
- func (d *DLT645Driver) Health() driver.HealthStatus
- func (d *DLT645Driver) Init(cfg model.DriverConfig) error
- func (d *DLT645Driver) ReadPoints(ctx context.Context, points []model.Point) (map[string]model.Value, error)
- func (d *DLT645Driver) SetDeviceConfig(config map[string]any) error
- func (d *DLT645Driver) SetSlaveID(slaveID uint8) error
- func (d *DLT645Driver) WritePoint(ctx context.Context, p model.Point, value any) error
- type DLT645Scheduler
- type DLT645Transport
- func (t *DLT645Transport) Connect(ctx context.Context) error
- func (t *DLT645Transport) Disconnect() error
- func (t *DLT645Transport) GetConnectionMetrics() (connectionSeconds int64, reconnectCount int64, localAddr string, ...)
- func (t *DLT645Transport) IsConnected() bool
- func (t *DLT645Transport) ReadData(ctx context.Context, meterAddr [AddrLen]byte, dataID [DataIDLen]byte) ([]byte, error)
- func (t *DLT645Transport) RecordFailure(err error)
- func (t *DLT645Transport) RecordSuccess()
- func (t *DLT645Transport) WriteData(ctx context.Context, meterAddr [AddrLen]byte, dataID [DataIDLen]byte, ...) error
- type Frame
- type ParsedAddress
Constants ¶
const ( FrameStart = 0x68 FrameEnd = 0x16 PreambleByte = 0xFE CtrlRead = 0x11 CtrlReadResp = 0x91 CtrlWrite = 0x14 CtrlWriteResp = 0x94 CtrlErrorMask = 0x40 AddrLen = 6 DataIDLen = 4 EncodeOffset = 0x33 BroadcastByte = 0xAA )
Variables ¶
This section is empty.
Functions ¶
func BuildReadFrame ¶ added in v0.0.7
BuildReadFrame builds a read-data request frame (control 0x11).
func BuildWriteFrame ¶ added in v0.0.7
BuildWriteFrame builds a write-data request frame (control 0x14).
func DataIDString ¶ added in v0.0.7
DataIDString formats data identifier bytes as "DI3-DI2-DI1-DI0".
func DecodeValue ¶ added in v0.0.7
DecodeValue converts raw meter bytes to a typed value per DL/T 645 BCD encoding.
func EncodeMeterAddress ¶ added in v0.0.7
EncodeMeterAddress converts a 12-digit decimal meter address to 6-byte BCD (low byte first).
func MeterAddressString ¶ added in v0.0.7
MeterAddressString converts 6-byte BCD address back to 12-digit string.
func NewDLT645Driver ¶
func ParseDataID ¶ added in v0.0.7
ParseDataID parses "DI3-DI2-DI1-DI0" or "DI3DI2DI1DI0" into 4 bytes (DI0 lowest index).
Types ¶
type DLT645Decoder ¶ added in v0.0.7
type DLT645Decoder struct {
// contains filtered or unexported fields
}
DLT645Decoder handles DL/T 645-2007 frame and value encoding/decoding.
func NewDLT645Decoder ¶ added in v0.0.7
func NewDLT645Decoder() *DLT645Decoder
func (*DLT645Decoder) ParseAddress ¶ added in v0.0.7
func (d *DLT645Decoder) ParseAddress(addr string) (*ParsedAddress, error)
ParseAddress parses "meterAddr#DI3-DI2-DI1-DI0[#extension]" or "DI3-DI2-DI1-DI0".
func (*DLT645Decoder) SetDefaultMeterAddress ¶ added in v0.0.7
func (d *DLT645Decoder) SetDefaultMeterAddress(addr string)
type DLT645Driver ¶
type DLT645Driver struct {
// contains filtered or unexported fields
}
DLT645Driver implements DL/T 645-2007 meter communication over serial or TCP.
func (*DLT645Driver) Disconnect ¶
func (d *DLT645Driver) Disconnect() error
func (*DLT645Driver) GetConnectionMetrics ¶
func (*DLT645Driver) GetMetrics ¶
func (d *DLT645Driver) GetMetrics() model.ChannelMetrics
func (*DLT645Driver) Health ¶
func (d *DLT645Driver) Health() driver.HealthStatus
func (*DLT645Driver) Init ¶
func (d *DLT645Driver) Init(cfg model.DriverConfig) error
func (*DLT645Driver) ReadPoints ¶
func (*DLT645Driver) SetDeviceConfig ¶
func (d *DLT645Driver) SetDeviceConfig(config map[string]any) error
func (*DLT645Driver) SetSlaveID ¶
func (d *DLT645Driver) SetSlaveID(slaveID uint8) error
func (*DLT645Driver) WritePoint ¶
type DLT645Scheduler ¶ added in v0.0.7
type DLT645Scheduler struct {
// contains filtered or unexported fields
}
DLT645Scheduler coordinates batch reads grouped by meter address.
func NewDLT645Scheduler ¶ added in v0.0.7
func NewDLT645Scheduler(transport *DLT645Transport, decoder *DLT645Decoder) *DLT645Scheduler
func (*DLT645Scheduler) GetStats ¶ added in v0.0.7
func (s *DLT645Scheduler) GetStats() (totalRequests, successCount, failureCount int64)
func (*DLT645Scheduler) ReadPoints ¶ added in v0.0.7
func (s *DLT645Scheduler) ReadPoints(ctx context.Context, points []model.Point) (map[string]model.Value, error)
ReadPoints reads all points, grouping by meter address when possible.
func (*DLT645Scheduler) WritePoint ¶ added in v0.0.7
WritePoint writes a single point when the meter supports it.
type DLT645Transport ¶ added in v0.0.7
type DLT645Transport struct {
// contains filtered or unexported fields
}
DLT645Transport manages serial (RTU) or TCP connections and frame I/O.
func NewDLT645Transport ¶ added in v0.0.7
func NewDLT645Transport(cfg map[string]any) *DLT645Transport
func (*DLT645Transport) Connect ¶ added in v0.0.7
func (t *DLT645Transport) Connect(ctx context.Context) error
func (*DLT645Transport) Disconnect ¶ added in v0.0.7
func (t *DLT645Transport) Disconnect() error
func (*DLT645Transport) GetConnectionMetrics ¶ added in v0.0.7
func (*DLT645Transport) IsConnected ¶ added in v0.0.7
func (t *DLT645Transport) IsConnected() bool
func (*DLT645Transport) ReadData ¶ added in v0.0.7
func (t *DLT645Transport) ReadData(ctx context.Context, meterAddr [AddrLen]byte, dataID [DataIDLen]byte) ([]byte, error)
ReadData sends a read request and returns the response value bytes (without DI prefix).
func (*DLT645Transport) RecordFailure ¶ added in v0.0.7
func (t *DLT645Transport) RecordFailure(err error)
func (*DLT645Transport) RecordSuccess ¶ added in v0.0.7
func (t *DLT645Transport) RecordSuccess()
type Frame ¶ added in v0.0.7
Frame represents a parsed DL/T 645-2007 response/request frame.
func DecodeFrame ¶ added in v0.0.7
DecodeFrame parses a complete frame (without leading preamble).