openHAB 3.0.0
This is the official release of openHAB 3.0.0.
The binaries are available on Bintray and via "Stable" on our APT repository.
New and Noteworthy
The openHAB 3.0 release is a major release that contains many structural changes, 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.
Please especially note that there is no full backward compatibility with existing setups - so please carefully check the section on breaking changes. While the upgrade procedure tries to do as much as possible for you, you might maybe want to consider this major update as an opportunity to clean up your installation from what piled up over the years and start with a clean installation and manually migrate the relevant parts of your existing installation.
Quick links:
- Notes about new add-ons
- Notes about the core runtime
- Breaking Changes that require manual interaction after the upgrade.
Relevant Changes
New Add-ons
The following add-ons are newly introduced with the 3.0 release:
| Add-on | Type | Issue |
|---|---|---|
| Zoneminder | Binding | #8530 |
| Remote openHAB | Binding | #8791 |
| Touchwand | Binding | #8754 |
| Unified Remote | Binding | #8546 |
| HTTP | Binding | #8521 |
| Revogi | Binding | #8534 |
| Serial | Binding | #8851 |
| TR064 | Binding | #8523 |
| WLed | Binding | #8669 |
| Bluetooth (Generic) | Binding | #8775 |
| Playstation | Binding | #8585 |
| Pushover | Binding | #8586 |
| Bluetooth (Enoceanble) | Binding | #9223 |
| Epson Projector | Binding | #9021 |
| IRobot | Binding | #8723 |
| Gardena | Binding | #8869 |
| Jython Scripting | Automation | #9404 |
| Groovy Scripting | Automation | #8772 |
Additional add-ons that were introduced since the 2.5.0 release
Runtime
These are the major changes over the 2.5 runtime:
| Type | Issue | Change |
|---|---|---|
| Enhancements | 1272 | Add the ability to send HTTP headers in sendHttpXXXRequest |
| 1308 | Added Ampere hour (Ah) and electrolytic conductivity (µS/cm) units | |
| 1347 | Units for reactive and apparent power | |
| 1364 | Simple dynamic item state updates SSE endpoint & API. | |
| 1368 | Added Bq/m³ and ppb units | |
| 1370 | Improved file extension exclusion | |
| 1385 | Removed auto-linking feature and "Simple Mode" | |
| 1387 | Allow persistence services to define default strategies | |
| 1395 | Utility for removing orphan links | |
| 1422 | Switch widget as default widget for Number or String items with command options | |
| 1450 | Added Timer::isActive() | |
| 1470 | Allow DateTimeFormat for labels of Number:Time items | |
| 1482 | REST API: Re-enable auth | |
| 1510 | Use hostname as JmDNS client name | |
| 1514 | Model loading improvements | |
| 1551 | Added methods to calculate variance and standard deviation for persisted items | |
| 1570 | REST: Added runtime info to root resource response | |
| 1586 | Use "openhab" console scope | |
| 1587 | Use "openhab" event topic prefix | |
| 1588 | switched PersistenceExtensions to ZonedDateTime | |
| 1603 | Use TypeParser in ProfileCallbackImpl#sendUpdate for StringType state | |
| 1608 | Added systeminfo rest resource | |
| 1617 | Improved add-on installation logic | |
| 1647 | Use consistent capitalization with Conditions, Triggers, Actions | |
| 1681 | Sort Ephemeris config parameter options | |
| 1684 | Upgrade to Jollyday 0.5.10 | |
| 1685 | Upgrade Xtext/Xtend to 2.23.0 and LSP 0.9.0 | |
| 1688 | Upgrade to XStream 1.4.13 | |
| 1690 | Remove actions from available add-on types | |
| 1700 | Make ExecUtil more robust | |
| 1703 | Added action for 'isBankHoliday()' | |
| 1710 | Included measurement system in REST root resource | |
| 1705 | Cleaned up logging in ExecUtil | |
| 1713 | Allow basic authentication to authorize API access | |
| 1721 | Upgraded JmDNS to version 3.5.6 | |
| 1722 | Added Automation extension type | |
| 1735 | Added API tokens & openhab:users console command | |
| 1744 | Sorted audio sinks for say and playSound actions | |
| 1789 | Added support for QuantityTypes to DefaultChartProvider | |
| 1563 | Allow max, min and avg calculations on other types | |
| 1794 | Print 'ItemChannelLink' configuration in output of console commands | |
| 1803 | Added expire functionality as core framework feature | |
| 1812 | Log reason for rules/scripts refresh | |
| 1837 | Pass script context to script engines | |
| 1838 | Added support for MetricPrefix combined with byte and use byte as default instead of octet | |
| 1814 | Enhanced semantic ontology | |
| 1858 | Adapted event handler thread names to naming convention | |
| 1726 | Added 'Hysteresis' profile | |
| 1770 | Provide triggering item name in the rule context | |
| 1854 | Added Actions for Play and Say which sets the volume | |
| 1880 | Cache safe call proxies for profiles instead of continuously recreating them | |
| 1861 | Added operationIds for OpenAPI specification | |
| 1914 | Implemented start level service | |
| 1930 | Translated messages for auth pages | |
| 1216 | Rollover log files on startup | |
| Bug Fixes | 1376 | Added implicit import for units to rule models |
| 1394 | Fixed intensity conversion from W/m² to µW/cm² | |
| 1399 | Dynamic state/command provider should not return original description | |
| 1404 | Replaced unit placeholder in patterns if updated by DecimalType states | |
| 1405 | Fixed UnsupportedOperationException in StateDescriptionFragmentBuilder | |
| 1406 | Fixed concurrency issue in state update | |
| 1423 | Model refactoring, Memory Leak prevention, UTF-8 encoding | |
| 1453 | Fixed creation of 'EphemerisConditionHandler' | |
| 1481 | Added validation for relation between ThingUID and BridgeUID | |
| 1517 | Allow negative numbers in metadata for Items | |
| 1519 | Fixed handling of inverted cron ranges | |
| 1533 | Fixed cron scheduler handling sunday as number | |
| 1536 | Fixed duplication of config descriptions | |
| 1562 | Avoid 'ArithmeticException' if timeSpan is zero | |
| 1718 | Fixed initialization of group items with aggregation functions | |
| 1737 | Fixed IAE when enabling debug logging on PersistenceManagerImpl | |
| 1806 | Fixed NPE when no command is given in a member-of-group trigger | |
| 1825 | Harden item creation by checking for validity of name | |
| 1856 | Prevent NPE on shutdown by making maps in DSLRuleProvider thread safe | |
| 1860 | Remove semantic metadata on item tag removal | |
| 1940 | Make quantity types available in scripts |
Breaking Changes that Require Manual Interaction after the Upgrade
General
- The runtime now requires Java 11 instead of Java 8, so please make sure to install an appropriate JVM.
- Most visible change is the new Main UI. It comes with a setup wizard and which replaces Paper UI and HABmin and also serves as a very powerful end-user UI.
- The compatibility layer is gone, so 1.x add-ons will no longer work. If you rely on them and there isn't a new add-on in openHAB 3 for it (yet), you can make use of the new "remote openHAB" binding which allows to keep an old openHAB 2 instance running with the required add-ons and include it into an openHAB 3 setup.
- The administration related parts of the REST API are now secured which eliminates many potential attacks from malware in the local network. As a side effect, some inofficial/custom 3rd party integrations might not work anymore as expected.
You can use theopenhab:usersin the console to add or change users. - Logging definitions have changed to XML format. Your definitions in
$OPENHAB_USERDATA/org.ops4j.pax.logging.cfgwill be replaced by new defaults inlog4j2.xml.
While there has not really been any substantial change, read this updated docs section for a summary of best pratices.
Rules
The next-gen rule engine (NGRE) of openHAB 2.5 has now become the official rule engine within openHAB.
Good news is that rule DSL files are almost not impacted by this change. Nonetheless, there is the need to revisit existing rules since there were a couple of breaking changes in the DSL syntax. Note it's best practice to make your rules compatible ahead of time while you still run on OH2.5.
- The implicit variable
triggeringItemis now only available for "Member of" triggers - all other item state/command triggers now have an implicit variabletriggeringItemNameinstead. - Rules now use Java Time API instead of Jodatime so some expressions need to be adapted:
getHourOfDay → getHour, getMinuteOfHour → getMinute, getMonthOfYear → getMonthValue
Some simple>and<comparisons may no longer work and you may need to useisAfter()/isBefore()instead.
You can replace occurrences ofnowbyZonedDateTime::nowin your 2.5 rules. Useimport java.time.ZonedDateTime.
See also this thread for more information. - The action
executeCommandLine()has a new syntax and needs to be adapted in DSL rule files.
Persistence
rrd4jpersistence is now enabled by default. The default strategy is to persist on every change and once a minute. There is norrd4j.persistfile though.
Add-ons
- iCalendar: calendar is now a Bridge instead of a plain thing. Readding the calendar or changing the configuration in text files is necessary.
- The "Embedded broker" (Moquette) add-on has been removed due to Moquette being an abandoned project with major bugs that won't be fixed anymore. Please use a separate MQTT broker like Mosquitto instead.
- The new Zoneminder binding in openHAB 3 is no longer compatible with Zoneminder versions earlier than 1.34.0.
Old UIs
- Sitemap: the server is no more providing a default sitemap.
- Classic UI: Classic UI has been removed from the OH3 distribution.