Commit Graph
2404 Commits
Author SHA1 Message Date
Holger FriedrichandGitHub c3deec6d21 Add tests for gson (#5182)
* Add tests for gson

Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
2025-12-15 22:33:25 +01:00
Jeff JamesandGitHub b45a3b1203 Fixed issue where EnrichedSemanticTagDTO members were not listed in openapi spec given they were not public (#5194)
Signed-off-by: Jeff James <jeff@james-online.com>
2025-12-15 22:23:08 +01:00
NadaharandGitHub fd00c77ff5 Refactor websocket concurrency handling (#5165)
* Refactor websocket concurrency handling
* Modify web socket buffering logic to ensure FIFO and avoid blocking the logger thread
* Use a dedicated executor that is guaranteed not to log anything
* Logging tweak

Signed-off-by: Ravi Nadahar <nadahar@rediffmail.com>
2025-12-14 22:14:42 +01:00
Mark HerwegeandGitHub 361d71433d Persistence no default strategies and persistence configuration health check (#4682)
* no default strategy and persistence health
* upgradetool

Signed-off-by: Mark Herwege <mark.herwege@telenet.be>
2025-12-14 17:28:26 +01:00
openhab-botandGitHub 636c476d3e New Crowdin updates (#5188)
* New translations addons.properties (French)
* New translations tags.properties (French)
2025-12-14 13:11:44 +01:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>kaikreuzer
ed1a094a40 Add missing 400 response documentation to REST API endpoints (#5144)
* Add missing 400 API response documentation to REST endpoints

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: kaikreuzer <3244965+kaikreuzer@users.noreply.github.com>
2025-12-13 16:52:19 +01:00
Andrew Fiddian-GreenandGitHub c0cd523e8c Lower the log level for useTags (#5142)
Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
2025-12-13 08:24:43 +01:00
lolodomoandGitHub 2789e69d5e [YAML thing provider] Handles properly channels with group (#5181)
Fix openhab/openhab-webui#3562

Signed-off-by: Laurent Garnier <lg.hc@free.fr>
2025-12-12 08:45:42 +01:00
Holger Friedrich 82ed8b3d05 Revert "Bump org.eclipse.jdt:ecj from 3.43.0 to 3.44.0 (#5179)"
This reverts commit e05bf6169e.
2025-12-11 01:21:08 +01:00
NadaharandGitHub 409ab79101 Use dedicated executor for long-running SDDP discovery tasks (#5174)
Some of the SDDP tasks are long-running by design, the background scan task in particular runs indefinitely (until interrupted). This clashes with the idea in #4969, and perhaps with the envisioned use of OH's shared thread pools in general, in that pools are small and tasks are expected to be short-lived. When setting logging to DEBUG, the log will be constantly "spammed" with complaints about the SDDP discovery task taking more than 5 seconds, which it is in fact designed to do.

Signed-off-by: Ravi Nadahar <nadahar@rediffmail.com>
2025-12-09 22:51:04 +01:00
Zhivka DimovaandGitHub 8720a69449 [rest-api]: Change error code 500 to 400 (#5104)
* [rest-api]: Change error code 500 to 400

Change the response code of the rest api when submitting invalid
parameters.

Signed-off-by: Zhivka Dimova <zhivka.dimova@myforest.net>
2025-12-09 22:31:28 +01:00
NadaharandGitHub 84cfec2925 Eliminate double localization of discovery results (#5151)
* Remove double localization of discovery results

Localization of discovery results requires a bundle from which to acquire the translations. When bindings implement AbstractDiscoveryService themselves, the bundle is resolved using the class of the implementation. For "sub discovery services" where bindings are "participants", this doesn't work, because the  implementing class is the "sub discovery service" itself, not the binding, which means that the resolved bundle doesn't have any translations. This has been solved by doing an extra round of localization in the "sub discovery service" (using the correct bundle) before passing the DiscoveryResult on to AbstractDiscoveryService, which will attempt localization again, with the wrong bundle, but since no translations are found in this bundle, it has no other consequences than being wasteful.

This solves the problem by adding a second thingDiscovered() method to AbstractDiscoveryService, which accepts a bundle as a second argument. That way, "sub discovery services" can resolve the correct bundle using the participant class, and pass on the correct bundle, avoiding the "double localization".

In addition, a new factory method is added to DiscoveryResultBuilder that allows initializing a new builder from an existing DiscoveryResult instance, so that this doesn't have to be done in the localization method itself.

Signed-off-by: Ravi Nadahar <nadahar@rediffmail.com>
2025-12-09 22:18:14 +01:00
dependabot[bot]andGitHub e05bf6169e Bump org.eclipse.jdt:ecj from 3.43.0 to 3.44.0 (#5179)
* Bump org.eclipse.jdt:ecj from 3.43.0 to 3.44.0

Bumps [org.eclipse.jdt:ecj](https://github.com/eclipse-jdt/eclipse.jdt.core) from 3.43.0 to 3.44.0.
- [Commits](https://github.com/eclipse-jdt/eclipse.jdt.core/commits)

---
updated-dependencies:
- dependency-name: org.eclipse.jdt:ecj
  dependency-version: 3.44.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

* Change order of Mock and Nullable annotations

Also-by: Holger Friedrich <mail@holger-friedrich.de>
Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 04:16:42 +01:00
Дилян ПалаузовandGitHub b3e583867e Script DSL: do implicit “import java.time.temporal.ChronoUnit;” (#5098) 2025-12-06 20:00:59 +01:00
Дилян ПалаузовandGitHub 7705f2ba9b Script DSL: accept Collection Literals (#5077)
* lists - `#['Hello','World']` , and
* sets - `#{'Hello','World'}`
2025-12-06 19:55:11 +01:00
lolodomoandGitHub 8f8fabbd2f [DSL/YAML] Changes prefix for isolated models (#5153)
Isolated DSL/YAML models are models that do not fill the things/items/... registries when they are loaded.
They are used as temporary models for particular features.

These models have a particular prefix in their names to distinguish them.
It was "tmp_" before, it is now "___tmp_".
The risk that a user names one of its file with such prefix is reduced.
If a DSL file with prefix "___tmp_" is by the way used by a user, this file is ignored and a message is now logged to inform the user.

Closed #5134

Change pattern for isolated model name

tmp_DSL_model_<N>.items => ___tmp_model_<N>.items
tmp_YAML_model_<N>.yaml => ___tmp_model_<N>.yaml

Signed-off-by: Laurent Garnier <lg.hc@free.fr>
2025-12-06 19:48:08 +01:00
lolodomoandGitHub 21acfb57e0 [DSL/YAML generator] Consider item pattern formatter even without label (#5154)
* [DSL/YAML generator] Consider item pattern formatter even without label

Items without label but with a formatter are now properly considered when generating DSL and YAML syntax.
Example: Number SceneItem "[MAP(scene.map):%s]"
Bug was reported on the community forum.

Signed-off-by: Laurent Garnier <lg.hc@free.fr>

* Fix typos discovered by Copilot

Signed-off-by: Laurent Garnier <lg.hc@free.fr>

---------

Signed-off-by: Laurent Garnier <lg.hc@free.fr>
2025-12-06 19:45:36 +01:00
dependabot[bot]andGitHub 5b9f872093 Bump org.apache.groovy:groovy-all from 5.0.2 to 5.0.3 (#5173)
Bumps [org.apache.groovy:groovy-all](https://github.com/apache/groovy) from 5.0.2 to 5.0.3.
- [Commits](https://github.com/apache/groovy/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-05 21:13:20 +01:00
Holger FriedrichandGitHub 7ca628ecc8 Fix SAT warnings (#5170)
Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
2025-12-04 22:41:25 +01:00
Andrew Fiddian-GreenandGitHub de78550851 [HexUtils] Add a couple more methods (#5164)
* [HexUtils] Add a couple of methods

Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
2025-12-02 08:48:12 +01:00
GiviMADandGitHub 390503b7ef [audio] Add pcm audio websocket with dialog support (#4032)
* [audio] Add pcm audio websocket with dialog support
* improve KSEdgeService support
* fix/spotless voice provider

Signed-off-by: Miguel Álvarez <miguelwork92@gmail.com>
2025-11-29 22:07:55 +01:00
openhab-botandGitHub c56c0165e4 New translations tags.properties (Danish) (#5149) 2025-11-27 21:05:17 +01:00
Florian HotzeandGitHub ac59fba8a7 BusEventImpl: Fix source not passed for sendCommand(Item, String, String) (#5150)
Signed-off-by: Florian Hotze <dev@florianhotze.com>
2025-11-25 18:17:32 +01:00
Дилян ПалаузовandGitHub 1aa3f67bde ScriptEngineFactory.createScriptEngine() - describe purpose of parameter (#5066) 2025-11-25 08:55:56 +01:00
lolodomoandGitHub 725cd267b8 [YAML item/thing providers] Change way to check syntax for few fields (#5085)
Concerned fields are:
- group in the "groups" list of an item
- UID of a linked channel in an item
- namespace of a metadata attached to an item
- UID of a thing
- "bridge" field of a thing
- channel id of a channel declared in a thing
- "type" field of a channel

A check was also added for the "profile" configuration parameter of a linked channel.
Related to #5057

Signed-off-by: Laurent Garnier <lg.hc@free.fr>
2025-11-23 12:43:00 +01:00
Cody CutrerandGitHub fc9c923621 Allow cross-binding bridges (#5083)
Signed-off-by: Cody Cutrer <cody@cutrer.us>
2025-11-23 00:22:09 +01:00
NadaharandGitHub 75b885a137 Refactor Windows USB discovery (#5092)
* Create User32Ex with some mappings missing in JNA's User32
* Create WindowMessageHandler for subscribing to device change messages

The class, when run as a Runnable, creates an invisible window and uses that to listen for device change events for USB devices and serial ports. It listens in a blocking message loop, so it's necessary to call terminate() for the loop to exit and the run() method to exit. Results are sent to subscribing WindowMessageListeners.

* Refactor WindowsUsbSerialDiscovery to use a different approach to gathering device information

The previous implementation scanned the registry for USB devices on a fixed interval. This implementation changes most of the core logic, using SetupAPI as the primary source of information instead of the registry. That allows it to process less information to get to the information of interest, in addition to only "discovering" devices that are currently connected to the computer. The registry keeps the entries for all devices that have previously been connected as well, which would also be "discovered" with the previous implementation.

In addition, this implementation uses WindowMessageHandler to receive device change messages from Windows, making regular scanning unnecessary. If the WindowMessageHandler fails for some reason, the implementation will fall back to scanning on an interval, but this scanning is still using SetupAPI to acquire the data.

* Various thread-safety and consistency fixes

- UsbAddonFinder: Remove unused Set and fix concurrency behavior. ConcurrentHashMap is unsuitable here because it doesn't allow locking the full map, which is needed during "merging" and when resolving suggested add-ons.
- DeltaUsbSerialScanner: Make lastScanResult thread-safe.
- Ser2NetUsbSerialDiscovery: Make lastScanResult thread-safe, reduce the scope of locking to reduce contention and lessen how many locks are held at once. Make notifyListeners volatile for thread-safe access, and stop reacting to jmdns serviceAdded events. jmdns first fires serviceAdded when the service has just been discovered, but most of the information hasn't yet been gathered, and then fires serviceResolved once all the data has been registered. The data received in serviceAdded is incomplete and rarely useful, at best it's a "heads-up, this device might be resolved soon".
- UsbSerialDiscovery: Correct JavaDoc
- UsbSerialDiscoveryService: Minor logging tweaks, only log "Discovered new" the first time the device is "discovered".

Signed-off-by: Ravi Nadahar <nadahar@rediffmail.com>
2025-11-23 00:02:54 +01:00
Edwin IngandGitHub 0deb287f07 Fixed several nondeterministic tests (#5048)
Also-by: Shiyang Zhao <sz89@illinois.edu>
Signed-off-by: Edwin Ing <edwinji2@illinois.edu>
2025-11-22 23:55:32 +01:00
NadaharandGitHub dd2a59a7b5 Make ConfigDescriptionParameter.stepsize serialize to "step" to be consistent with XML schema (#5132)
Signed-off-by: Ravi Nadahar <nadahar@rediffmail.com>
2025-11-22 23:44:27 +01:00
Cody CutrerandGitHub 759c4e70d5 Allow source from header in REST API (#5131)
* Allow source from header in REST API

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2025-11-22 22:41:53 +01:00
openhab-botandGitHub 8a9b341717 New translations tags.properties (German) (#5141) 2025-11-22 22:13:02 +01:00
Christoph WeitkampandGitHub f5a3e41eff Added semantic property for Prices (#5140)
Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
2025-11-22 18:59:03 +01:00
openhab-botandGitHub 81016bbbc8 New translations tags.properties (Danish) (#5133) 2025-11-21 19:07:44 +01:00
Christoph WeitkampandGitHub 66177cc992 Added support for TimeSeries on Offset-Profile (#5119)
Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
2025-11-21 18:47:29 +01:00
Florian HotzeandGitHub e39eb5df7c DefaultScriptScopeProvider: Provide BusEventImpl instead of ScriptBusEventImpl (#5136)
org.openhab.core.automation.module.script...ScriptBusEventImpl was a copy of org.openhab.core.model.script...BusEvent,
which was removed in #5122.
In #5122, a org.openhab.core.automation.module.script...BusEventImpl was added, which is already used by the org.openhab.core.model.script bundle.

I think the ScriptBusEventImpl copy of the old BusEvent class was done to avoid a dependency org.openhab.core.automation.module.script => org.openhab.core.model.script.
As we now have a BusEventImpl in the automation bundle, we can use it for the DefaultScriptScopeProvider and get rid of ScriptBusEventImpl.

Signed-off-by: Florian Hotze <dev@florianhotze.com>
2025-11-21 08:43:44 +01:00
Florian HotzeandGitHub a1a92f2dcc Populate source when sending Item events via BusEvent (#5122)
Signed-off-by: Florian Hotze <dev@florianhotze.com>
2025-11-13 21:48:19 +01:00
Florian HotzeandGitHub 7e3ceea80c ConfigDescriptionParameter: Format JavaDoc using HTML tags (#5126)
Signed-off-by: Florian Hotze <dev@florianhotze.com>
2025-11-13 21:43:51 +01:00
Дилян ПалаузовandGitHub 1a61dc02f1 model.rule.runtime: Remove unused RuleEvaluationContext (#5102) 2025-11-10 22:53:29 +01:00
Дилян ПалаузовandGitHub 36b34d25d5 model.script.ScriptImplicitlyImportedTypes: remove dead code (#5099) 2025-11-10 22:51:22 +01:00
Florian HotzeandGitHub ed8f54a41c Refactor BusEvent to ScriptExtension (#5064)
Comparable to #3155.

JSR-223 automation add-ons often use the script actions from the org.openhab.core.model.script bundle.
The downside is that the actions are tied to XText or at least use some hacks to provide static access to OSGi services.

This refactors the BusEvent actions, making them available as ScriptExtension via import-preset ScriptAction.
The actions are wrapped for DSL rules, to stay backward compatible.

Signed-off-by: Florian Hotze <dev@florianhotze.com>
2025-11-10 22:49:19 +01:00
Edwin IngandGitHub 43f16e73bb Fix nondeterministic JsonStorageTest (#5112)
Signed-off-by: Edwin Ing <edwinji2@illinois.edu>
2025-11-10 22:45:41 +01:00
Дилян ПалаузовandGitHub 34340cbfe4 Do not require Strategies{} in persistence files (#5094) 2025-11-10 22:40:04 +01:00
Cody CutrerandGitHub 6267d2ebca Populate source when sending item events via REST API (#5041)
Optionally allow providing a source, and then append (or directly) set
the REST package and authenticated username.

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2025-11-10 22:33:46 +01:00
NadaharandGitHub 6f51ef2143 Minor rulesupport fixes (#5074)
Signed-off-by: Ravi Nadahar <nadahar@rediffmail.com>
2025-11-10 19:58:23 +01:00
Christoph WeitkampandGitHub df0af0958e Added dimension for price per volume and related currency units (#5110)
Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
2025-11-09 18:14:55 +01:00
Holger FriedrichandGitHub eaf0e7b09e [io.monitor] Upgrade dependencies (#5118)
* metrics-core from 4.2.30 to 4.2.37

  Release notes:
  https://github.com/dropwizard/metrics/releases

* micrometer-core from 1.14.5 to 1.16.0

  Release notes:
  https://github.com/micrometer-metrics/micrometer/releases

Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
2025-11-09 07:33:38 +01:00
lo92frandGitHub 87d9a08a7a Fix event handling for Genasubscription (#5114)
* fix for Sonos binding not working anymore because wrong match on event source device / participant

Signed-off-by: Laurent ARNAL <laurent@clae.net>
2025-11-04 21:30:29 +01:00
Cody CutrerandGitHub b1670ec2fa Make FilterCriteria.Operator.getSymbol public (#5106)
Signed-off-by: Cody Cutrer <cody@cutrer.us>
2025-10-31 00:35:14 +01:00
NadaharandGitHub 08b3fb2a31 Add AbstractThingHandlerDiscoveryService constructor for tests (#5100)
* Add AbstractThingHandlerDiscoveryService constructor for tests to use a different executor
* Add JavaDocs
* Make ThingHandler type generic

Signed-off-by: Ravi Nadahar <nadahar@rediffmail.com>
2025-10-26 07:20:28 +01:00
NadaharandGitHub 58c9bb2812 Same thread executor (#5072)
* Create SameThreadExecutorService for use by tests

Signed-off-by: Ravi Nadahar <nadahar@rediffmail.com>
2025-10-25 20:54:50 +02:00