Skip to content

openHAB 4.0 Release Notes

Kai Kreuzer edited this page Jul 23, 2023 · 1 revision

This is the official release of openHAB 4.0.0.

The binaries are available on our download page and via "Stable" on our APT repository.

New and Noteworthy

The openHAB 4.0 release is a feature release that contains many new features, enhancements and bug fixes, both for the core runtime and for many add-ons. You can find the most relevant ones listed in detail below.

openHAB 4.0 is backward compatible to openHAB 3.x setups - there are only a few exceptions where manual action is required to adapt an existing setup, so please carefully check the section on breaking changes.

Quick links:

Relevant Changes

The following add-ons are newly introduced:

Add-on Type Issue
AndroidTV Binding #14282
Anthem Binding #14311
Asuswrt Binding #13815
Bluetooth RadonEye Binding #11958
ChatGPT Binding #14809
Ecovacs Binding #12231
Energi Data Service Binding #14376
FreeboxOS Binding #12342
InMemory Persistence #15063
JavaScript Scripting (Nashorn) Automation #14013
LiquidCheck Binding #13287
MQTT Ruuvi Gateway Binding #13315
MyNice Binding #12940
PLEX Binding #15057
Rollershutter Position Emulation Profile Service Transformation #13259
Speedtest Binding #9913
Value-Added Tax Transformation #14529
Volumio Binding #14525

The following improvements were made:

