Ideas and Discussion: What Features Do You Want in openHAB 5.0?

Hi Community,

With openHAB 5.0 on the horizon, it’s the perfect time to gather your ideas, suggestions, and feature requests for the next major release. We’ve seen significant improvements in recent versions, but what features or enhancements are still missing? What could further enhance the user experience or unlock new possibilities for your smart home setups?

Here are a few topics to spark the discussion:

New Integrations: Are there specific devices or protocols you’d like to see supported?

User Interface: Any improvements for the MainUI or alternative interfaces?

Automation and Rules: Ideas for enhancing the rules engine, adding new automation features, or improving the UI workflow?

Performance and Stability: Are there any areas where you feel optimizations are still needed?

Developer Experience: Suggestions for better tooling, documentation, or ways to make extending openHAB easier?

Let’s shape the future of openHAB 5.0 together! We’re excited to hear your creative ideas and constructive feedback.

3 Likes

Hi everyone,

I wanted to share an idea for openHAB 5.0: integrating the ESP32-S3 as a lightweight voice satellite for audio streaming to enable decentralized voice recognition. This could provide a cost-effective solution for smart homes that rely on voice control, leveraging the openHAB ecosystem to process commands centrally.

Overview

The concept involves using the ESP32-S3 to capture audio via I2S and stream it over Wi-Fi to openHAB using a WebSocket or similar protocol. The audio can then be processed by openHAB’s voice recognition engine or an external service. Below is a basic example of how this could be implemented.

ESP32-S3 Code (Streaming Audio via Wi-Fi)


#include <WiFi.h>  
#include <driver/i2s.h>  

// Wi-Fi credentials  
const char* ssid = "YOUR_SSID";  
const char* password = "YOUR_PASSWORD";  
const int port = 12345;  

// I2S configuration  
#define I2S_WS 25  
#define I2S_SD 26  
#define I2S_SCK 27  

void setup() {  
    Serial.begin(115200);  

    // Connect to Wi-Fi  
    WiFi.begin(ssid, password);  
    while (WiFi.status() != WL_CONNECTED) {  
        delay(1000);  
        Serial.println("Connecting to WiFi...");  
    }  
    Serial.println("Connected to WiFi");  

    // Configure I2S  
    i2s_config_t i2s_config = {  
        .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_RX),  
        .sample_rate = 44100,  
        .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,  
        .channel_format = I2S_CHANNEL_FMT_ONLY_LEFT,  
        .communication_format = I2S_COMM_FORMAT_I2S,  
        .dma_buf_count = 8,  
        .dma_buf_len = 512,  
        .use_apll = false  
    };  

    i2s_pin_config_t pin_config = {  
        .bck_io_num = I2S_SCK,  
        .ws_io_num = I2S_WS,  
        .data_out_num = I2S_PIN_NO_CHANGE,  
        .data_in_num = I2S_SD  
    };  

    i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL);  
    i2s_set_pin(I2S_NUM_0, &pin_config);  
}  

void loop() {  
    WiFiClient client = WiFiServer(port).available();  

    if (client) {  
        Serial.println("Client connected");  
        uint8_t buffer[512];  
        size_t bytes_read;  

        while (client.connected()) {  
            i2s_read(I2S_NUM_0, buffer, sizeof(buffer), &bytes_read, portMAX_DELAY);  
            if (bytes_read > 0) {  
                client.write(buffer, bytes_read);  
            }  
        }  

        client.stop();  
        Serial.println("Client disconnected");  
    }  
}

Java Program (Receiving and Playing the Audio Stream)




import javax.sound.sampled.*;  
import java.io.BufferedInputStream;  
import java.io.InputStream;  
import java.net.ServerSocket;  
import java.net.Socket;  

public class AudioReceiver {  
    private static final int PORT = 12345;  
    private static final int BUFFER_SIZE = 512;  

