Installing Home Assistant on Raspberry pi with touchscreen kiosk mode

These instructions assume that you know how to install and navigate your OS on your device.

Install Raspberry Raspbian with desktop either for the raspberry pi or desktop PC depending on your hardware.
Initial setup of Raspberry Raspbian is easier with monitor keyboard and mouse hooked up local to your device.
Enable SSH in configuration, once you have enabled SSH then remote configuring is preferred for below instructions.
You can copy and paste below commands into the terminal, these instructions assume you have knowledge on the ability to SSH into your device.
Copy and paste is the easiest, and PuTTY allows right click paste.
These steps use the default install instructions of home assistant and the default user of pi, so if using different then what is default make changes as needed.

(Note some stuff will not work fully until all the steps have been done IE shared folders won’t connect until that directory is made.)

This instruction will do the following:

  1. Will allow network shares of certain folders for editing and backing up your configuration of Home assistant files and access to root directory.
    ((WARNING MESSING AROUND IN ROOT DIR CAN BREAK YOUR INSTALL))

  2. Will allow Home assistant to restart after a reboot.

  3. Will boot into Kiosk mode for using Lovelace in touchscreen on the same device as home assistant.
    (does not effect headless operation so can use the same instructions)

Use this Link to install Python Install before starting this Instruction below.

"DO NOT COPY AND PASTE STUFF IN QUOTES"

“LOG INTO THE TERMINAL.”

“UPDATE THE OPERATING SYSTEM.”

sudo apt update

sudo apt upgrade -y

sudo apt autoremove -y

" INSTALL DEPENDENCIES."

sudo apt-get install python3 python3-dev python3-venv python3-pip libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff5 -y libturbojpeg0 tzdata


sudo apt install libbluetooth-dev -y


sudo pip3 install PyBluez

“STEPS BELOW INSTALLS HOME ASSISTANT.”

sudo useradd -rm homeassistant -G dialout,gpio,i2c

sudo mkdir /srv/homeassistant

sudo chown homeassistant:homeassistant /srv/homeassistant

sudo -u homeassistant -H -s

cd /srv/homeassistant

curl https://sh.rustup.rs -sSf | sh

“WAIT FOR PROMPT PRESS 1 WHEN ASKED AT THE PROMPT”

source "$HOME/.cargo/env"

“COPY AND PASTE THE VERSION OF PYTHON YOU UPDATED TO BY CHANGING THE NUMBER BEFORE PRESSING ENTER ON BELOW COPY.”

version=3.10
python$version -m venv .

python3 -m pip install wheel

source bin/activate

pip3 install homeassistant

exit

“STEPS BELOW MAKES HOME ASSISTANT START ON REBOOT.”

sudo nano -w /etc/systemd/system/[email protected]

“COPY ALL BELOW THIS LINE DOWN TO NOT INCLUDING END.”

[Unit]
Description=Home Assistant
After=network-online.target

[Service]
Type=simple
ExecStartPre=/bin/sleep 10
User=%i
WorkingDirectory=/home/%i/.homeassistant
ExecStart=/srv/homeassistant/bin/hass -c "/home/%i/.homeassistant"

[Install]
WantedBy=multi-user.target

“END”

“PRESS CRTL+O (write out), ENTER, CTRL+X (exit).”

sudo systemctl --system daemon-reload

sudo systemctl enable home-assistant@homeassistant

“STEPS BELOW ARE OPTIONAL SKIP THE STUFF YOU DON’T WANT UNTILL YOU GET TO MANUALLY START THE HOME ASSISTANT”

"ALLOWS THE USE OF REMOTE DESKTOP THIS IS A OPTIONAL INSTALL

sudo apt install xrdp -y

“STEPS BELOW ALLOWS SHARING OF FOLDERS OVER YOUR LOCAL NETWORK.”


sudo apt install samba -y


sudo nano /etc/samba/smb.conf

“CLEAR SCREEN BY HOLDING DOWN THE CTRL AND K KEYS.”

“COPY ALL BELOW THIS LINE DOWN TO NOT INCLUDING END.”


