Files
room_control/README.md
2023-07-30 14:22:53 -05:00

3.1 KiB

Room Controller

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
states List of states and times for the room.

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
sleep input_boolean of the sleep mode variable

Scene Definition

Example state for states key

- time: 22:00:00
  off_duration: 00:02:00
  scene:
    light.kitchen:
      state: on
      color_temp: 650
      brightness_pct: 10

Sample Button Event Data

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
./appdaemon_config
├── apps
│   ├── room_control
│   └── rooms
└── docker-compose.yml

Example docker-compose.yml:

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: ./