LINGBO.ME

知道越多,语言越少。明白一点真理就看到太多虚妄。

分类: HomeAssistant

  • 在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
    }