Hi all,
I’ve managed to migrate with all my things to OH3. Great job by the way. The new UI is amazing. Maybe I don’t understand some parts of the semantic model and how it should be used in OH3.
I’ve created my equipment from things and also created items for their channels. Because they were not shown in the Overview -> Locations in MainUI. I thought I had to change their type to what they represent. Therefore I’ve changed them to switch/dimmer and so on. But after that I’m no longer able to add new items and link them to their channel using the MainUI. You can only link to other channels not creating new items for them.
I then looked for an example in the demo.openhab.org and found GroundFloor -> Kitchen.
It shows at least an equipment with items that represent attributes of it. What I really don’t understand is why should I also add them to the parent Kitchen group. At least in my mind it makes sense that the equipment is able to show/control it’s main purpose by using an appropriate type and link it to the “main” channel. But then you would have to change them back to group before you’re able to create and link new items.
Maybe someone can help me to understand what I misunderstood here.
robmac
(R Macdonald)
January 2, 2021, 10:56pm
2
I am just starting with this also but if you go to the Thermostat HVAC equipment item and enter the edit item view it allows you to enter aggregation values and type
Have a play there and I think it might solve your issue.
3 valve aggregated as valves
average temperature shows on tile on UI
Not sure if this is the best way yet but so far it works.
Hi @robmac ,
thanks a lot for your answer. I haven’t thought about the group functionionality for equipment. But I still have issues if the member type is not the same for all.
Even if all are from the same type they could mean something different. Like battery level and type.
If equipment should not be used to group attributes, then I don’t understand how to use this. And why should attributes(items linked to channels) contain equipment/location names again. I know they are just items but what is the benefit of this semantic model tree if it’s not for an better overview/representation and automated interpretation. Or am I missing something here?
One of the examples also demonstrate an equipment with items that may not be used to aggregate a common value.
I don’t see what equipment should be used for if not to group items. But if you name them after their location then it will screw the auto generated representation. In my case I don’t like the demo representation of the equipment.
And if the blinds are not of type rollershutter instead of group they won’t be included in the icons for the location.
The following equipment will not be recognized in the locations overview.
But this will be recognized in the overview and you can’t add item bindings.
In my case the rollershutter does not only support up/down/stop but also set percentage. Which I guess most shutters do. And other linked channels from the shutter should be listed below the rollershutter too. Which is not possible if I create the Equipment as “Rollershutter - Equipment > Blinds”. I would then have to change Rollershutter back to group, add all items and change it back to Rollershutter again. And I don’t think that is the right way.
Oh my god a few searches later I now have found the root cause.
Because I haven’t found out how or what triggers the Location Semantic cards I tried a lot of stuff and made some wrong conclusions.
So equipment can stay as a group and you only have to apply the proper Semantic Class & Semantic Property
.
In my humble opinion should be mentioned in the semantic model tutorial.
[Semantic Model | openHAB ](https://OpenHAB | Semantic Model)
Solution from @Erik_Bergstrom - Thanks a lot for pointing that out.
Hello! I was wondering about the same thing. Hard to know which classes to choose to activate all the different badges that exist. So far this is what i use and found to be working. I guess the Semantic Class of the Equipment Group is also important for the symbol to show up. Below is just the Item classes.
The thing that I can’t solve is how to show the correct state of Open and Close. Right now both my Lock and my Blinds are showing OPEN when they are actually closed and vise versa. I’m guess…
And the link to the design spec from @ysc :
opened 03:24PM - 24 Nov 20 UTC
closed 10:39PM - 28 Nov 20 UTC
enhancement
main ui
This issue discusses the design and features of the header of a location card, w… hen not customized by users using slots.
As a semantic card it inherits a number of common properties described in #555 (like background color/image).
## Title
By default, the title is the label of the item (or its name if it has none).
## Subtitle
If the location has a parent, the label or name of the parent is the default (but it should be possible to remove it, for instance if the cards are manually put in groups by the user (see #555).
## At-a-glance modules
The built-in at-a-glance modules (or "complications" as in watch screens) use the semantic model to gather information about the location and display it in a summarized manner with little icons and eventually a short label, "rewarding" the time taken to build a well-designed model by automatically providing information in the header of the card. The goal is not to be exhaustive, rather cover what should be the most popular scenarios. There will still of course be cases outside this anticipated well-known scenarios, and esoteric needs; therefore ideally users should be able to customize these modules, or add more (with slots). It should also be possible to hide automatically shown modules that doesn't work well or aren't desired.
A location card with all modules having something to display should resemble the following example ("worst case scenario"):
![image](https://user-images.githubusercontent.com/2004147/100102623-265a6e00-2e64-11eb-8e58-59b2d71e6506.png)
It is a little busy, but the average card should be much less so since a module isn't displayed when there is nothing to show.
### General principles for querying data from the model
- Normally the user will have put Equipment in the Locations. Most of these pieces of equipment will have Points. Gathering states from Points is always preferred as opposed to gathering states from Equipment item themselves, but we do it anyway if we couldn't find any matching Point. For instance, for blinds, look for OpenState points in equipment tagged Blinds (the preferred default), but if we can't find any, analyze the state of the Equipment items themselves - and consider a state of OPEN, or CLOSED appropriately.
- In order to leave out any ambiguity about which Points to consider, the admin has the option of relating Points directly to the Location without any Equipment in between. There are many ways to do it:
* a Point can be made a member of both its parent Equipment, and also the Location it's in.
* the item could be duplicated at the Location level and linked to the same channel so that it reflects the same data
* a Group with an aggregation function (e.g. average) can be added as a Point to the Location to compute a state for the location from the state of the desired items.
<br />we should therefore prioritize the results by considering first only the Points which have a direct _hasLocation_ relation to the location; but if none match, we can consider those indirectly related through their equipment items.
### Built-in glance modules
#### ![image](https://user-images.githubusercontent.com/2004147/100102773-57d33980-2e64-11eb-963d-a109917144ba.png) Number of alarms (after the title)
__Point_Alarm__ _hasLocation_ __(the location)__
___If no matching item found:___
__Point_Alarm__ _isPointOf_ __(any equipment)__ _hasLocation_ __(the location)__
Count those with the state `ON`: if any result, display the count after the title as shown.
#### ![image](https://user-images.githubusercontent.com/2004147/100103443-332b9180-2e65-11eb-9031-43e4ff910145.png) Nb. Lights on
__Point_Control*__ _relatedTo_ __Property_Light__ _hasLocation_ __(the location)__ with the state
___If no matching item found:___
__Point_Control*__ _relatedTo_ __Property_Light__ _isPointOf_ __(any equipment)__ _hasLocation_ __(the location)__
Count those with the state `ON`, integer>0 or H,S,B with B > 0: single result, display the icon only; multiple results, display the icon and the count.
#### ![image](https://user-images.githubusercontent.com/2004147/100104468-80f4c980-2e66-11eb-9a3e-4fccf906dade.png) Nb. of Open Windows
__Point_Status_OpenState__ _isPointOf_ __Equipment_Window__ _hasLocation_ __(the location)__
___If no matching item found:___
__Equipment_Window__ _hasLocation_ __(the location)__
Count those with the state `OPEN`: single result, display the icon only; multiple results, display the icon and the count.
#### ![image](https://user-images.githubusercontent.com/2004147/100105088-42134380-2e67-11eb-8c95-3c20a27e4438.png) Nb. of Open Doors
__Point_Status_OpenState__ _isPointOf_ __Equipment_Door__ _hasLocation_ __(the location)__
___If no matching item found:___
__Equipment_Door__ _hasLocation_ __(the location)__
Count those with the state `OPEN`: single result, display the icon only; multiple results, display the icon and the count.
#### ![image](https://user-images.githubusercontent.com/2004147/100105203-60793f00-2e67-11eb-881b-4b56a20f9589.png) Nb. of Open Garage Doors
__Point_Status_OpenState__ _isPointOf_ __Equipment_GarageDoor__ _hasLocation_ __(the location)__
___If no matching item found:___
__Equipment_GarageDoor__ _hasLocation_ __(the location)__
Count those with the state `OPEN`: single result, display the icon only; multiple results, display the icon and the count.
#### ![image](https://user-images.githubusercontent.com/2004147/100105349-89013900-2e67-11eb-9c37-2b4bc3c2acf4.png) Nb. of Open Blinds
__Point_Status_OpenState__ _isPointOf_ __Equipment_Blinds__ _hasLocation_ __(the location)__
___If no matching item found:___
__Equipment_Blinds__ _hasLocation_ __(the location)__
Count those with the state `OPEN` or integer=0: single result, display the icon only; multiple results, display the icon and the count.
#### ![image](https://user-images.githubusercontent.com/2004147/100105840-18a6e780-2e68-11eb-99ab-59db6bd18ae8.png) Presence Detected
__Point_Status__ _relatedTo_ __Property_Presence__ _hasLocation_ __(the location)__
___If no matching item found:___
__Point_Status__ _relatedTo_ __Property_Presence__ _isPointOf_ __(any equipment)__ _hasLocation_ __(the location)__
If any result has the state `ON` or `OPEN`, display the icon.
#### ![image](https://user-images.githubusercontent.com/2004147/100106269-a682d280-2e68-11eb-893e-22ec7dcfaab0.png) Locks
__Point_Status__ or __Point_Control*__ _isPointOf_ __Equipment_Lock__ _hasLocation_ __(the location)__
___If no matching item found:___
__Equipment_Lock__ _hasLocation_ __(the location)__
If all results have the state `CLOSED` or `OFF`: display ![image](https://user-images.githubusercontent.com/2004147/100107368-da122c80-2e69-11eb-8309-a5e35b0ac90f.png)
If any result has the state `ON` or `OPEN`: single result, display the icon ![image](https://user-images.githubusercontent.com/2004147/100106269-a682d280-2e68-11eb-893e-22ec7dcfaab0.png); multiple results, display the icon and the count.
#### ![image](https://user-images.githubusercontent.com/2004147/100107597-18a7e700-2e6a-11eb-835a-9cae2c5e916a.png) Climate Control Powered On (A/C, Heating)
__Point_Status__ or __Point_Control*__ __relatedTo_ __Property_Power__ _isPointOf_ __Equipment_HVAC__ _hasLocation_ __(the location)__
___If no matching item found:___
__Equipment_HVAC__ _hasLocation_ __(the location)__
If any result has the state `ON`, display the icon.
#### ![image](https://user-images.githubusercontent.com/2004147/100108170-ca471800-2e6a-11eb-89f5-2b6ac2b83ff5.png) Nb. of Screens Powered On
__Point_Status__ or __Point_Control*__ __relatedTo_ __Property_Power__ _isPointOf_ __Equipment_Screen__ _hasLocation_ __(the location)__
___If no matching item found:___
__Equipment_Screen__ _hasLocation_ __(the location)__
Count those with the state `ON`: single result, display the icon only; multiple results, display the icon and the count.
#### ![image](https://user-images.githubusercontent.com/2004147/100108678-55c0a900-2e6b-11eb-9a46-073f96633e94.png) Nb. of Speakers/AV Receivers Powered On
__Point_Status__ or __Point_Control*__ __relatedTo_ __Property_Power__ _isPointOf_ __Equipment_Speaker__ or __Equipment_Receiver__ _hasLocation_ __(the location)__
___If no matching item found:___
__Equipment_Speaker__ or __Equipment_Receiver__ _hasLocation_ __(the location)__
Count those with the state `ON`: single result, display the icon only; multiple results, display the icon and the count.
#### ![image](https://user-images.githubusercontent.com/2004147/100108973-a89a6080-2e6b-11eb-91ed-d34c7094bcf1.png) Nb. of Projectors Powered On
__Point_Status__ or __Point_Control*__ __relatedTo_ __Property_Power__ _isPointOf_ __Equipment_Projector__ _hasLocation_ __(the location)__
___If no matching item found:___
__Equipment_Projector__ _hasLocation_ __(the location)__
Count those with the state `ON`: single result, display the icon only; multiple results, display the icon and the count.
#### ![image](https://user-images.githubusercontent.com/2004147/100109449-22324e80-2e6c-11eb-94aa-c24ec0a72918.png) Temperature (Measurement & Setpoint)
##### Measurement part:
__Point_Measurement__ _relatedTo_ __Property_Temperature__ _hasLocation_ __(the location)__
___If no matching item found:___
__Point_Measurement__ _relatedTo_ __Property_Temperature__ _isPointOf_ __(any equipment)__ _hasLocation_ __(the location)__
Compute the average of the valid values (if single result, take the result a fortiori), and display if valid.
##### Setpoint part:
__Point_Setpoint__ _relatedTo_ __Property_Temperature__ _hasLocation_ __(the location)__
___If no matching item found:___
__Point_Setpoint__ _relatedTo_ __Property_Temperature__ _isPointOf_ __(any equipment)__ _hasLocation_ __(the location)__
There should be only one result in theory; out of an abundance of caution, compute the average of the valid values (if single result, take the result a fortiori), and display if valid between parentheses after the measurement.
#### ![image](https://user-images.githubusercontent.com/2004147/100110410-30349f00-2e6d-11eb-8ac0-45b2211f3a31.png) Humidity (Measurement)
__Point_Measurement__ _relatedTo_ __Property_Humidity__ _hasLocation_ __(the location)__
___If no matching item found:___
__Point_Measurement__ _relatedTo_ __Property_Humidity__ _isPointOf_ __(any equipment)__ _hasLocation_ __(the location)__
Compute the average of the valid values (if single result, take the result a fortiori), and display if valid.
#### ![image](https://user-images.githubusercontent.com/2004147/100112490-928e9f00-2e6f-11eb-8d77-70a8835b3ab3.png) Luminance/Ambient Light (Measurement)
__Point_Measurement__ _relatedTo_ __Property_Light__ _hasLocation_ __(the location)__
___If no matching item found:___
__Point_Measurement__ _relatedTo_ __Property_Light__ _isPointOf_ __(any equipment)__ _hasLocation_ __(the location)__
Compute the average of the valid values (if single result, take the result a fortiori), and display if valid.
That is why there is a link to edit it on GitHub.
I know that I can contribute to this project. And what you don’t know is that I’m already working on my end to do so. But I can’t contribute things that I didn’t know in the past.
1 Like
Glad to hear. My personal focus has been the Z-Wave backend stuff.