Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
98289e96e0 | ||
|
|
04a0bef826 |
@@ -11,21 +11,60 @@ Home Assistant Addon to control an AirSend device in a local network.
|
||||
|
||||
## Manual Installation
|
||||
|
||||
1. Into the terminal, run `wget -q -O - https://raw.githubusercontent.com/devmel/hass_airsend-addon/master/install | bash -`
|
||||
OR copy the `airsend` folder into your [addon folder](https://developers.home-assistant.io/docs/creating_integration_file_structure/#where-home-assistant-looks-for-integrations).
|
||||
2. In Supervisor -> Add-on store -> Local add-ons, refresh, install and start AirSend addon
|
||||
#### 1. Install the Add-on
|
||||
Run the following command in your terminal:
|
||||
```bash
|
||||
wget -q -O - https://raw.githubusercontent.com/devmel/hass_airsend-addon/master/install bash -
|
||||
```
|
||||
**OR**
|
||||
Manually copy the `airsend` folder into your [Home Assistant addons directory](https://developers.home-assistant.io/docs/creating_integration_file_structure/#where-home-assistant-looks-for-integrations).
|
||||
|
||||
#### 2. Start the Add-on
|
||||
1. Go to **Supervisor** → **Add-on Store** → **Local add-ons**.
|
||||
2. Refresh the list, then install and start the **AirSend** add-on.
|
||||
|
||||
|
||||
## Install on an external machine
|
||||
1. Clone repository
|
||||
2. Generate your API key: [link to your profile](https://my.home-assistant.io/redirect/profile/) (security tab, long-lived access tokens)
|
||||
3. Go to addons/airsend folder
|
||||
4. Depending on your machine architecture, run in a terminal. Example with amd64: `docker build --build-arg "BUILD_FROM=ghcr.io/home-assistant/amd64-base:3.22" -t hass_airsend-addon .`
|
||||
5. Depending on your home assistant server and your token, run in a terminal. Example with homeassistant.local:8123:
|
||||
#### 1. Clone the Repository
|
||||
```bash
|
||||
git clone https://github.com/devmel/hass_airsend-addon
|
||||
cd hass_airsend-addon/addons/airsend
|
||||
```
|
||||
|
||||
#### 2. Generate a Home Assistant API Key
|
||||
1. Go to your [Home Assistant profile](https://my.home-assistant.io/redirect/profile/).
|
||||
2. Navigate to the **Security** tab.
|
||||
3. Generate a **long-lived access token** (use this as `HASS_TOKEN`).
|
||||
|
||||
---
|
||||
|
||||
#### 3. Build the Docker Image
|
||||
Replace `amd64` with your machine's architecture if needed (`armhf`, `armv7`, `aarch64`, etc.):
|
||||
```bash
|
||||
docker build --build-arg "BUILD_FROM=ghcr.io/home-assistant/amd64-base:3.22" -t hass_airsend-addon .
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### 4. Run the Docker Container
|
||||
Adjust the environment variables according to your setup:
|
||||
```bash
|
||||
docker run -dp 33863:33863 \
|
||||
-e HTTPS=1 \
|
||||
-e HASS_HOST='homeassistant.local:8123' \
|
||||
-e HASS_TOKEN='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJiZDg1MWJlNjE1NmM0Zjc4YTRiNzhjZjRlMDc4MWZiMCIsImlhdCI6MTY5MTIyOTg5MCwiZXhwIjoyMDA2NTg5ODkwfQ._ECys-uPkM8fn1W2wvjzIJ9HLJcI7RHmZmix_2C9QgU' \
|
||||
-e HASS_TOKEN='your_token_here' \
|
||||
-e HASS_AUTOINCLUDE=0 \
|
||||
hass_airsend-addon
|
||||
```
|
||||
|
||||
##### Environment Variables:
|
||||
- HTTPS=1: Enables HTTPS. Use HTTPS=0 if you cannot handle self-signed certificates.
|
||||
- HASS_HOST: Your Home Assistant server address and port (e.g., homeassistant.local:8123).
|
||||
- HASS_TOKEN: The long-lived access token you generated.
|
||||
- HASS_AUTOINCLUDE: Set to 0 to disable auto-inclusion of the add-on in Home Assistant.
|
||||
|
||||
---
|
||||
|
||||
### Important Notes
|
||||
- **Security**: Never share your `HASS_TOKEN`.
|
||||
- **HTTPS**: If `HTTPS=0`, ensure your network is secure.
|
||||
|
||||
@@ -4,8 +4,10 @@ FROM $BUILD_FROM
|
||||
ENV HASS_HOST=
|
||||
ENV HASS_TOKEN=
|
||||
ENV HASS_AUTOINCLUDE=0
|
||||
ENV HTTPS=1
|
||||
|
||||
# Copy data for add-on
|
||||
COPY nginx.conf /etc/nginx/nginx.conf
|
||||
COPY hassapi.class.php /home
|
||||
COPY hass_cb.php /home
|
||||
COPY state_post.sh /home
|
||||
@@ -18,7 +20,16 @@ RUN chmod a+x /run.sh
|
||||
# Install AirSendWebService
|
||||
RUN mkdir -p /home && cd /home && wget http://devmel.com/dl/AirSendWebService.tgz && tar -zxvf AirSendWebService.tgz && chmod -R 777 bin
|
||||
|
||||
RUN apk add php php-curl
|
||||
# Install Services
|
||||
RUN apk add php php-curl nginx openssl
|
||||
|
||||
# Generate self-signed certificate
|
||||
RUN mkdir -p /etc/nginx/ssl
|
||||
RUN openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
|
||||
-subj "/C=FR/ST=France/L=Paris/O=AirSendWebService/CN=localhost" \
|
||||
-keyout /etc/nginx/ssl/selfsigned.key \
|
||||
-out /etc/nginx/ssl/selfsigned.crt
|
||||
|
||||
# Start AirSendWebService
|
||||
CMD [ "/run.sh" ]
|
||||
EXPOSE 33863
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
events {}
|
||||
http {
|
||||
server {
|
||||
listen 33863 ssl;
|
||||
server_name _;
|
||||
|
||||
ssl_certificate /etc/nginx/ssl/selfsigned.crt;
|
||||
ssl_certificate_key /etc/nginx/ssl/selfsigned.key;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:33864;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
}
|
||||
}
|
||||
}
|
||||
+20
-4
@@ -9,11 +9,8 @@ case "$arch" in \
|
||||
amd64) arch='x86_64' ;; \
|
||||
i386) arch='x86' ;; \
|
||||
esac;
|
||||
echo "AirSendWebService arch: ${arch}"
|
||||
|
||||
# Start AirSendWebService
|
||||
ulimit -n 4096
|
||||
./bin/unix/${arch}/AirSendWebService 99399
|
||||
echo "AirSendWebService arch: ${arch}"
|
||||
|
||||
CALLBACK_PID=
|
||||
if [ -n "${SUPERVISOR_TOKEN:-}" ]
|
||||
@@ -21,14 +18,33 @@ then
|
||||
hname="$(hostname -i)"
|
||||
echo "internal_url: http://${hname}:33863/"
|
||||
echo $(bashio::config 'auto_include') > auto_include.cfg
|
||||
# Start AirSendWebService
|
||||
./bin/unix/${arch}/AirSendWebService 99399
|
||||
# Start hass callback service
|
||||
php -S 127.0.0.1:80 hass_cb.php & CALLBACK_PID=$!
|
||||
elif [ -n "${HASS_HOST:-}" ] && [ -n "${HASS_TOKEN:-}" ]
|
||||
then
|
||||
# Start AirSendWebService
|
||||
if [ "${HTTPS:-0}" -eq 1 ]; then
|
||||
./bin/unix/${arch}/AirSendWebService 33864
|
||||
nginx
|
||||
echo "internal_url: https://{YOUR_DOCKER_MACHINE_IP}:33863/"
|
||||
else
|
||||
./bin/unix/${arch}/AirSendWebService 99399
|
||||
echo "internal_url: http://{YOUR_DOCKER_MACHINE_IP}:33863/"
|
||||
fi
|
||||
# Start hass callback service
|
||||
php -S 127.0.0.1:80 hass_cb.php & CALLBACK_PID=$!
|
||||
else
|
||||
# Start AirSendWebService
|
||||
if [ "${HTTPS:-0}" -eq 1 ]; then
|
||||
./bin/unix/${arch}/AirSendWebService 33864
|
||||
nginx
|
||||
echo "example: curl -k https://{YOUR_DOCKER_MACHINE_IP}:33863/"
|
||||
else
|
||||
./bin/unix/${arch}/AirSendWebService 99399
|
||||
echo "example: curl http://{YOUR_DOCKER_MACHINE_IP}:33863/"
|
||||
fi
|
||||
echo "Running the AirSendWebService only..."
|
||||
fi
|
||||
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
|
||||
payload=`echo $2 | base64 -d`
|
||||
echo -en $payload | curl -s --data-binary @- -X POST -H "Authorization: Bearer ${SUPERVISOR_TOKEN}" -H "Content-Type: application/json" http://supervisor/core/api/states/$1
|
||||
echo -en $payload | curl -s --data-binary @- -X POST -H "Authorization: Bearer ${HASS_TOKEN}" -H "Content-Type: application/json" http://${HASS_HOST}/api/states/$1
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
|
||||
curl -o states.json -s -X GET -H "Authorization: Bearer ${SUPERVISOR_TOKEN}" -H "Content-Type: application/json" http://supervisor/core/api/states
|
||||
curl -o states.json -s -X GET -H "Authorization: Bearer ${HASS_TOKEN}" -H "Content-Type: application/json" http://${HASS_HOST}/api/states
|
||||
|
||||
Reference in New Issue
Block a user