[global]
netbios name = HomeAssistant
server string = The HA File Center
workgroup = WORKGROUP
hosts allow =
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
remote announce =
remote browse sync =

[HOME PI]
path = /home/pi
comment = No comment
browsable = yes
read only = no
valid users =
writable = yes
guest ok = yes
public = yes
create mask = 0777
directory mask = 0777
force user = root
force create mode = 0777
force directory mode = 0777
hosts allow =

[HOME ASSISTANT]
path = /home/homeassistant/.homeassistant/
comment = No comment
browsable = yes
read only = no
valid users =
writable = yes
guest ok = yes
public = yes
create mask = 0777
directory mask = 0777
force user = root
force create mode = 0777
force directory mode = 0777
hosts allow =

[ROOT]
path = /
comment = No comment
browsable = yes
read only = no
valid users =
writable = yes
guest ok = yes
public = yes
create mask = 0777
directory mask = 0777
force user = root
force create mode = 0777
force directory mode = 0777
hosts allow =

“END”

“PRESS CRTL+O (write out), ENTER, CTRL+X (exit).”

sudo smbpasswd -a pi

“ENTER THE PASSWORD IT WILL ASK TWICE.”

sudo service smbd restart

“STEPS BELOW MAKES THE RASPBERRY PI BOOT INTO KIOSK DOES NOT AFFECT NORMAL INSTALL.”

sudo apt install sshpass

cd .config

mkdir lxsession

cd lxsession

mkdir LXDE-pi

sudo nano ~/.config/lxsession/LXDE-pi/autostart

“COPY ALL BELOW THIS LINE DOWN TO NOT INCLUDING END.”


lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
#@xscreensaver -no-splash
@point-rpi
@xset s off
@xset -dpms
@xset s noblank
@sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' ~/.config/chromium-browser/Default/Preferences
@chromium-browser --noerrdialogs --disable-infobars --kiosk http://localhost:8123

“END”

“PRESS CRTL+O (write out), ENTER, CTRL+X (exit).”

cd

sudo apt-get install bluetooth bluez blueman -y

sudo apt install xdotool unclutter sed -y

“MANUALLY START HOME ASSISTANT”

sudo -u homeassistant -H -s

cd /srv/homeassistant

“THE VERSION OF PYTHON YOU UPDATED TO BY CHANGING THE NUMBER BEFORE PRESSING ENTER ON BELOW COPY.”

version=3.10

python$version -m venv .
source bin/activate

hass

“GIVE IT ABOUT 10 MINS AND REBOOT THE SYSTEM, IF YOU HAVE A MONITOR CONNECTED TO THE RASPBERRY IT SHOULD DISPLAY THE HOME ASSISTANT PAGE.”

Turning on and off the Touch Screen through Home Assistant if installed on device

Do this after you rebooted your machine and logged back into SSH

sudo -u homeassistant -H -s

ssh [email protected] ‘export DISPLAY=:0 && xset dpms force on’

“IT WILL ASK IF YOU WANT TO PERMANENTLY ADD IT TYPE YES”
“ENTER YOUR PASSWORD”
“IT WILL COME BACK WITH A ERROR IGNORE THE ERROR”

“THIS IS THE SWITCH CONFIGURATION IN HOME ASSISTANT TO ADD THE SWITCH”

“ENTER YOUR PASSWORD TO ENABLE CONTROL OF KIOSK SCREEN.”

password=
  - platform: command_line
    switches:
      touch_screen:
        friendly_name: Touch Screen
        command_on:  sshpass -p $password ssh [email protected] 'export DISPLAY=:0 && xset dpms force on'
        command_off:  sshpass -p $password ssh [email protected] 'export DISPLAY=:0 && xset dpms force off'
        command_state:  sshpass -p $password ssh [email protected] 'export DISPLAY=:0 && xset -q | grep "Monitor is" | cut -c14-17' | grep "On" > /dev/null

Testing for your Zwave hub if using Zwave

ls -1tr /dev/tty*|tail -n 1

“Note the exact address may be different then below if it is then edit below to match”

ls -l /dev/ttyACM0

“Should return crw-rw---- 1 root dialout 166, today’s date /dev/ttyACM0”

" END OF STEPS."

1 Like