openHAB 3.0 Milestone 2 discussion

Especially if this is repeatable please file an issue at the openhab-webuis repo so it gets fixed.

You’ve several options but for OH 3 perhaps the best option I documented at OH 3 Examples: How to boot strap the state of an Item. Other options include:

  • a System started rule to update the Item
  • setting the state through the Karaf console
  • setting the state through the REST API
1 Like

How do I update a manually (ZIP extract) installed OH2 installation to OH3M2? What do I give as parameter to the update script? Something like 3.0.0.M2?

so after upgrading to openHAB 3.0 none of my regular GPIO Items are working anymore, these are all Contacts and have state NULL.
OneWire still works though.
GPIO is a v1 binding so I assume it’s no longer in openHAB 3.0 but I can’t seem to find any info on this topic here or on GitHub.

No v1 bindings work with OH3. That was an early design decision.The addon status is tracked here.

The solution is to run them on OH2 and use the remoteopenhab binding to connect the OH2 Items to OH3. Use the latest snapshot of OH3 though. There were connection bugs in earlier OH3 versions.

EDIT: Apparently there was a start on a v2 binding for GPIO but there are merge issues. PR is here.

Thanks for the info and links, much appreciated!
I’ll look into setting up an openHAB instance for my GPIO items for now.
Good to know an updated binding is in the works though!

Basically when using remoteopenhab the OH2 Items show up as channels on the server bridge in OH3. You can then create OH3 Items linked to those channels.

1 Like

You mean the “Control” page in Paper UI? I don’t know where this is in OH3.

That was replaced in OH2 by using wither the Basic UI or HABPanel. That area of the Paper UI has been deprecated & not updated for a long time.

In OH3 the Pages section of the Main UI is meant to replace the Basic UI but the Basic UI & HABPAnel are still available in OH3.

I question that such is possible. A string item created as described above is not linked to a channel and therefore does not show up in the control section of PaperUI.

1 Like

Have not tried the creation of an item, but for sure this is possible in the control page of paperUI for thing channels

You can only manually add Things that are defined in the binding. For instance I could add a different Sun Thing from astro. I could not add a new constellation thing because that is not defined in the binding.

I do my real UIs with HABPanel. Control is a bit ugly and buggy, but very useful for quickly trying new things or items without creating an UI or writing rules or using the REST API.

1 Like

I thought that looked complex so I have not done that.

The same author developed the new Main UI. I really need to learn that now. Perhaps HABPanel later.

I think HABPanel is super cool and I also have developed some extra widgets for my needs.
Also, it is very nice to run it inside the HABPanelViewer App on Android tablets, which offers additional methods of communication between the panel/device and the server.
The only downside is that it does not scale correctly between devices. So, if you want a panel to fit perfectly on a specific device, you have to design it for that device. But we are getting off-topic.

So, I would hope that maybe something like the Control page will come back in the future.

1 Like

I believe that is the mission of the Main UI pages. There are widgets there too.

But they do not appear automatically, right?

If you create a model for your Items than the locations, equipment, and properties tabs get automatically populated based on how your Items are situated in the model.

The above screenshots show the locations page and my Garage room. Nothing shown has any customization and were put on the page automatically. All I had to do was create the model in the Model tab. Personally, with the “add equipment from thing” and “add points from thing” options, I hardly ever need to mess with the Items page directly any more. I do it all from the model.

If you want to customize how those automatically generated UIs look, you can define the widget that gets used for a given Item on the Item itself on the Item’s page.

The Default Standalone Widget is also what get’s used at the top of the page (where it shows the network icon and “online”). As indicated by my tutorial link above, if you want to be able to change the Item’s state, you can define an Input Card (or slider or knob or what ever is appropriate) on the automatically generated pages or from the Item’s page, if the appropriate card isn’t chosen for you by default (e.g. a Switch will default to a toggle card).

4 Likes

I love HABPanel. My only problem with it is not being able to hide it behind a login. My temp fix is to hide it behind a VLAN. Hopefully we have basic users in the future that can only receive HABPanel layouts created by admin users.

You can restrict visibility of pages or even individual widgets to certain roles or users with the visibleTo parameter in most UI components of the new main UI.
By the way, these visibility parameters have been exposed in the “Default LIst Widget” metadata editor in that freshly merged PR, so you can conditionally hide or show items when these defaults are used, notably in the home page cards.

For instance, adding an expression to control the visibility of a color temperature widget based on the state of another (Color item):

image

2020-11-21_00-00-49

You can also change their order in the lists.

Just remember this feature doesn’t give you hard protection against unwanted item tampering - it just hides them from the UI.

1 Like

Seems like a cannot run OH2 and OH3 in parallel on the same machine (I have of course configured different HTTP and HTTPS ports):

2020-11-21 10:43:29.166 [WARN ] [org.apache.karaf.shell.ssh.Activator] - Exception caught while starting SSH server
java.net.BindException: Address already in use
        at sun.nio.ch.Net.bind0(Native Method) ~[?:?]
        at sun.nio.ch.Net.bind(Net.java:455) ~[?:?]
        at sun.nio.ch.Net.bind(Net.java:447) ~[?:?]
        at sun.nio.ch.AsynchronousServerSocketChannelImpl.bind(AsynchronousServerSocketChannelImpl.java:164) ~[?:?]
        at org.apache.sshd.common.io.nio2.Nio2Acceptor.bind(Nio2Acceptor.java:63) ~[bundleFile:1.7.0]
        at org.apache.sshd.common.io.nio2.Nio2Acceptor.bind(Nio2Acceptor.java:87) ~[bundleFile:1.7.0]
        at org.apache.sshd.server.SshServer.start(SshServer.java:324) ~[bundleFile:1.7.0]
        at org.apache.karaf.shell.ssh.Activator.createAndRunSshServer(Activator.java:124) [bundleFile:?]
        at org.apache.karaf.shell.ssh.Activator.doStart(Activator.java:113) [bundleFile:?]
        at org.apache.karaf.util.tracker.BaseActivator.run(BaseActivator.java:312) [bundleFile:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
        at java.lang.Thread.run(Thread.java:834) [?:?]