• Stars
    star
    121
  • Rank 288,077 (Top 6 %)
  • Language
    Java
  • License
    Other
  • Created over 11 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Core library for KNX network access and management

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 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.

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