Repository for colaboration in the semanticHomeMenu project
The idea is to have a UI for openHAB4 that dynamically configures itself automatically using the data of the openHAB semantic model.
It is also possible to use the specialized widgets standalone or to extend the project with further widgets your own, some inspiration will be given later.
An openHAB 4 specific version became necessary because we identified some strong performance issues in "main_widget" due to the heavy usage of the oh-repeater component, which is used to gather all semantic information needed to reduce configuration commplexity.
This main UI widget is based on a proper configuration of the openHAB semantic model. The project aims to show all information automatically - if found in the model - mostly without additional configuration by the user.
To help getting more information about an item we make use of an extention of the semantic model via the uiSemantics.
The Menu is split into a Top Navigation Bar,
the Body showing multiple specialized widgets (which are shown if the model contains the needed data) and the the Bottom Navigation Bar.
Bottom Navigation Bar with Scenes selected
The red indicator badges are shown if there is any alarm, whether security or low battery. Usage and setup will be explained in the security and energy widget documentation.
- [Security widget]
- including the [Keypad widget]
- [Scenes widget]
- [Lights widget]
- [Rollershutter widget]
- The weather widget shown in the screenshots can be found in the community
For complete usage of this project, you need to create some groups (equiments) in your semantic model, see the following example for textual item import (change to your individual needs)
Group gHome "Home" ["Building"]
Group gIndoor "Building" <house> (gHome) ["Indoor"]
Group gOutdoor "Outdoor" <garden> (gHome) ["Outdoor"]
Group gAttic "Attic" <attic> (gIndoor) ["Attic"] {widgetOrder="11"}
Group gCorridorAttic "Corridor Attic" <corridor> (gAttic) ["Corridor"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Corridor", location="Attic"],widgetOrder="12"}
Group gOffice "Office" <office> (gAttic) ["Room"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Office", location="Attic"],widgetOrder="13"}
Group gGuestroom "Guestroom" <bedroom> (gAttic) ["Bedroom"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Guestroom", location="Attic"],widgetOrder="14"}
Group gFirstFloor "First Floor" <firstfloor> (gIndoor) ["FirstFloor"] {widgetOrder="21"}
Group gCorridorFirstfloor "Corridor FF" <corridor> (gFirstFloor) ["Corridor"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Corridor", location="First Floor"],widgetOrder="22"}
Group gChildroom "Childroom" <boy_1> (gFirstFloor) ["Bedroom"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Childroom", location="First Floor"],widgetOrder="23"}
Group gBathroom "Bathroom" <bath> (gFirstFloor) ["Bathroom"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Bathroom", location="First Floor"],widgetOrder="24"}
Group gBedroom "Bedroom" <bedroom> (gFirstFloor) ["Bedroom"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Bedroom", location="First Floor"],widgetOrder="25"}
Group gGroundFloor "Ground Floor" <groundfloor> (gIndoor) ["GroundFloor"] {widgetOrder="31"}
Group gEntrance "Corridor GF" <corridor> (gGroundFloor) ["Corridor"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Corridor", location="Ground Floor"],widgetOrder="32"}
Group gToilet "Toilet" <toilet> (gGroundFloor) ["Bathroom"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Toilet", location="Ground Floor"],widgetOrder="33"}
Group gKitchen "Kitchen" <kitchen> (gGroundFloor) ["Kitchen"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Kitchen", location="Ground Floor"],widgetOrder="34"}
Group gDiningroom "Diningroom" (gGroundFloor) ["DiningRoom"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Dininroom", location="Ground Floor"],widgetOrder="35"}
Group gLivingroom "Livingroom" <sofa> (gGroundFloor) ["LivingRoom"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Livingroom", location="Ground Floor"],widgetOrder="36"}
Group gBasement "Basement" <cellar> (gIndoor) ["Basement"] {widgetOrder="41"}
Group gCorridorCellar "Corridor Basement" <corridor> (gBasement) ["Corridor"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Corridor", location="Basement"],widgetOrder="42"}
Group gLaundry "Laundryroom" <washingmachine> (gBasement) ["LaundryRoom"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Laundryroom", location="Basement"],widgetOrder="43"}
Group gBoilerRoom "Boilerroom" <heating> (gBasement) ["BoilerRoom"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Boilerroom", location="Basement"],widgetOrder="44"}
Group gHobbyroom "Hobbyroom" (gBasement) ["Room"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Hobbyroom", location="Basement"],widgetOrder="45"}
Group gGarden "Garden" <garden> (gOutdoor) ["Garden"] {widgetOrder="51"}
Group gShed "Shed" <garden> (gOutdoor) ["Location"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Shed", location="Garden"],widgetOrder="52"}
Group gTerrace "Terrace" <terrace> (gOutdoor) ["Room"] {uiSemantics="uiSemantics"[preposition=" in the ", equipment="Terrace", location="Garden"],widgetOrder="53"}
Group:Number:COUNT(ON) gSmokeAlarm "Smokealarm" <smoke>
Group:Number:COUNT(ON) gBatteryLow "Empty Batteries" <lowbattery>
Group:Number:COUNT(OPEN) gWindowsOpen "Windows Open"
Group:Number:COUNT(OPEN) gDoorsOpen "Doors Open"
Group:Number:COUNT(ON) gMotionDetected "Motion Detected"
These items will create the general structure shown in the top navigation menu and will also create the red notification badges in the bottom navigation bar.
Please check [openHAB community]for discussions and proposals.
Thanks to
- @Dimitris for creating the design specs
- @Nic02 for creating the widgets
- @JustinG for his excellent support when we strugled with design and functionality
- @NicoR for his style and code optimizations
and anyone else I have forgotten
https://github.com/hmerk/semanticHomeMenu/blob/main/main/semanticHomeMenu.yaml