『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 25348|回复: 21

[基础教程] OPENWRT软路由安装homeassistant,救活dc1(尚未成功,折腾中...)

[复制链接]

1

主题

79

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
金钱
123
HASS币
0
发表于 2019-12-26 16:32:22 | 显示全部楼层 |阅读模式
本帖最后由 yufei8051 于 2019-12-28 22:41 编辑

首先,你得是使用包含有docker ce 容器的openwrt固件,我用的是esir编译的 "OpenWrt R9.11.23 IPv4 GDQ v12.1 Compiled by eSir ", 感谢各位大神!
剩余空间挂载(/etc/docker-init )将及安装docker的web图形管理界面 ( /etc/docker-web )命详见L大文章,在软路由“服务”-“docker ce 容器”页面有链接。

一、安装运行homeassistant(Home Assistant 0.103.4 版):
ssh下输入:
docker run --restart=always --init -d --name="homeassistant" -v /opt/docker/homeassistant:/config -p 8123:8123 -p 8000:8000 homeassistant/amd64-homeassistant:stable

浏览器打开你软路由ip:8123。如我的是:http://192.168.2.100:8123
就能接入homeassistant管理界面了


二、配置dc1
1、DNS劫持:https://www.right.com.cn/forum/thread-794878-1-1.html
2、配网参见:https://bbs.hassbian.com/forum.php?mod=viewthread&tid=7014&highlight=%E9%85%8D%E7%BD%91
3、将下面文件及文件夹复制到 homehassistant 目录下,如提示是否覆盖,选"是'。
附件: 在用.zip (11.17 KB, 下载次数: 36)
编辑  packages 文件夹下的 phicomm_dc1.yaml 文件,将 ip 改成你自己的 dc1 的。
4、重启homeassistant(或者直接重启软路由),打开 http://192.168.2.100:8123/ 看看,惊不惊喜?不惊喜,只有空界面根本控制不了,没数据


上面的折腾hemeassistant网页显示,却始终无数据,换了好几个版本、好几个配置文件都不行,绝望中





configuration.yaml基本配置信息
homeassistant:
  # Name of the location where Home Assistant is running
  name: Home
  # Location required to calculate the time the sun rises and sets
  latitude: 29.8782
  longitude: 121.5495
  # Impacts weather/sunrise data (altitude above sea level in meters)
  elevation: 0
  # metric for Metric, imperial for Imperial
  unit_system: metric
  # Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
  time_zone: Asia/Shanghai
  # Customization file
  customize: !include customize.yaml
  whitelist_external_dirs:
    - /usr/var/dumping-ground
    - /tmp

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# Show the introduction message on startup.
introduction:

# Uncomment this if you are using SSL/TLS, running in Docker container, etc.
# http:
#   base_url: example.duckdns.org:8123
http:
  server_port: 443
  api_password: !secret http_password
  base_url: https://myhome-assistant.duckdns.org:8123
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem

# Discover some devices automatically
discovery:

# Sensors
sensor:
  # Weather prediction
  - platform: yr

# Text to speech
tts:
  - platform: google

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
基本配置变量解释。
latitude(可选):纬度。
longitude(可选):经度。
elevation(可选):海拔高度,以米为单位。 影响天气/日出数据。
unit_system(可选):公制单位metric或者英制单位imperial
time_zone(可选):你的时区,可以在这个网站查看:http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
name(可选):名称。
customize(可选):自定义模块。
customize_domain(可选):自定义域中的所有实体。
customize_glob(可选):自定义匹配模式的实体。
whitelist_external_dirs(可选):可用作发送文件源的文件夹列表。











回复

使用道具 举报

1

主题

79

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
金钱
123
HASS币
0
 楼主| 发表于 2019-12-26 16:39:23 | 显示全部楼层
本帖最后由 yufei8051 于 2019-12-26 16:41 编辑

一键安装hassio脚本文件。学习中

#!/usr/bin/env bash
set -e

ARCH=$(uname -m)
DOCKER_BINARY=/usr/bin/docker
DOCKER_REPO=homeassistant
DOCKER_SERVICE=docker.service
URL_VERSION="https://version.home-assistant.io/stable.json"
URL_BIN_HASSIO="https://raw.githubusercontent.com/home-assistant/hassio-installer/master/files/hassio-supervisor"
URL_BIN_APPARMOR="https://raw.githubusercontent.com/home-assistant/hassio-installer/master/files/hassio-apparmor"
URL_SERVICE_HASSIO="https://raw.githubusercontent.com/home-assistant/hassio-installer/master/files/hassio-supervisor.service"
URL_SERVICE_APPARMOR="https://raw.githubusercontent.com/home-assistant/hassio-installer/master/files/hassio-apparmor.service"
URL_APPARMOR_PROFILE="https://version.home-assistant.io/apparmor.txt"

