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 @@ -App icon +[![airsend](https://img.shields.io/github/release/devmel/hass_airsend/all.svg?style=plastic&label=Current%20release)](https://github.com/devmel/hass_airsend) [![hacs_badge](https://img.shields.io/badge/HACS-Default-41BDF5.svg?style=plastic)](https://github.com/hacs/integration) [![downloads](https://img.shields.io/github/downloads/devmel/hass_airsend/total?style=plastic&label=Total%20downloads)](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**: - - [![Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.](https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg)](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 + +[![Add AirSend addon repository](https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg)](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`. + +[![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](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 - +![Screenshot](https://raw.githubusercontent.com/devmel/hass_airsend/master/img/screenshot.png) 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