Type Issue Change
Enhancements 2810 Allow invoking ThingActions via API
2871 Allow managing persistence configurations and enable filters
2965 Add event information in rules for time, manual and RunRuleAction trigger
2994 Raise minimum JDK version to 17
3004 Refactor WatchService
3050 Introduce metadata for all add-ons
3057 Cache mechanism
3141 Add ItemStateUpdatedEvent and enable group channel-links
3241 Improve channel handling in ThingImpl
3249 Allow inline scripts in SCRIPT transformation
3268 Initial contribution of an CLI upgrade-tool
3270 Log the version/build on startup
3275 Add a ScriptEngineFactory bundle tracker
3280 Only call getVolume when necessary
3284 Update Jackson to 2.14.1
3287 Add DateTimeType method for returning Instant
3290 Ability to use /dev/serial/ symlinks for usb serial device
3292 Introduce a profile for the generic SCRIPT transformation
3293 Fixes and enhancements for add-on services
3298 Add method to get namespaces to MetadataRegistry and ItemResource
3299 Rework GenericEventTrigger and GenericEventCondition
3311 Return item metadata by default
3330 Improve thing initialization and enable thing-type updates
3335 Add caching for static resources
3337 Consider language when requesting thing actions
3352 Actions: Add method overloads for PercentType to Audio & Voice
3355 Add support for things with generic channels
3356 Add param sslContextFactory when creating a HTTP or web socket client
3362 Remove author from addon xsd
3363 Allow using '=' in a double quoted value/label
3364 Use setpoint as default sitemap element for item with tag "Setpoint"
3372 Align AbstractScriptDependencyTracker with AbstractScriptFileWatcher
3378 Extend sitemap syntax for icon
3385 Refactor XML handling
3391 Add support for channel-groups to update instructions
3392 Allow access to rule summary for Role.USER
3398 Add sitemap Input type
3403 Extend "iconcolor" attribute to all sitemap elements
3406 Add Eclipse Add-on Service
3407 Add an AbstractStorageBasedTypeProvider
3416 List transformation services
3418 Add inputHint param to sitemap Input element
3431 Add Input widget to main UI sitemap configuration and REST API
3433 Add support for Jetty HTTP/2 clients
3434 Add ColorUtil for better support of xyY conversion
3439 Improve time weighting in averageSince and averageBetween
3453 Add new color keyword "itemValue"
3459 Add console commands for register/unregister dialogs and list them
3461 Enhance AudioSink capabilities using the AudioServlet
3466 Add getAllStatesSince() and getAllStatesBetween() to PersistenceExtensions
3479 Reduce rounding errors of RGB/HSB conversion and enhance ColorUtil
3481 Add unit metadata for NumberItem
3487 Add dynamic scripting-language transformation service
3491 Sort profile-type resources by their label
3506 Clarify the script profile config description
3519 Add dynamic creation of semantic tags
3523 Improve EventLogger performance
3535 Improve log messages in ItemStateConditionHandler
3536 Add group name to GroupStateTriggerHandler
3537 Add support for custom deserialization of AccessTokenResponse
3539 Extend item syntax for category/icon
3542 Improve precision of ColorUtil
3548 Icon server: remove old style request with the state in the URL
3550 Remove GenericScriptEngineFactory
3553 Add methods to get Semantic tag synonyms and description
3559 List semantic tags
3560 Remove redundant public and abstract modifiers from interfaces
3568 Improve log message to identify profile's link
3573 Add support for overriding holiday definitions
3580 Code cleanup: Use Java 17 features
3585 Code cleanup: Use Java 17 features
3586 Reduce SAT warnings
3591 Make --dir param optional for upgradetool
3593 Improve message when rule action fails
3611 Add endpoint for UoM information
3616 Add unit rpm for rotational frequency
3622 Allow registering websocket adapters
3625 Move RuleHLI service from voice to system
3626 Move LSP service from misc to system
3629 Optimise constants; hue overflow check
3634 Remove package support from FeatureInstaller
3635 Improve performance for state update handling
3641 Improve community marketplace addon handler
3642 Improve existing and add new persistence filters
3644 Add widget state pattern and default unit to ItemUIRegistry
3646 Add semantic tag registry + API to manage user tags
3647 Add type information to state event
3649 Adjust metadata unit for system channel types
3654 Add unit to item response
3668 Replace StringBuffer usages with StringBuilder
3675 Improve audio duration computation
3684 Add unit "calorie"
3695 HTTP audio servlet: check end of play every 2 seconds
3699 Add length limit to TTS handled by cache
Bug Fixes 3255 Refactor AbstractScriptFileWatcher
3273 Ensure metadata available at startlevel 20
3277 Fix DateTimeTrigger not triggering on restored state
3278 Trigger immediately when start level already reached
3288 Fix Marketplace add-on range pattern matching
3301 Prevent a provider from removing an element from another provider
3310 Improve UPnP callback removal
3319 Fix nullable errors
3320 Fix addon.xsd
3334 Fix parsing of YAML default value for community marketplace UI Widgets
3339 Properly handle failure when parsing marketplace add-ons
3348 Fix wrong .historicState call in .changedSince
3351 Fix CME in JarFileAddonService
3357 Fix configuration for marketplace-services
3365 Fix CME in ThingActionsResource
3366 Improve handling of erroneous localized messages
3379 Fix a typo in ItemsValidator
3402 Fix sitemap syntax for List element
3411 Fix overriding Jetty's User-Agent in HttpUtil
3417 Fix ConfigValidationException handling in ThingManager
3448 Channels once more displayed in correct order in Main UI
3451 Improve AbstractScriptFileWatcher initialization order and file handling
3454 Fix ready marker ordering on late subscriptions
3457 Fix file processing in FileTransformationProvider
3458 Fix default human language interpreter selection
3464 Fix variable binding in ScriptTransformationService
3474 Fix ConfigValidationMessage in ThingManagerImpl
3490 Fix error handling with DNS resolution / Unknown host errors
3510 Fix AbstractDependencyTracker
3513 Fix resource leak in SysfsUsbSerialScanner
3516 Fix recently introduced SAT issues
3524 Prevent unnecessary MODIFY events in WatchServiceImpl
3526 Fix thing reloading from things file
3532 Fix hidden files showing up in TransformationRegistry
3533 Fix wrong event subscription in GroupStateTrigger and ItemStateTrigger
3549 Fix IndexOutOfBoundsException in ScriptEngineFactoryHelper
3572 Fix marketplace add-on services fail after upgrade
3575 Consider auto-update policy from channel types
3576 Improve thing updates
3587 Change default imperial unit for length to inch
3592 Fix non-unique module handler identifiers
3598 Fix storing of StateDescriptionFragment in AbstractStorageBasedTypeProvider
3607 Fix UpgradeTool and enable default=all policy
3608 Add dimension RadiationSpecificActivity
3612 Keep channel properties in thing updates
3627 Fix exception in TransformationHelper
3628 Fix event ordering for item events
3630 Fix NPE in UpgradeTool when no pattern present
3633 Fix NPE in WatchServiceImpl
3664 Fix missing query prefix in JarFileAddonService
3674 Always use ThingUid as the unique identifier for thing status metrics
3682 Remove error logging from PersistenceIncludeFilter
3683 Fix wrong ready marker in ScriptEngineFactoryBundleTracker
3686 Avoid item not found warning from UIRegistry
3687 Make firmwareStatus field not final in DTO object
3688 Fix marketplace add-ons missing config description URI
3691 Avoid null hash warning in WatchServiceImpl when possible
3702 Increase large event queue warn limit
3704 Fix NPE in PersistenceManager
3707 Align system-channel-types for electricity
3708 Do not break format defined in label with extra spaces
3712 Add missing fields to /rest/items?staticDataOnly=true resource
3716 Handle null value for unit field of filters
3717 Fix rule startlevel trigger executes during initialization
3719 Fix MQTT client crashes when subscriber throws exception
3724 Fix implicit user role for websocket connections
UI Type Issue Change
Main UI Enhancements 1448 Add a transformations menu and editor
1601 Add tags & script language to script settings
1613 Script Editor: Block runRule and save while rule is running (or uninitialized)
1617 Blockly: Upgrade to v9, add JSScripting (GraalVM) implementations, UoM block types
1621 Limit alexa parameter state description options
1622 Add alexa playback step attribute
1623 Show custom namespaces for items in metadata menu
1642 Add style to overview page
1647 Allow customization of temperature, humidity and luminance badges
1648 Update Google Assistant Metadata Definitions
1649 Generalize evaluating expressions for charts & fix diff_last aggregates
1652 Add visible property to oh-plan-marker
1661 Use cacheable lists where possible
1662 Add a Scene settings menu entry and editor
1664 Blockly metadata blocks
1681 Add doc link to state/commandDescription edit form
1682 Analyzer: Use Item label instead of name if available
1698 Provide access to widget configuration from widget expressions
1699 Improve Item name validation error message & Add unchangeable note on Item creation
1700 Validate Widget UID & page ID on creation
1703 Add new capabilities to oh-knob component using vue-round-slider
1709 Remove Blockly GraalJS dependency on prepended code
1718 Refactor oh-knob component to remove vue-knob-control & Lazy load dependencies
1720 Save changed rule/scene on runNow & Fix keyboard shortcuts in scene editor
1722 Add bitwise math operators
1723 Add workspace search
1724 Add rulesWithTags to oh-repeater
1726 Add step parameter to oh-input
1732 Developer sidebar: Extend search & Sort search results
1735 Support configuring Input element for sitemap model
1736 Improvements for Eclipse provisioned add-ons
1772 Support iconcolor for all elements in sitemap editor
1773 oh-knob: Change dottedPath prop to text
1786 Allow setting gradientDirection for oh-trend component
1788 Use channelType label & description as placeholder for channel details
1808 Show warning if SSE connection or send command fails
1818 Add a code tab to the Item editor
1820 Allow using = in double-quoted widget action options
1821 Add recommended add-ons to the setup wizard
1824 Sitemap editor: Support inputHint config of Input element
1843 Sitemap and item config parsing adjustments
1845 Transformations: Various enhancements & fixes
1852 Evaluate service as part of series's chart config
1857 oh-sipclient: Various fixes & improvements
1864 Improvements for UoM blocks & Extend getItemAttribute block
1868 Toggle between item name or label
1869 Add pattern to text of date block
1870 Support storing timers in shared cache
1871 Add new math_round block with round up, down and by decimals
1875 oh-knob & oh-stepper: Add offset functionality
1876 Developer sidebar: Support search in metadata value and config
1877 Automatic shadow block conversion into real block
1878 foreground-service: Listen to tab visibility change event
1882 Dynamically load the list of Semantic tags and store them in Vuex
1891 Remove "Other Services" section from main settings page
1898 Add dictionary loop
1899 Show toast instead of error when saving / running from code preview
1901 Items: Add unit metadata for UoM (Number:) Items
1903 Allow setting persistence service for blocks
1908 Add BasicUI to recommended add-ons
1910 Widget editor: Add minus as allowed char of widget uid
1917 Add a persistence configuration page
1924 oh-slider & oh-knob: Add option to ignore displayState
1932 Improvements to the add-on page
1946 Developer sidebar: Support search for Blockly rules/scripts
1947 Developer sidebar: Support search for rule tags
1948 Add context block typing & Extend Qty block var type support
1955 Persistence configuration page: Minor enhancements & fixes
1963 oh-repeater: Make caching configurable
Bug Fixes 1607 Fix add-on information issues
1619 Update autocompletion for new MIME types
1645 Add Command-Click for macOS to select list entries
1656 Z-Wave map: show only current network, link fixes
1657 Blockly: Fix UoM on Nashorn message & Adjust to library change
1670 Fix redirection for reverse proxy with authentication not working
1683 Fixes & Enhancements for channel add & edit pages
1684 Fix add-on configuration
1696 Display undefined correctly in widget expressions
1701 Add delete button for custom metadata namespaces
1704 Fix link for oh-map-page docs
1727 Handle NOT_YET_READY in thing status
1734 Configuration & iPhone style fixes for the options widget action
1739 Scene editor: Fix triggers/conditions, enable/disable action & rule status
1745 No quotes around chart period parameter in generated sitemap DSL
1761 Fix missing diagram lines for groups in analyzer
1765 Fix WebAudio sink not playing on Safari
1781 Sitemap editor: Fix attribute value capturing in parser & string value handling in widget detail view
1783 Fix sitemap config boolean attributes
1798 Pass slot names down in generic-widget-component
1802 Fix add equipment/points expert mode
1807 Add a SSE reconnection mechanism
1814 Fix text overflow in config-sheet component
1815 Enforce required role when accessing admin or /profile routes
1819 Thing details: Make code tab read-only if not editable
1835 Developer sidebar: Fix search in case of missing thing label
1837 Thing picker: Fix failure caused by missing label & Show UID
1849 Fix icons not displayed & not dynamic on all pages
1865 Use right UID attribute in Thing picker
1883 Transformation edit: Remove i18n string from Item state transform hint
1884 Fix Things by binding & pages by type not in alphabetical order
1887 Sitemap code generation: Quote colors
1889 Fix picker update detection to allow shadow block conversion
1894 oh-slider: Fix command sent on state update due to rounding
1900 Item & Thing code tabs: Minor fixes
1904 oh-repeater: Fix new data requested when css visibility changed
1920 oh-slider & oh-knob: Fix user configured unit (state description) ignored
1925 oh-sipclient: Fix audio playback stays active when foreground is left
1936 Items: Fix unit metadata not available for UoM groups
1967 Fix page highlighting in sidebar
1970 Fix masonry configuration failure
Basic UI Enhancements 1706 Add support for iconify and Google material icons
1729 Add input widget
1733 Support primary and secondary as value for label/value colors
1751 Support iconcolor for non OH source icons
1793 Handle new color keyword "itemValue"
1799 Use inline SVG for "colorless" SVG icons
1829 Add the "follow system" theme
1834 Use more contrasted color buttons in widgets when in dark mode
1838 Change assumption in case icon value contains only 2 segments
1842 Fix text color when the page does not contain any frame
1923 Use sitemap input hint v2
1937 Set color-scheme for OH icon
Bug Fixes 1612 Fix setpoint/slider widgets when %unit% is used in state pattern
1712 Remove Roboto font as unused by the app
1749 Add missing label/color management for rollershutter items
1753 Fix label color initialization for color widget
1754 OH icon scaling
1755 Remove support for List element
1792 Consider the correct iconset when reloading the icon
1897 Handle properly state updates to NULL or UNDEF
1922 Adjust slider unit handling
cometvisu Enhancements 1594 Remove deprecated cometvisu-php binding
Bug Fixes 1826 Make sure that folder paths always end with a slash
HABPanel Bug Fixes 1688 Use commandDescription instead of stateDescription for selection list
Add-on Type Issue Change
airquality Enhancements 14602 Enhance API error handling
airthings Bug Fixes 15011 Adapt channels to new dimension for Radon measurements
allplay Enhancements 15201 Support for more audio streams through the HTTP audio servlet
amplipi Enhancements 15199 Support for more audio streams through the HTTP audio servlet
androiddebugbridge Bug Fixes 14663 Fix screen state channel on Android 12
astro Enhancements 14132 Add option to force event to occur
14756 Add getTotalRadiation to AstroActions
Bug Fixes 14067 Add moon phase precision
14078 Fix returning wrong sun phase name
atlona Enhancements 14080 Add support for AT-PRO3HD44M
avmfritz Enhancements 14373 Add light blub color temperature support
14587 Use system channel types and decrease minimum polling interval
benqprojector Bug Fixes 14603 Fix NullPointerException when getting network interface name
bondhome Enhancements 14150 Implement missing 'Light' device type
14155 Add raw speed channel
Bug Fixes 14103 Fix fatal Null Pointer errors
boschindego Enhancements 14745 Implement OAuth2 authorization
14829 Add device properties
boschshc Enhancements 14197 Add bridge and device discovery
14781 Add support for Thermostat SilentMode
15067 Upgrade to REST API version 3.2
Bug Fixes 14352 Allow setting the temperature for climate control
bosesoundtouch Bug Fixes 14097 Fix regression and add tests
cbus Bug Fixes 14385 Fix exceptions due to invalid thing status updates
chromecast Enhancements 15180 Support for more audio streams through the audio servlet
Bug Fixes 14105 Fix constant disconnections
14158 Fix thing go offline after stop command
14191 Fix for NPE when playerState is null
comfoair Enhancements 15167 Extend UoM support, add semantic tags & update state descriptions
daikin Enhancements 14108 Add support for Alira X
dali Bug Fixes 14021 Handle and provide QuantityType for color-temperature-abs channel
danfossairunit Enhancements 14030 Remove deprecated channel 'manual_fan_speed'
15002 Add UoM support for rotational speed channels
darksky Enhancements 13037 Remove DarkSky binding due to EOL of their API
deconz Enhancements 14343 Adjust thread name for web socket client
14622 Add Pairing/Scene actions, new devices and improve code
14636 Add On/Off thermostats
14641 Cleanup code and improve tests, edit channels to vibration sensor
Bug Fixes 14827 Fix roller shutter status
dlinksmarthome Enhancements 14479 Reboot device daily following shutdown of cloud service
dmx Enhancements 14327 Refactor and improve code
dominoswiss Bug Fixes 14172 Fix Bridge-Loading with OH3_3 and OH3_4
doorbird Enhancements 14122 Add audiosink
15189 Support for more audio streams
dsmr Bug Fixes 14325 Improve error handling corrupt messages, discovery additional key bug fix
easee Enhancements 15229 Adopt API base URL due to changes
Bug Fixes 14637 Fix start/stop and pause/resume
14903 Fix start/stop due to changed API
ecobee Enhancements 14168 Make more channels advanced
14403 Remove org.apache.commons
14517 Increase temperature precision to decimal
Bug Fixes 14170 Fix issue with UTC and local dates
14607 Fix typo in channel label
14980 Delete OAuth access token when thing removed
eKey Enhancements 14616 Add sourceIp in cases of NAT (Kubernetes deployments)
electroluxair Enhancements 15187 Update to changed API
enocean Enhancements 13793 Add support for EEP in group A5_09
Bug Fixes 14558 Fix condition in getPositionData function of EEP D2_05_00
evcc Enhancements 14245 Adjust to breaking API change and add Battery Capacity channel
14983 Adjust to API changes & add new channels for evcc 0.117.0
Bug Fixes 14381 Fixes & adjust to more breaking changes from evcc 0.111.x
evohome Enhancements 13885 Add UoM and semantic tags for temperature channels
fineoffsetweatherstation Bug Fixes 14039 Fix QuantityType for rain-rate
14326 Fix java.lang.IllegalMonitorStateException
fmiweather Bug Fixes 13693 HIRLAM → HARMONIE weather model
freebox Enhancements 15121 Support for more audio streams through the HTTP audio servlet
gardena Bug Fixes 14203 Fix keep-alive logic leading to blocked account (403/Forbidden)
14349 Adjust thread name for WEB clients (avoid IAE)
14722 Improve GardenaSmartImpl initialization order
generacmobilelink Enhancements 14638 Major rewrite of the Generac MobileLink Binding
goecharger Bug Fixes 14494 Fix command sending
14933 Avoid potential NullPointerException
googlestt Enhancements 14653 Upgrade library
Bug Fixes 14649 Fix audio streaming reliability
googletts Enhancements 15208 Replace custom TTS cache with common TTS cache
gpstracker Enhancements 14396 Add (optional) altitude to location channel
gree Bug Fixes 14217 Allow wider temperature range
groovyscripting Enhancements 14499 Support slurpers
14734 Update Groovy to 4.0.11
harmonyhub Enhancements 14507 Use AbstractStorageBasedTypeProvider
hdpowerview Enhancements 13355 Add support for Generation 3
14033 Remove deprecated scene channels
helios Bug Fixes 15096 Fix error handling + migrate to the injected JAX-RS ClientBuilder
heos Enhancements 15196 Support for more audio streams through the HTTP audio servlet
homekit Enhancements 13879 Allow configuring secondary services as members of a group
14034 Allow configuring min/max light level
14045 Support Rollershutter items for HoldPosition
14055 Add support for TV accessory
14209 Implement IrrigationSystem Accessory
Bug Fixes 13982 Implement List-Pairings method
14017 Update AuthInfo objects when blockUserDeletion changes
14169 Properly expose services from dummy accessories
14226 Fix restarted on network interface change
homematic Enhancements 14274 HUMIDITY and CONTROL_MODE as standard channels
Bug Fixes 14213 Fix updating enum config values
hue Enhancements 13570 Implement CLIP 2 / API v2
Bug Fixes 14024 Allow handling of QuantityType for color temperature channel
14289 Get scenes for groups without 10 minutes delay
14297 Handle unexpected empty response from API
14871 Fix NUPnP discovery
14914 Restore UPnP discovery for old bridges
14989 Fix NullPointerException in NUPnP discovery
hueemulation Bug Fixes 13923 Fix for Alexa failing to discover all devices.
hydrawise Bug Fixes 15177 Fix occasional connection issues
icloud Bug Fixes 14563 Ignore HTTP errors != 400 & >= 500 for 2-FA authentication
14661 Fix existing things stopped working and re-appeared as new in the inbox
ihc Bug Fixes 15183 Fix special character issue on item descriptions
imperihome Enhancements 15014 Remove imperihome add-on
influxdb Enhancements 14304 Code improvements and enhancements
14959 Implement ModifiablePersistenceService
15009 Support restoring unit for dimension items
Bug Fixes 14296 Fix re-connection issues
14888 Write asynchronously to database and improve performance
15062 Handle exceptions gracefully
intesis Enhancements 15138 Add configurable polling interval
ipcamera Enhancements 14728 Add Reolink API support
Bug Fixes 14872 Fix servlet exceptions due to non unique names
14909 Fix orphan ffmpeg process after stopping stream URL
15059 Fix discovery crashes when networks have access rights issues in docker
15073 Fix TAPO branded cameras require xAddr port to be different
jdbc Enhancements 14874 Upgrade MySQL Connector/J to 8.0.33
Bug Fixes 14054 Fix IllegalArgumentException on service activation
14281 Perform upsert on conflict like the default for MySQL (PostgreSQL >=9.5)
14294 Working version of PG schema check and TIMESTAMPTZ as default to match MySQL
14987 Fix addon-info
15156 Fix timescale db type replacement
jeelink Bug Fixes 14224 Fix wrong TX22 rain value
jrubyscripting Enhancements 13944 Allow disabling dependency tracking
14556 Upgrade JRuby to 9.4.2.0
Bug Fixes 14590 Filter files that are added to the watch list
jsscripting Enhancements 14093 Upgrade to ECMAScript 2022 & Dependency improvements
14096 Use application/javascript as MIME type
14113 Improve performance & reduce memory usage
14135 Cache openhab-js injection to improve performance
14335 Extend mapping of openhab-js classes to native openHAB counterparts
14375 Bump openhab-js to 4.0.0 & Clean-Ups
14984 Add type translation for Instant and minor improvements
14985 Allow configuring from add-on page
15193 Implement NodeJS-like parameter handling for timer polyfills
jsonpath Bug Fixes 15283 Fix exception when input string is empty
kaleidescape Bug Fixes 15161 Fix image channel MIME type
km200 Bug Fixes 14384 Fix initialization warning: "tried updating the thing status although the handler was already disposed."
14488 Remove unused configuration URIs
15070 Fix support for older MB-LAN (=KM200, version 1.0) by avoiding query of an unsupported attribute.
knx Enhancements 14015 Upgrade Calimero library to release 2.5.1
14050 Improve reading of device properties
14051 Replace gnu.io dependency with serial transport
14454 FT12: Autodetect cEMI on Weinzierl devices
14503 Remove workaround for DPT 14
14509 Improve thread safety, null-analysis
14534 Refactoring of KnxCoreTypeMapper and UOM Support
14624 Improve config description for GAs
14772 Improve rounding when encoding DPT 232.60000
14851 Add list of DPTs documenting implementation status
15064 Implement console commands
15141 Code cleanup
Bug Fixes 14504 Fix DPT 3.007 (Control Dimming) for non -control channels
14875 Fix decoding of DPT 242.600 and add tests
15072 Add dynamic channel-types for number channels
15082 Fix DPT 10.001 handling
kodi Enhancements 15192 Support for more audio streams through the HTTP audio servlet
kostalinverter Bug Fixes 14386 Fix exception due to invalid thing status update
lgwebos Enhancements 14331 Add TLS support
lifx Enhancements 14362 Add support for newer downlights
Bug Fixes 14025 Handle and provide QuantityType for color-temperature-abs channel
luftdateninfo Enhancements 15012 Rename binding to Sensor.Community
mactts Enhancements 15109 Add LRU cache
mail Enhancements 14345 Add mail content processing
Bug Fixes 14151 Make actions names for DSL rules consistent with documentation
map Bug Fixes 14825 [scale] Fix localization
mapdb Bug Fixes 14900 Make serialization asynchronous
marytts Enhancements 15227 Add LRU cache
Bug Fixes 14064 Add bnd to make serviceloader aware of marytts impl
meteoalerte Enhancements 14811 Add an IconProvider
miele Enhancements 14086 Add categories and semantic tags
14199 Improve multicast implementation
mielecloud Enhancements 14456 Add channels energy and water consumption
miio Enhancements 13940 Add support ROIDMI EVA - roidmi.vacuum.v66
13941 Add support Xiaomi Smart Air Purifier 4 Pro zhimi.airp.vb4
mimictts Enhancements 14120 Fix ssml and playing from audiosinks using the audio servlet
14564 Add LRU cache
Bug Fixes 14821 Fix addon.xml info
misc Enhancements 14724 Adapt to ColorUtil changes in core
modbus.e3dc Enhancements 15085 Add battery capacity
monopriceaudio Enhancements 13936 Add support for additional amplifiers
mqtt Enhancements 15114 Dynamically change accepted item-type for Number channels
Bug Fixes 14099 Fix shutdownRetain default value
14229 Fix thread concurrency issue with type provider
mqtt.espmilighthub Enhancements 13800 Use availability topic to set thing status
Bug Fixes 14877 Fix things do not come ONLINE if MQTT Client Status Topic not supplied.
mqtt.generic Enhancements 14650 Don't log state description from provider when not found
Bug Fixes 12238 Separate command parsing from cached value updating
mqtt.homeassistant Enhancements 13808 Implement JSON schema lights
14230 Add support for Number and Select components
14233 Support command_template for fan components
14234 Add support for DeviceTrigger component
14240 Mark disabled by default components as advanced channels
Bug Fixes 14858 Don't set range on current temp channel
mycroft Enhancements 14342 Adjust thread name for web socket client
MyNice Enhancements 14797 Addition of Courtesy Light Channel
nanoleaf Bug Fixes 13998 Fix caching of layout
14026 Handle and provide QuantityType for color-temperature-abs channel
14459 Stop the HTTP client when disposing the thing handler
neohub Enhancements 13889 Recover faster if NeoHub produces empty responses
netatmo Enhancements 14140 Add the ability to append a postfix to registered webhook
14252 Extend webhook support for doorbell and presence camera
14485 Add Siren capability to Presence Outdoor Camera
14543 Add Carbon Monoxide sensor support
14548 Make OAuth2 token refresh RFC compliant
14595 Add the capability to have a single home
14780 Consolidate OAuth2 by using core implementation and storage
15045 Enhance webhook handling and dispatching
15197 Add siren_tampered notification
Bug Fixes 14265 Preserve outside temperature minimal ranges for dynamic channels
14492 Fix Floodlight issue on Presence Camera
15212 Binding doesn't work if no persons are defined
nibeheatpump Bug Fixes 14461 nibegw: Fix setting debug verboseLevel
nuvo Enhancements 14012 Auto update source channel for grouped zones
14248 Publish ALLOFF event for use in source rules
Bug Fixes 14321 Fix Essentia G standby mode wake-up
15162 Fix image channel MIME type
oceanic Enhancements 15044 Remove dependency on RXTX for serial communication
ojelectronics Enhancements 13782 Add SignalR for requesting data from OJ Electronics cloud
omnikinverter Enhancements 14244 Add extra parameters (temperature, AC frequency, AC current, AC voltage and total hours running)
onewire Enhancements 14400 Code improvements and bug fixes
onkyo Enhancements 15117 Support for more audio streams through the HTTP audio servlet
opengarage Enhancements 15080 Add support for vehicle status not available
openhabcloud Bug Fixes 14251 Reconnection fixes
15290 Update JSON Library
openthermgateway Bug Fixes 14424 Fix setting thermostat clock
openuv Enhancements 15191 Provide UV Index iconset
openwebnet Enhancements 14357 Improve shutterRun calibration
14566 Reset zones' alarm state channel when system is armed
14819 Add a time stamp when an alarm zone event occurs
15111 Thermo: Add support for 4-zones CU
15115 Add date time synchronization feature for bus_gateway Things
Bug Fixes 14374 Fix wrong startup value for channel failureDiscovered
14390 Light switch updates are now triggered
14620 Thermo: Fix wrong parameter in .getChannel
14822 Fix for dimmer blocked after two OFF are received
15269 Fix update of Thermo Central Unit atLeastOneProbeX channels and refactoring
orbitbhyve Bug Fixes 14308 Fix for NumberFormatException when parsing json object
picotts Enhancements 14565 Add LRU cache
plugwiseha Enhancements 14160 Add default tags
pollyTTS Enhancements 15228 Replace custom TTS cache with common TTS cache
pulseaudio Enhancements 15179 Make the process method asynchronous
radiothermostat Enhancements 14149 Add configuration to update thermostat's internal schedule
14799 Add message display channel and improve ThingActions
Bug Fixes 15127 Skip clock sync when override is on
remoteopenhab Enhancements 14956 Use AbstractStorageBasedTypeProvider
renault Enhancements 14076 Add new channels 'batterystatusupdated' and 'locked'
14527 Add channel for pausing/resuming charging
14846 Update default Kamereon API Key
15101 Add support for MyDacia accounts and Dacia Spring car
Bug Fixes 14586 Improve handling of HTTP 502 responses from Renault API
rfxcom Enhancements 14298 Add MOOD_LIGHT for NOVY Fan
robonect Enhancements 14868 Improve job type configuration
Bug Fixes 15003 Fix NullPointerException on reinitialization
rotel Bug Fixes 14272 Fix reader thread handling
rrd4j Enhancements 13956 Upgrade base library from 3.8.1 to 3.8.2
14068 Improve logging of exceptions thrown by getDB
14960 Add console commands to check and clean RRD files
Bug Fixes 14238 Avoid IAE thrown if e.g. invalid start/end time given
14292 Fix OOM when requesting data and boundary=true
14913 Write asynchronously to database
14961 Do not create RRD file when querying data
15107 Improve timestamp handling
15223 Improve event handling
15277 Fix database start time
rustpotterks Enhancements 14615 Upgrade to version 2
Bug Fixes 15239 Fix gain normalizer
samsungtv Bug Fixes 15259 Fix NullPointerException
semsportal Bug Fixes 14387 Fix exception due to invalid thing status update
senechome Enhancements 14824 Add additional system states
sensebox Bug Fixes 14879 Fix NPE after parsing invalid data
shelly Enhancements 14532 Add support for Plus Smoke, Plus Plug-S/IT/UK/US, Plus Dimmer US, Pro 3EM; fix Gen1 sensor initialization
15031 Add support for Shelly BLU series of devices
15051 Add support for Shelly Wall Dimmer US and Wall Display
15205 Add support for Shelly Plus Mini series, Pro EM-50 and various bug fixes
Bug Fixes 14290 Cancel the init job when the thing handler is disposed
sleepiq Enhancements 14180 Rework cloud API and other enhancements
14447 Add new channels
14714 Add functionality to control the bed foundation
snmp Enhancements 14330 Upgrades and enhancements
solarmax Enhancements 14366 Support configurable Device Address
solarwatt Enhancements 14741 Add smart heater device support
somneo Enhancements 14882 Add alarm support and other improvements
sonnen Enhancements 14589 Update to API V2 of vendor and add PowerMeter
sonos Enhancements 14920 Add support for Era 100 and Era 300
15116 Support for more audio streams through the HTTP audio servlet
15238 Add DTS Surround 5.1
Bug Fixes 14164 Correct identification of tuneIn started from Alexa
squeezebox Enhancements 14201 Add new channels for additional tags
15194 Support for more audio streams through the audio servlet
surepetcare Bug Fixes 15047 Adapt blocked user agent
systeminfo Enhancements 14501 Use AbstractStorageBasedTypeProvider
tapocontrol Enhancements 14364 Add P300 to the list of supported equipments
14596 Support display light effects for L530
14790 Move error messages to i18n
14972 LightEffects for L530 can now be set
Bug Fixes 14656  Color values must be int, not decimal
telegram Enhancements 15104 Support processing of channel messages
Bug Fixes 14314 Invalid escape of underscore character when sending messages (Revert "Solves issue #11691 (#13758)")
15168 Log when cameras do not support BASIC auth support.
tesla Bug Fixes 14070 Fix discovery of Tesla vehicles from account
14128 Synchronize access to account to avoid concurrency issues
14300 Fix account going offline every few seconds
14351 Normalize thread names and avoid a possible IAE
14483 Stop the WebSocket client when disposing the thing handler
14922 Adapt binding to changed API from Tesla backend
tibber Enhancements 14236 Add "today" API channel
14277 Add accumulatedReward channel
14573 Query for subscription url every reconnect attempt
14583 Add channel for lastMeterProduction
Bug Fixes 14273 Fix NPE on server issues
tr064 Enhancements 14468 Enhancements, code improvements and fixes
tradfri Enhancements 14836 Add support for Air Purifier
unifi Enhancements 14283 Add channels name and hostname to client things.
14284 Add support for guest Wi-Fi vouchers
14303 Add guest voucher actions
14319 Add UoM support for RSSI channel
Bug Fixes 14060 Fix PoE bug with combination of other data/ports
14249 Various stability improvements
upnpcontrol Enhancements 15122 Support for more audio streams through the HTTP audio s…
Bug Fixes 14490 Fix shuffle switch also switching only play one
velbus Enhancements 13939 Add modules VMBKP, VMBIN, VMB4PB
Bug Fixes 15272 Fix multiple channel status in one packet
velux Enhancements 14817 Softer initialization after power failure
Bug Fixes 14225 Do not use new API on Somfy devices
15088 Fix limit minimum bug
ventaair Bug Fixes 14896 Fix typo Dimenionsless in channel definition
veSync Enhancements 14354 Improve recognition and device support
vizio Bug Fixes 14429 Improve handling of TV's self-signed certificate
voicerss Enhancements 14561 Add LRU cache
Bug Fixes 14988 Fix service-id in addon.xml
voskstt Enhancements 14625 Upgrade library
watsonstt Enhancements 14626 Upgrade library
wemo Bug Fixes 14163 Fix stability issues
windcentrale Enhancements 14770 Adapt binding to new API
yamahamusiccast Bug Fixes 15124 Fix DecimalType commands for volumeDB channel
yeelight Enhancements 14584 Add sptrip6 device
14668 Support of ceil26 and ceiling11 devices
Bug Fixes 14670 Fix disconnect method
yioremote Bug Fixes 14340 Stop the web socket client when disposing thing handler
Zigbee Enhancements 804 Update ZSS library to 1.4.11
Bug Fixes 792 Ensure node exists when handler is disposed
zoneminder Enhancements 14906 Add support for setting the server run state