# Check env
command -v systemctl > /dev/null 2>&1 || { echo "[Error] Only systemd is supported!"; exit 1; }
command -v docker > /dev/null 2>&1 || { echo "[Error] Please install docker first"; exit 1; }
command -v jq > /dev/null 2>&1 || { echo "[Error] Please install jq first"; exit 1; }
command -v curl > /dev/null 2>&1 || { echo "[Error] Please install curl first"; exit 1; }
command -v avahi-daemon > /dev/null 2>&1 || { echo "[Error] Please install avahi first"; exit 1; }
command -v dbus-daemon > /dev/null 2>&1 || { echo "[Error] Please install dbus first"; exit 1; }
command -v nmcli > /dev/null 2>&1 || echo "[Warning] No NetworkManager support on host."
command -v apparmor_parser > /dev/null 2>&1 || echo "[Warning] No AppArmor support on host."

# Check if Modem Manager is enabled
if systemctl list-unit-files ModemManager.service | grep enabled; then
    echo "[Warning] ModemManager service is enabled. This might cause issue when using serial devices."
fi

# Detect if running on snapped docker
if snap list docker >/dev/null 2>&1; then
    DOCKER_BINARY=/snap/bin/docker
    DATA_SHARE=/root/snap/docker/common/hassio
    CONFIG=$DATA_SHARE/hassio.json
    DOCKER_SERVICE="snap.docker.dockerd.service"
fi

# Parse command line parameters
while [[ $# -gt 0 ]]; do
    arg="$1"

    case $arg in
        -m|--machine)
            MACHINE=$2
            shift
            ;;
        -d|--data-share)
            DATA_SHARE=$2
            shift
            ;;
        -p|--prefix)
            PREFIX=$2
            shift
            ;;
        -s|--sysconfdir)
            SYSCONFDIR=$2
            shift
            ;;
        *)
            echo "[Error] Unrecognized option $1"
            exit 1
            ;;
    esac
    shift
done

PREFIX=${PREFIX:-/usr}
SYSCONFDIR=${SYSCONFDIR:-/etc}
DATA_SHARE=${DATA_SHARE:-$PREFIX/share/hassio}
CONFIG=$SYSCONFDIR/hassio.json

# Generate hardware options
case $ARCH in
    "i386" | "i686")
        MACHINE=${MACHINE:=qemux86}
        HOMEASSISTANT_DOCKER="$DOCKER_REPO/$MACHINE-homeassistant"
        HASSIO_DOCKER="$DOCKER_REPO/i386-hassio-supervisor"
    ;;
    "x86_64")
        MACHINE=${MACHINE:=qemux86-64}
        HOMEASSISTANT_DOCKER="$DOCKER_REPO/$MACHINE-homeassistant"
        HASSIO_DOCKER="$DOCKER_REPO/amd64-hassio-supervisor"
    ;;
    "arm" |"armv6l")
        if [ -z $MACHINE ]; then
            echo "[ERROR] Please set machine for $ARCH"
            exit 1
        fi
        HOMEASSISTANT_DOCKER="$DOCKER_REPO/$MACHINE-homeassistant"
        HASSIO_DOCKER="$DOCKER_REPO/armhf-hassio-supervisor"
    ;;
    "armv7l")
        if [ -z $MACHINE ]; then
            echo "[ERROR] Please set machine for $ARCH"
            exit 1
        fi
        HOMEASSISTANT_DOCKER="$DOCKER_REPO/$MACHINE-homeassistant"
        HASSIO_DOCKER="$DOCKER_REPO/armv7-hassio-supervisor"
    ;;
    "aarch64")
        if [ -z $MACHINE ]; then
            echo "[ERROR] Please set machine for $ARCH"
            exit 1
        fi
        HOMEASSISTANT_DOCKER="$DOCKER_REPO/$MACHINE-homeassistant"
        HASSIO_DOCKER="$DOCKER_REPO/aarch64-hassio-supervisor"
    ;;
    *)
        echo "[Error] $ARCH unknown!"
        exit 1
    ;;
esac

if [ -z "${HOMEASSISTANT_DOCKER}" ]; then
    echo "[Error] Found no Home Assistant Docker images for this host!"
fi

### Main

# Init folders
if [ ! -d "$DATA_SHARE" ]; then
    mkdir -p "$DATA_SHARE"
fi

# Read infos from web
HASSIO_VERSION=$(curl -s $URL_VERSION | jq -e -r '.supervisor')

##
# Write configuration
cat > "$CONFIG" <<- EOF
{
    "supervisor": "${HASSIO_DOCKER}",
    "homeassistant": "${HOMEASSISTANT_DOCKER}",
    "data": "${DATA_SHARE}"
}
EOF

##
# Pull supervisor image
echo "[Info] Install supervisor Docker container"
docker pull "$HASSIO_DOCKER:$HASSIO_VERSION" > /dev/null
docker tag "$HASSIO_DOCKER:$HASSIO_VERSION" "$HASSIO_DOCKER:latest" > /dev/null

