First of all I would like to thank you all for the great project and the experience I made over the years with OpenHab. I checked my backups and just saw that I started already with OH 2.3 in 2018…
Back then, I had a Raspi 3 running piVCCU (Homematic server), openVPN, pi-hole and Openhab - and if I remember correctly, I even ran InfluxDB + Grafana on that Raspi. And it was working nicely, which seems to be really surprising right now when I look at my current setup.
Today I Have 1100+ Items, 100+ Things and 100+ rules running on a Raspi 4 standalone with only Openhabian, separated from the Raspi 3 piVCCU and a Raspi 3 InfluxDB+Grafana (+MongoDB occasionally).
I really liked the file based configuration of OH 2.x, so I was a bit concerned about the approach the project is heading to, the UI based configuration. I was even looking at other home automation projects to be prepared for a migration. But as I’m curious and in general really liked the OH way of configuration and the app integration, I gave 3.0 a chance. So when migrating to 3.0 I re-created all my things, imported the items and was surprised that it was working quite smoothly. It was just a pain to remove all the UI transformation patterns from the labels after importing the items and then adding them to the metadata. And creating the semantic model out of the imported items took quite some time and is still not completely done.
In general I like the semantic model, I just don’t want to see everything in that - like read-only switches or virtual variables which are just set and used by rules.
This leads me to the UI rules - as a developer I’m used to use an IDE or editor to write my code and making heavy use of code completion, intellisense and linting. So I was very concerned if I should really migrate my rules DSL files to the UI. But there are some killer features which convinced me that I really want to use the UI:
- conditions: this is really nice. I had a lot of rules to set switches only if another item had a special state and now I can create the UI rules even without writing code, it’s just a simple action which is executed once the trigger is fired
- run now: I missed that everytime I wrote a rule in VSCode. Now you can immediately see if there is an error in the rule (which is mostly caused by missing linting)
- time based triggers: creating these triggers is a charm - the UI based creation of cron rules saves a lot of time, if you don’t have to always search the internet for the syntax (I know a linux user should know the format of cron expressions…)
- JavaScript: I never got warm with the rules DSL - I’m a Java developer, but the code you write with Xtend is far from standard Java and I never googled so much when developing my regular Java projects… I worked a lot with node.js so it is really nice that I can now use JS in my rules (even if it is not the latest version, but that’s OK).
It took some time until I migrated all my rules, but now I made it - and thanks to the great support of the forum I could really migrate all rules to JavaScript, where it is required. Almost half of my rules I created just by clicking the respective actions… and the number of loc is reduced significantly compared to before.
And I’m now thinking about what should I automate next as it is fun working with the new features
After the migration to 3.2 the only files left now in my conf folder are the
- sitemap: I like that as it is easy to maintain and easy to use in the Android app
- icons: I’m using a lot of material icons
- transformations: translations, data transformation
- some external scripts triggered by the exec binding,
- and the exec whitelist
There are just a few things which in my opinion could be better especially compared to the VSCode integration (but I know not all of them can be implemented in the UI, it is just no IDE):
- with so many items the semantic model item picker becomes very slow when creating new rules. Especially choosing an item outside of the model takes ages. I started using the code editor for the rules and copy/pasting the parts between them. So a code completion or just a flat list might be a bit quicker
- auto-formatting of code would be nice
- linting would be nice
- searching in rules is not possible without IDE. I opened the automation_rules.json in parallel to the UI to perform searches
- copy/paste of rules is not possible. A “clone” feature for rules would be nice. The clone action could open the editor pre-filled with the same code like the original rule
- it would be nice if I could maintain the transformation files via the UI
Additionally it seems like there is a kind of memory leak when editing a lot of rules. I couldn’t find out any root cause, but I observed that, especially when an error was thrown, the system becomes slower and slower until you can’t use the UI anymore. I had some heap space errors as well, but these were resolved when I set the heap to 512MB.
Anyhow, thanks again for all the effort to make OH such a pleasure to use!