If you are on openHABian, sudo openhabian-config menu option 50 will do for you, else use sudo openhab-cli backup. Get the resulting file from $OPENHAB_USERDATA/backups, $OPENHAB_USERDATA is accessible as a Samba share. Using SSH it is /var/lib/openhab/ on your system.

If you run a Raspberry, get another SD card (an "Endurance" labelled one) and create a mirror copy. openhabian-config menu option 54 will do for you on the live system, else there's tools such as dd or WinDiskImager. Should you ever need to revert to your old openHAB system or to redo the upgrade process, simply change SD cards and start over from where you had started.

If you are working with an openHABian setup,

  1. Use SSH to connect to the command line and run sudo openhabian-config.
  2. When being asked, answer that you want to update openHABian (note that’s not about openHAB itself).
  3. If needed check which version you run via menu option 00.
  4. If on Raspberry, create an image copy of your SD card using menu option 54.
  5. Switching to openHAB 4.0.0 release depends on what version you’re upgrading from:
    a) If you have been running a 3.x release version, select menu entry 03 “Install or upgrade to latest openHAB” option.
    b) If you have been running a snapshot or milestone release of 4.0, select the first entry in menu option 41 (“Release”).
APT (Debian / Ubuntu and derivatives)

Make sure that openHAB is sourced from the latest location, has the correct GPG signing key and that your system can download .deb packages via HTTPS by following the instructions for a stable installation in the docs.