##
# Install Hass.io Supervisor
echo "[Info] Install supervisor startup scripts"
curl -sL ${URL_BIN_HASSIO} > "${PREFIX}"/sbin/hassio-supervisor
curl -sL ${URL_SERVICE_HASSIO} > "${SYSCONFDIR}"/systemd/system/hassio-supervisor.service

sed -i "s,%%HASSIO_CONFIG%%,${CONFIG},g" "${PREFIX}"/sbin/hassio-supervisor
sed -i -e "s,%%DOCKER_BINARY%%,${DOCKER_BINARY},g" \
       -e "s,%%DOCKER_SERVICE%%,${DOCKER_SERVICE},g" \
       -e "s,%%HASSIO_BINARY%%,${PREFIX}/sbin/hassio-supervisor,g" \
       "${SYSCONFDIR}"/systemd/system/hassio-supervisor.service

chmod a+x "${PREFIX}"/sbin/hassio-supervisor
systemctl enable hassio-supervisor.service

#
# Install Hass.io AppArmor
if command -v apparmor_parser > /dev/null 2>&1; then
    echo "[Info] Install AppArmor scripts"
    mkdir -p "${DATA_SHARE}"/apparmor
    curl -sL ${URL_BIN_APPARMOR} > "${PREFIX}"/sbin/hassio-apparmor
    curl -sL ${URL_SERVICE_APPARMOR} > "${SYSCONFDIR}"/systemd/system/hassio-apparmor.service
    curl -sL ${URL_APPARMOR_PROFILE} > "${DATA_SHARE}"/apparmor/hassio-supervisor

    sed -i "s,%%HASSIO_CONFIG%%,${CONFIG},g" "${PREFIX}"/sbin/hassio-apparmor
    sed -i -e "s,%%DOCKER_SERVICE%%,${DOCKER_SERVICE},g" \
           -e "s,%%HASSIO_APPARMOR_BINARY%%,${PREFIX}/sbin/hassio-apparmor,g" \
           "${SYSCONFDIR}"/systemd/system/hassio-apparmor.service

    chmod a+x "${PREFIX}"/sbin/hassio-apparmor
    systemctl enable hassio-apparmor.service
    systemctl start hassio-apparmor.service
fi

##
# Init system
echo "[Info] Run Hass.io"
systemctl start hassio-supervisor.service

回复

使用道具 举报

2

主题

43

帖子

470

积分

论坛DIY达人

积分
470
金钱
422
HASS币
20
发表于 2019-12-26 16:50:54 | 显示全部楼层
openwrt环境下用一键安装hassio脚本是装不了hassio的,楼主可以自己测试一下
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2019-12-26 19:57:19 | 显示全部楼层
realdenis 发表于 2019-12-26 16:50
openwrt环境下用一键安装hassio脚本是装不了hassio的,楼主可以自己测试一下

hassio 一键脚本是依赖 systemd。但hassio 其实并不依赖它。
Nero
回复

使用道具 举报

8

主题

220

帖子

1326

积分

金牌会员

Rank: 6Rank: 6

积分
1326
金钱
1101
HASS币
0
发表于 2019-12-27 10:44:54 | 显示全部楼层
我来支持一下~
回复

使用道具 举报

1

主题

21

帖子

170

积分

注册会员

Rank: 2

积分
170
金钱
149
HASS币
0
发表于 2020-1-29 17:34:21 | 显示全部楼层
老哥 搞定没有
回复

使用道具 举报

1

主题

67

帖子

203

积分

中级会员

Rank: 3Rank: 3

积分
203
金钱
136
HASS币
0
发表于 2020-2-4 13:21:55 | 显示全部楼层
我已经搞定了  
回复

使用道具 举报

1

主题

68

帖子

493

积分

中级会员

Rank: 3Rank: 3

积分
493
金钱
425
HASS币
0
发表于 2020-2-4 14:58:40 | 显示全部楼层

能够分享一下吗? 我的openwrt 也折腾了很久不得要领。另外 openwrt的docker上能否网络唤醒 其他机器?yaml 配置OK, 按键后无反应 ,openwrt已安装有  etherwake ,能实现唤醒。但是DOCKER里不知道如何安装。。
回复

使用道具 举报

1

主题

220

帖子

867

积分

高级会员

Rank: 4

积分
867
金钱
647
HASS币
0
发表于 2020-2-4 16:26:24 | 显示全部楼层
大佬,前一阵我也在折腾openwrt上的homeassistant,用GitHub上官方给的openwrt路由安装方式总是安装失败,
后来配置docker,结果第一步就卡住了.后来就没再折腾了,因为我得n1不在手头
回复

使用道具 举报

1

主题

220

帖子

867

积分

高级会员

Rank: 4

积分
867
金钱
647
HASS币
0
发表于 2020-2-4 16:41:28 | 显示全部楼层
不知道大佬有没有试过这个,我是试了十几次没装上https://github.com/gl-inet/home-assistant-on-openwrt
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-27 18:38 , Processed in 0.105844 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表