HABly - Control openHAB with custom widgets for iPhone and iPad

That’s right. It’s the same URL I use on the openHAB app to connect locally and that’s the standard HTTPS port.

Best regards.

Hi all,

two days ago, I published Version 1.1 of HABly.


  • Improved Item Customization. I implemented the suggestion of @webern: Replaced “remove unit” toggle with a “customize item” toggle. Now, easily adjust the rounding
    precision of numbers using a simple stepper.
  • Added haptic feedback in Item Customization
  • Introduced a Changelog on the About Screen

Bug fixes:

  • Fixed a rare issue: In some instances, when HABly couldn’t connect to openHAB, Collections were being misplaced, causing HABly to lose track of them. I’ve made improvements to ensure Collections stay secure, even when there are temporary internet disruptions.

If you like HABly, please share it with friends and family and leave a positive review on the App Store!


Awesome app!

I have the following ideas for improvement.

  1. Change the colour of the text depending on the values, e.g. blue for cold temperatures, black for normal temperatures and red for hot temperatures.

  2. Could you add ppm as a unit for CO2 levels?

On this screenshot you can see the ppm value within the openhab model.

and here the corresponding HABly display. But 1149ppm looks better than 0.001149 .

1 Like

Hi ML1982!
Thanks for your feedback!

I’ll add that to the feature wishlist

Sure, I’ll add “ppm” with the next update!

Regarding the ppm and the difference between the value displayed in openHAB and in the Widget, I’ll have to take a closer look into how openHAB displays values depending on the Number definition and if this behaviour might be mimiced in HABly.

Thanks a lot

Just another little thing

I’ve got a noise measurement in the living room that uses “dB” as unit. In HABly it is displayed with two capital letters “DB” instead of “dB”.

Openhab Model:


And what is the current refresh rate for the item values?

1 Like

It seems, that “DB” in capital letters is sent from openHAB.
Solution is: I’ll implement “dB” as custom unit with the next update. Then you can activate “Customize Item Value” - the unit then gets removed and you can add the custom “dB” one.

As refresh rate I set 5 minutes but your device considers that value as a “suggestion”. According to apple the actual refresh rate depends on multiple factors - they aren’t really going into detail here. But from what I know, a widgets learns e.g. how often it’s being displayed on a screen and adapts. From my experience, the actual refresh rate is sufficient for most use cases.


Hi all!

Exciting news – HABly 1.2 is now available!

In this update, I’ve focused on enhancing two new features: Date Formatting and Item Names in Button Widgets.

Date Formatting:
Now you have control over how date and time are displayed in HABly Widgets for DateTime Items in openHAB. Explore multiple formatting options and choose the one that best suits your preferences. HABly will adapt the display format based on the language set on your device.

Item Names in Buttons:
Customize the labels on your buttons in a snap!

  • Specify a custom name and icon in Item Customization – both will be displayed.
  • Enter only one of them, and that will be shown.
  • Leave both empty, and the button will display the state only.

Additional Improvements:

  • Optimized Items List: A more streamlined and user-friendly experience when managing collections.
  • Release Date in Changelog
  • Enhanced Search Clarity: “Search by Item Name” text added to the search bar for improved clarity.
  • Expanded Unit Options: Units ‘ppm’ and ‘dB’ are now included.
  • Visual Enhancements: New icons for min and max values, and calendar icons for date-related actions.

Download HABly on the AppStore: https://apple.co/3RBANvC

As always, if you encounter any bugs or have suggestions for improvements (like the button and date formatting, both inspired by community feedback), please let me know!



Hi Harry
thanks for your continuing work on this app. May be, following points make it to the wish list:

  • number of selected decimals should always be used. eg. “9.000” not “9” or “1.230” not “1.23”
  • why not allow custom units. eg. for currency like “USD”, “EUR”
  • i don’t think “stacked widgets” is a good solution for all situations. Better open another widget when clicked
    regards, Anne
1 Like

Hi Anne,

thanks for the feedback!

I set all three points on the wish list.

Do you know any app, that has this feature so I could take a look how they implemented it - the look and feel.

Thanks a lot!

@Harry-0815 thanks for the Update!

In HABly, the ppm unit should be multiplied by 1.000.000.
In OpenHab, the value is stored as ‘parts’ rather than ‘parts per million’.

This is the current value shown in OpenHab:

And this is the corresponding value displayed in HABly:

And I’ve got sensors for my windows and my big balcony door, could you also provide icons for windows and balcony doors?

