git clone https://github.com/calimero-project/calimero-core.git
Calimero-core provides (secure) KNX communication protocols, KNX datapoint & property access, and management functionality. Java SE 11 (java.base) is the minimum required runtime environment. Calimero was developed with a focus on applications that run on embedded devices and require a small footprint.
Code examples for using this library are shown in the introduction.
- KNX IP Secure
- Discovery and Self-description
- Tunneling
- Multicast (example of creating a secure network link)
- Busmonitor
- Device Management
- KNXnet/IP
- Discovery and Self-description
- Tunneling
- Routing
- Busmonitor
- Device Management
- KNX IP
- KNX RF USB
- KNX USB
- KNX FT1.2 protocol (serial connections using EMI2 or cEMI)
- TP-UART (access TP1 networks over serial connections)
- BAOS (Bus Access und Object Server)
- DPT encoding/decoding of Java/KNX data types
- Process Communicator client
- Group Monitor
- KNX Data Secure
- 1.x - Boolean, e.g., Switch, Alarm
- 2.x - Boolean controlled, e.g., Switch Controlled, Enable Controlled
- 3.x - 3 Bit controlled, e.g., Dimming, Blinds
- 5.x - 8 Bit unsigned value, e.g., Scaling, Tariff information
- 6.x - 8 Bit signed value, e.g., Percent (8 Bit), Status with mode
- 7.x - 2 octet unsigned value, e.g., Unsigned count, Time period
- 9.x - 2 octet float value, e.g., Temperature, Humidity
- 10.x - Time
- 11.x - Date
- 12.x - 4 octet unsigned value
- 13.x - 4 octet signed value, e.g., Counter pulses, Active Energy
- 14.x - 4 octet float value, e.g., Acceleration, Electric charge
- 16.x - String, e.g., ASCII string, ISO-8859-1 string (Latin 1)
- 17.x - Scene number
- 18.x - Scene control
- 19.x - Date with time
- 20.x - 8 Bit enumeration, e.g., Occupancy Mode, Blinds Control Mode
- 21.x - Bit array of length 8, e.g., General Status, Room Heating Controller Status
- 22.x - Bit array of length 16, implemented are DPT 22.101 and DPT 22.1000
- 28.x - UTF-8 string
- 29.x - 64 Bit signed value, e.g., Active Energy, Apparent energy
- 229.001 - M-Bus metering value, with the various M-Bus VIF/VIFE codings
- 232.x - RGB color value
- 242.600 - xyY color
- 249.600 - brightness & color temperature transition
- 250.600 - brightness & color temperature control
- 251.600 - RGBW color
- 252.600 - relative control RGBW
- 254.600 - relative control RGB
Access via KNXnet/IP, KNX USB, KNX RF USB, TP-UART, and FT1.2
- TP1
- KNX IP
- PL110
- RF
- KNX Management Layer
- KNX Management Procedures
- cEMI Local Device Management
- KNX Data Secure
- cEMI standard and extend L-Data
- cEMI Busmonitor
- cEMI Device Management
- EMI1/2 standard L-Data
- EMI1/2 Busmonitor
- State/command-based datapoint buffer to answer .reqs, buffer incoming .ind updates
Calimero uses the Simple Logging Facade for Java (slf4j). Users can bind any desired logging frameworks. The default dependency is the Simple Logger. The simple logger logs everything to standard output, and can be configured via the file simplelogger.properties
, JVM system properties, or java
command line options, e.g., -Dorg.slf4j.simpleLogger.defaultLogLevel=trace
.
For unit tests, Calimero provides a test network consisting of a KNXnet/IP server and a virtual KNX network with two KNX devices. The complete test network is implemented in software, and can be executed in any J2SE runtime environment. The network provides the remote KNXnet/IP endpoint for executing unit tests for KNXnet/IP tunneling, busmonitoring, routing, device management, and KNX IP protocols. The same network setup is used for Calimero Travis CI.
Start the test network (gradle run
) in the directory "calimero-core/test/testnetwork-launcher" before running any KNXnet/IP or KNX IP tests. When using Gradle, KNXnet/IP tests can be excluded via useJUnitPlatform() { excludeTags 'knxnetip' }
.
Currently, the TP-UART and FT1.2 protocols can only be tested if the corresponding hardware is available.
- introduction provides code examples for programming with Calimero.
- calimero-tools offers command-line tools for (secure) KNX process communication, monitoring, and management, BAOS communication, and ETS 5 datapoint import.
- calimero-gui provides a graphical user interface (based on SWT) for (secure) process communication, monitoring, and management.
- calimero-server is the Calimero KNXnet/IP Server and provides KNXnet/IP (Secure) access to KNX networks.
- calimero-device is the communication stack to implement a KNX device.
- serial-native provides native libraries for serial port access (using JNI) on Windows, Linux, and MacOS.
- import-ets-xml imports ETS XML KNX datapoints for use with Calimero (ETS 5.7 and later is not supported, use calimero-tools).