Examples of HABPanel Solutions

I think it would be awesome if people could maybe use this topic to post screenshots of their panels to give the rest of us inspiration as to what is possible.


My Multiroom Audio Control and my heating control using my Nest thermostat.


My Audio Control, Sensors and Switches. To do: Play/Skip/Pause for iTunes.


Still fine tuning and adding to my Dashboard. But this is what I have so far.


Hi bwhouse, can you show me how you realized the link/unlink for your Sonos. I’m working on it bit I:m stuck.

@bwhouse How did you realize the window to show tail output? Is it really a kind of live console view?

What type of amp are you using for your multiroom audio?

How did you go about making the log screen?

How do I make more than one level?

MainDashboard -> Rooms -> Office (for example)

I’m stuck at “Rooms” but as I can see you have: “MainDashboard->Living Area->Wohnbereich” :slight_smile:

@Marijn_Oudijk I really need to clean my rules up as they are not using groups at the moment, but basically I built a function that i pass the Sonos Player Join item too and it checks if any other players are currently running if they are it joins to that player. It isn’t ideal as it only allows you to link to the current active player. but it works for my purpose. I will post the rule tonight when I get home.

@hannibal29 & @KjetilA the log screen is using the Frame widget pointed at frontail (https://github.com/mthenw/frontail) which is a really light nodejs app that tails log files to the browser. I have had frontail running on my openhab box for awhile as I always seem to be looking at logs for one reason or another.

@antasp3136 Multiroom audio is all Sonos

1 Like

@Marijn_Oudijk Just realised I have a copy of the rules in git. So this is how I currently do it. As I said, now that I have worked out how to use groups and enumerate through them properly I need to refactor this rule to use anOH group to go through the players rather than simply check all three manually.

I am still tweaking the rule but it generally works pretty well.

Example items for each player look like this, I basically have a switch which is the link/unlink called sonosBathroomJoin below

Switch  sonosBathroomPlay        <sofa> { sonos="[ON:Bathroom:play], [OFF:Bathroom:play]"}
Switch  sonosBathroomJoin       "Bathroom Play / Join"  <sofa> (g_sonos, g_sonos_play, gDashboard)
Switch  sonosBathroomLeave      {sonos="[ON:Bathroom:standalone]", autoupdate="false"}

And the rule, the last status update rule seems to be required as when you join a player to a group it starts playing however doesn’t seem to update the equivalent switch for play/pause

val org.eclipse.xtext.xbase.lib.Functions$Function2 playerJoin = [String playerName, org.openhab.core.library.items.SwitchItem playerStart|
                logInfo("sonos", playerName + ": Play / Join Triggered")
                        if (sonosLivingRoomPlay.state == ON)
                                        logInfo("sonos", playerName + ": Joining Livingroom Group")
                                        sendCommand(sonosLivingRoomGroup, playerName)
                        else if (sonosBedroomPlay.state == ON)
                                        logInfo("sonos", playerName + ": Joining Bedroom Group")
                                        sendCommand(sonosBedroomGroup, playerName)
                        else if (sonosBathroomPlay.state == ON)
                                        logInfo("Sonos", playerName + ": Joining Bathroom Group")
                                        sendCommand(sonosBathroomGroup, playerName)
                                        logInfo("sonos", playerName + ": No active players to join! start on my own")
                                        sendCommand(playerStart, ON)

rule "Bedroom Start Play / Join"
                Item sonosBedroomJoin received command
                if (receivedCommand ==ON)
                        playerJoin.apply("Bedroom", sonosBedroomPlay)
                        logInfo("sonos", "Bedroom: Shutting down player and leaving any groups")
                        sendCommand(sonosBedroomPlay, OFF)
                        sendCommand(sonosBedroomLeave, ON)

rule "Bathroom Play Status"
                Item sonosBathroomState received update
                var state = sonosBathroomState.state
                if (state == "PLAYING" || state == "TRANSITIONING") {
                        postUpdate(sonosBathroomPlay, ON)
                        postUpdate(sonosBathroomJoin, ON)
                } else {
                        postUpdate(sonosBathroomPlay, OFF)
                        postUpdate(sonosBathroomJoin, OFF)

Wow - the design looks awesome…
How did you customize to chart to be that good looking?

1 Like

Wow. thanks. Didn’t know frontail. That’s great. So I have a new task for today: Replace my ugly textfile based log solution with fronttail :smile:

HABpanel has an option to use N3-Line-chart as a charting option. This only works when you are using OH2 though.

Noone did multilevel dashboards? :frowning:

It’s not possible.

Where do you get the calendar events and time to work from?

@ysc Hmm, OK, so to expand on this question, there’s also no way to have widgets on the Home panel?

@HomeBoss I have a nodejs script that grabs the next 4 appointments from google calendar, formats a string and places them in to 4 items in OH.

Hm, damn… should be… I try to replace my gira facility server with openhab and want to have a structure like

  • Lightning
  • Security
  • Heating
  • Rooms
    • Living Room
    • Bathroom

and so on… otherwise I would have to scroll to death :wink:

btw: do you all optimize for more than 1 resolution? i had to make one for my screen and one for my mobile… responsiveness is not working as expected (from my side).