knxnetip

package
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 14, 2026 License: GPL-2.0, GPL-3.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DecodeValue

func DecodeValue(data []byte, dataType string, addr *ParsedAddress, scale, offset float64) (any, error)

func EncodeValue

func EncodeValue(value any, dataType string, addr *ParsedAddress) ([]byte, error)

func NewKNXnetIPDriver

func NewKNXnetIPDriver() driver.Driver

Types

type GatewayInfo

type GatewayInfo struct {
	IP   string
	Port int
}

GatewayInfo describes a KNX IP interface discovered via SEARCH_RESPONSE.

func DiscoverGateways

func DiscoverGateways(ctx context.Context, cfg transportConfig) ([]GatewayInfo, error)

DiscoverGateways sends SEARCH_REQUEST and collects SEARCH_RESPONSE results until timeout.

type KNXDecoder

type KNXDecoder struct{}

KNXDecoder handles group address value encoding/decoding.

func NewKNXDecoder

func NewKNXDecoder() *KNXDecoder

func (*KNXDecoder) ParseAddress

func (d *KNXDecoder) ParseAddress(addr string) (*ParsedAddress, error)

type KNXScheduler

type KNXScheduler struct {
	// contains filtered or unexported fields
}

KNXScheduler coordinates point reads and writes.

func NewKNXScheduler

func NewKNXScheduler(transport *KNXTransport, decoder *KNXDecoder) *KNXScheduler

func (*KNXScheduler) GetStats

func (s *KNXScheduler) GetStats() (totalRequests, successCount, failureCount int64)

func (*KNXScheduler) ReadPoints

func (s *KNXScheduler) ReadPoints(ctx context.Context, points []model.Point) (map[string]model.Value, error)

func (*KNXScheduler) WritePoint

func (s *KNXScheduler) WritePoint(ctx context.Context, p model.Point, value any) error

type KNXTransport

type KNXTransport struct {
	// contains filtered or unexported fields
}

KNXTransport manages KNXnet/IP tunneling over UDP or TCP.

func NewKNXTransport

func NewKNXTransport(cfg map[string]any) *KNXTransport

func (*KNXTransport) Connect

func (t *KNXTransport) Connect(ctx context.Context) error

func (*KNXTransport) Disconnect

func (t *KNXTransport) Disconnect() error

func (*KNXTransport) GetCached

func (t *KNXTransport) GetCached(group uint16) ([]byte, bool)

func (*KNXTransport) GetConnectionMetrics

func (t *KNXTransport) GetConnectionMetrics() (connectionSeconds int64, reconnectCount int64, localAddr string, remoteAddr string, lastDisconnectTime time.Time)

func (*KNXTransport) IsConnected

func (t *KNXTransport) IsConnected() bool

func (*KNXTransport) ReadGroup

func (t *KNXTransport) ReadGroup(ctx context.Context, group uint16) ([]byte, error)

func (*KNXTransport) WriteGroup

func (t *KNXTransport) WriteGroup(ctx context.Context, group uint16, payload []byte) error

type KNXnetIPDriver

type KNXnetIPDriver struct {
	// contains filtered or unexported fields
}

KNXnetIPDriver implements KNXnet/IP tunneling for group address read/write.

func (*KNXnetIPDriver) BindLinkMutex

func (d *KNXnetIPDriver) BindLinkMutex(mu *sync.Mutex)

BindLinkMutex injects channelMu into ConnectionManager for shared-link reconnect.

func (*KNXnetIPDriver) Connect

func (d *KNXnetIPDriver) Connect(ctx context.Context) error

func (*KNXnetIPDriver) Disconnect

func (d *KNXnetIPDriver) Disconnect() error

func (*KNXnetIPDriver) GetConnectionMetrics

func (d *KNXnetIPDriver) GetConnectionMetrics() (connectionSeconds int64, reconnectCount int64, localAddr string, remoteAddr string, lastDisconnectTime time.Time)

func (*KNXnetIPDriver) GetMetrics

func (d *KNXnetIPDriver) GetMetrics() model.ChannelMetrics

func (*KNXnetIPDriver) Health

func (d *KNXnetIPDriver) Health() driver.HealthStatus

func (*KNXnetIPDriver) Init

func (d *KNXnetIPDriver) Init(cfg model.DriverConfig) error

func (*KNXnetIPDriver) ReadPoints

func (d *KNXnetIPDriver) ReadPoints(ctx context.Context, points []model.Point) (map[string]model.Value, error)

func (*KNXnetIPDriver) SetDeviceConfig

func (d *KNXnetIPDriver) SetDeviceConfig(_ map[string]any) error

func (*KNXnetIPDriver) SetSlaveID

func (d *KNXnetIPDriver) SetSlaveID(_ uint8) error

func (*KNXnetIPDriver) WritePoint

func (d *KNXnetIPDriver) WritePoint(ctx context.Context, p model.Point, value any) error

type ParsedAddress

type ParsedAddress struct {
	GroupAddr      uint16
	IndividualAddr uint16
	BitWidth       int // 0 means full byte(s); 1-7 for sub-byte DPT types
}

ParsedAddress holds a KNX group address and optional individual address / bit width.

func ParseAddress

func ParseAddress(addr string) (*ParsedAddress, error)

ParseAddress parses group address formats:

  • "main/middle/sub" or "main/sub" (2-level)
  • "main/middle/sub,area.line.device" with optional ",BIT"

type Simulator

type Simulator struct {
	// contains filtered or unexported fields
}

Simulator is a minimal KNXnet/IP tunneling gateway for unit tests.

func NewSimulator

func NewSimulator() *Simulator

func (*Simulator) Close

func (s *Simulator) Close() error

func (*Simulator) SetGroupValue

func (s *Simulator) SetGroupValue(group uint16, data []byte)

func (*Simulator) Start

func (s *Simulator) Start() (string, error)

func (*Simulator) StartTCP

func (s *Simulator) StartTCP() (string, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL