From b688219e1afeb25904320d43db28bc459c0d049f Mon Sep 17 00:00:00 2001
From: Daniel Moindrot <86261703+38decibel@users.noreply.github.com>
Date: Thu, 4 Jun 2026 14:01:53 +0200
Subject: [PATCH] Update README and add HACS support files (#25)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* 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
---
README.md | 176 ++++++++++++++++++++++++++++++++++++------------------
hacs.json | 2 +-
install | 85 --------------------------
3 files changed, 118 insertions(+), 145 deletions(-)
delete mode 100644 install
diff --git a/README.md b/README.md
index 61c577a..62271f2 100644
--- a/README.md
+++ b/README.md
@@ -1,67 +1,125 @@
-
+[](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).
-
-## 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)
-
-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:
- type: 0
- spurl: !secret spurl
- sensors: true
- ```
-
-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.
-
- - 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.
-
-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 -
- ```
-
-5. **Restart Home Assistant and the AirSend Addon**:
- - Restart Home Assistant.
- - Restart the AirSend addon.
-
-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.
-
-These steps will integrate AirSend with Home Assistant, allowing you to manage and automate AirSend-related tasks through the Home Assistant interface.
+### Supported boxes
+- [AirSend](https://devmel.com/fr/airsend.html) (RF433)
+- [AirSend Duo](https://devmel.com/fr/airsend-duo.html) (RF433 & RF868)
-## Information
+Each AirSend device is represented as a proper **Home Assistant device** with its associated entities (cover, switch, button, light, sensor).
- - 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.
+
+## 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 # enables temperature and illuminance sensors
+ bind: 1
+ refresh: 300
+
+ Volet salon:
+ id: 12345
+ type: 4098
+ apiKey: !secret apiKey
+ spurl: !secret spurl
+ channel:
+ id: 25455
+ source: 94311
+
+ Lumiere pergola:
+ id: 65838
+ type: 4100 # dimmable light
+ apiKey: !secret apiKey
+ spurl: !secret spurl
+ wait: true
+ channel:
+ id: 26848
+ source: 1442421508
+```
+
+## Installation
+
+### Manual installation (until the repository is available in HACS)
+
+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`.
+
+### 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)
+
+
+
+## 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
-
+
diff --git a/hacs.json b/hacs.json
index 6ae1600..628b50e 100644
--- a/hacs.json
+++ b/hacs.json
@@ -1,5 +1,5 @@
{
"name": "AirSend",
"render_readme": true,
- "iot_class": "Cloud Polling"
+ "content_in_root": false
}
diff --git a/install b/install
deleted file mode 100644
index 67c9bbe..0000000
--- a/install
+++ /dev/null
@@ -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