homeassistant: исправления ошибок настройки

master 94
parent 9a1a418f7a
commit b78545661d

@ -42,6 +42,9 @@ get_last_ver(){
}
get_live_ver(){
if [[ ! -e $1 ]]; then
exit
fi
local current_ver=$(readlink -f $1)
echo ${current_ver#*-}
echo ${current_ver##*-}
}

@ -8,6 +8,10 @@ source /var/db/repos/container/scripts/functions.sh
action=${1:-}
log_dir=/var/log/calculate/cl-setup
rm -rf $log_dir
mkdir -p $log_dir
script_path=$(dirname $(readlink -f $0))
for script in $script_path/step/*.sh; do
source "$script"
@ -19,10 +23,21 @@ for i in ${daemon_restart[@]}; do
rc-service -s $i stop
done
if [[ ! -e /etc/runlevels/default/homeassistant ]]; then
cl-setup-system
rc-update -u
echo 'Launch preparation'
ebegin 'Final setup'
cl-setup-system >>$log_dir/setup.log
rc-update -u >>$log_dir/setup.log
eend
ebegin 'Starting services'
openrc >>$log_dir/setup.log
eend
else
openrc
fi
openrc
echo "All is done! Open the link ${ini[homeassistant.protocol]}://${ini[homeassistant.domain]} on your browser."

@ -13,7 +13,7 @@ configure() {
local work_dir="$home_dir/versions/homeassistant-$last_ver"
local live_dir="$home_dir/homeassistant-live"
local live_ver="$(get_live_ver $live_dir)"
if [[ $action == 'check' ]]; then
if [[ $live_ver == $last_ver ]]; then
einfo "homeassistant: the latest version is installed $live_ver"
@ -29,12 +29,15 @@ configure() {
chmod 700 $home_dir
chown homeassistant: $home_dir
fi
touch $log_dir/homeassistant.log
chown homeassistant: $log_dir/homeassistant.log
if [[ $live_ver != $last_ver ]]; then
if [[ $live_ver != '' ]]; then
echo Update Home Assistant
else
if [[ $live_ver == '' ]]; then
echo Install Home Assistant
else
echo Update Home Assistant
fi
su - homeassistant -s /bin/bash -c "$(cat <<- EOF
@ -48,15 +51,15 @@ configure() {
eend
ebegin 'Install all Python dependencies'
python -m pip install wheel &>>/tmp/homeassistant.log
python -m pip install wheel &>>$log_dir/homeassistant.log
eend
ebegin 'Install Home Assistant $last_ver'
pip install homeassistant==$last_ver &>>/tmp/homeassistant.log
pip install homeassistant==$last_ver &>>$log_dir/homeassistant.log
eend
ebegin 'Install PostgreSQL dependencies'
pip install psycopg2 &>>/tmp/homeassistant.log
pip install psycopg2 &>>$log_dir/homeassistant.log
eend
rm -f $live_dir

@ -8,18 +8,29 @@ configure() {
return
fi
emerge --config postgresql
echo 'Setting up PostgreSQL'
pg_ver=$(ls /etc/init.d/postgresql-*); pg_ver=${pg_ver##*-}
/etc/init.d/postgresql-$pg_ver start
ebegin "Configuring PostgreSQL $pg_ver"
emerge --config postgresql &>>$log_dir/postgresql.log
eend
ebegin 'Starting PostgreSQL'
rc-service postgresql-$pg_ver start >>$log_dir/postgresql.log
eend
psql -U postgres -c "ALTER USER postgres WITH PASSWORD '${ini[postgresql.postgres_password]}'"
ebegin 'Database creation'
psql -U postgres -c "ALTER USER postgres WITH PASSWORD '${ini[postgresql.postgres_password]}'" >>$log_dir/postgresql.log
createuser -U postgres ${ini[postgresql.homeassistant_user]}
createdb -U postgres ${ini[postgresql.homeassistant_database]} -O ${ini[postgresql.homeassistant_user]}
psql -U postgres -c "ALTER USER ${ini[postgresql.homeassistant_user]} WITH PASSWORD '${ini[postgresql.homeassistant_password]}'"
psql -U postgres -c "ALTER USER ${ini[postgresql.homeassistant_user]} WITH PASSWORD '${ini[postgresql.homeassistant_password]}'" >>$log_dir/postgresql.log
eend
cl-core-setup -n postgresql -f
ebegin 'Updating permissions'
cl-core-setup -n postgresql -f >>$log_dir/postgresql.log
eend
/etc/init.d/postgresql-$pg_ver restart
ebegin 'Restart the server'
rc-service postgresql-$pg_ver restart >>$log_dir/postgresql.log
eend
}

@ -16,6 +16,11 @@ configure() {
local live_dir="$home_dir/zigbee2mqtt-live"
local live_ver="$(get_live_ver $live_dir)"
# проверим на наличие устройства
if [[ ${ini[zigbee2mqtt.dev]:-} == "" ]]; then
return
fi
if [[ $action == 'check' ]]; then
if [[ $live_ver == $last_ver ]]; then
einfo "zigbee2mqtt: the latest version is installed $live_ver"
@ -32,11 +37,14 @@ configure() {
chown zigbee2mqtt: $home_dir
fi
touch $log_dir/zigbee2mqtt.log
chown zigbee2mqtt: $log_dir/zigbee2mqtt.log
if [[ $live_ver != $last_ver ]]; then
if [[ $live_ver != '' ]]; then
echo Update Zigbee2MQTT
else
if [[ $live_ver == '' ]]; then
echo Install Zigbee2MQTT
else
echo Update Zigbee2MQTT
fi
su - zigbee2mqtt -s /bin/bash -c "$(cat <<- EOF
@ -71,28 +79,30 @@ configure() {
eend
ebegin 'Upgrade pip, wheel and setuptools'
pip install --upgrade pip wheel setuptools &>>/tmp/zigbee2mqtt.log
pip install --upgrade pip wheel setuptools &>>$log_dir/zigbee2mqtt.log
eend
ebegin 'Install node environment'
pip install nodeenv &>>/tmp/zigbee2mqtt.log
ebegin 'Install Node environment'
pip install nodeenv &>>$log_dir/zigbee2mqtt.log
eend
ebegin 'Init node environment ${ini[zigbee2mqtt.nodeenv]}'
nodeenv -p -n ${ini[zigbee2mqtt.nodeenv]} &>>/tmp/zigbee2mqtt.log
ebegin 'Init Node environment ${ini[zigbee2mqtt.nodeenv]}'
nodeenv -p -n ${ini[zigbee2mqtt.nodeenv]} &>>$log_dir/zigbee2mqtt.log
eend
einfo 'Install dependencies'
cd zigbee2mqtt-live
npm ci &>>/tmp/zigbee2mqtt.log
npm ci &>>$log_dir/zigbee2mqtt.log
cd
EOF
)"
if [[ $live_ver == '' ]]; then
if [[ $live_ver != '' ]]; then
eval $__result=zigbee2mqtt # демон который следует перезагрузить
else
ebegin 'Setup zigbee2mqtt'
mv /etc/zigbee2mqtt/configuration.yaml /etc/zigbee2mqtt/configuration.yaml.old
cat > /etc/zigbee2mqtt/configuration.yaml << EOF
mv /var/calculate/zigbee2mqtt/configuration.yaml /var/calculate/zigbee2mqtt/configuration.yaml.old
cat > /var/calculate/zigbee2mqtt/configuration.yaml << EOF
# Home Assistant integration (MQTT discovery)
homeassistant: true
@ -117,10 +127,8 @@ frontend:
port: 8080
host: 127.0.0.1
EOF
chown zigbee2mqtt: /etc/zigbee2mqtt/configuration.yaml
chown zigbee2mqtt: /var/calculate/zigbee2mqtt/configuration.yaml
eend
eval $__result=zigbee2mqtt # демон который следует перезагрузить
fi
fi
}

@ -0,0 +1,119 @@
#
# Функция configure() устанавливает HASS Configurator
#
# Параметры:
# $1 = check - проверка обновлений, в противном случае установка или обновление
# $2 - возвращает имя модуля для перезагрузки в случае выполненного обновления
# Guide: https://github.com/danielperna84/hass-configurator
configure() {
local action=$1
local __result=$2
local home_dir=/var/calculate/www/hass-configurator
local last_ver="$(get_last_ver danielperna84/hass-configurator github)"
local work_dir="$home_dir/versions/hass-configurator-$last_ver"
local live_dir="$home_dir/hass-configurator-live"
local live_ver="$(get_live_ver $live_dir)"
if [[ $action == 'check' ]]; then
if [[ $live_ver == $last_ver ]]; then
einfo "hass-configurator: the latest version is installed $live_ver"
else
einfo "hass-configurator: $last_ver update available, $live_ver installed"
eval $__result=1 # наличие обновления
fi
return
fi
# выйдем если все настроено
if [[ -e /var/calculate/hass-configurator/settings.conf ]]; then
return
fi
if [[ ! -e $home_dir ]]; then
mkdir -p $home_dir
chmod 700 $home_dir/versions
chown hass-configurator: $home_dir
fi
touch $log_dir/hass-configurator.log
chown hass-configurator: $log_dir/hass-configurator.log
if [[ $live_ver != $last_ver ]]; then
if [[ $live_ver == '' ]]; then
echo Install HASS Configurator
else
echo Update Configurator
fi
su - hass-configurator -s /bin/bash -c "$(cat <<- EOF
set -ueo pipefail
export PATH="/lib/rc/bin:$PATH"
ebegin Download hass-configurator ${last_ver}
wget https://github.com/danielperna84/hass-configurator/archive/refs/tags/${last_ver}.zip \
-O hass-configurator-${last_ver}.zip &>>$log_dir/hass-configurator.log
eend
ebegin 'Extract the archive'
unzip -q -d versions hass-configurator-${last_ver}.zip
rm hass-configurator-${last_ver}.zip
ln -sf versions/hass-configurator-${last_ver} hass-configurator-live
eend
ebegin 'Create a virtualenv'
python -m venv hass-configurator-live/.venv
eend
ebegin 'Activate environment'
source hass-configurator-live/.venv/bin/activate
eend
ebegin 'Upgrade pip and wheel'
pip install --upgrade pip wheel &>>$log_dir/hass-configurator.log
eend
ebegin 'Install HASS Configurator'
pip install hass-configurator &>>$log_dir/hass-configurator.log
eend
EOF
)"
fi
if [[ $live_ver != '' ]]; then
eval $__result=hass-assistant # демон который следует перезагрузить
else
ebegin 'Setup HASS Configurator'
cat > /var/calculate/hass-configurator/settings.conf << EOF
{
"LISTENIP": "127.0.0.1",
"PORT": 3218,
"GIT": false,
"BASEPATH": null,
"ENFORCE_BASEPATH": false,
"SSL_CERTIFICATE": null,
"SSL_KEY": null,
"IGNORE_SSL": false,
"HASS_API": "http://127.0.0.1:8123/api/",
"HASS_WS_API": null,
"HASS_API_PASSWORD": null,
"USERNAME": null,
"PASSWORD": null,
"ALLOWED_NETWORKS": [],
"ALLOWED_DOMAINS": [],
"BANNED_IPS": [],
"BANLIMIT": 0,
"IGNORE_PATTERN": [],
"DIRSFIRST": false,
"SESAME": null,
"SESAME_TOTP_SECRET": null,
"VERIFY_HOSTNAME": null,
"ENV_PREFIX": "HC_",
"NOTIFY_SERVICE": "persistent_notification.create"
}
EOF
chown hass-configurator: /var/calculate/hass-configurator/settings.conf
eend
fi
}

@ -1,71 +0,0 @@
#!/bin/bash
# Guide: https://github.com/danielperna84/hass-configurator
set -ueo pipefail
export PATH="/lib/rc/bin:$PATH"
test -e ~/hass-configurator-live && exit
SCRIPT=$(readlink -f $0)
[[ $UID == 0 ]] && exec su - hass-configurator -s /bin/bash -c "$SCRIPT"
. /var/db/repos/container/scripts/functions.sh
. /var/db/repos/calculate/scripts/ini.sh
cd
ver=$(curl -s https://api.github.com/repos/danielperna84/hass-configurator/releases/latest | grep tag_name | cut -d '"' -f 4) && echo "Latest hass-configurator version is ${ver}"
[[ -z $ver ]] && eerror 'The latest version of hass-configurator is not defined!'
wget -q https://github.com/danielperna84/hass-configurator/archive/refs/tags/${ver}.zip -O hass-configurator-${ver}.zip
einfo 'Extract the archive'
unzip -q -d versions hass-configurator-${ver}.zip
rm hass-configurator-${ver}.zip
ln -sf versions/hass-configurator-${ver} hass-configurator-live
einfo 'Install python env'
python -m venv hass-configurator-live/.venv
einfo 'Activate environment'
. hass-configurator-live/.venv/bin/activate
einfo 'Upgrade pip and wheel'
pip install --upgrade pip wheel
einfo 'Install HASS Configurator'
pip install hass-configurator
echo '. ~/hass-configurator-live/.venv/bin/activate' >> .bashrc
echo '. ~/hass-configurator-live/.venv/bin/activate' >> .bash_profile
ebegin 'Setup HASS Configurator'
if [[ ! -e /etc/hass-configurator/settings.conf ]]; then
cat > /etc/hass-configurator/settings.conf << EOF
{
"LISTENIP": "127.0.0.1",
"PORT": 3218,
"GIT": false,
"BASEPATH": null,
"ENFORCE_BASEPATH": false,
"SSL_CERTIFICATE": null,
"SSL_KEY": null,
"IGNORE_SSL": false,
"HASS_API": "http://127.0.0.1:8123/api/",
"HASS_WS_API": null,
"HASS_API_PASSWORD": null,
"USERNAME": null,
"PASSWORD": null,
"ALLOWED_NETWORKS": [],
"ALLOWED_DOMAINS": [],
"BANNED_IPS": [],
"BANLIMIT": 0,
"IGNORE_PATTERN": [],
"DIRSFIRST": false,
"SESAME": null,
"SESAME_TOTP_SECRET": null,
"VERIFY_HOSTNAME": null,
"ENV_PREFIX": "HC_",
"NOTIFY_SERVICE": "persistent_notification.create"
}
EOF
fi
eend

@ -3,31 +3,32 @@
#
configure() {
# выйдем если все настроено
grep -q ^http: /etc/homeassistant/configuration.yaml &>/dev/null && return || true
grep -q ^http: /var/calculate/homeassistant/configuration.yaml &>/dev/null && return || true
local home_dir=/var/calculate/www/homeassistant
local live_dir="$home_dir/homeassistant-live"
local config_dir="/var/calculate/homeassistant"
if [[ -e $config_dir ]]; then
return
else
if [[ ! -e $config_dir ]]; then
mkdir -p $config_dir
chmod 700 $config_dir
chown homeassistant: $config_dir
fi
touch $log_dir/config.log
chown homeassistant: $log_dir/config.log
su - homeassistant -s /bin/bash -c "$(cat <<- EOF
set -ueo pipefail
export PATH="/lib/rc/bin:$PATH"
source $live_dir/bin/activate
hass --config /etc/homeassistant >/dev/null &
hass --config /var/calculate/homeassistant &>>$log_dir/config.log &
id_hass=\$!
echo
einfon "Check for the first start Home Assistant "
einfon "Waiting for the first start Home Assistant "
while ! curl http://127.0.0.1:8123 2>/dev/null; do
echo -n .
sleep 1
@ -37,7 +38,7 @@ configure() {
EOF
)"
cat >> /etc/homeassistant/configuration.yaml << EOF
cat >> /var/calculate/homeassistant/configuration.yaml << EOF
http:
server_host: 127.0.0.1
@ -48,13 +49,22 @@ recorder:
db_url: postgresql://${ini[postgresql.homeassistant_user]}:${ini[postgresql.homeassistant_password]}@127.0.0.1/${ini[postgresql.homeassistant_database]}
panel_iframe:
EOF
if [[ -e /var/calculate/zigbee2mqtt ]]; then
cat >> /var/calculate/homeassistant/configuration.yaml << EOF
zigbee:
title: Zigbee2mqtt
url: ${ini[homeassistant.protocol]}://${ini[homeassistant.domain]}/${ini[nginx.zigbee2mqtt_subpath]}
icon: mdi:zigbee
EOF
fi
if [[ -e /var/calculate/hass-configurator ]]; then
cat >> /var/calculate/homeassistant/configuration.yaml << EOF
configurator:
title: Configurator
icon: mdi:wrench
url: ${ini[homeassistant.protocol]}://${ini[homeassistant.domain]}/${ini[nginx.hass-configurator_subpath]}
EOF
fi
}

Loading…
Cancel
Save