# 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.
1.  `cd` to the folder.

## Usage

### Commissioning Matter device

1.  run script `mobly-manager --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
