Core framework of openHAB
Go to file
Gwendal Roulleau 8eddad5c76
[audio] Enhance AudioSink capabilities using the AudioServlet (#3461)
* [audio] More capabilities for AudioSink using the AudioServlet

AudioServlet can now serve all type of AudioStream multiple times by buffering data in memory or in temporary file.
Adding method to ease disposal of temporary file after playing a sound
Adding an identifyier to audio stream for further development (allow audio sink to cache computation data)

We can now send audio with a Runnable for a delayed task to be executed after. This delayed task includes temporary file deletion and volume restoration.
This is a no breaking change / no behaviour modification for other addon AudioSink, as existing AudioSink must explicitly override the old behaviour to use this capability.
Add AudioSinkSync / AudioSinkAsync abstract classes to use this capability easily.
WebAudioSink now implements this capability, with the help of a modified AudioServlet

Adding (approximative, better than nothing) sound duration computation method for MP3 and WAV.
Use this sound duration computation to guess when the async sound is finished and when to do the post process (i.e. volume restoration)

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2023-06-16 21:54:11 +02:00
.github Add issue and pull request templates and configuration (#3463) 2023-04-01 14:39:25 +02:00
bom Bump jose4j (#3645) 2023-06-08 13:26:43 +02:00
bundles [audio] Enhance AudioSink capabilities using the AudioServlet (#3461) 2023-06-16 21:54:11 +02:00
features [websocket] Allow registering websocket adapters (#3622) 2023-06-10 15:35:23 +02:00
itests "Cacheability" option for critical REST resources (#3335) 2023-06-15 20:16:14 +02:00
licenses/epl-2.0 mavenize openHAB and integrate mavenized ESH repository (#467) 2019-01-28 13:07:31 +01:00
tools Also adjust system channel types for unit (#3649) 2023-06-11 21:25:16 +02:00
.gitattributes Improve test stability and OS compatibility (#2878) 2022-04-14 23:00:33 +02:00
.gitignore Add .gradle to .gitignore (#2913) 2022-04-14 00:07:15 +02:00
CODEOWNERS Add CODEOWNERS file (#1996) 2020-12-23 20:04:44 +01:00
CONTRIBUTING.md removed 1.x compatibility layer (#1284) 2019-12-21 11:32:29 +01:00
crowdin.yml Fix Crowdin translation filename mismatch (#2302) 2021-04-20 20:26:01 +02:00
LICENSE Changed license from EPL v1 to EPL v2 (#466) 2019-01-16 22:59:49 +01:00
NOTICE Add NOTICE file (#631) 2019-03-06 16:09:24 +01:00
pom.xml Update to SAT version 0.15.0 (#3623) 2023-05-23 09:10:54 +02:00
README.md Raise minimum JDK version to 17 (#2994) 2022-12-19 19:52:43 +01:00

openHAB Core

GitHub Actions Build Status Jenkins Build Status EPL-2.0 Crowdin Bountysource

This project contains core bundles of the openHAB runtime.

Building and running the project is fairly easy if you follow the steps detailed below.

Please note that openHAB Core is not a product itself, but a framework to build solutions on top. It is picked up by the main openHAB distribution.

This means that what you build is primarily an artifact repository of OSGi bundles that can be used within smart home products.

1. Prerequisites

The build infrastructure is based on Maven. If you know Maven already then there won't be any surprises for you. If you have not worked with Maven yet, just follow the instructions and everything will miraculously work ;-)

What you need before you start:

Make sure that the mvn command is available on your path

2. Checkout

Checkout the source code from GitHub, e.g. by running:

git clone https://github.com/openhab/openhab-core.git

3. Building with Maven

To build this project from the sources, Maven takes care of everything:

  • set MAVEN_OPTS to -Xms512m -Xmx1024m
  • change into the openhab-core directory (cd openhab-core)
  • run mvn clean install to compile and package all sources

If there are tests that are failing occasionally on your local build, run mvn -DskipTests=true clean install instead to skip them.

How to contribute

If you want to become a contributor to the project, please read about contributing and check our guidelines first.