Expand description
§mabi-knx
KNXnet/IP simulator for the industrial protocol simulator.
This crate provides a complete KNXnet/IP implementation including:
- Address System: Individual and Group address handling
- DPT System: Extensible Datapoint Type encoding/decoding
- cEMI Frames: Common EMI frame handling
- KNXnet/IP Protocol: Full protocol stack with tunneling support
- Device Abstraction: Integration with mabi-core
§Quick Start
ⓘ
use mabi_knx::{
KnxServer, KnxServerConfig, KnxDevice, KnxDeviceBuilder,
GroupAddress, IndividualAddress, DptId,
};
// Create a KNX device
let device = KnxDeviceBuilder::new("knx-1", "Living Room Controller")
.individual_address(IndividualAddress::new(1, 1, 1))
.group_object("1/0/1".parse()?, "Light Switch", "1.001".parse()?)
.build()?;
// Create a server
let config = KnxServerConfig::default();
let server = KnxServer::new(config).await?;
server.start().await?;§Module Overview
error: Error types and result definitionsconfig: Configuration structures for server and devicesaddress: Individual and Group address typesdpt: Datapoint Type system with extensible codec supportcemi: Common EMI frame handlingframe: KNXnet/IP frame and service typesgroup: Group object table and event systemtunnel: Tunneling connection managementserver: KNXnet/IP server implementationdevice: KNX device implementing core Device traitfactory: Device factory for creating KNX devices
Re-exports§
pub use error::KnxError;pub use error::KnxResult;pub use config::KnxServerConfig;pub use config::KnxDeviceConfig;pub use config::GroupObjectConfig;pub use config::GroupObjectFlagsConfig;pub use config::TunnelConfig;pub use address::GroupAddress;pub use address::IndividualAddress;pub use address::AddressType;pub use address::GroupAddressRange;pub use dpt::DptId;pub use dpt::DptValue;pub use dpt::DptCodec;pub use dpt::DptRegistry;pub use dpt::BoxedDptCodec;pub use dpt::encode_dpt9;pub use dpt::decode_dpt9;pub use cemi::CemiFrame;pub use cemi::MessageCode;pub use cemi::Priority;pub use cemi::Apci;pub use cemi::AdditionalInfo;pub use cemi::AdditionalInfoType;pub use frame::KnxFrame;pub use frame::FrameBuilder;pub use frame::KnxNetIpHeader;pub use frame::ServiceType;pub use frame::Hpai;pub use frame::DibDeviceInfo;pub use frame::SupportedServiceFamilies;pub use frame::ServiceFamily;pub use group::GroupObject;pub use group::GroupObjectTable;pub use group::GroupObjectFlags;pub use group::GroupEvent;pub use tunnel::TunnelConnection;pub use tunnel::ConnectRequest;pub use tunnel::ConnectResponse;pub use tunnel::ConnectionType;pub use tunnel::TunnellingRequest;pub use tunnel::TunnellingAck;pub use tunnel::ConnectionStateRequest;pub use tunnel::ConnectionStateResponse;pub use tunnel::DisconnectRequest;pub use tunnel::DisconnectResponse;pub use tunnel::SequenceTracker;pub use tunnel::ReceivedValidation;pub use tunnel::AckValidation;pub use tunnel::SequenceStatsSnapshot;pub use tunnel::AckWaiter;pub use tunnel::AckResult;pub use tunnel::AckMessage;pub use tunnel::AckWaiterStatsSnapshot;pub use tunnel::TunnelFsm;pub use tunnel::TunnelState;pub use tunnel::TunnelErrorReason;pub use tunnel::FsmStatsSnapshot;pub use config::TunnelBehaviorConfig;pub use filter::FilterChain;pub use filter::FilterChainConfig;pub use filter::FilterChainStats;pub use filter::FilterChainStatsSnapshot;pub use filter::FilterDirection;pub use filter::FilterResult;pub use filter::FrameEnvelope;pub use filter::PaceFilter;pub use filter::PaceFilterConfig;pub use filter::PaceState;pub use filter::PaceFilterStats;pub use filter::PaceFilterStatsSnapshot;pub use filter::QueueFilter;pub use filter::QueueFilterConfig;pub use filter::QueuePriority;pub use filter::QueueFilterStats;pub use filter::QueueFilterStatsSnapshot;pub use filter::RetryFilter;pub use filter::RetryFilterConfig;pub use filter::CircuitBreakerState;pub use filter::RetryFilterStats;pub use filter::RetryFilterStatsSnapshot;pub use heartbeat::HeartbeatAction;pub use heartbeat::HeartbeatSchedule;pub use heartbeat::HeartbeatScheduler;pub use heartbeat::HeartbeatSchedulerConfig;pub use heartbeat::HeartbeatStatsSnapshot;pub use group_cache::GroupValueCache;pub use group_cache::GroupValueCacheConfig;pub use group_cache::CacheEntry;pub use group_cache::CacheEntryInfo;pub use group_cache::CacheStatsSnapshot;pub use group_cache::UpdateSource;pub use error_tracker::SendErrorTracker;pub use error_tracker::SendErrorTrackerConfig;pub use error_tracker::ErrorCategory;pub use error_tracker::TrackingResult;pub use error_tracker::ChannelErrorSummary;pub use error_tracker::TrackerStatsSnapshot;pub use metrics::KnxMetricsSnapshot;pub use metrics::KnxMetricsCollector;pub use metrics::ConnectionMetricsSnapshot;pub use diagnostics::KnxDiagnostics;pub use diagnostics::DiagnosticResult;pub use diagnostics::DiagnosticSeverity;pub use diagnostics::DiagnosticRule;pub use diagnostics::DiagnosticConfig;pub use server::KnxServer;pub use server::ServerState;pub use server::ServerEvent;pub use server::ConnectionManager;pub use device::KnxDevice;pub use device::KnxDeviceBuilder;pub use factory::KnxDeviceFactory;pub use factory::register_knx_factory;
Modules§
- address
- KNX address types.
- cemi
- Common EMI (cEMI) frame handling.
- config
- KNX configuration types.
- device
- KNX Device implementation.
- diagnostics
- Automatic diagnostic analysis for KNXnet/IP simulator health.
- dpt
- KNX Datapoint Types (DPT).
- error
- KNX error types.
- error_
tracker - Send Error Tracker with consecutive and sliding window error rate monitoring.
- factory
- KNX Device Factory.
- filter
- Flow control filter chain for KNXnet/IP bus timing simulation.
- frame
- KNXnet/IP frame handling.
- group
- KNX Group Object management.
- group_
cache - Group Value Cache with TTL/LRU eviction and auto-update on L_Data.ind.
- heartbeat
- Heartbeat action system for KNXnet/IP connection state simulation.
- metrics
- KNXnet/IP server metrics collection and Prometheus exposition.
- prelude
- Prelude module for convenient imports
- server
- KNXnet/IP Server with production-grade tunnel FSM, sequence validation, and L_Data.con.
- tunnel
- KNXnet/IP tunnelling protocol with production-grade FSM and sequence validation.
Macros§
- impl_
simple_ dpt - Helper macro for implementing simple DPT codecs.
Constants§
- DEFAULT_
MULTICAST_ ADDR - Default multicast address for KNX discovery
- DEFAULT_
PORT - Default KNXnet/IP port
- KNXNETIP_
VERSION - Protocol version for KNXnet/IP