From 706d82bb6318a88a291e3e1854a55bec091d5701 Mon Sep 17 00:00:00 2001 From: Felipe Martin Date: Sun, 20 Dec 2020 17:46:39 +0100 Subject: [PATCH] Post published Self-hosting my home with Home Assistant (part 1) --- .../advanced_mode.png} | Bin .../base.png | Bin .../chromecast.png | Bin .../contents.lr | 161 +++++++++++------- .../notification.png | Bin .../preparing.png | Bin .../system_monitor.png | Bin 0 -> 20440 bytes .../update_notification.jpg | Bin 0 -> 30625 bytes 8 files changed, 100 insertions(+), 61 deletions(-) rename content/blog/{15-self-hosting-my-home-part-1/advanced-mode.png => 2020-12-20-self-hosting-my-home-with-home-assistant-part-1/advanced_mode.png} (100%) rename content/blog/{15-self-hosting-my-home-part-1 => 2020-12-20-self-hosting-my-home-with-home-assistant-part-1}/base.png (100%) rename content/blog/{15-self-hosting-my-home-part-1 => 2020-12-20-self-hosting-my-home-with-home-assistant-part-1}/chromecast.png (100%) rename content/blog/{15-self-hosting-my-home-part-1 => 2020-12-20-self-hosting-my-home-with-home-assistant-part-1}/contents.lr (58%) rename content/blog/{15-self-hosting-my-home-part-1 => 2020-12-20-self-hosting-my-home-with-home-assistant-part-1}/notification.png (100%) rename content/blog/{15-self-hosting-my-home-part-1 => 2020-12-20-self-hosting-my-home-with-home-assistant-part-1}/preparing.png (100%) create mode 100644 content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/system_monitor.png create mode 100644 content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/update_notification.jpg diff --git a/content/blog/15-self-hosting-my-home-part-1/advanced-mode.png b/content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/advanced_mode.png similarity index 100% rename from content/blog/15-self-hosting-my-home-part-1/advanced-mode.png rename to content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/advanced_mode.png diff --git a/content/blog/15-self-hosting-my-home-part-1/base.png b/content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/base.png similarity index 100% rename from content/blog/15-self-hosting-my-home-part-1/base.png rename to content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/base.png diff --git a/content/blog/15-self-hosting-my-home-part-1/chromecast.png b/content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/chromecast.png similarity index 100% rename from content/blog/15-self-hosting-my-home-part-1/chromecast.png rename to content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/chromecast.png diff --git a/content/blog/15-self-hosting-my-home-part-1/contents.lr b/content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/contents.lr similarity index 58% rename from content/blog/15-self-hosting-my-home-part-1/contents.lr rename to content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/contents.lr index 98f3137..492c206 100644 --- a/content/blog/15-self-hosting-my-home-part-1/contents.lr +++ b/content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/contents.lr @@ -1,20 +1,20 @@ - - -title: Self-hosting my home: Installation and configuration, plug and play integrations +title: Self-hosting my home with Home Assistant (part 1) --- -_discoverable: no +pub_date: 2020-12-20 --- -pub_date: 2021-12-31 +_discoverable: yes --- body: -Summary +Even if I've been a Home Assistant's user for quite some time I have never dedicated myself to have a truly stable and dedicated service at home. I always treated it more like a pet project than anything else, but this is changing now. - +I have a fair amount of _Smart Devices_ around the house and just as you come to expect they come from different companies, protocols and sizes. Each day it passes I'm more and more concerned about my privacy and the value of the hardware I do not truly own. - +With this in mind I have started **the journey of self-hosting!** Which to put it simply is... every device that is in my home (with a few exceptions that you'll see later) will be controlled by this Home Assistance instance. -I wanted to install this on a USB Drive, but apparently that's still not supported for _Home Assistant OS_, so I'm stuck with an SD Card for now. The latest development version (as of writting) does support it but I'd rather go with the stable release. + + +> Note: I wanted to install this on a USB Drive, but apparently that's still not supported for _Home Assistant OS_, so I'm stuck with an SD Card for now. Some time after starting working on this I heard about [`datactl`](https://www.home-assistant.io/blog/2020/12/13/home-assistant-os-release-5/#external-data-disk) but I will setup that sometime later. ## Base Home Assistant OS using an SD Card @@ -26,7 +26,7 @@ Put the SD Card on your Pi, turn it on and let's get started. After booting, you will be welcome with a wizard installation. Just follow the basic instructions to generate the main user/account, and the name and location for your home assistant. -Bonus: Use some website [like this](https://www.freemaptools.com/elevation-finder.htm) to get your elevenation if you're feeling picky. +Bonus: Use some website [like this](https://www.freemaptools.com/elevation-finder.htm) to get your elevation if you're feeling picky. After that, you will be greeted by something similar to this: @@ -66,7 +66,7 @@ Now another if not the most important of them all, automatic snapshots in case s Go to **Configuration > Automations > Add automation**, and in top-right hamburger menu press **Edit as YAML**. -This configuration will perform a Weekly Snapshot every Monday at 3.00 AM. It is a sensible default once Home Assistant is running, but if you're going to play with it you may need to consider more frequency on the execution. +This configuration will perform a Weekly Snapshot every Monday at 3.00 AM. It is a sensible default once Home Assistant is running, but if you're going to play with it you may need to consider more frequent backups. ``` yaml alias: Weekly Snapshot @@ -85,17 +85,17 @@ action: name: 'weekly_{{ now().strftime(''%Y-%m-%d'') }}' ``` -TODO: Copy contents elsewhere! +Keep in mind that this snapshots are stored on the `/backup` folder on the Home Assistant instance, you need to create a way of moving that **out** of the system. You can use other automation, SCP from another machine or any compatible tool of your choice. ## Setting up accounts and users that will use the system This used to be more complex a while ago, now you only need to go to **Configuration > People** and add the users you need. -Now you can even add the avatar directly from the interface! Back in the day you required to upload the file and fidling with YAMLs. +Now you can even add the avatar directly from the interface! Back in the day you required to upload the file and fiddling with YAMLs. Also, for some options and add-ons to display, you need to enable "Advanced mode" on your user profile page. -![Advanced mode enabled on my user](./advanced-mode-360.png) +![Advanced mode enabled on my user](./advanced_mode-360.png) ## SSH Access @@ -107,27 +107,35 @@ Just install the **Terminal and SSH** addon, add your ssh key under the configur ## Enable SSL -Nginx addon +Even if my home assistant installation is going to be LAN only (using a VPN to have external access) I always setup SSL in all my services and while there are some options when setting this up with Home Assistant, I went the nginx way since that's what I'm more comfortable with. -``` -openssl genrsa -out homeassistant.key 2048 -openssl req -new -key homeassistant.key -out homeassistant.csr -openssl x509 -req -in homeassistant.csr -CA CA.pem -CAkey CA.key -CAcreateserial -out homeassistant.crt -days 825 -sha256 +Go to **Supervisor > Add-on Store** and install the **NGINX Home Assistant SSL proxy**. + +Put your files under `/ssl` connecting to the instance via SSH or using any file editor addon on the store. + +Under its **Configuration** tab, set up the domain and path to the certificate and key files. + +``` yaml +domain: homeassistant.local +certfile: nginx/homeassistant.local/homeassistant.crt # Relative to /ssl +keyfile: nginx/homeassistant.local/homeassistant.key # Relative to /ssl ``` -> Note: certificate was generated with a 825 days validity for iOS to work correctly, since their certificate requisistes [are pretty specific](https://support.apple.com/en-us/HT210176) +There are a number of guides out there to generate self-signed certificates. I have my own Certificate Authority that use to sign certificates for my local services, that way I can just trust my own CA and every dependant certificate will work out of the box. + +As a note, for this to work with the companion apps on iOS you need to generate the certificates with [pretty specific requisites](https://support.apple.com/en-us/HT210176). Android worked as a charm. ## Getting the Home Assistant Companion -Download the application from your phone's store and after logging in you can setup the sensors to be sent to Home Assistant, this will be linked to your account so you could perform automations with them on the server. +Download the application from your phone's store and after logging in you can setup the sensors to be sent to Home Assistant, this will be linked to your account so you could perform automation with them on the server. -Apart from using the app to control your home devices, the sensors will be useful to generate automations in the future. +Apart from using the app to control your home devices, the sensors will be useful to generate automation in the future. Another useful thing to setup here is the local (LAN) address to use when the phone is connected to Wifi at home, using an external hostname when connecting via VPN/RemoteControl. ## The first automation: tell me about updates -Script to send notification to everyone +I use an script to send notifications to all devices (persons) on the house, with the `title` and `message` parameter: ``` yaml alias: Send Notifications @@ -143,11 +151,11 @@ variables: message: null ``` -Automation to send notifications once new updates are available: +And this automation will check when there are any updates and send a notification using the previous script with the version number that just came in: ``` yaml alias: Update notification -description: '' +description: "Notify everyone when there's an update available" trigger: - platform: state entity_id: binary_sensor.updater @@ -164,6 +172,8 @@ action: mode: single ``` +![Update notification on my phone](./update_notification-360.jpg) + ## Add system sensors I want to control how the Raspberry is doing, so I'm going to enable some system sensors using the [`systemmonitor`](https://www.home-assistant.io/integrations/systemmonitor) sensor. @@ -198,41 +208,63 @@ views: - title: Overview path: overview icon: 'mdi:eye' + visible: + - user: be3b6f5bc71c49ff9be6830d545cb4e0 badges: [] cards: - - type: gauge - entity: sensor.processor_use_percent - min: 0 - max: 100 - name: Processor - severity: - green: 50 - yellow: 75 - red: 80 - - type: gauge - entity: sensor.memory_use_percent - min: 0 - max: 100 - severity: - green: 50 - yellow: 65 - red: 75 - name: Memory - - type: history-graph - entities: - - entity: sensor.processor_use_percent - - entity: sensor.memory_use_percent - - entity: sensor.processor_temperature - hours_to_show: 24 - refresh_interval: 0 - - type: history-graph - entities: - - sensor.disk_use_percent - hours_to_show: 24 - refresh_interval: 0 + - type: grid + cards: + - type: gauge + entity: sensor.processor_use_percent + min: 0 + max: 100 + name: Processor + severity: + green: 50 + yellow: 75 + red: 80 + - type: gauge + entity: sensor.memory_use_percent + min: 0 + max: 100 + severity: + green: 50 + yellow: 65 + red: 75 + name: Memory + - type: gauge + entity: sensor.disk_use_percent + min: 0 + max: 100 + name: Disk usage + severity: + green: 50 + yellow: 60 + red: 75 + - type: gauge + entity: sensor.processor_temperature + min: 0 + severity: + green: 45 + yellow: 50 + red: 55 + max: 70 + name: Temperature + - type: gauge + entity: sensor.load_5m + min: 0 + max: 4 + severity: + green: 1 + yellow: 2 + red: 3 title: System ``` +And here's a preview: + +![Home Assistant simple system monitor lovelace dashboard](./system_monitor-360.png) + ## Adding integrations At this point if you already have devices on your network your Home Assistant will send you a notification like this: @@ -245,7 +277,7 @@ So I'm going to setup the base integrations with the server to start controlling > But you said self-hosted! Yeah, yeah... And I want to, but there's no real alternative to the Cast protocol to self host, the speakers with Chromecast devices are just so convenient... -One of the simplest things to set up, just go to your integrations and add it. It will prompt you to select in which rooms each chromecast device is and that's it. +One of the simplest things to set up, just go to your integrations and add it. It will prompt you to select in which rooms each Chromecast device is and that's it. [![Chromecast configuration](./chromecast-360.png)](./chromecast.png) @@ -257,21 +289,28 @@ You just need to [register to the service](https://openweathermap.org/) and enab > I had to wait for an hour or so until the API Key was valid for the integration to use, it keep saying **Invalid API Key** until I received a confirmation email for my account. -## Phillips Hue +### Phillips Hue Linking the Phillips Hue is super easy, you only need to add the Hue integration, select the bridge IP from the dropdown (or input one manually) and press the button on the bridge to confirm. After selecting in which area the bridge and bulbs are in, you're good to go. -> **BONUS:** Since the comunication is done via LAN with the bridge, the bridge itself doesn't need internet access to work (as I have mine blocked in my firewall). +> **BONUS:** Since the comunication is done via LAN with the bridge, the bridge itself doesn't need internet access to work (as I have mine blocked in my firewall). Also in my case this is only temporal since I will move every Zigbee device to a cluster controlled by Home Assistant. -## Tuya (Smart Things) +### Tuya (Smart Things) This is one of the dependencies I have that I'm most eager to get rid off, but for now there are some smart plugs at home that I need to control. -To setup, you need to enter your username, password and country code for the integration to communicate with the Tuya API, so your devices will require internet connection. +Going to **Configuration > Integrations > Add** the **Tuya** is on the list; you need to enter your username, password and country code for the integration to communicate with the Tuya API, so your devices will require internet connection. -The plan is to try and flash the plugs with Tasmota to free them from the _cloud_, and any new ones I'm getting will be Zigbee compatbile. +The plan is to try and flash the plugs with Tasmota to free them from the _cloud_ and any new ones I'm getting will be Zigbee compatbile with the hopes on having only Zigbee smart plugs at home. +## Closing + +That was easy! + +The folks at Home Assistant have been working on this so good that almost everything can be done from the interface now. I see any _normal_ user working with this mostly plug and play from the UI which is amazing in my opinion. + +In future post I will dive into my Zigbee configuration, InfluxDB, ESPHome, Alarms ... there's so much to do! --- _discoverable: no diff --git a/content/blog/15-self-hosting-my-home-part-1/notification.png b/content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/notification.png similarity index 100% rename from content/blog/15-self-hosting-my-home-part-1/notification.png rename to content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/notification.png diff --git a/content/blog/15-self-hosting-my-home-part-1/preparing.png b/content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/preparing.png similarity index 100% rename from content/blog/15-self-hosting-my-home-part-1/preparing.png rename to content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/preparing.png diff --git a/content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/system_monitor.png b/content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/system_monitor.png new file mode 100644 index 0000000000000000000000000000000000000000..437098e7f5f6f72c94ba84aa621924db20e88d22 GIT binary patch literal 20440 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 QbI|E{p00i_>zopr0JlLW`v3p{ literal 0 HcmV?d00001 diff --git a/content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/update_notification.jpg b/content/blog/2020-12-20-self-hosting-my-home-with-home-assistant-part-1/update_notification.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6ebcd39c944ac8b66bc4e4ac8d0e75a2c7999d1c GIT binary patch literal 30625 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 Z#BkU{|4x?S(+xeae7Iq9PvsB(-vC`AvakRE literal 0 HcmV?d00001