# Google Home UI Automator

Google Home Automator can help you automating your Google Home App.

## Getting Started

### Prerequisites

#### Python 3

You need a python 3 environment to run the script.

#### Android phone

1.  turn on `User Debugging` mode on your android phone.
1.  connect your android phone to computer.

#### Google Home App

1.  You need to install Google Home App on your Android phone.
1.  Login to your Google Home App.
1.  Make sure the Google Home App's version is between `3.1.1.14` and `3.5.1.4`.

### Installation

1.  clone this repo.
2.  `cd` to the folder.
3.  Run `pip install .`

## Usage

### Commissioning Matter device

1.  run script `ui-automator --commission m5stack,34970112332,Office`
    -   the parameters are
    *   desired Matter device
    *   pairing code of your Matter device
    *   room that is going to be assigned

## Roadmap

-   [x] Commissioning Matter device

## Notice

## Report issue

-   Click
    [here](https://issuetracker.google.com/issues/new?component=655104&template=1694023)
    to report any encountered issues.