Please specifically note that the "old" signing key expired on July 24, 2023 - if you are still using this, you will need to download the latest key. See https://community.openhab.org/t/linux-repo-public-key-is-expiring-soon/147905 for details.

If the above is correct, simply upgrade by using:

sudo apt-get update
sudo apt-get upgrade

Alternatively, you can force apt to install 4.0.0 and its optional add-ons with:

sudo apt-get install openhab=4.0.0-1

## optional add-ons for offline installation ##
sudo apt-get install openhab-addons=4.0.0-1

openHAB is also distributed in RPM packages. To use them, make sure that openHAB is sourced from the latest location, and has the correct GPG signing key for verification by following the stable installation instructions outlined in the docs.

If the above is correct, then simply upgrade using your systems package manager (yum, dnf, etc.)

sudo yum update

Alternatively, you can force apt to install 4.0.0 and its optional add-ons with:

sudo yum install openhab-4.0.0-1

## optional addons for offline installation ##
sudo yum install openhab-addons-4.0.0-1

Official update scripts are available that let you update your 3.x installation to version 4.0:

Linux/macOS

  1. Change to your openHAB root directory (e.g. cd /opt/openhab)
  2. Create a backup by calling sudo ./runtime/bin/backup.
  3. Run the update command:
sudo ./runtime/bin/update 4.0.0

