Skip to content

3.20.0 DeviceManagement and Expose init

Choose a tag to compare

@farmio farmio released this 16 Aug 05:40
· 45 commits to main since this release

Devices

  • Add ExposeSensor.initialize_value() to set a value without sending it to the KNX bus, eg. one restored from a previous run. Unlike assigning sensor_value.value directly, it also initializes the payload used for periodic sending and skip_unchanged. None clears the value.

Features

  • Add UDPDeviceManagementConnection, TCPDeviceManagementConnection and SecureDeviceManagementConnection, clients for a KNXnet/IP device management connection - the latter over a KNX IP Secure session. They read and write the Properties of a server's own Interface Objects via read_property(), write_property() or request() for any other cEMI frame, and report M_PropInfo.ind frames to an indication_callback. They are not an Interface: such a connection carries no telegrams, so it leaves xknx.current_address and the connection manager alone.
  • Add DeviceManagement to acknowledge DeviceConfigurationRequest frames received over a device management connection - the counterpart to DeviceConfiguration, which covers the other direction.
  • DeviceConfiguration now waits DEVICE_CONFIGURATION_REQUEST_TIMEOUT (10 seconds) for its acknowledgement instead of the one second inherited from RequestResponse, and takes a timeout_in_seconds argument to override it.
  • Add dmp_authorize_r_co(conn, key), dmp_authorize2_r_co(conn, client_key) and dmp_connect_r_co(conn) to xknx.management.procedures, running on an already-open P2PConnection. dmp_authorize2_r_co authorizes with FREE_ACCESS_KEY first, then client_key, and keeps whichever gives the better access level. dmp_connect_r_co reads Device Descriptor Type 0 to confirm the connection is live and returns the mask version.

Internals

  • Extract the connection heartbeat and the sequence counter handling for received frames into ConnectionHeartbeat and IncomingSequenceCounter in xknx.io.data_connection, shared by the tunnel and the device management connection instead of being duplicated. The mechanics are unchanged.