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:
- Notes about new add-ons
- Notes about the core runtime
- Notes about the UIs
- Notes about the add-ons
- Upgrade Process for openHABian, APT, RPM, Manual Installations
- Breaking Changes that require manual interaction after the upgrade.
Relevant Changes
New Add-ons
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:
Runtime
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 |
User Interfaces
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-ons
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 |
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 |
Upgrade Process
Backup your configuration
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.
openHABian
If you are working with an openHABian setup,
- Use SSH to connect to the command line and run
sudo openhabian-config
. - When being asked, answer that you want to update openHABian (note that’s not about openHAB itself).
- If needed check which version you run via menu option 00.
- If on Raspberry, create an image copy of your SD card using menu option 54.
- 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”).
Package-based Installations
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
RPM
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
Manual Installations
Official update scripts are available that let you update your 3.x installation to version 4.0:
Linux/macOS
- Change to your openHAB root directory (e.g.
cd /opt/openhab
) - Create a backup by calling
sudo ./runtime/bin/backup
. - Run the update command:
sudo ./runtime/bin/update 4.0.0
Windows
- Make a backup of your openHAB installation folder.
- Run PowerShell as administrator and change to your openHAB root directory (e.g.
cd C:\openHAB
) - Run the update command:
. .\runtime\bin\update.ps1
Update-openHAB -OHVersion 4.0.0
Breaking Changes that Require Manual Interaction after the Upgrade
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:
-
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 sends23 °C
), the item state will be23
. -
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 to5 kW
).
Values with units will be converted to that unit (i.e.500 W
will result in an item state of0.5 kW
).
Incompatible values (e.g. sending5 Hz
to aNumber:Temperature
channel) are discarded. -
The unit of the item is used internally, in events and also for persistence.
-
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 toapplication/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
- core.GenericEventTrigger and core.GenericEventCondition parameters have have changed. See https://www.openhab.org/docs/configuration/rules-ng.html#system-module-types.
- Rules are now triggered by ItemStateUpdatedEvent instead of ItemStateEvent. If you use JSR223 scripting without helper libraries and expect a certain Java type, code changes might be needed.
- The syntax for an item category/icon in a textual configuration file no longer accepts a value enclosed in quotes. So
<temperature>
is valid but not<"temperature">
. Please update the definition of your items if necessary. - SCRIPT transformation has been removed and replaced with language-specific transformations: JS, RB, PY, DSL, GROOVY, etc. See https://www.openhab.org/docs/configuration/transformations.html#script-transformation
Changes in Add-ons
Airthings Binding
- The channels
radon_st_avg
andradon_lt_avg
are now of dimensionRadiationSpecificActivity
instead ofDensity
. 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.