Use the systemd-timesyncd service as explained here
Here are the time servers that I used.
NTP=0.north-america.pool.ntp.org 1.north-america.pool.ntp.org 2.north-america.pool.ntp.org 3.north-america.pool.ntp.org
FallbackNTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
Default AIO installation does not allow editing the configuration files in WinSCP. To enable the same, you will need to change the SFTP server (in Advanced settings -> Environment -> SFTP).
- Obtain the SFTP by running
grep sftp /etc/ssh/sshd_configat thepishell. You will get something like,Subsystem sftp /usr/lib/openssh/sftp-server. - Now, set the sftp server to:
sudo su -c /usr/lib/openssh/sftp-server(note that the/usr/lib/openssh/sftp-serveris the same path obtained from the previous step) and set Shell tosudo -s.
You can install Homebridge on a Pi using the following commands:
- Make sure your Pi is updated.
- Install all the dependencies
sudo apt-get install git make
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install libavahi-compat-libdnssd-dev
- Install both Homebridge and Homebridge-Homeassistant plugin using:
sudo npm install -g --unsafe-perm homebridge
sudo npm install -g homebridge-homeassistant
- You need to modify the config.json (located at
/home/pi/.homebridge/config.json). Here's what I'm using (Homebridge on Pi connects to my HA on a NUC):
{
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:34",
"port": 51826,
"pin": "031-45-155"
},
"description": "This is the main Homebridge configuration file for Home Assistant. This will bridge Home Assistant and HomeKit together!",
"accessories": [
],
"platforms": [
{
"platform": "HomeAssistant",
"name": "HomeAssistant",
"host": "https://192.168.X.Y:8123",
"password": "",
"supported_types": ["group", "binary_sensor", "climate", "cover", "device_tracker", "fan", "input_boolean", "light", "lock", "media_player", "scene", "sensor", "switch"],
"logging": true,
"verify_ssl": false
}
]
}
- Follow the instructions here to boot Homebridge on startup.
- If you get an error "Couldn't add Homebridge" on your iOS Home App, please make sure that there are only less than 100 Homebridge entities enabled.
- For remote access to Homebridge devices, you will need to enable 2FA on your iOS devices. If you are not able to remotely access your Homebridge devices, you may have to sign out, restart, and sign back in to your Apple TV.
I am using the default AIO username/password, replace them with yours
- You can remove a topic from Mosquitto using
mosquitto_pub -r -n -u 'pi' -P 'raspberry' -t 'owntracks/arsaboo/mqttrpi' - To delete all topics, use
mosquitto_sub -t '#' -v -u USERNAME -P PASSWORD| while read line _; do mosquitto_pub -t $line -r -n -u USERNAME -P PASSWORD; done - To subscribe to all the topics use
mosquitto_sub -h 192.168.2.212 -u 'pi' -P 'raspberry' -v -t '#'(replace the IP address) - To publish use
mosquitto_pub -u 'pi' -P 'raspberry' -t 'smartthings/Driveway/switch' -m 'on'(use the relevant topic). - You can find the path to mosquitto_pub using
which mosquitto_pub; restart Mosquitto usingsudo systemctl restart mosquitto.
- To check realtime logs
sudo journalctl -f -u home-assistant@homeassistant - To restart HA
sudo systemctl restart home-assistant@homeassistant - To check logs
sudo systemctl status -l home-assistant@homeassistant - To stop HA
sudo systemctl stop home-assistant@homeassistant - To start HA
sudo systemctl start home-assistant@homeassistant
Thanks to @dale3h for assistance with these instructions.
-
Install
gitusingsudo apt-get install git -
Go to https://github.com/new and create a new repository. I named mine
homeassistant-config. Initialize withreadme: noand.gitignore: none. -
Navigate to your
.homeassistantdirectory. For AIO, it should be/home/hass/.homeassistant, and for HASSbian, it is/home/homeassistant/.homeassistant. -
Run
sudo su -s /bin/bash hassfor AIO andsudo su -s /bin/bash homeassistantfor HASSbian. -
Run
wget https://raw.githubusercontent.com/arsaboo/homeassistant-config/master/.gitignoreto get the.gitignorefile from your repo (replace the link to match your repository). You can add things to your.gitignorefile that you do not want to be uploaded. -
Next, we need to add SSH keys to your Github account.
- Navigate to
cd /home/hass/.ssh(for AIO). If you don't have.sshdirectory, create one and change the permissionchmod 700 ~/.ssh. - Run
ssh-keygen -t rsa -b 4096 -C "homeassistant@pi". If you want to enter a passphrase, that's up to you. If you do, you'll have to enter that passphrase any time you want to update your changes to github. If you do not want a passphrase, leave it blank and just hitEnter. - Save the key in the default location (press
Enterwhen it prompts for location). - When you're finished, run
ls -al ~/.sshto confirm that you have bothid_rsaandid_rsa.pubfiles. - Go to https://github.com/settings/keys and click
New SSH keybutton at top right. Title:homeassistant@pi(or whatever you want, really...it's just for you to know which key it is) - Run
cat id_rsa.pubin the SSH session and copy/paste the output to that github page. - Then click
Add SSH keybutton.
- Navigate to
-
Go back to your repo page on GitHub. It'll be something like https://github.com/yourusernamehere/homeassistant-config. Click the green
Clone or downloadbutton, and then clickUse SSH. -
You should see something like this in the textbox:
git@github.com:yourusername/homeassistant-config.git. Copy that to your clipboard. -
Now you are ready to upload the files to GitHub.
- Navigate to
cd ~/.homeassistant git initgit add .git commit -m 'initial commit'- If you get an error about
*** Please tell me who you are., rungit config --global user.email "your@email.here"andgit config --global user.name "Your Name" - After that commit succeeds, run:
git remote add origin git@github.com:yourusername/homeassistant-config.git(make sure you enter the correct repo URL here) - Just to confirm everything is right, run
git remote -vand you should see:hass@raspberrypi:~/.homeassistant$ git remote -v origin git@github.com:arsaboo/homeassistant-config.git (fetch) origin git@github.com:arsaboo/homeassistant-config.git (push) - Finally, run
git push origin master.
- Navigate to
-
For subsequent updates:
cd /home/homeassistant/.homeassistantsudo su -s /bin/bash homeassistantgit add .git commit -m 'your commit message'git push origin master
-
To restore from your Github repository (replace the URL):
sudo su -s /bin/bash homeassistant cd /home/homeassistant git clone git@github.com:arsaboo/homeassistant-config.git .homeassistant
If you are using AIO (which has Mosquitto pre-installed), you can use the following to integrate SmartThings and HA.
- Install node.js, and pm2
sudo apt-get update && sudo apt-get upgrade -y curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - sudo apt-get install -y nodejs sudo npm install -g pm2 sudo su -c "env PATH=$PATH:/usr/local/bin pm2 startup systemd -u pi --hp /user/pi"
- Install the SmartThings MQTT Bridge
$ sudo npm install -g smartthings-mqtt-bridge
- Add details of your Mosquitto to
config.yml. For the default AIO username password, your file should look something like:mqtt: # Specify your MQTT Broker's hostname or IP address here host: mqtt://192.168.2.199 # Preface for the topics $PREFACE/$DEVICE_NAME/$PROPERTY preface: smartthings # Suffix for the state topics $PREFACE/$DEVICE_NAME/$PROPERTY/$STATE_SUFFIX # state_suffix: state # Suffix for the command topics $PREFACE/$DEVICE_NAME/$PROPERTY/$COMMAND_SUFFIX # command_suffix: cmd # Other optional settings from https://www.npmjs.com/package/mqtt#mqttclientstreambuilder-options username: pi password: raspberry # Port number to listen on port: 8080 - Start ST-MQTT bridge
pm2 start smartthings-mqtt-bridge - Follow the rest of the instructions (from step 2) listed here.
- Once
pm2runs the program, you can then runpm2 saveto save the running programs into a configuration file. - You can then run
pm2as a systemd or service by running the command that you get after runningpm2 startup systemd(run this withoutsudo).
- Login to system. HASS configuration files are saved in
/home/homeassistant/.homeassistantand the code files are saved in/srv/homeassistant/lib/python3.5/site-packages/homeassistant/. - Change to homeassistant user
sudo su -s /bin/bash homeassistant - Change to virtual enviroment
source /srv/homeassistant/bin/activate - Update HA
pip3 install --upgrade homeassistant. To update to a different branch, use the complete git URL,pip3 install --upgrade git+git://github.com/home-assistant/home-assistant.git@dev - Type
exitto logout the hass user and return to thepiuser. - Restart the Home-Assistant Service
sudo systemctl restart home-assistant@homeassistant
Follow the instructions here to set-up MySQL.
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install mysql-server && sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev python3-dev
sudo pip3 install --upgrade mysql-connector
sudo pip3 install mysqlclientCreate homeassistant database and grant privileges:
mysql -u root -p
CREATE DATABASE homeassistant;
CREATE USER 'hass'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON homeassistant.* TO 'hass'@'localhost';
FLUSH PRIVILEGES;
exit;Test if user works:
mysql -u hass homeassistant -p
exit;Switch to homeassistant user:
sudo su -s /bin/bash homeassistant
source /srv/homeassistant/bin/activate
pip3 install --upgrade mysqlclient
exitAdd to configuration.yaml and restart HA.
recorder:
db_url: mysql://hass:********@127.0.0.1/homeassistant?charset=utf8
Some useful commands:
- Use
mysqlshow -h localhost -u hass -p homeassistantto show the tables that are created. - To delete all tables and start from scratch, run
DROP DATABASE homeassistant;and recreate homeassistant database and grant privileges. - Use
sudo apt-get remove --purge mysql\*to delete anything related to packages named mysql. show tablesto list all the tables.desc statesto describe tablestates.(SELECT event_id, time_fired FROM events ORDER BY event_id ASC LIMIT 1) UNION ALL (SELECT event_id, time_fired FROM events ORDER BY event_id DESC LIMIT 1);to list the first and last record ofeventstable.SELECT table_schema homeassistant, sum( data_length + index_length ) / (1024 * 1024) "Data Base Size in MB" FROM information_schema.TABLES GROUP BY table_schema;to list disk space used by each database.select entity_id, count(*), sum(length(state)), sum(length(attributes))/ (1024 * 1024) siz from states group by entity_id order by siz;to obtain the space (in MB) occupied by each entity in thestatestable.
- You can test the Read Speed of your SD card using (note, this command takes some time to run):
sudo dd if=/dev/mmcblk0 of=/dev/null bs=8M count=100 sudo hdparm -t /dev/mmcblk0 - Many of the problems with Pi are related to faulty power supply. You can use
vcgencmd get_throttledto check if your Pi is getting adequate power supply. You want that to returnthrottled=0x0. If not it means that the Raspberry is throttling itself due to low voltage, or other factors. - Test Write speed (will create 200MB file in /home/pi/testfile) using
dd if=/dev/zero of=/home/pi/testfile bs=8M count=25 - To check which files are using up all the space on your SD card, run
sudo du | sort -n. You can delete the culprits using something likesudo rm -rf ./.pm2/logs/(will recursively delete folder /logs/).