com.github.calimero:calimero-core

Calimero, a free KNX network library


Keywords
ft12, java, knx, knx-ip, knx-usb, rf, tp-uart
Licenses
GPL-3.0/libpng-2.0/GPL-2.0-with-classpath-exception

Documentation

Calimero-core CI with Gradle

git clone https://github.com/calimero-project/calimero-core.git

Calimero-core provides (secure) KNX communication protocols, KNX datapoint & property access, and management functionality. JDK 17 (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.

Changes with Calimero v3 snapshots

Prior => New
Maven group ID com.github.calimero io.calimero
Modules n/a io.calimero.*
Packages tuwien.auto.calimero.* io.calimero.*
Logging prefix calimero.* io.calimero.*
Logging API SLF4J System.Logger

Supported Features

Access Protocols

  • 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)

Process Communication

  • DPT encoding/decoding of Java/KNX data types
  • Process Communicator client
  • Group Monitor
  • KNX Data Secure

Supported Datapoint Types (DPTs)

  • 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
  • 8.x - 2 octet signed value, e.g., Percent, Delta time seconds
  • 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, 8-bit Cannel Activation
  • 22.x - Bit array of length 16, implemented are DHW Controller Status, RHCC Status, Media Type, 16-bit Channel Activation
  • 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
  • 243.600 - color transition xyY
  • 249.600 - brightness & color temperature transition
  • 250.600 - brightness & color temperature control
  • 251.600 - RGBW color
  • 252.600 - relative control RGBW
  • 253.600 - relative control xyY
  • 254.600 - relative control RGB

Network Monitor / Busmonitor

Access via KNXnet/IP, KNX USB, KNX RF USB, TP-UART, and FT1.2

Raw Frame Decoding

  • TP1
  • KNX IP
  • PL110
  • RF

Management

  • KNX Management Layer
  • KNX Management Procedures
  • cEMI Local Device Management
  • KNX Data Secure

EMI Support

  • cEMI standard and extend L-Data
  • cEMI Busmonitor
  • cEMI Device Management
  • EMI1/2 standard L-Data
  • EMI1/2 Busmonitor

Network Buffer

  • State/command-based datapoint buffer to answer .reqs, buffer incoming .ind updates

Logging

Calimero uses the System.Logger. Bind any desired logging frameworks of your choice.

Testing

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 CI on Github.

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.

More Features, Tools, Examples

  • introduction provides code examples in Java and Kotlin 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).