# Changelog

## [6.2.1](https://github.com/Supergiovane/KNXUltimate/compare/v6.2.0...v6.2.1) (2026-10-19)


### Bug Fixes

* **cemi:** parse TPCI-only transport control frames ([278f92a](https://github.com/Supergiovane/KNXUltimate/commit/278f92a6b7eba49a9b8aef1c934cb571d37b2b67))

# [6.2.0](https://github.com/Supergiovane/KNXUltimate/compare/v6.0.8...v6.2.0) (2026-10-13)


### Features

* harden KNX Secure and tunnelling ([#110](https://github.com/Supergiovane/KNXUltimate/issues/110)) ([a0631c4](https://github.com/Supergiovane/KNXUltimate/commit/a0631c489645e811d2edf251ff5cd342234e28fc))

## [6.2.0](https://github.com/Supergiovane/KNXUltimate/compare/v6.0.8...v6.1.0) (2026-10-13)

Fixes from an external audit against ISO 22510:2019 (KNXnet/IP, incl. Secure), aligned with XKNX where the specification leaves room. Most stricter receive checks are opt-in. Keyrings without an ETS signature require `knxkeys_validate_signature: false`; malformed or unauthenticated Data Secure telegrams for keyed group addresses are dropped by default.

### Bug Fixes

* **secure:** keyring passwords and device authentication codes shorter than 8 characters were extracted with padding bytes (ETS pads to 32 bytes), so the connection could not be established.
* **secure:** verify the ETS keyring signature, as XKNX does: a wrong keyring password now fails with a clear error instead of loading unusable keys, and a keyring without a (non-empty) signature is rejected unless `knxkeys_validate_signature: false` is set. The padding of every decrypted password and code is also checked. When the trimmed password fails, the password is also tried exactly as given.
* **secure:** passwords and device authentication codes read from the keyring are no longer trimmed. A manually entered `deviceAuthenticationPassword` is tried exactly as given and, if different, without surrounding spaces.
* **secure:** Data Secure telegrams for a keyed group address that are truncated, carry an unsupported SCF or fail during decryption are dropped instead of being delivered undecrypted.
* **secure:** validate the `SESSION_RESPONSE` length (56 bytes, MAC included) before stopping its timer, so a short or invalid response fails the connection attempt instead of leaving the handshake hanging.
* **secure:** an invalid KNX/IP header on the TCP stream (length 0–5 or above 4096) closes the connection instead of wedging the parser; frames with a protocol version other than 1.0 are skipped.
* **secure:** Secure Wrappers carrying another session id are dropped; each new handshake forgets the previous session key and id, and during the handshake only the expected message is accepted, so frames of an earlier session can never be accepted after a reconnection.
* **secure:** handshake timeouts raised from 5 s to 10 s for slow gateways; minimum Secure Wrapper length is 44 bytes.
* **secure:** send `SESSION_STATUS` CLOSE when closing a secure TCP session; disconnect when the gateway sends `SESSION_STATUS` TIMEOUT or CLOSE. Status texts now match the specification (3 = timeout, 4 = keep-alive, 5 = close).
* **secure:** secure routing timer only moves forward; a `TIMER_NOTIFY` can no longer move it backwards.
* **secure:** secure routing ignores its own `TIMER_NOTIFY` looped back by multicast, so the first telegrams are sent with the router's timer instead of being discarded as outdated. When no router answers within the latency tolerance (at least 1 s), the local timer is used as before.
* **secure:** manual `TunnelTCP` configurations (no keyring) no longer need `tunnelInterfaceIndividualAddress`; it only selected an interface from the keyring.
* **secure:** outgoing Secure Wrappers and `TIMER_NOTIFY` use KNXUltimate's own serial number (`00006b6e7875`) instead of the gateway's (keyring mode), as XKNX does with its own; a shared serial could reuse the AES-CTR keystream of the gateway's frames.
* **secure:** MACs are compared in constant time; `KNX_DEBUG=1` no longer prints passwords, password hashes or keys.
* **cemi:** the additional information of `L_Data.ind`, `L_Data.con` and `L_Data.req` was sliced with the wrong end offset.
* **tcp:** no `TUNNELING_ACK` is sent over TCP (plain or secure), as required by the specification and as XKNX does; outgoing requests over TCP already did not wait for an ACK.
* **tunneling (UDP):** a `TUNNELING_REQUEST` with the same sequence number as the previous one (a repeat after a lost ACK) is ACKed again but not emitted twice, as XKNX does. Unlike XKNX, frames with another unexpected sequence number are still ACKed and emitted, for compatibility with gateways that number frames loosely.
* **tunneling (UDP):** a `TUNNELING_REQUEST` of our channel whose cEMI cannot be parsed is still ACKed, so the gateway does not repeat it or drop the tunnel.
* **tunneling:** `DISCONNECT_RESPONSE` (also while disconnecting) and `CONNECTIONSTATE_RESPONSE` for another channel are ignored; only traffic of our channel counts as a heartbeat answer.
* **tunneling:** frames shorter than the length declared in their KNX/IP header are dropped and extra trailing bytes are ignored (as XKNX); an unparsable `TUNNELING_REQUEST` is ACKed only when its KNX/IP and connection headers are valid.
* **tunneling:** send a `DISCONNECT_REQUEST` when the heartbeat fails, so gateways with a single tunnel slot free it.
* **tunneling:** the connect timeout starts when the `CONNECT_REQUEST` is sent (full 10 s); after `E_NO_MORE_CONNECTIONS` reconnects back off from 10 s up to 60 s.

### Features

* **secure:** `secureTunnelConfig.knxkeys_validate_signature` (default `true`) and `Keyring.load(..., { validateSignature })` to load keyrings that were not exported by ETS.
* **secure:** `secureTunnelConfig.groupKeys` passes Data Secure group keys directly, with or without a keyring.
* **secure:** `secureTunnelConfig.requireDeviceAuthentication` refuses the handshake when the gateway cannot be authenticated (default `false`).
* **secure:** `secureTunnelConfig.strictSecurity` drops plain telegrams on keyed group addresses, Data Secure telegrams from senders outside a sender list present in the keyring, and outdated secure routing frames (default `false`).
* **tcp:** `TunnelTCP` with `isSecureKNXEnabled: false` now tunnels over plain TCP.

### Tests

* Fix the secure gateway mock, which never answered `DISCONNECT_REQUEST` and `CONNECTIONSTATE_REQUEST`, and sign the keyring fixtures as ETS does.
* Cover keyring signature and short passwords with the ETS keyrings in `documents/`, Data Secure default and strict receive paths, `groupKeys`, `requireDeviceAuthentication`, `SESSION_STATUS` handling, invalid TCP headers, plain TCP tunnelling, repeated and unparsable tunnelling requests, channel checks, heartbeat failure and connect back-off.

## [6.0.8](https://github.com/Supergiovane/KNXUltimate/compare/v6.0.6...v6.0.8) (2026-09-29)


### Bug Fixes

* **secure:** restore Data Secure status reception in 6.0.7 ([7b14712](https://github.com/Supergiovane/KNXUltimate/commit/7b14712ea6b0a1d94e9bd14f7c6a42cf66b35696))

## [6.0.7](https://github.com/Supergiovane/KNXUltimate/compare/v6.0.6...v6.0.7) (2026-09-29)

### Bug Fixes

* **secure:** receive authenticated Data Secure group indications sent without an IP wrapper by Apricum/MDT gateways. Require an established tunnel, the matching channel, a known group key, valid MAC and fresh sender sequence; continue rejecting unprotected traffic. Fixes status updates missing in Node-RED after secure writes.

### Tests

* Cover unwrapped Data Secure reception, MAC tampering, replay across wrapped and unwrapped paths, invalid payloads, unknown group keys and mismatched tunnel channels.

## [6.0.6](https://github.com/Supergiovane/KNXUltimate/compare/v6.0.5...v6.0.6) (2026-09-14)


### Bug Fixes

* **network:** preserve the first suitable IPv4 address for each interface and honor explicit `localIPAddress` values, avoiding later aliases or VRRP/VIP addresses replacing the selected address and allowing stable UDP bindings ([#531](https://github.com/Supergiovane/node-red-contrib-knx-ultimate/issues/531), [fc3ccd3](https://github.com/Supergiovane/KNXUltimate/commit/fc3ccd3f26fb8851605c3e51d0c53fee213c2d50)).

## [6.0.5](https://github.com/Supergiovane/KNXUltimate/compare/v6.0.4...v6.0.5) (2026-09-13)


### Bug Fixes

* **core:** restore queue diagnostics for Node-RED ([34dda47](https://github.com/Supergiovane/KNXUltimate/commit/34dda470b1346f8fcfa1d4c27cf4bbdde002f44b))

## [6.0.5](https://github.com/Supergiovane/KNXUltimate/compare/v6.0.4...v6.0.5) (2026-09-13)

### Bug Fixes

* **core:** restore the public `getCurrentItemHandledByTheQueue()` method used by Node-RED queue diagnostics, fixing `getCurrentItemHandledByTheQueue is not a function` errors that interrupted sends, including periodic sends, while a tunnelling ACK was pending. Return the pending request's sequence number, or `undefined` safely when no ACK is pending, without changing queue or ACK handling.

### Tests

* cover periodic sends while waiting for an ACK, queue diagnostics during retries, calls before sending and after disconnection, and sequence counter wraparound.

## [6.0.4](https://github.com/Supergiovane/KNXUltimate/compare/v6.0.3...v6.0.4) (2026-09-13)


### Bug Fixes

* **tunneling:** isolate UDP control traffic from pending ACKs ([881f3e7](https://github.com/Supergiovane/KNXUltimate/commit/881f3e78ac8960b3ee830f17490490d2b63364b2))
* **tunneling:** send UDP acknowledgements, heartbeats and disconnect packets independently of the application queue, preserving logging and packet capture.
* **tunneling:** keep the outstanding request blocked until a successful ACK with the matching channel and sequence arrives; ignore unexpected, duplicate and unsuccessful ACKs.
* **tunneling:** preserve the original request across retries, cancel queued retries after a late ACK, and close the tunnel after retry exhaustion without sending the next sequence. Automatic reconnection remains available when enabled.

## [6.0.3](https://github.com/Supergiovane/KNXUltimate/compare/v6.0.2...v6.0.3) (2026-08-31)


### Features

* **core:** add automatic KNX reconnection ([4409bd8](https://github.com/Supergiovane/KNXUltimate/commit/4409bd8fb65ec5dcd8fcf0a9bfcd92ccbf252b1e))

## [6.0.2](https://github.com/Supergiovane/KNXUltimate/compare/v6.0.1...v6.0.2) (2026-07-31)


### Bug Fixes

* **secure:** use extended frames for long Data Secure APDUs ([b51960c](https://github.com/Supergiovane/KNXUltimate/commit/b51960c785aea1326e440a7d4e5e02c03102ca4c))

## [6.0.2](https://github.com/Supergiovane/KNXUltimate/compare/v6.0.1...v6.0.2) (2026-07-31)


### Bug Fixes

* **secure:** use Extended cEMI frames when Data Secure APDUs exceed the 15-octet Standard-frame limit ([#97](https://github.com/Supergiovane/KNXUltimate/issues/97))

### Tests

* cover the Standard/Extended boundary and every registered DPT family for outgoing Data Secure telegrams

## [6.0.1](https://github.com/Supergiovane/KNXUltimate/compare/v5.5.9...v6.0.1) (2026-06-30)


* feat(secure)!: validate KNX Secure receive path and release 6.0.0 (#95) ([7fc832e](https://github.com/Supergiovane/KNXUltimate/commit/7fc832e37cf191685934210d9dbd457ff39ffd4b)), closes [#95](https://github.com/Supergiovane/KNXUltimate/issues/95)


### BREAKING CHANGES

* the KNX/IP Secure and Data Secure receive path is now
cryptographically validated. Frames that fail authentication or freshness
checks are dropped instead of emitted as indication events.

- Verify SESSION_RESPONSE device-authentication MAC during the unicast
  handshake; a forged response aborts the connection.
- Verify SecureWrapper MAC and enforce a strictly increasing wrapper
  sequence per session (anti-replay); invalid/replayed wrappers dropped.
- Enforce Data Secure per-source 48-bit anti-replay and reject telegrams
  with an invalid MAC.
- Drop plaintext KNX/IP frames inside an established secure session.
- Data Secure sender sequence no longer wraps: throws when the 48-bit
  maximum is reached.
- New optional secureTunnelConfig.deviceAuthenticationPassword for manual
  (no keyring) configurations.

Bump to 6.0.0, update CHANGELOG and add README warning.


## [6.0.0](https://github.com/Supergiovane/KNXUltimate/compare/v5.5.9...v6.0.0) (2026-06-30)

### ⚠ BREAKING CHANGES

* **secure:** the KNX/IP Secure and Data Secure **receive path is now validated**. Frames that fail cryptographic authentication or freshness checks are **silently dropped instead of being emitted** as `indication` events. Code that previously (even if unintentionally) acted on forged, tampered or replayed secure telegrams will no longer receive them. This is a security fix, but it changes observable behaviour, hence the major version bump.
* **secure:** inside an established KNX/IP Secure session, **plaintext KNX/IP frames are now dropped** (only `SecureWrapper` frames and the initial `SESSION_RESPONSE` are accepted). A previously tolerated plaintext `CONNECT_RESPONSE` fallback is no longer honoured.
* **secure:** the Data Secure sender sequence (48-bit) **no longer wraps around**. When the maximum value is reached, secure sending throws instead of silently reusing a sequence number; new key material is required to continue.

### Features

* **secure:** verify the `SESSION_RESPONSE` device-authentication MAC during the unicast handshake before trusting the server's public key; a forged response now aborts the handshake.
* **secure:** verify the `SecureWrapper` MAC and enforce a strictly increasing wrapper sequence per session (anti-replay); invalid or replayed wrappers are dropped while keeping the session alive.
* **secure:** enforce Data Secure per-source anti-replay using the 48-bit sender sequence and reject telegrams with an invalid MAC.
* **secure:** new optional `secureTunnelConfig.deviceAuthenticationPassword` to supply the device authentication password in manual mode (no keyring). When a keyring is provided it is taken from the keyring automatically.

## [5.5.9](https://github.com/Supergiovane/KNXUltimate/compare/v5.5.8...v5.5.9) (2026-06-10)


### Bug Fixes

* closeSocket() never resolves on TCP, blocking disconnected event ([#93](https://github.com/Supergiovane/KNXUltimate/issues/93)) ([5a10b77](https://github.com/Supergiovane/KNXUltimate/commit/5a10b77123bd3cf04b5d6be50409bd122c835a30))

## [5.5.8](https://github.com/Supergiovane/KNXUltimate/compare/v5.5.7...v5.5.8) (2026-05-24)


### Bug Fixes

* **deps:** resolve npm audit vulnerabilities and update devDependencies ([d7c415f](https://github.com/Supergiovane/KNXUltimate/commit/d7c415fbd8367ada6bc351dee9e28d7a4d053452))
* **KNXClient:** export ConnectionState alias to correct ConncetionState typo ([9c12762](https://github.com/Supergiovane/KNXUltimate/commit/9c12762315607bfb89602dde6e9050ba383cb8f2))
* linter ([cb1b308](https://github.com/Supergiovane/KNXUltimate/commit/cb1b308b1074c0467c9550b7e2e5f1585aa85fb2))

## [5.5.7](https://github.com/Supergiovane/KNXUltimate/compare/v5.5.6...v5.5.7) (2026-05-18)


### Bug Fixes

* Allow timestamps as Date Input ([#90](https://github.com/Supergiovane/KNXUltimate/issues/90)) ([282d6dc](https://github.com/Supergiovane/KNXUltimate/commit/282d6dc1fe300d8f875c9a8f04be01b2ac3a5c72))

## [5.5.6](https://github.com/Supergiovane/KNXUltimate/compare/v5.5.5...v5.5.6) (2026-05-05)


### Features

* **dptlib:** complete KNX datapoints and add DPT23-27 ([3d55846](https://github.com/Supergiovane/KNXUltimate/commit/3d5584630d8f00e54f9e76ec6c57cdb51f4041b2))

## [5.5.5](https://github.com/Supergiovane/KNXUltimate/compare/v5.5.4...v5.5.5) (2026-05-05)


### Bug Fixes

* Update DPT 14 and 20 Metadata ([#89](https://github.com/Supergiovane/KNXUltimate/issues/89)) ([e1ce3ea](https://github.com/Supergiovane/KNXUltimate/commit/e1ce3ea91b9f50d86f223162387821eb2e210a1d))

## [5.5.4](https://github.com/Supergiovane/KNXUltimate/compare/v5.5.3...v5.5.4) (2026-05-04)


### Bug Fixes

* **dpt:** make resolve() tolerant to missing/unknown subtypes ([b9b9434](https://github.com/Supergiovane/KNXUltimate/commit/b9b9434980c6e0ab5fd3ae80a0e6d0c99810d441))

## [5.5.3](https://github.com/Supergiovane/KNXUltimate/compare/v5.5.2...v5.5.3) (2026-04-28)


### Bug Fixes

* **dptlib:** preserve DPT16 umlauts and trim null padding ([d4afd64](https://github.com/Supergiovane/KNXUltimate/commit/d4afd64ffca091ffd4cdb9cdb8594e710693326c))

## [5.5.2](https://github.com/Supergiovane/KNXUltimate/compare/v5.5.1...v5.5.2) (2026-04-14)


### Bug Fixes

* **dptlib:** preserve DPT method context in clone wrappers ([aa9d00e](https://github.com/Supergiovane/KNXUltimate/commit/aa9d00e5d7eee99ccab62b4edf6359b06b9db1d2))

## [5.5.1](https://github.com/Supergiovane/KNXUltimate/compare/v5.5.0...v5.5.1) (2026-04-14)

# [5.5.0](https://github.com/Supergiovane/KNXUltimate/compare/v5.4.0...v5.5.0) (2026-04-14)


### Bug Fixes

* **dptlib:** harden datapoint error paths and input guards ([388d862](https://github.com/Supergiovane/KNXUltimate/commit/388d8626fbd950f4eb1585934df8017ae6446dee))


### Features

* **logging:** improve DPT diagnostics and trim raw telegram noise ([d244f95](https://github.com/Supergiovane/KNXUltimate/commit/d244f95e7325ed527ca7682a54f4d7a9b605ba79))

# [5.4.0](https://github.com/Supergiovane/KNXUltimate/compare/v5.3.1...v5.4.0) (2026-03-23)


### Bug Fixes

* **core:** restore 5.2.11 transport baseline ([de4c952](https://github.com/Supergiovane/KNXUltimate/commit/de4c9522ec315742b9606162032a7e889418c356))

## [5.3.1](https://github.com/Supergiovane/KNXUltimate/compare/v5.3.0...v5.3.1) (2026-03-23)


### Bug Fixes

* **core:** restore `KNXClient` transport behavior to `5.2.11` baseline while keeping datapoint fixes from `5.3.x`
* **lint:** resolve queue cleanup warnings ([3fc4c9b](https://github.com/Supergiovane/KNXUltimate/commit/3fc4c9b048b0facf1d9d8c717ada31527decea5e))

# [5.3.0](https://github.com/Supergiovane/KNXUltimate/compare/v5.2.11...v5.3.0) (2026-03-23)


### Bug Fixes

* **core:** add queue aging and coalescing ([0e6976b](https://github.com/Supergiovane/KNXUltimate/commit/0e6976b62f9e799fb84a5acfa7e6203488284320))
* **core:** harden disconnect flow and DPT decoding ([b56b226](https://github.com/Supergiovane/KNXUltimate/commit/b56b2269622dd9bc777ee05ca2dff9c7d08eaceb))

## [5.2.11](https://github.com/Supergiovane/KNXUltimate/compare/v5.2.10...v5.2.11) (2026-03-16)

## [5.2.10](https://github.com/Supergiovane/KNXUltimate/compare/v5.2.9...v5.2.10) (2026-03-16)


### Bug Fixes

* linter ([fbe670b](https://github.com/Supergiovane/KNXUltimate/commit/fbe670bd69e8b27de2dc2ae31ab7d815a23f3987))

## [5.2.9](https://github.com/Supergiovane/KNXUltimate/compare/v5.2.8...v5.2.9) (2026-03-16)


### Bug Fixes

* correct DPT251 validity bit parsing ([d3254d4](https://github.com/Supergiovane/KNXUltimate/commit/d3254d4f7da106b8196d4fc9236b2662e7d1a74e))

## [5.2.8](https://github.com/Supergiovane/KNXUltimate/compare/v5.2.7...v5.2.8) (2026-02-18)


### Bug Fixes

* linter ([d1bcbea](https://github.com/Supergiovane/KNXUltimate/commit/d1bcbeaeb6a09a7e0fdb1fc930fa8051766b8740))

## [5.2.7](https://github.com/Supergiovane/KNXUltimate/compare/v5.2.6...v5.2.7) (2026-01-30)

## [5.2.6](https://github.com/Supergiovane/KNXUltimate/compare/v5.2.5...v5.2.6) (2026-01-21)


### Features

* **secure:** support knxkeys keyring as Buffer ([dcb366b](https://github.com/Supergiovane/KNXUltimate/commit/dcb366bc0ef56e1915525b9ee59016fe1a5be4de))

## [5.2.5](https://github.com/Supergiovane/KNXUltimate/compare/v5.2.4...v5.2.5) (2026-01-21)


### Features

* respondRaw added ([5ab7553](https://github.com/Supergiovane/KNXUltimate/commit/5ab7553e038b848669f69bc337d879a7db6f9669))

## [5.2.4](https://github.com/Supergiovane/KNXUltimate/compare/v5.2.3...v5.2.4) (2026-01-21)


### Bug Fixes

* **ft12:** satisfy eslint/prettier ([cdc26f4](https://github.com/Supergiovane/KNXUltimate/commit/cdc26f4930480797d4e4601975d77274c14ec0e8))

## [5.2.3](https://github.com/Supergiovane/KNXUltimate/compare/v5.2.2...v5.2.3) (2025-11-25)

## [5.2.2](https://github.com/Supergiovane/KNXUltimate/compare/v5.2.1...v5.2.2) (2025-11-25)

## [5.2.1](https://github.com/Supergiovane/KNXUltimate/compare/v5.2.0...v5.2.1) (2025-11-25)

# [5.2.0](https://github.com/Supergiovane/KNXUltimate/compare/v5.2.0-beta.0...v5.2.0) (2025-11-20)


### Features

* Kberry compatibility and Serial FT1.2 Data Security ([#73](https://github.com/Supergiovane/KNXUltimate/issues/73)) ([8d244d2](https://github.com/Supergiovane/KNXUltimate/commit/8d244d22fbc9c29b35a250011b65086b26831601))

# [5.2.0-beta.0](https://github.com/Supergiovane/KNXUltimate/compare/v5.1.4...v5.2.0-beta.0) (2025-11-18)


### Features

* Feature/serial ft12 interface ([#72](https://github.com/Supergiovane/KNXUltimate/issues/72)) ([e36e63a](https://github.com/Supergiovane/KNXUltimate/commit/e36e63a7d1ee29b4d0b2aef875e467a6b2b4ed78))

## [5.1.4](https://github.com/Supergiovane/KNXUltimate/compare/v5.1.3...v5.1.4) (2025-10-11)


### Features

* discovery methods send both multicast and unicast bursts in parallel so as not to miss gateways that only respond to one of the two transports. ([#71](https://github.com/Supergiovane/KNXUltimate/issues/71)) ([f95b6d8](https://github.com/Supergiovane/KNXUltimate/commit/f95b6d863d70369aa1fb9904177e0abfbcd6da14))

## [5.1.3](https://github.com/Supergiovane/KNXUltimate/compare/v5.1.2...v5.1.3) (2025-09-23)


### Features

* added more examples ([2ca8c36](https://github.com/Supergiovane/KNXUltimate/commit/2ca8c36e13b0aa64b149f7e8e9ab57b3fc3c8bee))

## [5.1.2](https://github.com/Supergiovane/KNXUltimate/compare/v5.1.1...v5.1.2) (2025-09-22)


### Features

* added mock secure server for tests ([80f2057](https://github.com/Supergiovane/KNXUltimate/commit/80f20579d5dbfdb04b0f81a724f6125c15ce33d1))
* added tests on sec primitives ([5dc5d40](https://github.com/Supergiovane/KNXUltimate/commit/5dc5d40ca643a3534520fc2e74f5789cf31c0fa3))
* more tests in secure ([db7b123](https://github.com/Supergiovane/KNXUltimate/commit/db7b123f2de211d7161644885250cbaee0729250))

## [5.1.1](https://github.com/Supergiovane/KNXUltimate/compare/v5.1.0...v5.1.1) (2025-09-22)


### Features

* added tunneluserID in case of manual credentials withoud keyring ([d98864e](https://github.com/Supergiovane/KNXUltimate/commit/d98864eef85f4766fde00ab50701ae48b4ac3015))

# [5.1.0](https://github.com/Supergiovane/KNXUltimate/compare/v5.0.0...v5.1.0) (2025-09-19)


### Features

* Added secure tunnel/password authentication other than the keyring file. ([#62](https://github.com/Supergiovane/KNXUltimate/issues/62)) ([ca83ed0](https://github.com/Supergiovane/KNXUltimate/commit/ca83ed038829b641d00ae038c30d51de38f6595a))

# [5.0.0](https://github.com/Supergiovane/KNXUltimate/compare/v5.0.0-beta.5...v5.0.0) (2025-09-16)


### Bug Fixes

* remover unwanted files ([34ca0ac](https://github.com/Supergiovane/KNXUltimate/commit/34ca0ac5e411a76ee0a88d7d077db0dcd00ff023))
* TunnelUDP keeps configured `physAddr` as its source IA; the tunnel-assigned IA from `CONNECT_RESPONSE` is applied only to TunnelTCP (secure), restoring the expected UDP behavior.

### Tests/CI

* Stabilized integration tests by avoiding real `os.networkInterfaces()` in CI and lowering log verbosity during tests.

### Docs

* Clarified TunnelUDP vs TunnelTCP individual-address behavior and added UDP tunnelling tips for ACK suppression and `localIPAddress`.

# [5.0.0-beta.5](https://github.com/Supergiovane/KNXUltimate/compare/v5.0.0-beta.4...v5.0.0-beta.5) (2025-09-15)


### Bug Fixes

* fixed multicast secure issue ([8289661](https://github.com/Supergiovane/KNXUltimate/commit/82896615e75b1d877061970545ff36498eddf4f1))


### Features

* auto tunnel selection in TCP Secure ([09d4c1c](https://github.com/Supergiovane/KNXUltimate/commit/09d4c1cd0f7be776b74c31c6f38dfef1e350cda3))

# [5.0.0-beta.4](https://github.com/Supergiovane/KNXUltimate/compare/v5.0.0-beta.3...v5.0.0-beta.4) (2025-09-13)


### Bug Fixes

* regression in secure connection keep alive. ([c6da3aa](https://github.com/Supergiovane/KNXUltimate/commit/c6da3aa6d97c6872709d8e4d74302dabb90432b3))

# [5.0.0-beta.3](https://github.com/Supergiovane/KNXUltimate/compare/v5.0.0-beta.2...v5.0.0-beta.3) (2025-09-13)


### Bug Fixes

* fided heartbeat in TunnelTCP secure ([06f24af](https://github.com/Supergiovane/KNXUltimate/commit/06f24af6618c822eeb16a91b3fcb5f7ec734066b))
* fixed tests and update README ([87c9b01](https://github.com/Supergiovane/KNXUltimate/commit/87c9b0136ad45e907a0d08b98286e4fa2d097a67))
* fixed wrong heartbeat log ([b46d5de](https://github.com/Supergiovane/KNXUltimate/commit/b46d5ded0ea73d1ce66738d84e6e3a91bd2026a0))

# [5.0.0-beta.2](https://github.com/Supergiovane/KNXUltimate/compare/v5.0.0-beta.1...v5.0.0-beta.2) (2025-09-12)

# [5.0.0-beta.1](https://github.com/Supergiovane/KNXUltimate/compare/v5.0.0-beta.0...v5.0.0-beta.1) (2025-09-11)

# [5.0.0-beta.0](https://github.com/Supergiovane/KNXUltimate/compare/v4.1.3...v5.0.0-beta.0) (2025-09-11)


### Bug Fixes

* [#23](https://github.com/Supergiovane/KNXUltimate/issues/23) writeRaw broken with length <= 6bits ([#24](https://github.com/Supergiovane/KNXUltimate/issues/24)) ([bfbc7ab](https://github.com/Supergiovane/KNXUltimate/commit/bfbc7abde6f68ac4e8d39f386db073493311684d))
* [#30](https://github.com/Supergiovane/KNXUltimate/issues/30) short value 0x3f decoding ([#29](https://github.com/Supergiovane/KNXUltimate/issues/29)) ([34b21be](https://github.com/Supergiovane/KNXUltimate/commit/34b21bee58106c43229c29ee4656eb0a431aa3c2))
* add build step to ci ([0618bc7](https://github.com/Supergiovane/KNXUltimate/commit/0618bc7dbf3be13ccb87c269f2cdfe4592599e33))
* add missing helps in dpts ([be3dee3](https://github.com/Supergiovane/KNXUltimate/commit/be3dee3381cfa14abd17f13cfd3700119e89e530))
* async closeSocket thtows an error if the socket is already closed. ([f81d1d0](https://github.com/Supergiovane/KNXUltimate/commit/f81d1d00c1459da71d34c49786d690e1ed878cf6))
* better checks of socket ready state ([#39](https://github.com/Supergiovane/KNXUltimate/issues/39)) ([a65d4b1](https://github.com/Supergiovane/KNXUltimate/commit/a65d4b1f9825991a9d113d5508e2680138722358))
* better rounding on dpt 9.001 ([#33](https://github.com/Supergiovane/KNXUltimate/issues/33)) ([30fe11d](https://github.com/Supergiovane/KNXUltimate/commit/30fe11dc9f6a5d96d061bb2a54b7cc2a34dba3d3)), closes [#32](https://github.com/Supergiovane/KNXUltimate/issues/32)
* better timers management for race conditions and leak prevention ([#17](https://github.com/Supergiovane/KNXUltimate/issues/17)) ([8ffcd93](https://github.com/Supergiovane/KNXUltimate/commit/8ffcd9308ac4e5dcc2e7debc3b7f9748a1cdc364))
* clear the queueitem in case of errors ([e7a718d](https://github.com/Supergiovane/KNXUltimate/commit/e7a718d482db9917b252f97f8132a97c176f9367))
* client close ([fd91d96](https://github.com/Supergiovane/KNXUltimate/commit/fd91d96898f3ad16f4a8e31ad2dc024fb53a7f45))
* disconnect request not sent properly in KNXClient.ts ([#55](https://github.com/Supergiovane/KNXUltimate/issues/55)) ([0de4c00](https://github.com/Supergiovane/KNXUltimate/commit/0de4c005e1b24b82b882d6d6f7f6c9cdac23f58d))
* ensure _clearToSend is correctly set during discovery ([#34](https://github.com/Supergiovane/KNXUltimate/issues/34)) ([5d4a2e4](https://github.com/Supergiovane/KNXUltimate/commit/5d4a2e4d8581c87c67f0c8c98ec14d43ba208e64))
* examples ([4c26f5a](https://github.com/Supergiovane/KNXUltimate/commit/4c26f5a87f3a822d4309448029924d5b886773e6))
* exiting the queue loop after error ([6d67807](https://github.com/Supergiovane/KNXUltimate/commit/6d678071442c50e9cf9e9ceb6464abfa44f0f88a))
* export all packet types ([196f712](https://github.com/Supergiovane/KNXUltimate/commit/196f712e757721031026383c191c1a7de6c6b60d))
* export dptlib ([a32d2ec](https://github.com/Supergiovane/KNXUltimate/commit/a32d2ec7355106677e88ff1a5fe3f1a59af34d82))
* finish conversion of curve25519 ([1e2743a](https://github.com/Supergiovane/KNXUltimate/commit/1e2743a6d8583b1a60fcfa53ee14be0a72f7e00b))
* fix DPT10.001 Time error when time passed as string ([ad2c314](https://github.com/Supergiovane/KNXUltimate/commit/ad2c314dab3a407df194eb0ab1f88a8af5a183ba))
* fix missing "test" folder ([f24f5f2](https://github.com/Supergiovane/KNXUltimate/commit/f24f5f240c0afa6ee6166626d7b370a887de1fd4))
* fix multicast socket, by removing the local ip interface from the binding ([99e1176](https://github.com/Supergiovane/KNXUltimate/commit/99e11766df74ccf956fdbd291bf0ec42a23da3ea))
* fixed an issue when "suppress ACK request" was set to true. ([1c70745](https://github.com/Supergiovane/KNXUltimate/commit/1c7074577a0517c1f46099bfd3a9808c90d0b19e))
* fixed an uncaught exception ([f9645c4](https://github.com/Supergiovane/KNXUltimate/commit/f9645c44bf5baefcb31ddd86ff9cf81ee411d876))
* fixed base beta release ([56e7f96](https://github.com/Supergiovane/KNXUltimate/commit/56e7f968758eef7401e1f135a7059d5b5b685904))
* fixed DPT6002 not showing up ([a4e95dd](https://github.com/Supergiovane/KNXUltimate/commit/a4e95ddb682dc6389ce64cb4d6fa5234a3764080))
* Fixed import issue ([c666954](https://github.com/Supergiovane/KNXUltimate/commit/c666954354707ca896ceb3597e53340809f33414))
* fixed lint issues in new DPT 6002 ([1b30857](https://github.com/Supergiovane/KNXUltimate/commit/1b308574dc046f677651946517c64885c2d27d11))
* fixed queue ACK issue. Now, the replies from request coming from the KNX Gateway, are put as priority item in the kNX output queue. ([76ded4b](https://github.com/Supergiovane/KNXUltimate/commit/76ded4baf0a8a8a62c8634135c070b63df786119))
* improve messages types ([b6c9f49](https://github.com/Supergiovane/KNXUltimate/commit/b6c9f49e4c86ce5ae626f4023b191ca62adb33c3))
* improved disconnect logic ([8e55945](https://github.com/Supergiovane/KNXUltimate/commit/8e5594544895aefa98c8d24d6b1fc8dc0f607a4c))
* improved types of events ([4658b45](https://github.com/Supergiovane/KNXUltimate/commit/4658b4565aa473d7e2eed242c5d9706069300404))
* index.ts of dtplib was whrowing an unmeaningful error. ([#47](https://github.com/Supergiovane/KNXUltimate/issues/47)) ([d517a82](https://github.com/Supergiovane/KNXUltimate/commit/d517a828ae11a54e7ba20fe85dfc3e6fe81dd767))
* ipAddressHelper uncatched error when running on raspberry pi, having interfaces without any ip. ([#44](https://github.com/Supergiovane/KNXUltimate/issues/44)) ([4b29af6](https://github.com/Supergiovane/KNXUltimate/commit/4b29af6f0ab86686e5510d9d57f6152975e063eb))
* issue where DPT9 was giving error ([#21](https://github.com/Supergiovane/KNXUltimate/issues/21)) ([f0c9120](https://github.com/Supergiovane/KNXUltimate/commit/f0c91207dd95a4ca1b0e48567bdfb264f984b93e))
* limiter improvements ([#28](https://github.com/Supergiovane/KNXUltimate/issues/28)) ([90ca11f](https://github.com/Supergiovane/KNXUltimate/commit/90ca11fa47e903e41cdefcf0cf2ed9a7e0518252))
* logger and deprecated buffer `slice` to `subarray` ([ddd6733](https://github.com/Supergiovane/KNXUltimate/commit/ddd6733be7852621a350654ac44d41ea2481247b))
* make release-it adding a patch release instead of main release. ([#51](https://github.com/Supergiovane/KNXUltimate/issues/51)) ([22bf2e9](https://github.com/Supergiovane/KNXUltimate/commit/22bf2e947f0d209da7f98ece081d6df2370b39f8))
* refactor method names and added js docs ([#19](https://github.com/Supergiovane/KNXUltimate/issues/19)) ([0bf6af4](https://github.com/Supergiovane/KNXUltimate/commit/0bf6af436fdcca6078dc786bf3336496f01f48e5))
* remove many useless try catches ([3c528f1](https://github.com/Supergiovane/KNXUltimate/commit/3c528f17ef896a7d01049780dd35185de29dae7a))
* remove references to `KNXEthInterface` ([2c1912f](https://github.com/Supergiovane/KNXUltimate/commit/2c1912f805d344edf3ea820e2035c669002e5bfd))
* removed the "test" folder from the include array ([b7341c9](https://github.com/Supergiovane/KNXUltimate/commit/b7341c961128aa7430d48f4a1cb99ec8ac464470))
* removed unwanted "desc" prop from DatapointConfig root. ([#48](https://github.com/Supergiovane/KNXUltimate/issues/48)) ([16d7538](https://github.com/Supergiovane/KNXUltimate/commit/16d753839771469b281720630548c85fdc0a7e14))
* socket end ([64a6296](https://github.com/Supergiovane/KNXUltimate/commit/64a62962395b080d7ef3d73d00b4a050dc783e94))
* some other types ([5d84716](https://github.com/Supergiovane/KNXUltimate/commit/5d847160fa3bcdb8c71c205c65cc38d47e73a282))
* some types ([b01ef85](https://github.com/Supergiovane/KNXUltimate/commit/b01ef8594384a6209dd276cc6873aa42b95154c6))
* test connect/disconnect ([b378c6a](https://github.com/Supergiovane/KNXUltimate/commit/b378c6a8a13ea48ab3ce1fe592fb1c06ec362bd4))
* the loglevel is now fixed. ([4faeab4](https://github.com/Supergiovane/KNXUltimate/commit/4faeab49dad6a4e4c7bfa27cb7131d20f5b67368))
* the tunnel socket creation function (createSocket), adding reusable option and specifying the port. This will likely prevent some UDP packets not arriving at the socket,  due to operating system routing restrictions. ([fed7e20](https://github.com/Supergiovane/KNXUltimate/commit/fed7e20f72bf6d614cc159b0b1c291878ff9117a))
* tlvinfo type ([1972fee](https://github.com/Supergiovane/KNXUltimate/commit/1972fee658364a2abb71d46c7e4a7305c99ccd59))
* typo ([f5c461c](https://github.com/Supergiovane/KNXUltimate/commit/f5c461cf01984a9b352d27bd8b2ff5ab3e8644ce))
* typo on knx client ([53e6b1b](https://github.com/Supergiovane/KNXUltimate/commit/53e6b1b65a35a2a68b697d5987b151c27bc39096))
* updated gitignore to exclude some personal keys ([f4b7d09](https://github.com/Supergiovane/KNXUltimate/commit/f4b7d09a68eef6e9253382f27d22d390f6b0dba2))
* use destroy for TCP socket close ([d00359f](https://github.com/Supergiovane/KNXUltimate/commit/d00359fa12f35e2bbbbb5a11a9fc11901b37a8b2))
* useless statics ([8da73f2](https://github.com/Supergiovane/KNXUltimate/commit/8da73f23d8bf51074735c03f2c618f77fb8524c1))
* vscode default fomatter ([c267cbf](https://github.com/Supergiovane/KNXUltimate/commit/c267cbff8681d07bc8de880b4d80b9489b017216))
* wrong address parsing ([e529650](https://github.com/Supergiovane/KNXUltimate/commit/e52965061adbf56e645ad63f48f902c0add00cac))
* wrong overload of `discovery` method ([709b7d1](https://github.com/Supergiovane/KNXUltimate/commit/709b7d1827b3fec995cf5f1f553651eb59f3587e))


* feat!: implemented KNX routing secure (#60) ([18671d6](https://github.com/Supergiovane/KNXUltimate/commit/18671d6c1f77c331f0ce513bddb14fa51e1a087a)), closes [#60](https://github.com/Supergiovane/KNXUltimate/issues/60)


### Features

* Ad DPT 14.1200 ([#50](https://github.com/Supergiovane/KNXUltimate/issues/50)) ([7830ae3](https://github.com/Supergiovane/KNXUltimate/commit/7830ae3bc994cafa799b9b7d25c2235a5399d5d8))
* Add Hager TXA223/225 custom status DPT 60002 ([cb66cdd](https://github.com/Supergiovane/KNXUltimate/commit/cb66cddceed04b8c9091feed059b6a11fc823587))
* added all subtypes to datapoint 20.x ([#45](https://github.com/Supergiovane/KNXUltimate/issues/45)) ([ce436c0](https://github.com/Supergiovane/KNXUltimate/commit/ce436c0df3cbd778dcb6f818f3f9b0a35853d8b3))
* Added first files for support to KNX Secure and Data Secure Tunneling ([e4fa892](https://github.com/Supergiovane/KNXUltimate/commit/e4fa89202ca5b05031f4f46774456b9fe9cf30cc))
* added getGatewayDescription method, to gather infos of the connected gateway ([9c6ae5d](https://github.com/Supergiovane/KNXUltimate/commit/9c6ae5d7abb12c568515a3790f16827e23199907))
* added src and destination addresses in the LDataInd LOG. ([#46](https://github.com/Supergiovane/KNXUltimate/issues/46)) ([a2f53e2](https://github.com/Supergiovane/KNXUltimate/commit/a2f53e21f934a971e8f2340831f812390f7ad863))
* added the gatewaydescription.ts sample ([b68427c](https://github.com/Supergiovane/KNXUltimate/commit/b68427cf88bd3e6d7e09f5b0ebd50b1fc165af92))
* added the KNX/IP Gateway description gatherer, wich contains the gateway's name, tunneling/routing modes etc.. ([97c5bdc](https://github.com/Supergiovane/KNXUltimate/commit/97c5bdc9a54a387f2466da2c6f60242d808370e4))
* client and other types ([06ea902](https://github.com/Supergiovane/KNXUltimate/commit/06ea9028e3018e596042b36719bcf7fa5273b4c3))
* device info in "discover", added KNXClient.getGatewayDescription ([#40](https://github.com/Supergiovane/KNXUltimate/issues/40)) ([06c7ed6](https://github.com/Supergiovane/KNXUltimate/commit/06c7ed661f0cdec141d95feb6a49685e0fd41cff)), closes [/github.com/Supergiovane/KNXUltimate/pull/40#discussion_r1850563396](https://github.com//github.com/Supergiovane/KNXUltimate/pull/40/issues/discussion_r1850563396)
* discovery ([#15](https://github.com/Supergiovane/KNXUltimate/issues/15)) ([087477e](https://github.com/Supergiovane/KNXUltimate/commit/087477ed86ab62951d5cb09d81f0918b326d9251))
* eslint + prettier ([6c10385](https://github.com/Supergiovane/KNXUltimate/commit/6c1038555430c11fb1b681d60ccb54a43639e328))
* finish converting dptlib ([6d5e75b](https://github.com/Supergiovane/KNXUltimate/commit/6d5e75bea73bda60b2e65159e6ed3641c2f0a218))
* going on ([7ebdec3](https://github.com/Supergiovane/KNXUltimate/commit/7ebdec3e4f82a53f79964f45405491eea8c9e8cb))
* going on with protcol ([0fe5d62](https://github.com/Supergiovane/KNXUltimate/commit/0fe5d6290f17c1424c7cccf1436f07d91c2dc9e5))
* going on with refactor ([a57efb3](https://github.com/Supergiovane/KNXUltimate/commit/a57efb35845096fca27747303a57f4e0815262d4))
* Preliminary support for knx virtual & ACK fix ([#53](https://github.com/Supergiovane/KNXUltimate/issues/53)) ([abd36a9](https://github.com/Supergiovane/KNXUltimate/commit/abd36a92040cc56906c1ecbfdd5267780f6b6b6a))
* protocol cemi conversion ([5e31a0a](https://github.com/Supergiovane/KNXUltimate/commit/5e31a0ad11f63fa3a8b34b98f6e37f2068b21d8a))
* refactor errors ([c8623e1](https://github.com/Supergiovane/KNXUltimate/commit/c8623e1b49e87404bb20cd626f399ebf18673529))
* securwe keyring ([3574fe0](https://github.com/Supergiovane/KNXUltimate/commit/3574fe0fedebb7f8e2de5c2dfbaf67d7a5f24a2d))
* transparent KNX queue. The sent telegrams are now queued and transmitted to the bus by obeying the time interval specified by the new property "KNXQueueSendIntervalMilliseconds" ([d4e8fd3](https://github.com/Supergiovane/KNXUltimate/commit/d4e8fd3e182e2db282e5bf151604d1777846f3be))
* Turn unknown error 0x25 to E_NO_MORE_UNIQUE_CONNECTIONS ([deabcfd](https://github.com/Supergiovane/KNXUltimate/commit/deabcfdfda802a116f3955e99403546a08ce81b1))
* typed event emitter ([ea29beb](https://github.com/Supergiovane/KNXUltimate/commit/ea29bebffaaf448f5928683167b1ea00992178d7))
* typescript refactor ([81d00af](https://github.com/Supergiovane/KNXUltimate/commit/81d00afe218314e33cbfd5fef059352f6a63dc13))
* zio cantante aggiungere qui la porca di quella merdassa perchè non committa vacca mincha merdosa ([f2fe52c](https://github.com/Supergiovane/KNXUltimate/commit/f2fe52c3b83442fc7f05318cfc8500f89c89c21f))


### BREAKING CHANGES

* deleted the echoLocalTelegramsInTunneling property. If you don't know what it is, it's not a breaking change for you.

* doc: updated docs.

* fix: fixed test fails

* fix: lint da figa!!

* chore: workaround test

* fix: caxxo

## [4.1.3](https://github.com/Supergiovane/KNXUltimate/compare/v4.1.2...v4.1.3) (2025-05-16)


### Bug Fixes

* disconnect request not sent properly in KNXClient.ts ([#55](https://github.com/Supergiovane/KNXUltimate/issues/55)) ([4253064](https://github.com/Supergiovane/KNXUltimate/commit/4253064ad4d96cb5898ec8dd16ac40b0ed94041a))

## [4.1.2](https://github.com/Supergiovane/KNXUltimate/compare/v4.1.1...v4.1.2) (2025-04-30)


### Features

* Preliminary support for knx virtual & ACK fix ([#53](https://github.com/Supergiovane/KNXUltimate/issues/53)) ([d2a340a](https://github.com/Supergiovane/KNXUltimate/commit/d2a340a91e7bd1524923421f67a7a69ea8dff025))

## [4.1.1](https://github.com/Supergiovane/KNXUltimate/compare/v4.1.0...v4.1.1) (2025-04-16)


### Bug Fixes

* make release-it adding a patch release instead of main release. ([#51](https://github.com/Supergiovane/KNXUltimate/issues/51)) ([211c0ef](https://github.com/Supergiovane/KNXUltimate/commit/211c0eff1cdcde23fed0a29abb2921b25b97ff7c))


### Features

* Ad DPT 14.1200 ([#50](https://github.com/Supergiovane/KNXUltimate/issues/50)) ([76eb6ed](https://github.com/Supergiovane/KNXUltimate/commit/76eb6edce953ca9c9f7b8b29fa227c58d5fa40d9))

# [4.1.0](https://github.com/Supergiovane/KNXUltimate/compare/v4.1.0-beta.10...v4.1.0) (2025-04-12)


### Bug Fixes

* removed unwanted "desc" prop from DatapointConfig root. ([#48](https://github.com/Supergiovane/KNXUltimate/issues/48)) ([a73166a](https://github.com/Supergiovane/KNXUltimate/commit/a73166abdbe8ff035e1ed55d2ebb8e59c5f04ebe))

# [4.1.0-beta.10](https://github.com/Supergiovane/KNXUltimate/compare/v4.1.0-beta.9...v4.1.0-beta.10) (2025-03-12)


### Bug Fixes

* index.ts of dtplib was whrowing an unmeaningful error. ([#47](https://github.com/Supergiovane/KNXUltimate/issues/47)) ([168d73a](https://github.com/Supergiovane/KNXUltimate/commit/168d73a106a1194ff707390ffbd17899eeb499fe))

# [4.1.0-beta.9](https://github.com/Supergiovane/KNXUltimate/compare/v4.1.0-beta.8...v4.1.0-beta.9) (2025-03-04)


### Features

* added src and destination addresses in the LDataInd LOG. ([#46](https://github.com/Supergiovane/KNXUltimate/issues/46)) ([1f5947d](https://github.com/Supergiovane/KNXUltimate/commit/1f5947dcd2ec61337cc6cfdbc10a0e04728d6722))

# [4.1.0-beta.8](https://github.com/Supergiovane/KNXUltimate/compare/v4.1.0-beta.7...v4.1.0-beta.8) (2025-01-28)


### Features

* added all subtypes to datapoint 20.x ([#45](https://github.com/Supergiovane/KNXUltimate/issues/45)) ([9051dbe](https://github.com/Supergiovane/KNXUltimate/commit/9051dbeadd7bc379dc2487454a2663ec007d91a4))

# [4.1.0-beta.7](https://github.com/Supergiovane/KNXUltimate/compare/v4.1.0-beta.4...v4.1.0-beta.7) (2024-12-30)


### Bug Fixes

* ipAddressHelper uncatched error when running on raspberry pi, having interfaces without any ip. ([#44](https://github.com/Supergiovane/KNXUltimate/issues/44)) ([a9e46ee](https://github.com/Supergiovane/KNXUltimate/commit/a9e46ee53c08f0d355acf454cb3515f523aee37a))

# [4.1.0-beta.4](https://github.com/Supergiovane/KNXUltimate/compare/v4.1.0-beta.3...v4.1.0-beta.4) (2024-12-07)

# [4.1.0-beta.3](https://github.com/Supergiovane/KNXUltimate/compare/v4.1.0-beta.2...v4.1.0-beta.3) (2024-12-07)

# [4.1.0-beta.2](https://github.com/Supergiovane/KNXUltimate/compare/v4.1.0-beta.1...v4.1.0-beta.2) (2024-12-06)

# [4.1.0-beta.1](https://github.com/Supergiovane/KNXUltimate/compare/v4.0.0-beta.6...v4.1.0-beta.1) (2024-11-21)


### Bug Fixes

* better checks of socket ready state ([#39](https://github.com/Supergiovane/KNXUltimate/issues/39)) ([92a2172](https://github.com/Supergiovane/KNXUltimate/commit/92a2172968e93ab75b22e76429f87e934b8d8979))
* fixed base beta release ([c9dfa79](https://github.com/Supergiovane/KNXUltimate/commit/c9dfa79d5d9abbe3d1bb023bfbab74a902a011c2))


### Features

* device info in "discover", added KNXClient.getGatewayDescription ([#40](https://github.com/Supergiovane/KNXUltimate/issues/40)) ([fede7fd](https://github.com/Supergiovane/KNXUltimate/commit/fede7fd81d86b817dca44e2aaf4489de17ead511)), closes [/github.com/Supergiovane/KNXUltimate/pull/40#discussion_r1850563396](https://github.com//github.com/Supergiovane/KNXUltimate/pull/40/issues/discussion_r1850563396)

# [4.0.0-beta.6](https://github.com/Supergiovane/KNXUltimate/compare/v4.0.0-beta.5...v4.0.0-beta.6) (2024-11-18)


### Bug Fixes

* clear the queueitem in case of errors ([393b818](https://github.com/Supergiovane/KNXUltimate/commit/393b818b9f33aac3771523e7c793d905eed4bdf6))
* exiting the queue loop after error ([0bb3c19](https://github.com/Supergiovane/KNXUltimate/commit/0bb3c193abcecba3554e6ff96b3f0e383c7e14cf))
* fixed an uncaught exception ([b48a5b1](https://github.com/Supergiovane/KNXUltimate/commit/b48a5b1665e4446bf89062f5fbc9ab5f1e4af61d))

# [4.0.0-beta.5](https://github.com/Supergiovane/KNXUltimate/compare/v4.0.0-beta.4...v4.0.0-beta.5) (2024-11-17)

# [4.0.0-beta.4](https://github.com/Supergiovane/KNXUltimate/compare/v4.0.0-beta.3...v4.0.0-beta.4) (2024-11-15)


### Bug Fixes

* fix multicast socket, by removing the local ip interface from the binding ([ca01449](https://github.com/Supergiovane/KNXUltimate/commit/ca01449873f94f6c5791d42fa5d4ff7967b42d5b))

# [4.0.0-beta.3](https://github.com/Supergiovane/KNXUltimate/compare/v4.0.0-beta.2...v4.0.0-beta.3) (2024-11-15)


### Bug Fixes

* fix missing "test" folder ([821e398](https://github.com/Supergiovane/KNXUltimate/commit/821e39820f936e3b568c05573565a0dc8be1cbb3))
* removed the "test" folder from the include array ([742a028](https://github.com/Supergiovane/KNXUltimate/commit/742a028fec4a122f7d049c766b819ba6fc5308bf))
* the tunnel socket creation function (createSocket), adding reusable option and specifying the port. This will likely prevent some UDP packets not arriving at the socket,  due to operating system routing restrictions. ([3fdd938](https://github.com/Supergiovane/KNXUltimate/commit/3fdd9383191bd3a842bf165448714784fc89a52b))


### Features

* added getGatewayDescription method, to gather infos of the connected gateway ([88b883a](https://github.com/Supergiovane/KNXUltimate/commit/88b883a5226cddbeea22864a2c848a249b7b6789))
* added the gatewaydescription.ts sample ([41b1f66](https://github.com/Supergiovane/KNXUltimate/commit/41b1f66679098f9c61fa162640ca83fdc887e585))
* added the KNX/IP Gateway description gatherer, wich contains the gateway's name, tunneling/routing modes etc.. ([f99170f](https://github.com/Supergiovane/KNXUltimate/commit/f99170ff63216ec0453a21aa51106c23dc622974))

# [4.0.0-beta.2](https://github.com/Supergiovane/KNXUltimate/compare/v4.0.0-beta.1...v4.0.0-beta.2) (2024-10-17)

# [4.0.0-beta.1](https://github.com/Supergiovane/KNXUltimate/compare/v4.0.0-beta.0...v4.0.0-beta.1) (2024-10-17)


### Bug Fixes

* [#30](https://github.com/Supergiovane/KNXUltimate/issues/30) short value 0x3f decoding ([#29](https://github.com/Supergiovane/KNXUltimate/issues/29)) ([d103ff2](https://github.com/Supergiovane/KNXUltimate/commit/d103ff2aec5c77fb5b0182b2859f7f6e0a0ef399))
* better rounding on dpt 9.001 ([#33](https://github.com/Supergiovane/KNXUltimate/issues/33)) ([4d706bd](https://github.com/Supergiovane/KNXUltimate/commit/4d706bdca939ce6498d6523cf7560e171c7a4469)), closes [#32](https://github.com/Supergiovane/KNXUltimate/issues/32)
* ensure _clearToSend is correctly set during discovery ([#34](https://github.com/Supergiovane/KNXUltimate/issues/34)) ([7640855](https://github.com/Supergiovane/KNXUltimate/commit/7640855e8ed663bc4cd8eeb1e79597680acb96db))

# [4.0.0-beta.0](https://github.com/Supergiovane/KNXUltimate/compare/v3.0.4...v4.0.0-beta.0) (2024-10-15)


### Bug Fixes

* limiter improvements ([#28](https://github.com/Supergiovane/KNXUltimate/issues/28)) ([e78a8c8](https://github.com/Supergiovane/KNXUltimate/commit/e78a8c844c79a5a959f1c05f9320b7d4bceec669))

## [3.0.4](https://github.com/Supergiovane/KNXUltimate/compare/v3.0.3...v3.0.4) (2024-10-08)

## [3.0.3](https://github.com/Supergiovane/KNXUltimate/compare/v3.0.2...v3.0.3) (2024-09-16)

## [3.0.2](https://github.com/Supergiovane/KNXUltimate/compare/v3.0.1...v3.0.2) (2024-09-16)


### Bug Fixes

* fixed queue ACK issue. Now, the replies from request coming from the KNX Gateway, are put as priority item in the kNX output queue. ([93ca4cc](https://github.com/Supergiovane/KNXUltimate/commit/93ca4ccdd4b49c832016ff4cf33e7a7c8ea35ba2))

## [3.0.1](https://github.com/Supergiovane/KNXUltimate/compare/v3.0.0...v3.0.1) (2024-09-16)


### Bug Fixes

* fixed an issue when "suppress ACK request" was set to true. ([83a5f5d](https://github.com/Supergiovane/KNXUltimate/commit/83a5f5dd77751d547976ab6a45c27e9701135b07))

# [3.0.0](https://github.com/Supergiovane/KNXUltimate/compare/v3.0.0-beta.1...v3.0.0) (2024-09-15)

# [3.0.0-beta.1](https://github.com/Supergiovane/KNXUltimate/compare/v3.0.0-beta.0...v3.0.0-beta.1) (2024-09-12)


### Bug Fixes

* Fixed import issue ([e232fc7](https://github.com/Supergiovane/KNXUltimate/commit/e232fc7d1262fe8605f86eb7fc8782a1efe61c47))

# [3.0.0-beta.0](https://github.com/Supergiovane/KNXUltimate/compare/v2.3.5...v3.0.0-beta.0) (2024-09-08)


### Features

* transparent KNX queue. The sent telegrams are now queued and transmitted to the bus by obeying the time interval specified by the new property "KNXQueueSendIntervalMilliseconds" ([93a65c9](https://github.com/Supergiovane/KNXUltimate/commit/93a65c97c426977b69b8c4f3044755229ad89b3a))

## [2.3.5](https://github.com/Supergiovane/KNXUltimate/compare/v2.3.4...v2.3.5) (2024-07-08)

## [2.3.4](https://github.com/Supergiovane/KNXUltimate/compare/v2.3.3...v2.3.4) (2024-07-08)


### Bug Fixes

* async closeSocket thtows an error if the socket is already closed. ([31baf39](https://github.com/Supergiovane/KNXUltimate/commit/31baf39ade13d6d329284342a7bc3a6c13cf4aa0))

## [2.3.3](https://github.com/Supergiovane/KNXUltimate/compare/v2.3.2...v2.3.3) (2024-06-14)


### Bug Fixes

* vscode default fomatter ([82ce441](https://github.com/Supergiovane/KNXUltimate/commit/82ce441955f714cc79b26ee85429333200b9cab3))

## [2.3.2](https://github.com/Supergiovane/KNXUltimate/compare/v2.3.1...v2.3.2) (2024-06-14)


### Bug Fixes

* fix DPT10.001 Time error when time passed as string ([23a27ab](https://github.com/Supergiovane/KNXUltimate/commit/23a27ab40176af11bdc047cb09c2fe31ae4b22fd))

## [2.3.1](https://github.com/Supergiovane/KNXUltimate/compare/v2.3.0...v2.3.1) (2024-06-13)


### Bug Fixes

* fixed DPT6002 not showing up ([593e548](https://github.com/Supergiovane/KNXUltimate/commit/593e548f74aebbb4c15cd48f98eb67aa93383391))

# [2.3.0](https://github.com/Supergiovane/KNXUltimate/compare/v2.2.0...v2.3.0) (2024-06-13)


### Bug Fixes

* fixed lint issues in new DPT 6002 ([529d392](https://github.com/Supergiovane/KNXUltimate/commit/529d3924f90189214d50b3be24e9a451c260010a))


### Features

* Add Hager TXA223/225 custom status DPT 60002 ([c61f576](https://github.com/Supergiovane/KNXUltimate/commit/c61f57647ea97b7201a9c01dae3c0e5a1ce3c23a))

# [2.2.0](https://github.com/Supergiovane/KNXUltimate/compare/v2.1.4...v2.2.0) (2024-06-12)


### Bug Fixes

* [#23](https://github.com/Supergiovane/KNXUltimate/issues/23) writeRaw broken with length <= 6bits ([#24](https://github.com/Supergiovane/KNXUltimate/issues/24)) ([1d30e81](https://github.com/Supergiovane/KNXUltimate/commit/1d30e8108b50877eb920aed8120c9c872d822545))


### Features

* Turn unknown error 0x25 to E_NO_MORE_UNIQUE_CONNECTIONS ([67f5dd8](https://github.com/Supergiovane/KNXUltimate/commit/67f5dd86e2688131c54c0a17cf5f2cbaf0bf9eb5))

## [2.1.4](https://github.com/Supergiovane/KNXUltimate/compare/v2.1.2...v2.1.4) (2024-05-30)



## [2.1.3](https://github.com/Supergiovane/KNXUltimate/compare/v2.1.2...v2.1.4) (2024-05-28)


### Bug Fixes

* issue where DPT9 was giving error ([#21](https://github.com/Supergiovane/KNXUltimate/issues/21)) ([2ac791e](https://github.com/Supergiovane/KNXUltimate/commit/2ac791e2a438ee37492f8109b5989ef6130244e5))

## [2.1.3](https://github.com/Supergiovane/KNXUltimate/compare/v2.1.2...2.1.3) (2024-05-28)

### Bug Fixes

* fix: issue where DPT9 was giving error by @maulik9898 in https://github.com/Supergiovane/KNXUltimate/pull/21

## New Contributors
* @maulik9898 made their first contribution in https://github.com/Supergiovane/KNXUltimate/pull/21


## [2.1.2](https://github.com/Supergiovane/KNXUltimate/compare/v2.1.1...v2.1.2) (2024-04-24)


### Bug Fixes

* refactor method names and added js docs ([#19](https://github.com/Supergiovane/KNXUltimate/issues/19)) ([432db89](https://github.com/Supergiovane/KNXUltimate/commit/432db89ac4a43be1a8037c4dbcd3cee8fe311e10))
* wrong overload of `discovery` method ([a41b65c](https://github.com/Supergiovane/KNXUltimate/commit/a41b65c537890177728708ec6d64282bab9df1ef))

## [2.1.1](https://github.com/Supergiovane/KNXUltimate/compare/v2.1.0...v2.1.1) (2024-04-23)


### Bug Fixes

* better timers management for race conditions and leak prevention ([#17](https://github.com/Supergiovane/KNXUltimate/issues/17)) ([494af28](https://github.com/Supergiovane/KNXUltimate/commit/494af282f06a9db475d4284bd4b0d6ca16a5845f))

# [2.1.0](https://github.com/Supergiovane/KNXUltimate/compare/v2.0.0-beta.0...v2.1.0) (2024-04-23)


### Features

* discovery ([#15](https://github.com/Supergiovane/KNXUltimate/issues/15)) ([f95836a](https://github.com/Supergiovane/KNXUltimate/commit/f95836ae6cb0e90922945810fd145781046feff2))

# 2.0.0-beta.0 (2024-04-18)


### Bug Fixes

* add build step to ci ([8bb668c](https://github.com/Supergiovane/KNXUltimate/commit/8bb668cedbd03e9779957621f9e2da3c7d48b1bb))
* add missing helps in dpts ([da61a86](https://github.com/Supergiovane/KNXUltimate/commit/da61a86afae91cc2c7231d36bd190fbfcb187b07))
* client close ([1996713](https://github.com/Supergiovane/KNXUltimate/commit/199671332760507ad746225233b1a08b2a51e0f2))
* examples ([9a2fcbc](https://github.com/Supergiovane/KNXUltimate/commit/9a2fcbced4d1931328ef7ee7a06010531e8653fe))
* export all packet types ([60043ee](https://github.com/Supergiovane/KNXUltimate/commit/60043eee9e1e64b35ffbb163e36a75f05bf908b9))
* export dptlib ([a13d6d8](https://github.com/Supergiovane/KNXUltimate/commit/a13d6d80114052cd5c133d65ad5415fd161b18cc))
* finish conversion of curve25519 ([8e972c1](https://github.com/Supergiovane/KNXUltimate/commit/8e972c17e7e3ed007d8d156531aa21a0709ed551))
* improve messages types ([f9a7006](https://github.com/Supergiovane/KNXUltimate/commit/f9a700614c11aba32a0178567ae67afef358ab81))
* improved disconnect logic ([3835601](https://github.com/Supergiovane/KNXUltimate/commit/38356012107daaec3498e56d74e800c9828df3d8))
* improved types of events ([dbc2812](https://github.com/Supergiovane/KNXUltimate/commit/dbc2812940a8dc1440894f2f8f52b7506524c700))
* logger and deprecated buffer `slice` to `subarray` ([5bcec07](https://github.com/Supergiovane/KNXUltimate/commit/5bcec07c69c1bbc86726437942945a78254aef61))
* remove many useless try catches ([4e50a81](https://github.com/Supergiovane/KNXUltimate/commit/4e50a811a6b833b311be88a482a80d65f2259d49))
* remove references to `KNXEthInterface` ([fcc366e](https://github.com/Supergiovane/KNXUltimate/commit/fcc366e7921ca0f76409f532ddc2641cfa02b892))
* socket end ([7af3c69](https://github.com/Supergiovane/KNXUltimate/commit/7af3c695e5e998192d139f3b987fd591fcd0e0bb))
* some other types ([b98f621](https://github.com/Supergiovane/KNXUltimate/commit/b98f62171c421df1285c3fbf3decfb73ba5dd424))
* some types ([b086a0e](https://github.com/Supergiovane/KNXUltimate/commit/b086a0e36c570dbeccdd0575666c39e7bb228d04))
* test connect/disconnect ([c2a6a18](https://github.com/Supergiovane/KNXUltimate/commit/c2a6a18fd02ea2332403531ef19eccdd54f55976))
* tlvinfo type ([fe0d52c](https://github.com/Supergiovane/KNXUltimate/commit/fe0d52c70a3e21346e42138d59e483fcc798e68f))
* typo ([e289d13](https://github.com/Supergiovane/KNXUltimate/commit/e289d1373ce7a9a349d39af1747f6e63f03d67d5))
* typo on knx client ([df4686e](https://github.com/Supergiovane/KNXUltimate/commit/df4686edeaee1f039f64bb895a71b3aae237a78f))
* use destroy for TCP socket close ([6440162](https://github.com/Supergiovane/KNXUltimate/commit/64401627e7f271334acaa0274c7d5b80623d6898))
* useless statics ([44bb692](https://github.com/Supergiovane/KNXUltimate/commit/44bb6926910bd43bf9e763ea388ffb8d5fefbca7))
* wrong address parsing ([40d8f98](https://github.com/Supergiovane/KNXUltimate/commit/40d8f9850e67db53b09c23de7ad54cbcd795bc34))


### Features

* client and other types ([8b030fa](https://github.com/Supergiovane/KNXUltimate/commit/8b030faf39300c8d016e98c3a00b47ee38d5188f))
* eslint + prettier ([0be8bbb](https://github.com/Supergiovane/KNXUltimate/commit/0be8bbb307f52bf7e1ecaf20dd8befe76c2cf96a))
* finish converting dptlib ([1b4b368](https://github.com/Supergiovane/KNXUltimate/commit/1b4b36814fc9b853d7fb7e40bbe7e941bdca28d2))
* going on ([0e5f8c9](https://github.com/Supergiovane/KNXUltimate/commit/0e5f8c9ba7f38c85d37782daba4c89b65224f424))
* going on with protcol ([becd54f](https://github.com/Supergiovane/KNXUltimate/commit/becd54fbf30a1c9df5c274c073749f3986c7f8e7))
* going on with refactor ([06278a3](https://github.com/Supergiovane/KNXUltimate/commit/06278a364fcb42b83ee148f2c5de779720bca2fd))
* protocol cemi conversion ([5b43f85](https://github.com/Supergiovane/KNXUltimate/commit/5b43f85379cc48da0945f1dd3cde6c7a0ce7de24))
* refactor errors ([5f12475](https://github.com/Supergiovane/KNXUltimate/commit/5f12475f80bd22daa5d31f1e561b50f7606b3eb1))
* securwe keyring ([0b1a250](https://github.com/Supergiovane/KNXUltimate/commit/0b1a250aa5ce46c18c6fcee3528b2069d3e06d5e))
* typed event emitter ([2360e63](https://github.com/Supergiovane/KNXUltimate/commit/2360e632dcadd58acb2aec4fd9785ceae8f7f761))
* typescript refactor ([ec8e26b](https://github.com/Supergiovane/KNXUltimate/commit/ec8e26b5601a0af96faac8e967ff95a96ed8e605))
