# Room Controller ```mermaid graph TD state_check{Is anything on?} state_check -- no --> Activate state_check -- yes --> Ignore Motion -- "Motion sensed" --> state_check Door -- "Gets opened" --> state_check Button -- "Single press" --> state_check Activate -- "Wait for no motion" --> Deactivate state_check -- "yes (button only)" --> Deactivate ``` ### Behaviors #### Button | Action | Response | |--------------|---------------------------------------------| | Single-press | Toggle the room state (activate/deactivate) | | Long-press | | | Double-press | Toggle sleep mode, then activate room | #### Door Activates the room if the door opens when everything in the room is off. ### Config #### Required | Key | Behavior | |----------|----------------------------------------------| | `entity` | Main entity for the room | | `sensor` | `binary_sensor` (motion) sensor for the room | | `scene` | List of states and times for the room. | | `sleep` | [input_boolean] of the sleep mode variable | [input_boolean]: https://www.home-assistant.io/integrations/input_boolean/ Example state for `scene` key ```yaml - time: 22:00:00 off_duration: 00:02:00 scene: light.kitchen: state: on color_temp: 650 brightness_pct: 10 ``` #### Optional | Key | Behavior | |----------------|-----------------------------------------------------------------------------------------| | `off_duration` | Default time for the motion sensor to be clear before deactivating the room. `HH:MM:SS` | | `button` | ID of the button to control the room | | `door` | `binary_sensor` (door) sensor for the room | Sample Button Event Data ```yaml event_type: deconz_event data: id: living_room unique_id: 00:15:8d:00:06:ba:29:70 event: 1002 device_id: fc0ad75dfb8d3a55abfe842199cc94e9 origin: LOCAL time_fired: "2023-04-26T05:40:39.762306+00:00" context: id: 01GYY17ZPJVP57C8PN1K3R4D7J parent_id: null user_id: null ``` ## Running with Docker Use this command from the appdaemon config directory to clone this repo as a submodule (recommended): ``` git submodule add -b main https://github.com/jsl12/room_control ./apps/room_control ``` ```shell ./appdaemon_config ├── apps │ ├── room_control │ └── rooms └── docker-compose.yml ``` Example `docker-compose.yml`: ```yaml version: "3.8" services: appdaemon: container_name: appdaemon image: acockburn/appdaemon:dev volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - config:/conf ports: - 5050:5050 restart: unless-stopped volumes: config: driver: local driver_opts: o: bind type: none device: ./ ```