Add installation and usage instructions
This commit is contained in:
124
README.md
124
README.md
@@ -1 +1,123 @@
|
||||
# hass-pico-w-dashboard
|
||||
# Raspberry Pi Pico W Home Assistant Dashboard
|
||||
|
||||
## Requirements
|
||||
|
||||
- Raspberry Pi Pico W
|
||||
- Waveshare 1.3" LCD display (part number [Pico-LCD-1.3](https://www.waveshare.com/product/pico-lcd-1.3.htm))
|
||||
- WiFi network with WPA/WPA2/WPA3 Personal authentication within range
|
||||
- [Home Assistant](https://www.home-assistant.io/)
|
||||
- [`rshell`](https://github.com/dhylands/rshell) on a computer with a USB port
|
||||
- A USB to Micro USB cable
|
||||
|
||||
## Installation
|
||||
|
||||
1. First flash the Pico W with the MicroPython firmware via the UF2 bootloader. [See Raspberry Pi's instructions.](https://www.raspberrypi.com/documentation/microcontrollers/micropython.html#drag-and-drop-micropython)
|
||||
|
||||
2. Then clone this repository:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/mgrove36/home-assistant-pi-pico-w-dashboard.git && cd home-assistant-pi-pico-w-dashboard
|
||||
```
|
||||
|
||||
3. Edit `env.py` in this directory to contain [your settings](#settings).
|
||||
|
||||
4. Plug in the Pico W using a USB to Micro USB cable, and start `rshell`:
|
||||
|
||||
```bash
|
||||
rshell
|
||||
```
|
||||
|
||||
5. Check the board is connected:
|
||||
|
||||
```bash
|
||||
boards
|
||||
```
|
||||
|
||||
Which should return something similar to the following:
|
||||
|
||||
```
|
||||
pyboard @ /dev/ttyACM0 connected Epoch: 1970 Dirs:
|
||||
```
|
||||
|
||||
6. Copy the project onto the Pico W:
|
||||
|
||||
```bash
|
||||
cp -r * /pyboard/
|
||||
```
|
||||
|
||||
The dashboard will now run whenever the Pico W is provided with power.
|
||||
|
||||
## Settings
|
||||
|
||||
The `env.py` file contains all settings for the dashboard. The variables are set as follows:
|
||||
|
||||
- `HOSTNAME`: The hostname of the Pi Pico W, used when connecting to WiFi.
|
||||
- `SSID`: The SSID of the WiFi network to connect to.
|
||||
- `WIFI_PASSWORD`: The WPA key (password) of the WiFi network to connect to.
|
||||
- `HASS_URL`: The base URL of the Home Assistant instance to connect to. It should start with `http://` or `https://`, and **not** end in a `/`.
|
||||
- `TOKEN`: The long-lived access token used to connect to Home Assistant. You can generate one by following the instructions [here](https://developers.home-assistant.io/docs/auth_api/#long-lived-access-token).
|
||||
- `SCREENS`: A list of the screens to be displayed on the dashboard. Each screen is represented by a dictionary. Their requirements are detailed [below](#screens).
|
||||
|
||||
### Screens
|
||||
|
||||
The `SCREENS` settings variable is a list of dicts. Each dict must contain the following key-value pairs:
|
||||
|
||||
- `name`: A string, denoting the name of the screen to be displayed at the top of it.
|
||||
- `type`: An integer:
|
||||
- `0`: A lights dashboard, for interacting with up to four light entities.
|
||||
- `1`: A media dashboard, for interacting with one media player entity.
|
||||
|
||||
Each dashboard type has additional required data, detailed below
|
||||
|
||||
#### Lights dashboards (type `0`)
|
||||
|
||||
Lights dashboards (type `0`) must contain the following additional key-value pairs:
|
||||
- `entities`: A list of dicts, with each dict representing an individual light entity. Each dict must have the following key-value pairs:
|
||||
- `id`: A string, storing the entity ID of the light.
|
||||
- `name`: A string, storing a short name for the entity to display on the dashboard.
|
||||
|
||||
#### Media dashboards (type `1`)
|
||||
|
||||
Media dashboards (type `1`) must contain the following additional key-value pairs:
|
||||
- `entity`: A string, storing the entity ID of the media player.
|
||||
|
||||
### Example `env.py` file
|
||||
|
||||
The below example file connects to Home Assistant at `https://hass.example.com` via a WiFi network named `MyNetwork`, and shows a dashboard with one lights screen and one media screen.
|
||||
|
||||
```py
|
||||
HOSTNAME="mypico"
|
||||
SSID = 'MyNetwork'
|
||||
WIFI_PASSWORD = 'MyPassword'
|
||||
HASS_URL = "https://hass.example.com"
|
||||
TOKEN = "xxxx.xxxx.xxxx"
|
||||
SCREENS = [
|
||||
{
|
||||
"name": "Downstairs",
|
||||
"type": 0,
|
||||
"entities": [
|
||||
{
|
||||
"id": "light.bedroom_light",
|
||||
"name": "Bedroom"
|
||||
},
|
||||
{
|
||||
"id": "light.kitchen_light",
|
||||
"name": "Kitchen"
|
||||
},
|
||||
{
|
||||
"id": "light.hallway_light",
|
||||
"name": "Hallway"
|
||||
},
|
||||
{
|
||||
"id": "light.downstairs_lights",
|
||||
"name": "Downstairs"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Living Room",
|
||||
"type": 1,
|
||||
"entity": "media_player.living_room"
|
||||
}
|
||||
]
|
||||
```
|
||||
Reference in New Issue
Block a user