mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-27 02:56:31 +00:00
Add HassIO HostControll support
This commit is contained in:
parent
c9681f03c7
commit
c54f9dc341
@ -1,17 +1,46 @@
|
||||
# HassIO Server
|
||||
|
||||
## REST API Supervisor
|
||||
## Host Controll
|
||||
|
||||
### /supervisor/info
|
||||
Communicate over unix socket with a host daemon.
|
||||
|
||||
### /supervisor/network
|
||||
- Payload: {'hostname': '', 'mode': 'dhcp|fixed', 'ssid': '', 'ip': '', 'netmask': '', 'gateway': ''}
|
||||
- commands
|
||||
```
|
||||
# info
|
||||
# reboot
|
||||
# shutdown
|
||||
# host-update [v]
|
||||
# supervisor-update [v]
|
||||
|
||||
### /supervisor/reboot
|
||||
# network info
|
||||
# network hostname xy
|
||||
# network wlan ssd xy
|
||||
# network wlan password xy
|
||||
# network int ip xy
|
||||
# network int netmask xy
|
||||
# network int route xy
|
||||
```
|
||||
|
||||
### /supervisor/shutdown
|
||||
- Answer
|
||||
```
|
||||
[{}]
|
||||
OK|ERROR
|
||||
```
|
||||
|
||||
## HassIO REST API
|
||||
|
||||
Interface for HomeAssistant to controll things from supervisor.
|
||||
|
||||
### host
|
||||
- `/host/network`
|
||||
Payload: {'hostname': '', 'mode': 'dhcp|fixed', 'ssid': '', 'ip': '', 'netmask': '', 'gateway': ''}
|
||||
|
||||
- `/host/reboot`
|
||||
|
||||
- `/host/shutdown`
|
||||
|
||||
- `/host/info`
|
||||
|
||||
## REST API HomeAssistant
|
||||
|
||||
### /homeassistant/info
|
||||
|
||||
|
@ -10,11 +10,11 @@ runSupervisor() {
|
||||
docker rm --force resin_supervisor || true
|
||||
docker run --privileged --name resin_supervisor \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-v /var/run/hassio_hc.sock:/var/run/hassio_hc.sock \
|
||||
-v /var/run/hassio_hc.sock:/var/run/hassio-hc.sock \
|
||||
-v /resin-data:/data \
|
||||
-v /var/log/supervisor-log:/var/log \
|
||||
-e DOCKER_SOCKET=/var/run/docker.sock \
|
||||
-e HASSIO_HC_SOCKET=/var/run/hassio_hc.sock \
|
||||
-e HASSIO_HC_SOCKET=/var/run/hassio-hc.sock \
|
||||
-e SUPERVISOR_SHARE=/resin-data \
|
||||
-e SUPERVISOR_NAME=resin_supervisor \
|
||||
-e HOMEASSISTANT_REPOSITORY=${HOMEASSISTANT_REPOSITORY} \
|
||||
|
@ -0,0 +1,37 @@
|
||||
DESCRIPTION = "hassio device controll"
|
||||
SECTION = "console/utils"
|
||||
|
||||
SRC_URI = "
|
||||
file://hassio-hc \
|
||||
file://hassio-hc.service \
|
||||
"
|
||||
|
||||
inherit allarch systemd
|
||||
|
||||
SYSTEMD_SERVICE_${PN} += "hassio-hc.service"
|
||||
SYSTEMD_AUTO_ENABLE = "enable"
|
||||
|
||||
RDEPENDS_${PN} = " \
|
||||
bash \
|
||||
socat \
|
||||
"
|
||||
|
||||
FILES_${PN} += " \
|
||||
${systemd_unitdir} \
|
||||
${bindir} \
|
||||
"
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${bindir}
|
||||
install -m 0775 ${WORKDIR}/hassio-hc ${D}${bindir}/hassio-hc
|
||||
|
||||
if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
|
||||
install -d ${D}${systemd_unitdir}/system
|
||||
install -c -m 0644 ${WORKDIR}/hassio-hc.service ${D}${systemd_unitdir}/system
|
||||
|
||||
sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
|
||||
-e 's,@SBINDIR@,${sbindir},g' \
|
||||
-e 's,@BINDIR@,${bindir},g' \
|
||||
${D}${systemd_unitdir}/system/*.service
|
||||
fi
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# Don't run anything before this source as it sets PATH here
|
||||
source /etc/profile
|
||||
|
||||
# load config
|
||||
source /usr/sbin/resin-vars
|
||||
source /etc/resin-supervisor/supervisor.conf
|
||||
|
||||
#
|
||||
# MAIN
|
||||
#
|
||||
while read cmd
|
||||
do
|
||||
IFS=" " read -r -a parse <<< $cmd
|
||||
|
||||
if [ ${parse[0]} == "info" ]; then
|
||||
echo "{'host': 'resinos', 'version': '$RESINOS_VERSION'}"
|
||||
continue
|
||||
fi
|
||||
if [ ${parse[0]} == "reboot" ]; then
|
||||
systemctl reboot
|
||||
echo "OK"
|
||||
continue
|
||||
fi
|
||||
if [ ${parse[0]} == "shutdown" ]; then
|
||||
systemctl poweroff
|
||||
echo "OK"
|
||||
continue
|
||||
fi
|
||||
if [ ${parse[0]} == "host-update" ]; then
|
||||
if [ ${parse[@]} -eq 2]; then
|
||||
resinhub --hostos-version ${parse[1]}
|
||||
else
|
||||
resinhub
|
||||
fi
|
||||
echo "OK"
|
||||
continue
|
||||
fi
|
||||
if [ ${parse[0]} == "supevisor-update" ]; then
|
||||
if [ ${parse[@]} -eq 2]; then
|
||||
update-resin-supervisor --supervisor-tag ${parse[1]}
|
||||
else
|
||||
update-resin-supervisor
|
||||
fi
|
||||
echo "OK"
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "ERROR"
|
||||
done
|
@ -0,0 +1,11 @@
|
||||
[Unit]
|
||||
Description=HassIO HostControll
|
||||
Wants=resin-supervisor.service
|
||||
Before=resin-supervisor.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=@BINDIR@/socat UNIX:/var/run/hassio-hc.sock,fork EXEC:@BINDIR@/hassio-hc
|
||||
|
||||
[Install]
|
||||
WantedBy=resin.target
|
@ -1,44 +1,9 @@
|
||||
|
||||
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
|
||||
|
||||
SRC_URI = " \
|
||||
file://resinhup \
|
||||
file://hassio.conf \
|
||||
file://resinhup.timer \
|
||||
file://resinhup.service \
|
||||
"
|
||||
|
||||
inherit systemd
|
||||
|
||||
SYSTEMD_SERVICE_${PN} += " \
|
||||
resinhup.service \
|
||||
resinhup.timer \
|
||||
"
|
||||
|
||||
SYSTEMD_AUTO_ENABLE = "enable"
|
||||
|
||||
FILES_${PN} += " \
|
||||
${systemd_unitdir} \
|
||||
${bindir} \
|
||||
${sysconfdir} \
|
||||
"
|
||||
SRC_URI += "file://resinhup"
|
||||
|
||||
do_install_append() {
|
||||
install -d ${D}${sysconfdir}
|
||||
install -m 0755 ${WORKDIR}/hassio.conf ${D}${sysconfdir}
|
||||
sed -i -e 's:@HASSIO_VERSION@:${HASSIO_VERSION}:g' ${D}${sysconfdir}/hassio.conf
|
||||
|
||||
install -d ${D}${bindir}
|
||||
install -m 0755 ${WORKDIR}/resinhup ${D}${bindir}
|
||||
|
||||
if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
|
||||
install -d ${D}${systemd_unitdir}/system
|
||||
install -c -m 0644 ${WORKDIR}/resinhup.service ${D}${systemd_unitdir}/system
|
||||
install -c -m 0644 ${WORKDIR}/resinhup.timer ${D}${systemd_unitdir}/system
|
||||
|
||||
sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
|
||||
-e 's,@SBINDIR@,${sbindir},g' \
|
||||
-e 's,@BINDIR@,${bindir},g' \
|
||||
${D}${systemd_unitdir}/system/*.service
|
||||
fi
|
||||
}
|
||||
|
@ -1,19 +0,0 @@
|
||||
[Unit]
|
||||
Description=Resinhup updater
|
||||
Requires=\
|
||||
docker.service \
|
||||
etc-resin\x2dsupervisor.mount \
|
||||
tmp.mount
|
||||
Wants=\
|
||||
mnt-boot.mount \
|
||||
resin-supervisor.service
|
||||
After=\
|
||||
docker.service \
|
||||
tmp.mount \
|
||||
mnt-boot.mount \
|
||||
etc-resin\x2dsupervisor.mount \
|
||||
resin-supervisor.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=@BASE_BINDIR@/bash @BINDIR@/resinhub
|
@ -1,9 +0,0 @@
|
||||
[Unit]
|
||||
Description=Resinhup updater timer
|
||||
|
||||
[Timer]
|
||||
OnBootSec=15min
|
||||
OnUnitInactiveSec=1d
|
||||
|
||||
[Install]
|
||||
WantedBy=resin.target
|
@ -1,14 +1,20 @@
|
||||
|
||||
# HassIO supervisor
|
||||
|
||||
- Docker socket for Docker management
|
||||
- HassIO HostControll socket for manage host functions
|
||||
- Persistent volume to store all data
|
||||
|
||||
## Run supervisor on a normal docker host
|
||||
|
||||
```bash
|
||||
docker run --privileged --name resin_supervisor \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-v /var/run/hassio_hc.sock:/var/run/hassio_hc.sock \
|
||||
-v /var/run/hassio_hc.sock:/var/run/hassio-hc.sock \
|
||||
-v /resin-data:/data \
|
||||
-v /var/log/supervisor-log:/var/log \
|
||||
-e DOCKER_SOCKET=/var/run/docker.sock \
|
||||
-e HASSIO_HC_SOCKET=/var/run/hassio_hc.sock \
|
||||
-e HASSIO_HC_SOCKET=/var/run/hassio-hc.sock \
|
||||
-e SUPERVISOR_SHARE=/resin-data \
|
||||
-e SUPERVISOR_NAME=resin_supervisor \
|
||||
-e HOMEASSISTANT_REPOSITORY=${HOMEASSISTANT_REPOSITORY} \
|
||||
|
Loading…
x
Reference in New Issue
Block a user