4/07/2018

在LEDE软路由上运行Home Assistant

  1. 环境准备
    运行Home Assistant需要python3.5以上的python环境.软件源里有现成的3.6,直接安装就好

    1
    opkg install python3 python3-pip

    安装虚拟环境

    1
    pip3 install virtualenv
  2. 指定安装位置,python版本
    以 /mnt/sda3/homeassistant 路径为例

    1
    virtualenv /mnt/sda3/homeassistant -p /usr/bin/python3.6

    进虚拟环境

    1
    source /mnt/sda3/homeassistant/bin/activate
  3. 安装Home Assistant
    1
    python3 -m pip install homeassistant
  4. 测试运行一下
    1
    hass --open-ui

    等两分钟初始化 看看能不能打开webui,默认端口8123 路由器ip:8123
    Ctrl + C 中止
    退出虚拟环境

    1
    deactivate
  5. 控制脚本
    建立/etc/init.d/hass-daemon
    贴最下面的脚本,注意改成自己的安装目录

    1
    /etc/init.d/hass-daemon enable

    设置为开机启动

    1
    /etc/init.d/hass-daemon start

    启动

    1
    /etc/init.d/hass-daemon stop

    关闭

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/sh /etc/rc.common

START=99

# /etc/init.d Service Script for Home Assistant
PRE_EXEC="cd /mnt/sda3/homeassistant; source bin/activate;"
# Typically /usr/bin/hass
HASS_BIN="hass"
RUN_AS="root"
PID_DIR="/var/run/hass"
PID_FILE="$PID_DIR/hass.pid"
CONFIG_DIR="/$RUN_AS/.homeassistant"
LOG_DIR="/var/log/homeassistant"
LOG_FILE="$LOG_DIR/home-assistant.log"
FLAGS="-v --config $CONFIG_DIR --pid-file $PID_FILE --log-file $LOG_FILE --daemon"

start() {
  create_piddir
  if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2> /dev/null; then
    echo 'Service already running' >&2
    return 1
  fi
  echo -n 'Starting service… ' >&2
  local CMD="$PRE_EXEC $HASS_BIN $FLAGS;"
  /bin/sh -c "$CMD" $RUN_AS
  if [ $? -ne 0 ]; then
    echo "Failed" >&2
  else
    echo 'Done' >&2
  fi
}

stop() {
  if [ ! -f "$PID_FILE" ] || ! kill -0 $(cat "$PID_FILE") 2> /dev/null; then
    echo 'Service not running' >&2
    return 1
  fi
  echo -n 'Stopping service… ' >&2
  kill $(cat "$PID_FILE")
  while ps -p $(cat "$PID_FILE") > /dev/null 2>&1; do sleep 1;done;
  rm -f $PID_FILE
  echo 'Done' >&2
}


create_piddir() {
  if [ ! -d "$PID_DIR" ]; then
    mkdir -p $PID_DIR
    chown $RUN_AS "$PID_DIR"
  fi
}

甲骨文云ubuntu系统关防火墙

  6、Ubuntu系统 开放所有端口 iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -F Ubuntu镜像默认设置了Iptable规则,关闭它, ap...