    public static void main(String[] args) {  
        try (ServerSocket serverSocket = new ServerSocket(PORT)) {  
            System.out.println("Listening for connections on port " + PORT);  
            Socket socket = serverSocket.accept();  
            System.out.println("Client connected");  

            AudioFormat format = new AudioFormat(44100, 16, 1, true, true);  
            DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);  
            SourceDataLine audioLine = (SourceDataLine) AudioSystem.getLine(info);  
            audioLine.open(format);  
            audioLine.start();  

            InputStream input = new BufferedInputStream(socket.getInputStream());  
            byte[] buffer = new byte[BUFFER_SIZE];  

            int bytesRead;  
            while ((bytesRead = input.read(buffer)) != -1) {  
                audioLine.write(buffer, 0, bytesRead);  
            }  

            audioLine.drain();  
            audioLine.close();  
            socket.close();  
            System.out.println("Connection closed");  

        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}

Key Benefits

  1. Cost-Effective: ESP32-S3 is affordable and widely available.

  2. Decentralized Capture: Audio can be captured in multiple rooms and processed centrally.

  3. Scalability: Supports multiple devices streaming to one central hub.

Next Steps

For those interested, feel free to suggest improvements, contribute code, or discuss the technical feasibility. This could become a great addition to openHAB’s voice assistant capabilities!

6 Likes

Here are two more exciting features that could enhance the openHAB 5.0 experience:

  1. Upgrade to Latest Vue and Framework7

PR: openhab/openhab-webui#2151

This upgrade will bring openHAB’s MainUI to the latest versions of Vue.js and Framework7, ensuring better performance, modernized UI components, and improved developer support. It will help future-proof the interface and enable smoother, more responsive user interactions.

