Is there any advice/guides on how to actually use !env_var in configuration.yaml?
I noticed that one of the example configurations has been updated with some but it is not clear how it works in practice
Cheers
Is there any advice/guides on how to actually use !env_var in configuration.yaml?
I noticed that one of the example configurations has been updated with some but it is not clear how it works in practice
Cheers
In your config:
some_api_key: !env_var MY_API KEY
If you’re using Linux, at the command line:
export MY_API_KEY="something"
I wrote a shell script that has all my export
s, followed by hass
, and I run the script instead of running hass
directly.
thanks
so we can’t just create a variables.yaml file which can then contain these variables?
No. These variables are only read from your system’s environment.
okay thanks for the info
I just got around to setting this up yesterday. If you are using the systemd autostart that is referenced in the docs, you can just add an EnvironmentFile line and then you can put all the variables in there
Here is an example of my systemd config:
[Unit]
Description=Home Assistant
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/hass
Restart=always
User=pi
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
EnvironmentFile=/home/pi/.homeassistant/ha.env
[Install]
WantedBy=multi-user.target
Then in /home/pi/.homeassistant/ha.env I just have a new line separated list of variables
home/hass/ha.env should just be a newline separated list of name=value pairs
(that tripped me up as I had export prepended to each line)
Is it possible to use environment variables with a template?
This post has helped me a lot, thank you.
However, I’m having a problem where I have a generic IP camera that doesn’t work when configured this way (per the documentation):
- platform: generic
still_image_url: http://192.168.1.141/snapshot.cgi
name: Nathan
username: !env_var CAM_USERNAME
password: !env_var CAM_PASSWORD
It only works like this:
- platform: generic
still_image_url: http://192.168.1.141/snapshot.cgi?user=xxx&pwd=xxx
name: Nathan
(This is a Foscam, actually, but it doesn’t work with the foscam platform for some reason)
I can’t figure out how to use the environment variables inline in the still image url, so my only solution right now is to hard code the username and password. Is it possible to use them inline with another string?
No, at least not right now. The solution is to make the whole URL an environmental variable.
I was also searching on how to use this !env_var
thingy and found this explanation on how to use the secrets.yaml
here: https://home-assistant.io/topics/secrets/
I’m not sure if this is also meant to store stuff like camera URL and such, but for passwords and API-keys that i use it is OK.
###Setting up !env_var on Raspberry Pi 2, Home-Assistant All-In-One Installer (for noobs, like myself )
Login to Raspberry Pi. For example:
ssh pi@your_raspberry_pi_ip
Edit home-assistant.service file:
sudo nano /etc/systemd/system/home-assistant.service
paste >
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
EnvironmentFile=/home/hass/.homeassistant/ha.env
file should look like this >
[Unit]
Description=Home
Assistant
After=network.target
[Service]
Type=simple
User=hass
ExecStart=/srv/hass/hass_venv/bin/hass -c "/home/hass/.homeassistant"
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
EnvironmentFile=/home/hass/.homeassistant/ha.env
[Install]
WantedBy=multi-user.target
save and close.
Run the following command to make a new file (ha.env file) >
sudo nano /home/hass/.homeassistant/ha.env
Type your sensitive data as newline separated list of name=value pairs
http_password=yourpassword
some_api_key=yourapikey
...
save and close file, reboot.
sudo reboot
Whenever you need to hide sensitive data add, for example, in configuration.yaml:
http:
api_password: !env_var http_password
restart HA service
sudo service home-assistant restart
Thanks for posting, this helped me out!
Can I replace !secret with !env_var and assuming I have matching values, will everything work just the same?