Update README and add HACS support files (#25)
* Enhance README with badges and installation details Updated README to include badges, installation steps, and device options for AirSend integration. * Update hacs.json include content_in_root delete iot_class thats not a hacs.json but manifest.json property * Remove install script Remove install script — installation is now handled via HACS or manual copy
This commit is contained in:
@@ -1,67 +1,125 @@
|
||||
<img align="left" width="80" src="https://raw.githubusercontent.com/devmel/hass_airsend/master/icons/icon.png" alt="App icon">
|
||||
[](https://github.com/devmel/hass_airsend) [](https://github.com/hacs/integration) [](https://github.com/devmel/hass_airsend)
|
||||
|
||||
# AirSend for Home Assistant
|
||||
# AirSend
|
||||
This is a Home Assistant integration for AirSend boxes, which can capture and control more than 350 equipements (Remote Switchs, Lights, Shutters, Gate... ) from 50 brands (Dio, Faac, Nice, Somfy...) by RF433 or RF868 radio commands.
|
||||
|
||||
Component for sending radio commands through the AirSend (RF433) or AirSend duo (RF433 & RF868).
|
||||
### Supported boxes
|
||||
- [AirSend](https://devmel.com/fr/airsend.html) (RF433)
|
||||
- [AirSend Duo](https://devmel.com/fr/airsend-duo.html) (RF433 & RF868)
|
||||
|
||||
## Installation Steps
|
||||
|
||||
1. **Add Repository**:
|
||||
- [](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Fdevmel%2Fhass_airsend-addon)
|
||||
- Click on "Add repository" to include the necessary repository for the addon installation or follow [hass_airsend-addon](https://github.com/devmel/hass_airsend-addon)
|
||||
Each AirSend device is represented as a proper **Home Assistant device** with its associated entities (cover, switch, button, light, sensor).
|
||||
|
||||
2. **Place the `airsend.yaml` File**:
|
||||
- Go to `airsend.cloud -> import/export -> Export`
|
||||
- Select your devices, for local connection, select `spurl`
|
||||
- Click `Export YAML` to save the airsend.yaml
|
||||
- In the `config` folder of Home Assistant, place the `airsend.yaml` file.
|
||||
- Edit the file and add these lines
|
||||
```yaml
|
||||
devices:
|
||||
...
|
||||
AirSend Box:
|
||||
|
||||
## Requirements
|
||||
|
||||
### 1. Install the AirSend addon
|
||||
|
||||
[](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Fdevmel%2Fhass_airsend-addon)
|
||||
|
||||
Install and start the **AirSend** addon.
|
||||
|
||||
### 2. Create `airsend.yaml`
|
||||
|
||||
Export your devices from [airsend.cloud](https://airsend.cloud) → Import/Export → Export YAML (select `spurl` for local connection).
|
||||
|
||||
Place the exported `airsend.yaml` in your `/config` folder.
|
||||
|
||||
Add your AirSend local connection string to `secrets.yaml`:
|
||||
|
||||
```yaml
|
||||
spurl: sp://**************@[fe80::xxxx:xxxx:xxxx:xxxx]?gw=0&rhost=192.168.xxx.xxx
|
||||
```
|
||||
|
||||
Example `airsend.yaml`:
|
||||
|
||||
```yaml
|
||||
devices:
|
||||
AirSend box:
|
||||
type: 0
|
||||
spurl: !secret spurl
|
||||
sensors: true
|
||||
```
|
||||
sensors: true # enables temperature and illuminance sensors
|
||||
bind: 1
|
||||
refresh: 300
|
||||
|
||||
3. **Edit the `secrets.yaml` File**:
|
||||
- Add a line to the `secrets.yaml` file with the AirSend - Local IP - / - Password - (and IPv4 address).
|
||||
- If you know the IPv4 address, the line should look like this:
|
||||
```yaml
|
||||
spurl: sp://**************@[fe80::xxxx:xxxx:xxxx:xxxx]?gw=0&rhost=192.168.xxx.xxx
|
||||
```
|
||||
This applies also if you want to **ensure local connection** and **no reliance on any cloud / internet access** to control your devices, cf. the Information section below.
|
||||
Volet salon:
|
||||
id: 12345
|
||||
type: 4098
|
||||
apiKey: !secret apiKey
|
||||
spurl: !secret spurl
|
||||
channel:
|
||||
id: 25455
|
||||
source: 94311
|
||||
|
||||
- or this if you don't know the IPv4 address :
|
||||
```yaml
|
||||
spurl: sp://**************@[fe80::xxxx:xxxx:xxxx:xxxx]?gw=1
|
||||
```
|
||||
- Replace `**************` with the AirSend Password, `fe80::xxxx:xxxx:xxxx:xxxx` with AirSend Local IP and `192.168.xxx.xxx` with the AirSend IPv4 address.
|
||||
Lumiere pergola:
|
||||
id: 65838
|
||||
type: 4100 # dimmable light
|
||||
apiKey: !secret apiKey
|
||||
spurl: !secret spurl
|
||||
wait: true
|
||||
channel:
|
||||
id: 26848
|
||||
source: 1442421508
|
||||
```
|
||||
|
||||
4. **Install the Custom Component**:
|
||||
- In the Home Assistant terminal, run the following command to install the component:
|
||||
```bash
|
||||
wget -q -O - https://raw.githubusercontent.com/devmel/hass_airsend/master/install | bash -
|
||||
```
|
||||
## Installation
|
||||
|
||||
5. **Restart Home Assistant and the AirSend Addon**:
|
||||
- Restart Home Assistant.
|
||||
- Restart the AirSend addon.
|
||||
### Manual installation (until the repository is available in HACS)
|
||||
|
||||
6. **Configure the Integration**:
|
||||
- Navigate to Settings -> Devices & services -> + Add Integration.
|
||||
- Search for and select AirSend.
|
||||
- Select the rooms associated with your devices to complete the setup.
|
||||
1. Download the latest release from [GitHub releases](https://github.com/devmel/hass_airsend/releases).
|
||||
2. Copy the `custom_components/airsend` directory into your `custom_components` folder.
|
||||
3. Restart Home Assistant.
|
||||
4. Go to **Settings → Integrations → Add integration** and search for `AirSend`.
|
||||
|
||||
These steps will integrate AirSend with Home Assistant, allowing you to manage and automate AirSend-related tasks through the Home Assistant interface.
|
||||
### HACS (recommended)
|
||||
|
||||
1. Ensure [HACS](https://hacs.xyz) is installed.
|
||||
2. Search for `AirSend` in HACS and install it, or use the button below.
|
||||
3. Restart Home Assistant.
|
||||
4. Go to **Settings → Integrations → Add integration** and search for `AirSend`.
|
||||
|
||||
[](https://my.home-assistant.io/redirect/hacs_repository/?owner=Devmel&repository=hass_airsend)
|
||||
|
||||
|
||||
## Information
|
||||
|
||||
- This requires the execution of [hass_airsend-addon](https://github.com/devmel/hass_airsend-addon), if it is not on the same machine it is possible to add the field `internal_url: http://x.x.x.x:33863/` in airsend.conf
|
||||
- For **local** connection, the AirSend IPv4 address is **required**, you can find it in your router or [Airsend App for Windows](https://apps.microsoft.com/detail/9nblggh40m8w). If you **DO NOT** provide `?gw=0&rhost=...` then you may face unexpected **HTTP/500** status code or **HTTP/262** status code at Home Assistant level.
|
||||
## Configuration
|
||||
|
||||
After the integration added, the internal URL of the addon will be auto-detected. Confirm and your devices will appear automatically.
|
||||
|
||||
To reload devices after modifying `airsend.yaml`, use the **Reconfigure** option on the integration.
|
||||
|
||||
## Device options reference
|
||||
|
||||
| Option | Description |
|
||||
|--------|-------------|
|
||||
| `type` | Device type (see table above) |
|
||||
| `id` | AirSend cloud device ID |
|
||||
| `apiKey` | AirSend cloud API key |
|
||||
| `spurl` | Local connection string |
|
||||
| `channel` | RF channel definition (`id`, `source`, `mac`, `seed`) |
|
||||
| `wait` | Wait for RF confirmation before returning (`true`/`false`) |
|
||||
| `sensors` | Enable temperature and illuminance sensors for AirSend box (`true`/`false`) |
|
||||
| `bind` | Channel ID to bind for incoming RF messages |
|
||||
| `refresh` | Poll interval in seconds (default: 300) |
|
||||
|
||||
## Informations
|
||||
|
||||
This integration requires the [AirSend addon](https://github.com/devmel/hass_airsend-addon) to communicate with your AirSend hardware locally.
|
||||
For local connection, the AirSend IPv4 address is required, you can find it in your router or [Airsend App for Windows](https://apps.microsoft.com/detail/9nblggh40m8w).
|
||||
If you `DO NOT` provide ?gw=0&rhost=... then you may face unexpected `HTTP/500` status code or `HTTP/262` status code at Home Assistant level.
|
||||
|
||||
## Supported device types
|
||||
|
||||
| Type | Value | Description |
|
||||
|------|-------|-------------|
|
||||
| AirSend box | `0` | The AirSend hardware box (state, temperature, illuminance) |
|
||||
| Sensor | `1` | Generic RF sensor |
|
||||
| Cover | `4098` | Roller shutter, blind (open/close/stop) |
|
||||
| Cover with position | `4099` | Roller shutter with position control (0-100%) |
|
||||
| Switch | `4097` | On/Off switch |
|
||||
| Button | `4096` | Single-action button (toggle) |
|
||||
| Light | `4100` | Dimmable light (0-100%) |
|
||||
|
||||
## Preview
|
||||
|
||||
<img src="https://raw.githubusercontent.com/devmel/hass_airsend/master/img/screenshot.png" height="200"/>
|
||||

|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "AirSend",
|
||||
"render_readme": true,
|
||||
"iot_class": "Cloud Polling"
|
||||
"content_in_root": false
|
||||
}
|
||||
|
||||
@@ -1,85 +0,0 @@
|
||||
#!/bin/bash
|
||||
# wget -q -O - https://raw.githubusercontent.com/devmel/hass_airsend/master/install | bash -
|
||||
set -e
|
||||
|
||||
RED_COLOR='\033[0;31m'
|
||||
GREEN_COLOR='\033[0;32m'
|
||||
GREEN_YELLOW='\033[1;33m'
|
||||
NO_COLOR='\033[0m'
|
||||
|
||||
declare haPath
|
||||
declare -a paths=(
|
||||
"$PWD"
|
||||
"$PWD/config"
|
||||
"/config"
|
||||
"$HOME/.homeassistant/"
|
||||
"/usr/share/hassio/homeassistant/"
|
||||
)
|
||||
|
||||
function info () { echo -e "${GREEN_COLOR}INFO: $1${NO_COLOR}";}
|
||||
function warn () { echo -e "${GREEN_YELLOW}WARN: $1${NO_COLOR}";}
|
||||
function error () { echo -e "${RED_COLOR}ERROR: $1${NO_COLOR}"; if [ "$2" != "false" ]; then exit 1;fi; }
|
||||
|
||||
function checkRequirement () {
|
||||
if [ -z "$(command -v "$1")" ]; then
|
||||
error "'$1' is not installed"
|
||||
fi
|
||||
}
|
||||
|
||||
checkRequirement "wget"
|
||||
checkRequirement "unzip"
|
||||
|
||||
info "Trying to find the correct directory..."
|
||||
for path in "${paths[@]}"; do
|
||||
if [ -n "$haPath" ]; then
|
||||
break
|
||||
fi
|
||||
|
||||
if [ -f "$path/home-assistant.log" ]; then
|
||||
haPath="$path"
|
||||
else
|
||||
if [ -d "$path/.storage" ] && [ -f "$path/configuration.yaml" ]; then
|
||||
haPath="$path"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -n "$haPath" ]; then
|
||||
info "Found Home Assistant configuration directory at '$haPath'"
|
||||
cd "$haPath" || error "Could not change path to $haPath"
|
||||
if [ ! -d "$haPath/custom_components" ]; then
|
||||
info "Creating custom_components directory..."
|
||||
mkdir "$haPath/custom_components"
|
||||
fi
|
||||
|
||||
info "Changing to the custom_components directory..."
|
||||
cd "$haPath/custom_components" || error "Could not change path to $haPath/custom_components"
|
||||
|
||||
info "Downloading AirSend Home Assistant Component"
|
||||
wget "https://github.com/devmel/hass_airsend/releases/download/latest/hass_airsend.zip"
|
||||
|
||||
if [ -d "$haPath/custom_components/hass_airsend" ]; then
|
||||
warn "airsend directory already exist, cleaning up..."
|
||||
rm -R "$haPath/custom_components/hass_airsend"
|
||||
fi
|
||||
|
||||
info "Creating airsend directory..."
|
||||
mkdir "$haPath/custom_components/airsend"
|
||||
|
||||
info "Unpacking hass_airsend..."
|
||||
unzip "$haPath/custom_components/hass_airsend.zip" -d "$haPath/custom_components/airsend" >/dev/null 2>&1
|
||||
|
||||
info "Removing hass_airsend zip file..."
|
||||
rm "$haPath/custom_components/hass_airsend.zip"
|
||||
info "Installation complete."
|
||||
echo
|
||||
info "Remember to add configuration and restart Home Assistant"
|
||||
|
||||
else
|
||||
echo
|
||||
error "Could not find the directory for Home Assistant" false
|
||||
echo "Manually change the directory to the root of your Home Assistant configuration"
|
||||
echo "With the user that is running Home Assistant"
|
||||
echo "and run the script again"
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user