  1. Add Log Viewer to MainUI

PR: openhab/openhab-webui#2884

Integrating a log viewer directly into the MainUI will provide users with an easy way to monitor system events and troubleshoot issues without needing to access external tools. This feature would make diagnostics more accessible, especially for users who prefer a centralized interface for system management.

Why These Enhancements Matter

Upgrading the UI framework ensures that openHAB stays up-to-date with the latest web technologies, providing a modern, stable, and efficient experience. The addition of a built-in log viewer further simplifies system management, empowering users with better insight into the system’s behavior.

I’m eager to see how the community feels about these additions. Let’s discuss!

5 Likes

I would like to see support for the Semantic Model in textual configuration files.

I would like to see the option to configure non-official (i.e. marketplace and json 3rd-party) addons to be installed automatically via addons.cfg

@JimH what’s missing about that? I’m using semantic model through text files…

edit: And please get complete item and link configuration through yaml up and running…

2 Likes

In MainUI integrated and customizable logviewer so that we can drop frontail which is not maintained anymore and not available on Windows machines.

2 Likes

+1
seems like this has been asked for at least a bazzillion times :wink: :roll_eyes: :rofl:

First of all I would like to thank everyone who is contributing to the project!
Here are some thoughts of what can be improved:
In my opinion creating a good looking visualization with all the components (items) is still a hassle in my opinion. Compared to other home automation projects it takes a lot of time and pain to create visualizations. I would love to see this get’s improved.
If openhab should be used by more people who have a only little IT background it all needs to become more user friendly to use.
The two concepts of setting up the automation objects (things & items) should be merged to one. In my opinion it should be possible the have a one time automated migration of the text based configuration into the “visual based” configuration.
If you still want to support those users who what to do things manually, then just provide an embeded text editor which allows them to modify the config items in text form but all gets stored into one DB.
There should also be a (potential) automatic regular rotating backup of the full configuration, which then users can simply copy to a different file system (or even openhab can put the backup there automatically).
I think this all would make the project more accessible to the everyday user and help to keep the community alive.
Home Assistent seems to have achieved that and there should be no reason openHAB can’t achieve that too.
:slight_smile:

1 Like

I have some stromg opinions about that topic…

No. Things and Items are two different things :slight_smile: The former is to describe hardware, while the latter is openHAB’s B(us). And these aren’t automation objects at all.

Available since OH3.0 :slight_smile:

Why? You don’t need to do any text configuration, so don’t force others to only use a Web UI!

Available since OH2.x (userdata/jsondb/backups/) (UI config only)

Please don’t, this is not the job of openHAB!
Instead, use a backup solution of your choice.
For example, if using Docker, there are already volumes, you only have to save these for backup.
I’m using zfs and all configuration is stored in datasets, which are backuped from zfs low-level.
So please, leave it to the user.

Please stop comparing openHAB with Home Assistant.
If you want Home Assistant, use Home Assistant, but don’t blame openHAB for not being like Home Assistant.

10 Likes

I really don’t understand this answer …
Isn’t the topic of this thread " Ideas and Discussion: What Features Do You Want in openHAB 5.0?"?
Which means I can make suggestions, right?
If I find a different project does something good and with that attracts more users, why shouldn’t openHAB take over and or improve a good concept?
All I did in my post is writing up what I find a non Computer Scientist user would like to see in order to make use of openHAB.
I am a computer scientiest and thus may not have the trouble, but I always try to look at products from the DAU perspective. If you don’t do that, you’ll never understand why your product does not “sell”. Yes, openHAB is free, still you may rather want to have a large community instead of only a group full of specialists which may loose interest after a while because the next hype train is arriving.
So all I tried to give is some inspiration on what openHAB can do better.
If you feel that most of the things I wrote above are already available, then just ignore it.
The normal smartphone affiliated user doesn’t know how to run Docker etc. … I understand that you may have a solution but the normal user does not.

In regards to my sentence

The two concepts of setting up the automation objects (things & items) should be merged to one.
→ I did not mean things and items should be merged into one concept, but the text based and the UI based configuration. I thought that was clear because of the sentence I wrote before, but it may have been misleading to mention things & items in breakets.
Anyways … please feel free to ignore my input.

Please see the third word of the topic: Discussion.
My point is: There are many users which use openHAB since more than a decade. Why do you want to cast out those in favor of newbies, which may or may not stay?
Don’t get me wrong, I’m ok with progress and new solutions, but there already is a Web UI which is capable to support new users as well as the old ones. There is no need to remove textual configuration at any point.
I’m pretty sure that, finally, DSL will go away as part of core and instead DSL will become an addon, and that’s totally fine. But there is no reason to get rid of the DSL completely.

But don’t forget there are also advanced users.
Take a look at the Main UI, that’s not DAU-friendly at all (and no, it won’t). Home automation systems are not for DAU and the DAU won’t be happy with a home automation (even the professional crap won’t be of any help).

Well, I’m in no means a computer scientist… but I’m a computer enthusiast, and that’s the spirit.
If one doesn’t want to use computers highly above average, there is no chance that this person will ever be happy with home brew smart home solutions.

3 Likes
8 Likes

I want to caution everyone threads like this are at best brain storming exercises. No request or feature is likely to be implemented without a volunteer to work it. This is just brain storming, nothing more.

Are you familiar with Willow - Open Source Echo/Google Home Quality Speech Hardware for $50?

I think an add-on could be created with this to make the integration better.

As mentioned, this is already possible but I don’t think it’s documented. An issue is open to add it to the documents waiting to be worked. All the info needed is in the issue if someone wants a good first issue to contribute.

A PR was started and abandonded. Who ever volunteers for this needs to either ignore the tons of discussion that will be generated and ge to an MVP or be ready to deal with a million contradictory opinions about how it should work.

But if that PR can be resurected, a good deal of work has already been done and it’s a much requested feature.

As @milo links to, a PR has already been opened and I’m hopeful to get a MVP by 4.3 release in a few weeks. It’s already looking really good. Thanks @chris!

This is not going to happen. There are too many users who prefer files for their config and some use cases where files are the only really viable option (e.g. those who run a business configuring and managing OH installations.

Before all the file based users freak out, this is not going to happen. Your file based configs are safe.

To be fair, the built in mechanism only supports .items files. For everything else there is no import mechanism though there are some scripts on the forum that do this I think (mayb they do the opposite and migrate managed configs to file configs, I don’t remember).


My wants in no particular order:

  • Add a tool under Developer Tools to create Rule Templates. We already have a tool for Block Libraries and for MainUI Widgets. I don’t think it would be that much of a streatch to support Rule Tempaltes too. This will greatly improve the ability to test them prior to publishing them to the marketplace, or have the option to create a template without publishing it to the marketplace at all.

  • Improve the upgrade process for rule templates, widgets, Block Libraries. Even if we can have a way to know when a template has been updated would be an improvement. For now you have to subscribe to the topic thread to discover that a tempalte has been updated and then one needs to remove the old template and readd the new and then delete the rules and recreate them in order to update. The same goes for MainUI Widgets and Block Libraries on the marketpalce.

  • An add-on(?) that adds an LLM (Llama?) trained on OH that knows OH configs and OH rules and can help out with those since ChatGPT et. al. are so horrible with that and far too many are trying to use them anyway. As an add-on it can be integrated in the developer sidebar perhaps where one can ask it questions and get meaningful responses. It needs to be an add-on though since an LLM requires hefty hardware to be useful.

  • Import/export for all OH configs in the same (or mostly same) YAML as shown in MainUI which of course requires support for YAML file based configs. Note for a lot of things JSON files are already supported but JSON is really hard to use as a human, especially for rules. I’m not sure JSON is supported for everything though. The overall intent is to provide a mechanism for users to move to and away from managed configs as desired.

  • GraalVM Python 3

  • Clojure, Scala, or any other functional rules language that doesn’t require jumping through lots of hoops (e.g. installing the marketplace Java Rules add-on first). I miss my parens, car and cdr. I also think the event driven nature of OH makes functional programming a good fit.

  • A real built in scheduler akin to the Timeline Picker. Setting up a schedule for OH rules has come a long way but still has a long way to go. We should be able to create a schedule at least as easily as can be done for just about any smart thermostat.

  • The ability to access stuff (e.g. newState) in UI rule actions and conditions and the ability to pass the result from calling one UI rule action to the next in the list. And while we are on the topic, a sleep UI rule action is much requested. UI only rules are OK but they can be made more capable than they are now. I think work is already underway to make Thing Actions more usable from UI only rules.

  • Persistence viewer/editor to see what’s persisted in a table and “fix” entries, clean up no longer needed data, etc.

  • With all the great new capabilities added to persistence I wonder if rrd4j is a good default any longer. Maybe SQLite would be a better choice. However, that would only be viable if the previous is also implemented so there’s an easy way to get rid of no longer needed data to avoid the DB from eating the whole file system over time.

6 Likes

My smart home is getting pretty busy now.
I’d like to see some bulk editing tools for items and things.
eg

  • Bulk create sets of groups and items from lots of things at once. These ‘import templates’ should be savable for tweaking and reusing. If there were a few more data points attached to the Things, this process could be automated. eg create equipment from all lights using available channels, plus custom user channels, placing them in the correct room groups etc etc
  • Bulk delete, including or excluding child items.
  • Bulk replace items, for changing names or sets of custom channels etc.
  • Bulk change properties,
  • Find and replace item names in rules, scripts, widgets, and anywhere else it might be referenced.

There could also be some organisational stuff to help navigate a complex smart home and make bulk selections etc. Maybe using metadata and tags is enough if something like folders is too alien for OpenHAB, so long as there are ways to make use of them in the UI for filtering and searching etc.

2 Likes

Just because it’s a less well known feature, the developer sidebar has a pretty good search function that searches most properties and contents of most OH entites. Once found the entity can be pinned and then navigated to/from.

I know you were talking about search and filter in a bulk editor so this isn’t 100% relevant to yoru comment, but I wanted to point out that search and filter by itself is possible now for those who are not aware.

Once pinned you can interact with them right from the sidebar.

After testing various voice assistant options, I’ve settled on Rhasspy combined with ESP32-S3 satellites for my home automation setup. It’s been a rewarding experience, but there’s one challenge I still face: maintaining two separate configurations. Alongside Rhasspy, I also use OpenHAB’s voice assistant via the mobile app on my phone or tablet, which complicates things. Ideally, I’d love to merge both systems into a unified setup.

Why Two Systems?

The reason is simple: I’ve modified my Google Nest Mini with an ESP32-S3 to create a fully offline, privacy-focused voice assistant. However, in certain scenarios—like when I’m in the bedroom or walking around the house—I find it more convenient to use my phone rather than shouting commands across rooms.

The Potential Solution

Integrating ESP32 satellites into OpenHAB’s voice ecosystem would streamline everything. It’s not overly complex to implement, and doing so could eliminate the need for dual configurations. This would enhance the experience by offering a seamless, single-platform solution while still keeping the system private and offline.

The Big Question: Why Not OpenHAB?

All other major home automation systems already offer similar functionality, so why not OpenHAB? Adding this capability would bring OpenHAB in line with competitors, further solidifying its position as a leading, open-source home automation platform.

I’m curious if others have faced similar challenges or found effective solutions. How do you manage multiple voice assistant systems, and have you succeeded in integrating ESP32 devices into OpenHAB for a smoother experience? Let’s share insights and ideas!

I love these kinds of discussions so… no biting, scratching, spitting, throwing food or pulling hair

And for the love of all that is holy… don’t turn this into a file/UI blood bath
file config is not going anywhere… period

Some of my favorites so far:

I think this could be a real key to helping new users get a true automation system up and running while knowing very little about how it works. We had a great discussion about a year ago about the first time user’s experience. This has since been greatly improved, I see Rich’s vision of rules templates as being the next step. Once installed, light bulb discovered, UI has graphic representation of light bulb and it works… now what?
Rules templates can be plug and play simple automations for common scenarios
After awhile we have tons of them. Make a searchable library of them. Make a little wizard to help you sent them up.

I like this idea and I’ll take it one step further…
build in the astro binding!!!

I searched and searched and could not find the thread where I first suggested it but why is the astro binding a binding???
Why is it not built in?
The first time setup gets your location
this is a home automation system, in other words it doesn’t move around
Knowing when the sun will rise and set are such common automation requirements I think the astro binding should be built into the system and not a seperate binding/addon

1 Like

Two things come to mind related to rules:

  • A way to schedule things relative to Astro channel events, i.e., “30 minutes before sunset”
  • A way to add “But only if” for each Then clause. This would simplify rules that have exceptions, i.e.,
When Sunset
Then
* Turn this on
* Adjust that
* Do something else, but only if noone is home
* Do another something else, but only if the season is Summer
* etc.

Otherwise, the above ends up as three rules, or the actions are moved into a script where the logic can be as above. Both work, but are maintenance-heavy as changes to the condition now have to be kept in sync across the multiple rules, or you have logic “hidden” in scripts.

On the developer tools, a way to save and reuse parameter settings for a widget would be super convenient. I have a few widgets with 8 or 10 parameters, and it can be tedious to set them up each time I go back to work on the widget. Since it’s developer focused, it could even be as simple as exposing yaml that could be copied and pasted back. I wouldn’t expect OH to be responsible for cataloging multiple instances of this.

1 Like

I could not find an issue in Github (I’m a Github noob). Could someone point me to it?

Integrated open source voice agent to remove any dependency on big corp products (read amazon, google, or siri). Plus a gui based upgrade/patch/configuration layer that would really help pull in those less sophisticated users to OpenHab.