Skip to content

Core library for KNX network access and management

License

Notifications You must be signed in to change notification settings

oblaise/calimero-core

 
 

Repository files navigation

Calimero-core Build Status

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.

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)

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

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 Simple Logging Facade for Java (slf4j). Users can bind any desired logging frameworks. The default maven 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=warn.

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 for programming with Calimero.
  • calimero-tools offers command-line tools for KNX process communication, monitoring, and management.
  • calimero-gui provides a graphical user interface (based on SWT) for process communication, monitoring, and management.
  • calimero-server is the Calimero KNXnet/IP Server and provides KNXnet/IP 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.

About

Core library for KNX network access and management

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 99.9%
  • HTML 0.1%