# Examples of HABPanel Solutions

**URL:** <https://community.openhab.org/t/examples-of-habpanel-solutions/15557>\
**Category:** HABPanel Examples\
**Created:** [October 21, 2016, 11:49pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557 "2016-10-21T23:49:08Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![TommySharp](https://community.openhab.org/user_avatar/community.openhab.org/tommysharp/32/2171_2.png) [@TommySharp](https://community.openhab.org/u/TommySharp)\
**Post date:** [October 21, 2016, 11:49pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/1 "2016-10-21T23:49:08Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![snoekieboe](https://community.openhab.org/letter_avatar_proxy/v4/letter/s/278dde/32.png) [@snoekieboe](https://community.openhab.org/u/snoekieboe)\
**Post date:** [October 22, 2016, 2:25pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/2 "2016-10-22T14:25:46Z")

</div>

![](https://community-openhab-org.s3-eu-central-1.amazonaws.com/original/2X/a/a14ff9cd60fe72d748b99ab4a31fe2cc29764794.png) ![](https://community-openhab-org.s3-eu-central-1.amazonaws.com/original/2X/6/6a2589e38e3238bcad69c9e520cf8eada40e2204.png)

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

---

<div class="post-metadata">

**Author:** ![Heiko\_Fanieng](https://community.openhab.org/user_avatar/community.openhab.org/heiko_fanieng/32/1080_2.png) [@Heiko\_Fanieng](https://community.openhab.org/u/Heiko_Fanieng)\
**Post date:** [October 24, 2016, 10:31am UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/3 "2016-10-24T10:31:00Z")

</div>

![](https://community-openhab-org.s3-eu-central-1.amazonaws.com/original/2X/3/3707906c84b76694da191d7f644fa79511ea88ac.png)

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

---

<div class="post-metadata">

**Author:** ![bwhouse](https://community.openhab.org/letter_avatar_proxy/v4/letter/b/278dde/32.png) [@bwhouse](https://community.openhab.org/u/bwhouse)\
**Post date:** [October 30, 2016, 10:46pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/4 "2016-10-30T22:46:31Z")

</div>

Still fine tuning and adding to my Dashboard. But this is what I have so far.  
 ![](https://community-openhab-org.s3-eu-central-1.amazonaws.com/original/2X/b/bd18783f0945178f98eb9d7f8478a844cb17b9fa.png) ![](https://community-openhab-org.s3-eu-central-1.amazonaws.com/original/2X/a/abaefaedf849bada97596c9708debd16da0d54d5.png) ![](https://community-openhab-org.s3-eu-central-1.amazonaws.com/original/2X/8/86f6de672b867e12640da19e3186856f2776558c.png)

---

<div class="post-metadata">

**Author:** ![Marijn\_Oudijk](https://community.openhab.org/user_avatar/community.openhab.org/marijn_oudijk/32/36371_2.png) [@Marijn\_Oudijk](https://community.openhab.org/u/Marijn_Oudijk)\
**Post date:** [October 31, 2016, 9:50am UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/5 "2016-10-31T09:50:34Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![hannibal29](https://community.openhab.org/user_avatar/community.openhab.org/hannibal29/32/30801_2.png) [@hannibal29](https://community.openhab.org/u/hannibal29)\
**Post date:** [October 31, 2016, 1:00pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/6 "2016-10-31T13:00:56Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![antasp3136](https://community.openhab.org/user_avatar/community.openhab.org/antasp3136/32/71630_2.png) [@antasp3136](https://community.openhab.org/u/antasp3136)\
**Post date:** [October 31, 2016, 2:02pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/7 "2016-10-31T14:02:15Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![KjetilA](https://community.openhab.org/user_avatar/community.openhab.org/kjetila/32/841_2.png) [@KjetilA](https://community.openhab.org/u/KjetilA)\
**Post date:** [October 31, 2016, 5:13pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/8 "2016-10-31T17:13:42Z")

</div>

> [@bwhouse](#):
>
> But this is what I have so far.

How did you go about making the log screen?

---

<div class="post-metadata">

**Author:** ![redbear-ger](https://community.openhab.org/user_avatar/community.openhab.org/redbear-ger/32/71706_2.png) [@redbear-ger](https://community.openhab.org/u/redbear-ger)\
**Post date:** [October 31, 2016, 5:15pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/9 "2016-10-31T17:15:04Z")

</div>

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” 🙂

---

<div class="post-metadata">

**Author:** ![bwhouse](https://community.openhab.org/letter_avatar_proxy/v4/letter/b/278dde/32.png) [@bwhouse](https://community.openhab.org/u/bwhouse)\
**Post date:** [October 31, 2016, 9:05pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/10 "2016-10-31T21:05:16Z")

</div>

@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 ([GitHub - mthenw/frontail: 📝 streaming logs to the browser. Sponsored by https://cloudash.dev · GitHub](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

---

<div class="post-metadata">

**Author:** ![bwhouse](https://community.openhab.org/letter_avatar_proxy/v4/letter/b/278dde/32.png) [@bwhouse](https://community.openhab.org/u/bwhouse)\
**Post date:** [October 31, 2016, 9:22pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/11 "2016-10-31T21:22:58Z")

</div>

@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

```csv
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

```php
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)
                        }
                        else
                        {
                                        logInfo("sonos", playerName + ": No active players to join! start on my own")
                                        sendCommand(playerStart, ON)
                        }
]

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

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

```

---

<div class="post-metadata">

**Author:** ![Rasmus7700](https://community.openhab.org/letter_avatar_proxy/v4/letter/r/3e96dc/32.png) [@Rasmus7700](https://community.openhab.org/u/Rasmus7700)\
**Post date:** [November 1, 2016, 1:34pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/12 "2016-11-01T13:34:11Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![hannibal29](https://community.openhab.org/user_avatar/community.openhab.org/hannibal29/32/30801_2.png) [@hannibal29](https://community.openhab.org/u/hannibal29)\
**Post date:** [November 1, 2016, 1:47pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/13 "2016-11-01T13:47:44Z")

</div>

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 😄

---

<div class="post-metadata">

**Author:** ![snoekieboe](https://community.openhab.org/letter_avatar_proxy/v4/letter/s/278dde/32.png) [@snoekieboe](https://community.openhab.org/u/snoekieboe)\
**Post date:** [November 1, 2016, 5:38pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/14 "2016-11-01T17:38:03Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![redbear-ger](https://community.openhab.org/user_avatar/community.openhab.org/redbear-ger/32/71706_2.png) [@redbear-ger](https://community.openhab.org/u/redbear-ger)\
**Post date:** [November 2, 2016, 6:52pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/15 "2016-11-02T18:52:59Z")

</div>

Noone did multilevel dashboards? ☹

---

<div class="post-metadata">

**Author:** ![ysc](https://community.openhab.org/letter_avatar_proxy/v4/letter/y/e480ec/32.png) [@ysc](https://community.openhab.org/u/ysc)\
**Post date:** [November 2, 2016, 8:49pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/16 "2016-11-02T20:49:08Z")

</div>

> [@redbear-ger](#):
>
> Noone did multilevel dashboards?

It’s not possible.

---

<div class="post-metadata">

**Author:** ![HomeBoss](https://community.openhab.org/letter_avatar_proxy/v4/letter/h/e480ec/32.png) [@HomeBoss](https://community.openhab.org/u/HomeBoss)\
**Post date:** [November 2, 2016, 9:49pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/17 "2016-11-02T21:49:28Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![pahansen](https://community.openhab.org/user_avatar/community.openhab.org/pahansen/32/4938_2.png) [@pahansen](https://community.openhab.org/u/pahansen)\
**Post date:** [November 3, 2016, 2:52am UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/18 "2016-11-03T02:52:21Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![bwhouse](https://community.openhab.org/letter_avatar_proxy/v4/letter/b/278dde/32.png) [@bwhouse](https://community.openhab.org/u/bwhouse)\
**Post date:** [November 3, 2016, 5:37am UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/19 "2016-11-03T05:37:45Z")

</div>

@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.

---

<div class="post-metadata">

**Author:** ![redbear-ger](https://community.openhab.org/user_avatar/community.openhab.org/redbear-ger/32/71706_2.png) [@redbear-ger](https://community.openhab.org/u/redbear-ger)\
**Post date:** [November 3, 2016, 6:14pm UTC](https://community.openhab.org/t/examples-of-habpanel-solutions/15557/20 "2016-11-03T18:14:36Z")

</div>

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

- Lightning
- Security
- Heating
- Rooms
- 
  - Living Room

- 
  - Bathroom

and so on… otherwise I would have to scroll to death 😉

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).

[Next page](https://community.openhab.org/t/examples-of-habpanel-solutions/15557.md?page=2)