1 Like

@Harry-0815 I didn’t try HABly yet, but I notice all the discussion about UOM. Question, why is item state being used for display (forcing you to adapt the UOM) and not the item displayState? That would include the UOM as defined in the state description in OH, and also use the decimals as defined there. Similar, date formats could come from there as well.

1 Like

Thanks for your feedback!

I have this on the wishlist. I just couldn’t figure out, what the best solution would be. Maybe a “multiply” option where you can multiply or divide the incoming state.

I’ll take a look, if there are some suitable icons!


Hey Mark!

Thanks for your suggestion! As far as I know - please correct me if I’m wrong - the REST API of openHAB just returns “state”, a String with the items state. Depending on the configuration of the item, a unit is added or formatting is being done.

Tbh, it’s the first time, I’ve heard of displayState. I learned so much about openHAB during the development of HABly, e.g. I never dealt with UOM before the rounding topic came up here in the thread.

There are a ton of things, I still don’t know about openHAB - so: yes, please question the architectural approaches I made during development. I’m quite sure, I overlooked certain things that would make HABly easier to use, to develop and to maintain.


1 Like

displayState is set in SSE events, not directly in the REST API. You can subscribe to these events to get updates of the state of items. That allows making your visualization dynamic without polling the API. You could check the code of the iOS app, that will most likely use it. I know mainUI, BasicUI, Android app definitely do.


Hey Mark,

thanks for pointing me in that direction! I barely know about SSE and didn’t know that openHAB has an interface like that at all. :wink:
I will definitely dive into it!


HABly 1.3 is now live!

In this update, I’m excited to introduce a preview screen feature, allowing you to visualize how your collection will appear in different widgets directly within the app. Conveniently access the preview button located in the top corner while editing your collection.

Additionally, I’ve expanded the icon selection by adding three new options for doors and windows. While I strive to provide the best user experience possible, I understand that some users may share my frustration with the limited selection of icons provided by Apple for windows. I hope to see improvements in future iOS releases.

If you haven’t already, download HABly on the App Store and experience these latest enhancements: https://apple.co/3RBANvC.

Thank you for your support and patience as I continue to enhance HABly!
Now, I’m off to mentally prepare for the Super Bowl! :wink:



Trying to create a widget to control a Group switch but Hably complains it’s not a switch.

Technically, thats correct: it’s a group, not a switch. :wink:

But joking aside. It’s me, trying to figure out a sensible path through
the labyrinth of API designs and limitations of openHAB and iOS Widgets.

If a widget button is pressed, HABly sends a TOGGLE command to the openHAB
Item. To my knowledge, switches can be toggled but groups can’t - they only
can receive an ON or OFF comands.

Why a TOGGLE and not a ON or OFF so that groups can be also handled?
That’s because of the limitations of iOS Widgets: HABly can’t guarantee that
the actual state of the openHAB is shown in the Widget. The Widget updates
itself in a non-specified interval - so it might be that the item state updated
since the last refresh off the widget.

So as developer I had to decide how to handle this:

  1. Take the state of the Item in the Widget and send the oposite comand to the
    openHAB Item
  2. Send a TOGGLE command

Both options have their pros and cons but I eventually chose the second one
because in my opinion it’s the best of the two options: if, for example, my Sonos is
playing, I can turn it off by pressing the button (wether the button state
shows ON or OFF) - with solution 1, I would have to press twice, which would
lead to more confusion.

Therefore, I blocked groups from being shown as buttons.

As always: if anyone has a better solution or I oversaw something, please let me know!


Unable to choose a collection from an iPhone SE, 2nd generation.

  1. Hably 1.3 is installed
  2. Created two collections: 1 for list of items and 1 for switches
  3. Add corresponding items in respective collections
  4. Able to preview display
  5. Click on home screen and add a hably widget for a list and switch type
  6. Press home button to stop adding widgets
  7. Press and hold a hably widget until popup appears.
  8. Select Edit Widget
  9. Click on Choose hyperlink
  10. A popup showing loading and busy icon momentarily loads and then disappears

I must be missing something simple.

I don’t think you’re missing something - you desrcibed exactly the way it should work.

It shouldn’t disappear. A list with your two collections to choose from should appear.

When you stop after step 5. What is displayed in your list widget? It should display your first collection.

Please, if you haven’t tried already, restart your iPhone. Whenever I had problems with widgets (not HABly exclusive), a reboot solved those problems.