Wall mounted Tablet with habpanel

I finished my wall mounted tablet project today :slight_smile:

Before I describe everthing endless I want to focus on some highlight.

  • It is running in a android kios browser. Via a REST API, openhab can control display brigtness if i sleep or i’m away.
  • The tablet itself is mounted via metal plates on its backside and magnets inside the wall.
  • Additionally, on the the main house map, you can see and control light status, see if a window is open, a rollershutter is down or should be down. The small lamps around the house are showing the outdoor light status
  • The weather data are coming from https://api.weather.mg/
  • All widgets are custom widgets. Some of them are imitating the original layout like slider but with a much more efficient digest cycle handling
  • Icons are custom icons. Some are more, some of them less custom .-)


Looks awesome, congrats!

Keep posting, I am sure that I am not the only one interested in learning more from you.

I don’t know where to start and how detailed. So I’m waiting for questions.

1 Like

very nice setup!

Are you using wireless charging or standard USB?

Consider describing the challenges that you overcame, never underestimate the power of learning by the experience of others; you may want to post your widgets if you think they can be easily adapted (there is a special forum channel for that so that they are picked up automatically by habpanel for other users);

Would be interested by the tablet model (link) and how you opened it in order to add the metal plates (was it easy or not, and any tutorial ?)

Sounds like a nice setup! Since I am currently looking at a similar setup, my questions would be:

  1. What tablet did you use?
  2. Do you use motion detection to turn the screen on/off?
  3. How do you control the tablet via REST API?
  4. Which kiosk browser are you using?
  5. Do you use any additional apps/tools on the tablet for this setup?

I use a galaxy Tab A with a 10.1" display. https://www.amazon.de/dp/B07888JKDW

The metal plates for backside are https://www.amazon.de/gp/product/B01ET4DUU4. The tape on this metal plate was not strong enough, so I used additional adhesive. And the magnets are this one https://www.amazon.de/gp/product/B074V4478F

The app itself is also my own. Inside I start a webview and a REST Server (https://github.com/koush/AndroidAsync) as an background job which is listen for some urls. If I call e.g /sleep, it is activating the os powermanagent and the display goes off after some seconds. A challenge here was the reactivation of the tablet. If I call /wakeup, the os powermanagement goes off, the display on, then I call a javascript snippet to refresh all items (because I missed some events during the sleep), but habpanel was not reactivation the event listener after. So the only way to handle this without patching habpanel is a full browser refresh.

I was also thinking about motion detection, because I have a sensor directly below the tablet. I decided against it because I want to see the tablet also if i sit on my couch for a while without any motion event. For me it is enough to disable it during the night and when I’m away.

any additional tool is not needed.

The biggest challenge is the digest cycle of angular. Before, all widgets has no knowledge which data they should show. With the result that every item update will trigger hundreds of digest cycles. My tablet was running with ~20% CPU the whole time and consumed a lot of energy. I have 60-70 updates every minute with ~500 items. But the habpanel main screen (first screenshot) needs only ~100.

I solved this by skip all digest cycles. All my widgets are wrapped with a new custom directive. This disables all watchers. Instead it registers itself for openhab updates. Additionally it overwrites “getItem”, “getItemState” etc… All other widgets which are inside this custom directive are registering their self as listener to this custom directive.
Now, during the first itemUpdate where all items are updatet, I forward this event to all my subwidgets. During this cycle, the custom directive is collecting used items via their calls of getItem, getItemState etc. From now on I can forward item updates to the right widget or completely ignore updates for unused items. As a result my tablet runs with 2-3% CPU :slight_smile:

I was also trying to enable watchers temporary for some widgets when the right item was triggered. This works too but not so efficient. The digest cycle was fired in many additional unwanted situations which results in unnecessary widget updates. The only case where i want widget updates is, when items are new initialized or updatet. At the end I came up with my solution described above.

Another problem was a noticeable delay if I was going back to the complex main dashboard from any other widget. This was also solved by my digest cycle change. Before the delay was ~1500ms. Now it is max 500ms and feels smooth.


Would you be able to share your widget?

At this page you can download everything.



Hi. I see you have in-wall Traco power supply. How did you connect it to the tablet as I can’t see any wires on the pictures?

I also am using this with a wall mounted tablet: cut an usb cable and solder/crimp it to the power supply.


you have two options.

first way is, to use a QI receiver like this. https://www.amazon.de/gp/product/B00ZBXL5YG/ and a QI charger plate.

I decided against it because it is wasting 30-40% energy.

for my solution I used this QI receiver too, but I cut the cable and connected it directly with a USB type A cable like this https://www.amazon.de/gp/product/B00E38S5PC/. This can be plugged to my USB power supplier without any energy lost.

If you zoom into the picture you can see the tiny USB plug on the left side. it is just 3mm.

Energy consumption is so important, because my power supplier is able to provide 5 watt max energy and my tablet is consuming 1.5 watt if the display is off and 3,5 - 4,5 watt if the display is on.

cutting the QI charger is not so easy, because inside is not a cable. It is something like a foil. So instead of cutting i was using a soldering iron to remove it. Then I connected it again with a small circuit board between the foil and the USB type A cable. This gives a little bit more stability for the connection.


I already have the same Traco powers as Sihui mentioned above but haven’t installed them yet in the wall. Could you take a closer picture of the Tablet USB plug?

As I bought those power supplies, only thing I was wondering was that how does the USB-cable look when it is connected to tablet. My wife is pretty strict with cleaness of my “installations” in the house…

But as we can see from your pictures, it can be made so that it looks great! =)


Looks great!

I’m going to do exactly as you did as it looks pretty good.

Was the charger cable easy to strip and connect? Cable seems pretty flat…

Hi Holger (@holger_hees),

great dashboard, i really like your main screen :slight_smile:
may i ask if your floor plans are based on SVG like described here: Design your SVG floorplan or dashboard for HABPanel with Inkscape

or did you used another approach


stripping and connecting the cable was not easy but possible


I’ll try also that way.


I had the svg’s already from my previous project. A indoor positioning system based on bluetooth LE devices.

The easiest way to create it… Scan you house plan. Import it into inkscape and then redraw it in inkscape. Does not take more then 1 or 2 hours.