Windows

  1. Make a backup of your openHAB installation folder.
  2. Run PowerShell as administrator and change to your openHAB root directory (e.g. cd C:\openHAB)
  3. Run the update command:
. .\runtime\bin\update.ps1
Update-openHAB -OHVersion 4.0.0

Please read the following information carefully BEFORE starting the upgrade, since you might have to do some manual steps upfront.

Changes in Units of Measurement (UoM)

Units of Measurement is used for handling values with units attached (like 23 °C). It has been refactored in openHAB 4 and needs some special attention when upgrading. Since the introduction of UoM in openHAB 2.3 some limitations have been discovered. One of these issues is inconsistent handling of units when no state description for the item is defined. With openHAB 3.4 we already introduced a "default unit" that is used as the item's unit when no other units has been set. Unfortunately this still has issues, e.g. it invalidates your persisted data when you change the unit that is used for displaying.

The new concept

The new concept follows these principles:

  1. A Number item never shows a unit. Linking thing channels to such an item results in the unit being dropped (i.e. if the thing sends 23 °C), the item state will be 23.

  2. An item with dimension (Number:Power) has a unit (e.g. kW that is used within openHAB that is independent from the unit that is used for displaying. A value that has no unit attached will be considered to be in that unit (i.e. 5 will result in the item state changing to 5 kW). Values with units will be converted to that unit (i.e. 500 W will result in an item state of 0.5 kW). Incompatible values (e.g. sending 5 Hz to a Number:Temperature channel) are discarded.

  3. The unit of the item is used internally, in events and also for persistence.

  4. The DISPLAY of the item is controlled by the state description. A unit set in the state description MUST be compatible to the unit of the item. The state description does not affect anything except displaying the values.

As a result your configuration might need some adjustments. It is strongly recommended to check if something needs to be done BEFORE upgrading.

Upgrading
Textual configuration

For textual configuration (.items files), you should check all Number:.... items:

  • If you see a unit in Main UI that is the same as the system default (https://www.openhab.org/docs/concepts/units-of-measurement.html#quantitytype), technically no change is needed. However it is strongly recommended to set unit metadata (see below).
  • If you have set a state description and the unit is different from the system default (please be aware that this can also be the result of an automatic state description from a linked channel) you are required to set unit metadata. Failing to do so, will result in corrupted data in your persisted data.

Example:

Number:Energy Electrical_Consumption "Electrical Consumption [%.0f Wh]" { channel="myenergybinding:meterthing:totalmeter" }

needs adjustment, because the system default for Number:Energy is different (kWh). Set the unit metadata to Wh.

Number:Energy Electrical_Consumption "Electrical Consumption [%.0f Wh]" { unit="Wh", channel="myenergybinding:meterthing:totalmeter" }

Another example:

Number:Dimensionless Relative_Humidity "Relative Humidity" { channel="myweatherbinding:hygrometerthing:humidity" }

might need adjustment when channel is of type system.atmospheric-humidity because it has state description "%.0f %%" and system default is "Abstract unit one (one)". Set the unit metadata to %:

Number:Dimensionless Relative_Humidity "Relative Humidity" { unit="%", channel="myweatherbinding:hygrometerthing:humidity" }
Managed configuration (UI)

An upgradetool was added to the update scripts. This tool re-writes the item database and copies the state description units to the required metadata. State descriptions from system-channel types are also automatically converted. Have a close look at the output of the script during the upgrade process and check if you need to adjust some items manually.

Upgrading from openHAB versions <3.4

Older openHAB versions (before 3.4) had no system default unit for a lot of dimensions. If you upgrade from such a version, it is recommended to set the unit metadata to those that you see in UI.

Changes in JavaScript Automation

The application/javascript MIME type has moved from NashornJS to GraalJS due to the removal of NashornJS in Java 14. All UI-based JavaScript scripts including Blocklies are broken now. To make them work again:

  • Migrate your Blocklies (see Rules Blockly | openHAB)
  • Install the JavaScript Nashorn add-on and change the MIME type of your old application/javascript scripts to application/javascript;version=ECMAScript-5.1. The UI has a picker for the MIME type of existing scripts inside the "Script Details" menu inside the script editor. (Or rewrite them for GraalJS, where the openhab-js library will ease your life.)

Core Changes

Changes in Add-ons

Airthings Binding
  • The channels radon_st_avg and radon_lt_avg are now of dimension RadiationSpecificActivity instead of Density. Please update your linked items accordingly.
Bosch Indego Binding
  • Due to changes in the cloud services, the authentication method has changed. Please follow the authorization flow described in the documentation. Furthermore, a bridge is now required and must be assigned to the indego thing. Configuration of username and password is no longer required/supported.
ComfoAir Binding
  • The channel enthalpy#enthalpyTime now represents the set time (in minutes) instead of the internal number value that is sent to the device (minutes / 12).
DanfossAirUnit Binding
  • The deprecated channel 'manual_fan_speed' has been removed. Please use channel 'manual_fan_step' introduced in 3.2.
Dark Sky Binding
  • Due to EOL of their API, this add-on has been removed.
Generac MobileLink Binding
  • Due to an API change, existing Generator Things will need to be deleted and added again. Additionally, existing Items will need to be adjusted to reflect the updated Generator Thing channels.
HomeKit
  • Add-on wide configuration of mappings for thermostat modes is no longer supported. Please use item-level configuration as described in the README.
Hue emulation
  • The uniqueid value has been changed to resolve discovery issues with Alexa. You may need to rediscover "devices" in all services that use the hue emulation (Amazon Echo, Logitech Harmony, etc).
Hunter Douglas (Luxaflex) PowerView Binding
  • Deprecated scene channels have been removed. Please use the scene channels introduced in 3.2 (in channel group 'scenes').
JavaScript
  • JavaScript engines have changed their MIME types: NashornJS is application/javascript:version=ECMAScript-5.1 and GraalJS is application/javascript. Please update your scripts to either make them compatible with GraalJS or change the MIME type to continue to use NashornJS. For Blockly migration, visit the Blockly documentation.
JavaScript NashornJS
  • NashornJS has been removed from core and isn't included by default. If you still need or want to use it, you can install it as an add-on.
JavaScript Scripting Automation
  • The old "metadata" and "itemchannellink" APIs have been replaced by a new API with extended functionality on the "items" namespace.
  • ItemHistory: historicState, maximumBetween, maximumSince, minimumBetween, minimumSince & previousState now return a HistoricItem instead of just the state. previousStateTimestamp has been removed, the timestamp is available on the HistoricItem.
KNX Binding
  • Units of Measurements have been introduced, make sure you use correct units in the state description. Rules may need to be adapted. Several items changed from PercentType to QuantityType, i.e. raw values increase by a factor of 100.
LuftdatenInfo Binding
  • The binding was renamed to Sensor.Community Binding to match the new naming of the service. Things need to be recreated.
Netatmo Binding
  • Due to API authorization process change scheduled on the 2023/04/17 - refresh Token is no more stored in thing configuration, thus can be removed from things config files. If it remains, it'll be ignored.
  • New scope has been added for the introduction of the Carbon Monoxide Alarm. Authorization process has to be replayed (and former refreshToken can be removed from things config files -- see above).
Windcentrale Binding
  • The binding has been reworked to support the new API that requires authentication. Delete old 'mill' Things, add an 'account' Bridge and add new 'windmill' Things using the 'account' as Bridge. The channel names now follow the naming conventions. Items must be adapted for these changes.