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**:
|
Each AirSend device is represented as a proper **Home Assistant device** with its associated entities (cover, switch, button, light, sensor).
|
||||||
- [](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)
|
|
||||||
|
|
||||||
2. **Place the `airsend.yaml` File**:
|
|
||||||
- Go to `airsend.cloud -> import/export -> Export`
|
## Requirements
|
||||||
- Select your devices, for local connection, select `spurl`
|
|
||||||
- Click `Export YAML` to save the airsend.yaml
|
### 1. Install the AirSend addon
|
||||||
- In the `config` folder of Home Assistant, place the `airsend.yaml` file.
|
|
||||||
- Edit the file and add these lines
|
[](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Fdevmel%2Fhass_airsend-addon)
|
||||||
```yaml
|
|
||||||
devices:
|
Install and start the **AirSend** addon.
|
||||||
...
|
|
||||||
AirSend Box:
|
### 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
|
type: 0
|
||||||
spurl: !secret spurl
|
spurl: !secret spurl
|
||||||
sensors: true
|
sensors: true # enables temperature and illuminance sensors
|
||||||
```
|
bind: 1
|
||||||
|
refresh: 300
|
||||||
|
|
||||||
3. **Edit the `secrets.yaml` File**:
|
Volet salon:
|
||||||
- Add a line to the `secrets.yaml` file with the AirSend - Local IP - / - Password - (and IPv4 address).
|
id: 12345
|
||||||
- If you know the IPv4 address, the line should look like this:
|
type: 4098
|
||||||
```yaml
|
apiKey: !secret apiKey
|
||||||
spurl: sp://**************@[fe80::xxxx:xxxx:xxxx:xxxx]?gw=0&rhost=192.168.xxx.xxx
|
spurl: !secret spurl
|
||||||
```
|
channel:
|
||||||
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.
|
id: 25455
|
||||||
|
source: 94311
|
||||||
|
|
||||||
- or this if you don't know the IPv4 address :
|
Lumiere pergola:
|
||||||
```yaml
|
id: 65838
|
||||||
spurl: sp://**************@[fe80::xxxx:xxxx:xxxx:xxxx]?gw=1
|
type: 4100 # dimmable light
|
||||||
```
|
apiKey: !secret apiKey
|
||||||
- Replace `**************` with the AirSend Password, `fe80::xxxx:xxxx:xxxx:xxxx` with AirSend Local IP and `192.168.xxx.xxx` with the AirSend IPv4 address.
|
spurl: !secret spurl
|
||||||
|
wait: true
|
||||||
|
channel:
|
||||||
|
id: 26848
|
||||||
|
source: 1442421508
|
||||||
|
```
|
||||||
|
|
||||||
4. **Install the Custom Component**:
|
## Installation
|
||||||
- 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 -
|
|
||||||
```
|
|
||||||
|
|
||||||
5. **Restart Home Assistant and the AirSend Addon**:
|
### Manual installation (until the repository is available in HACS)
|
||||||
- Restart Home Assistant.
|
|
||||||
- Restart the AirSend addon.
|
|
||||||
|
|
||||||
6. **Configure the Integration**:
|
1. Download the latest release from [GitHub releases](https://github.com/devmel/hass_airsend/releases).
|
||||||
- Navigate to Settings -> Devices & services -> + Add Integration.
|
2. Copy the `custom_components/airsend` directory into your `custom_components` folder.
|
||||||
- Search for and select AirSend.
|
3. Restart Home Assistant.
|
||||||
- Select the rooms associated with your devices to complete the setup.
|
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
|
## Configuration
|
||||||
- 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.
|
|
||||||
|
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
|
## Preview
|
||||||
|
|
||||||
<img src="https://raw.githubusercontent.com/devmel/hass_airsend/master/img/screenshot.png" height="200"/>
|

|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "AirSend",
|
"name": "AirSend",
|
||||||
"render_readme": true,
|
"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