Skip to content

Make it possible to match on item attribute and it's value - #175

Closed
ohinckel wants to merge 2 commits into
mknx:developfrom
ohinckel:dev-match-attr-val
Closed

Make it possible to match on item attribute and it's value#175
ohinckel wants to merge 2 commits into
mknx:developfrom
ohinckel:dev-match-attr-val

Conversation

@ohinckel

Copy link
Copy Markdown

The sh.match_items() method is already able to mach items by a given attribute names and return a list of items having the given attribute.

Usually you're using this to identify item having some characteristics. But sometimes you have the same attribute with different values configured and want to handle them differently, for example when connecting them to some logics using watch_item setting.

You can now do

  • sh.match_items("some.items.*:attr") which returns items with the attribute attr (already working)
  • sh.match_items("some.items.*:attr[value]") which returns items with the attribute attr set to value value (new)

The value checking supports

  • simple types (e.g. str, int, ...) by checking equality (e.g. attr = somevalue)
  • lists by checking against the list's values (e.g. attr = first | second | third)
  • dictionary by checking against the dict's keys (e.g. attr = { first : val1 | second : val2 } (only works with Configure dictionaries in config files #88, of if attributes are set in some code directly)

Something like this is now possible

[somelogic]
  filename = logic.py
  watch_item = *:item_class[light]

[otherlogic]
  filename = logic.py
  watch_item = *:item_class[dimmer]

Further I was also thinking about tree traversal and make it possible to match items using the pattern some.path:attr[value].children.*. But this seems to be more complex and could need a rewrite of the matching logic. And I don't know if this is really a good idea to introduce such a complexity. On the other hand, this feature would be nice, since it makes the configuration more flexible.

ohinckel added 2 commits June 27, 2015 15:59
# e.g. "some.items.*:attr[value]" match items having attribute "attr" with the
# value "value"
@ohinckel

Copy link
Copy Markdown
Author

Created new PR smarthomeNG/smarthome#80 in new project and will close this issue now. Thanks for your great application!

@ohinckel ohinckel closed this Jul 22, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant