Home Assistant over https

Synology: How to Allow Home Assistant to Work Over an HTTPS Connection?
Plus, when you get that working, how to fix the Home Assistant Supervisor 400: Bad Request?

Have you already installed Home Assistant using docker on your Synology NAS following my step by step guide? Do you want to log in via HTTPS using your custom domain name even when you are away from home? It’s simple and free. You don’t need to buy domains, you don’t need to look for information elsewhere because here you will find the easy way to do it. Say you’re at a friend’s house and want to use Home Assistant. You can access Home Assistant from outside your home, just like you would any website.

Or try as alternative with a wilcard certificate.
Have a nice day!

invalid input ‘unknown’

After updating the Home Assistant container, I noticed a lot of errors in the log. For example:

ERROR (MainThread) [homeassistant.helpers.event] Error while processing template: Template<template=({{ (iif((states('sensor.s8_power') | float) > 42) ...
~
ValueError: Template error: float got invalid input 'unknown' when rendering template '{{ iif( (states['sensor.t2_temperature'].state | float() ) >= ((states['climate.airco_slaapkamer'].attributes['temperature'] | float()) + (states['input_number.airco_off_delta'].state | float())) ) }}' but no default was specified

A quick google found this, so basically, don’t use float() but specify a default value, and use float(0) instead in your templates! Change that in \NAS\docker\homeassistant\config\configuration.yaml and any template used in your automations, restart Home Assistant and the errors are gone!

Have a nice day!

Home Assistant Asusrouter

Note to self: https://github.com/Vaskivskyi/ha-asusrouter/issues/993
If you can connect to the container, run pip show asusrouter and confirm that somehow it is not of version 1.21.0

pip show asusrouter

If you can connect to the container, try installing the dependency manually with pip install asusrouter==1.21.0. If you get any errors, post them here, please. Package installation issues might be related to the other custom integrations and their dependencies.

pip install asusrouter==1.21.0

Wifi to Zigbee

My wifi is not slow at all, but I started getting more and more connection problems from random devices. The solution for me was to replace some wifi devices with zigbee versions.

I started with adding a SMLIGHT SLZB-06 to my network. This is a Zigbee 3.0 to Ethernet USB WiFi Gateway Coordinator with PoE and it works with Home Assistant using ZHA or Zigbee2MQTT.
So I gave it a fixed IP address, and on my NAS, where Home Assistant is running in a Docker container, I installed eclipse-mosquitto and koenkk/zigbee2mqtt. Next I added the SMLIGHT SLZB-06 and MQTT integration in Home Assistant and everything started coming together and working like a charm.

First added devices were temperature and humidity sensors, Sonoff SNZB-02P and SNZB-02D. Next I started adding smart plugs Sonoff S60ZBTPF and IHOMECAM Smart power plugs, replacing my HomeWizard wifi energy sockets.

And guess what? With more devices on zigbee, my wifi is stable again and I get a lot more data out of my smart home!

That’s all folks!
Have a nice day…

Meet je stad! #1084

We are live!

the project: https://meetjestad.net/
info: https://meetjestad.net/node/1084
data: https://meetjestad.net/data/sensors_recent.php?sensor=1084&limit=12
json: https://meetjestad.net/data/?type=sensors&ids=1084&format=json&limit=1
Utrecht: https://meetjestad.net/index3.php?loc=Ut
RIVM: https://samenmeten.rivm.nl/dataportaal/sensor_dashboard.php?kit_id=MJS_1084#tabs-2

Of course I wanted to add the data to my own Home Assistant installation. For this I had to add some custom sensors to:
\\NAS\docker\homeassistant\config\configuration.yaml

rest:
  - resource: "https://meetjestad.net/data/?type=sensors&ids=1084&format=json&limit=1"
    scan_interval: 00:15:00
    sensor:
      - name: "mjs_1084_humidity"
        unique_id: mjs_1084_humidity
        value_template: '{{ (value_json[0].humidity | float) | round(1) }}'
        device_class: humidity
        state_class: measurement
        unit_of_measurement: "%"
        availability: '{{ ((value_json[0].humidity | float) >= 0) and ((value_json[0].humidity | float) <= 100) }}'
      - name: "mjs_1084_temperature"
        unique_id: mjs_1084_temperature
        value_template: '{{ (value_json[0].temperature | float) | round(1) }}'
        device_class: temperature
        state_class: measurement
        unit_of_measurement: "°C"
        availability: '{{ ((value_json[0].temperature | float) > -25) and ((value_json[0].temperature | float) < 100) }}'
      - name: "mjs_1084_pm25"
        unique_id: mjs_1084_pm25
        value_template: '{{ (value_json[0]["pm2.5"] | float) | round(0) }}'
        device_class: pm25
        state_class: measurement
        unit_of_measurement: "µg/m³"
        availability: '{{ ((value_json[0]["pm2.5"] | float) >= 0) and ((value_json[0]["pm2.5"] | float) < 50000) }}'
      - name: "mjs_1084_pm10"
        unique_id: mjs_1084_pm10
        value_template: '{{ (value_json[0].pm10 | float) | round(0) }}'
        device_class: pm10
        state_class: measurement
        unit_of_measurement: "µg/m³"
        availability: '{{ ((value_json[0].pm10 | float) >= 0) and ((value_json[0].pm10 | float) < 50000) }}'
      - name: "mjs_1084_battery_voltage"
        unique_id: mjs_1084_battery_voltage
        value_template: '{{ (value_json[0].supply | float) | round(2) }}'
        device_class: voltage
        state_class: measurement
        unit_of_measurement: V
      - name: "mjs_1084_timestamp"
        unique_id: mjs_1084_timestamp
        device_class: timestamp
        value_template: "{{ strptime( value_json[0].timestamp ~ '+00:00' , '%Y-%m-%d %H:%M:%S%z') }}"

* Please note some changes I made, compared to the instructions I found here. The following does not work:

value_template: '{{ (value_json[0].pm2.5 | float) }}'

I had to use:

value_template: '{{ (value_json[0]["pm2.5"] | float) | round(0) }}'

* I added the timestamp as a sensor as well, so I could see when the last data packet was transmitted. For the timestamp, the following did not quite work. It just gave me the UTC time:

value_template: "{{ value_json[0].timestamp | as_datetime | as_local }}"

So, I had to add some string manipulation to get the data in the correct timezone:

value_template: "{{ strptime( value_json[0].timestamp ~ '+00:00' , '%Y-%m-%d %H:%M:%S%z') }}"

* And to filter out invalid data, like temperature at -26 or pm at over 50k, I had to add some availability filters, like so:

availability: '{{ ((value_json[0].pm10 | float) >= 0) and ((value_json[0].pm10 | float) < 50000) }}'

That’s all folks…
Have a nice day!

Update HA docker container

So I installed Home Assistant on a Synology NAS, using the official instructions. Now, one of my HACS Integrations started complaining about an update, but it required a newer version of Home Assistant, which I was not receiving. After a long search I figured out that using the ‘stable’ tag would not give me any updates for Home Assistant. I would have to use ‘latest’…
Unfortunately, you cannot change this in the downloaded docker Image.

So, what to do? My system was running for a month and I did not want to lose my config and history/data. Simple solution; I downloaded a new Image with the correct settings and pointed a new Container to the same /config folder on my NAS.

Since the instructions on the Home Assistant website were not quite correct for my version of Synology DSM 7.2.2-72806 Update 3, below the updated steps:

Install Home Assistant Container

Continue reading Update HA docker container