Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for multiple entity_ids in conditions #36817

Merged
merged 1 commit into from
Jun 15, 2020
Merged

Conversation

frenck
Copy link
Member

@frenck frenck commented Jun 15, 2020

Proposed change

Add support for using a list of entities in a condition statement.
This is more in line with the trigger syntax and allows for reducing the amount of code needed in automations.

Example before:

condition:
  - platform: state
    entity_id: light.kitchen
    state: 'on'
  - platform: state
    entity_id: light.living_room
    state: 'on'
  - platform: state
    entity_id: light.office
    state: 'on'

Example after:

condition:
  - platform: state
    entity_id:
      - light.kitchen
      - light.living_room
      - light.office
    state: 'on'

The same has been applied to other conditions that support entities: numeric_state and zone:

condition:
  - platform: numeric_state
    entity_id:
      - sensor.kitchen_temperature
      - sensor.living_room_temperature
      - sensor.office_temperature
    below: 18
condition:
  - platform: zone
    entity_id:
      - device_tracker.frenck
      - device_tracker.daphne
    zone: zone.home

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New integration (thank you!)
  • New feature (which adds functionality to an existing integration)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Example entry for configuration.yaml:

See proposal.

Additional information

Checklist

  • The code change is tested and works locally.
  • Local tests pass. Your PR cannot be merged unless tests pass
  • There is no commented out code in this PR.
  • I have followed the development checklist
  • The code has been formatted using Black (black --fast homeassistant tests)
  • Tests have been added to verify that the new code works.

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

  • The manifest file has all fields filled out correctly.
    Updated and included derived files by running: python3 -m script.hassfest.
  • New or updated dependencies have been added to requirements_all.txt.
    Updated by running python3 -m script.gen_requirements_all.
  • Untested files have been added to .coveragerc.

The integration reached or maintains the following Integration Quality Scale:

  • No score or internal
  • 🥈 Silver
  • 🥇 Gold
  • 🏆 Platinum

@frenck frenck changed the title Support for multiple entity_ids in conditions Add support for multiple entity_ids in conditions Jun 15, 2020
@frenck frenck marked this pull request as ready for review June 15, 2020 09:16
Copy link
Member

@pvizeli pvizeli left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, make script/automation syntax more simple and readable

@Mariusthvdb
Copy link
Contributor

Mariusthvdb commented Jun 15, 2020

very nice!
would we also be able to use the for: on these multiple conditions as specified https://www.home-assistant.io/docs/scripts/conditions/#state-condition?

@frenck
Copy link
Member Author

frenck commented Jun 15, 2020

@Mariusthvdb

Not sure how that is related to this PR (as this is about entity ids). Please stop requesting features on PRs... this is not the first time you've been doing that. Thanks 👍

OK, so coffee for me. Sorry about that, didn't read your question right. Yes that works 🚀

condition:
  - platform: state
    entity_id:
      - light.kitchen
      - light.living_room
      - light.office
    state: 'on'
    for:
      hours: 1

So that condition would only pass if all those lights are on and are all on for at least an hour.

@Mariusthvdb
Copy link
Contributor

even better!
cheers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants