Voor alles wat net langer mee moet gaan dan die 20 seconden op je facebook wall

labeuker.nl |

  • Join Us on Facebook!
  • Follow Us on Twitter!
  • LinkedIn
  • Subcribe to Our RSS Feed

Grafana configureren

Nu we de data loggen kunnen we deze in Grafana gaan visualiseren. Vanaf nu kunnen we in de browser veder.

Grafana draait op poort 3000, dus we kunnen Grafana openen door via de browser naar de Grafana url te gaan ( in mijn VM http://localhost:3000)

Inloggen kan de eerste keer met admin/admin. Grafana wil daarna graag dat je het admin wachtwoord wijzigt.


Nadat dat gedaan is kunnen we een datasource toevoegen zodat we de influx database kunnen uitlezen.

Ga naar Add Datasource:

 

Daarna proberen de we influx db connectie te maken.

Naam: InfluxDB

Type: InfluxDB

Url: http://localhost:8086 (standaard)

Access: Server (Default)


InfluxDB Details

Database: home_assistant

User: admin

Password: admin

Als je de credentials voor influx db in influxdb gewijzigd hebt, moet je hier natuurlijk je eigen credentials ingeven en ook in homeassistant de nieuwe gegevens opnemen ipv de standaard.

Voor nu houd ik het zo simpel mogelijk.

KLik op save & test. Als het goed is krijg je een groen vlakje: 

 

Nu kunnen we een grafiek gaan maken.

Maak een nieuw dashboard en voeg een graph element toe.

Daarna klik op de panel titel en edit.

 

Daarna kunnen we een query maken. Bij gebrek aan nuttige data gaan we de hoogte van de zon in de grafiek gooien.

Als datasource kiezen we de aangemaakte influxdb source.  Daarna de eigenschap sun.sun.

Van de sun.sun sensor wilen we de elevation weten.

In theorie hadden we nu een mooie grafiek gehad. In mijn testomgeving (vmware, ubuntu desktop, +firefox) heb ik alleen geen lijn. Na een dag zoeken naar data blijkt dat in de weergave te liggen. Op de mouseover zie je wel het datapuntje oplichten, maar de lijn ontbreekt.

Om voor nu de weergave te visualiseren schakelen we ook de bar weergave in.

 

 

Nu we een grafiekje hebben kunnen we deze in home-assistant weergeven 

 

 

 

 

 

InfluxDB configureren

De InfluxDB configureren voor home-assistant gaat in 2 stappen.

 

1) We moeten een database aanmaken waar home-assistant de data in kwijt kan.

2) Home-assistant moet weten dat we gebruik maken van de Influx database in plaats van de lokale sqllite database.

 

Aanmaken home-assistant database in influxdb

InfluxDB heeft geen admin interface (meer) dus we moeten via een commando een database aanmaken in influxdb.

We kunnen hiervoor gewoon de http api aanroepen.  Aangezien we ook geen usernames en passwords ingesteld hebben volstaat een simpel http post
bericht. We kunnen hiervoor curl gebruiken.

curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE home_assistant"

Ziet er vast goed uit, maar we kunnen even kijken voor de zekerheid of het gelukt is met 

curl -i -XPOST http://localhost:8086/query --data-urlencode "q=SHOW DATABASES"

 

Ziet er goed uit! We zien de home_assistant database. 

Voor dit soort simpele commando's werkt curl prima. Voor handigere json parsing of andere bewerkingen stap ik over op Postman

 

Instellen influxdb in home-assistant

 

Om te loggen naar de influx database vanuit home-assistant.

In de configuration.yml file van home-assistant  (locatie: home/home-asssistant/config/configuration.yml) voegen we influx config toe.

influxdb:
  host: localhost
  port: 8086
  database: home_assistant

De host,port en database parameters zijn standaard en hoeven niet ingevuld te worden. Voor het overzicht heb ik ze toch opgenomen.

We restarten home-assistant om te kijken of het gaat werken.

 

 

 

Bekijken van logging

Aangezien de 2 standaard sensors (yr en sun sensor) niet veel loggen kan het even duren voor je resultaat ziet.

Het makkelijkst om te kijken of home-assistant logt naar influx db is via de logfiles. 

sudo docker logs influxdb

De post message naar /write?d=home_assistant lijkt erop alsof er daadwerkelijk data wordt weggeschreven. Dus het is gelukt!

Nu kijken of we de data er weer uit kunnen halen met grafana

 

 

 

Docker container logging

Blijkbaar gaat er iets mis met de grafana container. Deze heeft als status 'Restarting (1) 38 seconds ago'  Wanneer een container niet goed start probeert docker deze elke 6p seconden opnieuw te starten in de hoop dat het dan wel lukt.

We kijken naar de logs in de grafana container om te kijken wat het probleem is. Dat kan via het docker commando:

sudo docker logs grafana

 

We krijgen een hele bak met foutmeldingen, waarvan vooral deze opvalt:  

mkdir: cannot create directory '/var/lib/grafana/plugins': Permission denied

Blijkbaar hebben we niet genoeg rechten om de grafana container een directory te laten aanmaken.  Het pad '/var/lib/grafana/plugins' is echter een pad in de container.

In de docker-compose file mappen we de lokale ./grafana directory met /var/lib/grafana/' 

Door rechten te geven op de ./grafana directoy krijgt de cotainer automatisch die rechten ook. (Het is immers dezelfde directory)

We geven rechten op met 

sudo chmod 777 grafana

Daarna is het maximaal een minuut wachten totdat docker de container weer probeert te starten.

Tadaaa

Alle containers draaien.

Tijd om ze te configureren.

InfluxDB configureren
Grafana configureren

 

Inrichten docker containers

Om te beginnen maken we een directory aan waar we de content van de images op kunnen slaan.

lbeuker@ubuntu:/$ sudo mkdir /home/docker

 Om de containers te koppelen maken we een netwerk aan voor die de containers kunnen delen:

lbeuker@ubuntu:/home$ sudo docker network create ha-network
50a4cd762283af8ce1ba68d7e3c038ff97ca9ff4f3c23832158d2b382b38f5c6

Daarna maken we een docker compose file (docker-compose.yml) met de volgende content:

version: '3'
services:
  ha:
    container_name: home-assistant
    image: homeassistant/home-assistant
    restart: always
    network_mode: host

    ports:
      - 8123:8123/tcp
    volumes:
      - ./home-assistant/config:/config
 
  influxdb:
    container_name: influxdb
    image: influxdb
    restart: always
    network_mode: host

    ports:
      - 8086:8086
    volumes:
    - ./influxdb/data:/var/lib/influxdb
  grafana:
    container_name: grafana
    image: grafana/grafana
    restart: always
    network_mode: host

    ports:
      - 3000:3000
    volumes:
    - ./grafana:/var/lib/grafana

networks:
  ha-network:
   external: true

 

 

 

Daarna starten we de containers met het commando:

lbeuker@ubuntu:/home$ sudo docker-compose -f docker-compose.yml up -d 



Nu kunnen we wachten tot alle images gedownload zijn.

 

.....

 

en klaar!

 

lbeuker@ubuntu:/home$ sudo docker-compose -f docker-compose.yml up -d 
Pulling ha (homeassistant/home-assistant:)...
latest: Pulling from homeassistant/home-assistant
0bd44ff9c2cf: Pull complete
047670ddbd2a: Pull complete
ea7d5dc89438: Pull complete
ae7ad5906a75: Pull complete
0f2ddfdfc7d1: Pull complete
8f1cb1fc8ed4: Pull complete
945d7a7089fd: Pull complete
0f9b0f8af14a: Pull complete
4003c39ce14a: Pull complete
51455239a014: Pull complete
71a940fb4303: Pull complete
598776ed6dc2: Pull complete
5364bb78b462: Pull complete
bfedda7aa7ac: Pull complete
c01311600c12: Pull complete
Digest: sha256:fb287b82e46664de9455aee6736f4b3601b9f49550c99427f727da76fa7603ad
Status: Downloaded newer image for homeassistant/home-assistant:latest
Pulling influxdb (influxdb:)...
latest: Pulling from library/influxdb
0bd44ff9c2cf: Already exists
047670ddbd2a: Already exists
ea7d5dc89438: Already exists
7f9d479deca8: Pull complete
562cee715c1d: Pull complete
a54d9b85b01d: Pull complete
fe89fffd41a2: Pull complete
d19a18a2d6d8: Pull complete
Digest: sha256:fc083490de983dc8b017c55a5d2037b49941d05030d0f5156f9f74fa22c35fa8
Status: Downloaded newer image for influxdb:latest
Pulling grafana (grafana/grafana:)...
latest: Pulling from grafana/grafana
683abbb4ea60: Pull complete
4028112dabeb: Pull complete
a26fd976e08e: Pull complete
Digest: sha256:104f434d47c8830be44560edc012c31114a104301cdb81bad6e8abc52a2304f9
Status: Downloaded newer image for grafana/grafana:latest
Creating grafana        ... done
Creating home-assistant ... done
Creating influxdb       ... done

Eens kijken of het allemaal werkt:


Blijkbaar niet... de grafana container blijft restarten.

Dat wordt in de logging duiken

Installeren docker & docker-compose

Dit is stap 1 van de serie Home-assistant & docker, van aqara tot z-wave in een stap of 10

 

Zoals gezegd starten we met een verse installatie van Ubuntu 18.04 LTS (Bionic Beaver). Niets geinstalleerd, anders dan gewoon geupdate.

 

Docker

Op de console installeren we eerste docker.op  met het commando :

sudo apt install docker.io

 

 

 


lbeuker@ubuntu:~$ sudo apt install docker.io
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  bridge-utils cgroupfs-mount git git-man liberror-perl ubuntu-fan
Suggested packages:
  aufs-tools btrfs-tools debootstrap docker-doc rinse zfs-fuse | zfsutils git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-cvs git-mediawiki git-svn
The following NEW packages will be installed:
  bridge-utils cgroupfs-mount docker.io git git-man liberror-perl ubuntu-fan
0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
Need to get 34.9 MB of archives.
After this operation, 171 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu bionic/main amd64 bridge-utils amd64 1.5-15ubuntu1 [30.1 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu bionic/universe amd64 cgroupfs-mount all 1.4 [6,320 B]
Get:3 http://us.archive.ubuntu.com/ubuntu bionic/universe amd64 docker.io amd64 17.12.1-0ubuntu1 [30.1 MB]
Get:4 http://us.archive.ubuntu.com/ubuntu bionic/main amd64 liberror-perl all 0.17025-1 [22.8 kB]                                                                                            
Get:5 http://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 git-man all 1:2.17.1-1ubuntu0.1 [803 kB]                                                                                 
Get:6 http://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 git amd64 1:2.17.1-1ubuntu0.1 [3,905 kB]                                                                                 
Get:7 http://us.archive.ubuntu.com/ubuntu bionic/main amd64 ubuntu-fan all 0.12.10 [34.7 kB]                                                                                                 
Fetched 34.9 MB in 49s (716 kB/s)                                                                                                                                                            
Preconfiguring packages ...
Selecting previously unselected package bridge-utils.
(Reading database ... 161532 files and directories currently installed.)
Preparing to unpack .../0-bridge-utils_1.5-15ubuntu1_amd64.deb ...
Unpacking bridge-utils (1.5-15ubuntu1) ...
Selecting previously unselected package cgroupfs-mount.
Preparing to unpack .../1-cgroupfs-mount_1.4_all.deb ...
Unpacking cgroupfs-mount (1.4) ...
Selecting previously unselected package docker.io.
Preparing to unpack .../2-docker.io_17.12.1-0ubuntu1_amd64.deb ...
Unpacking docker.io (17.12.1-0ubuntu1) ...
Selecting previously unselected package liberror-perl.
Preparing to unpack .../3-liberror-perl_0.17025-1_all.deb ...
Unpacking liberror-perl (0.17025-1) ...
Selecting previously unselected package git-man.
Preparing to unpack .../4-git-man_1%3a2.17.1-1ubuntu0.1_all.deb ...
Unpacking git-man (1:2.17.1-1ubuntu0.1) ...
Selecting previously unselected package git.
Preparing to unpack .../5-git_1%3a2.17.1-1ubuntu0.1_amd64.deb ...
Unpacking git (1:2.17.1-1ubuntu0.1) ...
Selecting previously unselected package ubuntu-fan.
Preparing to unpack .../6-ubuntu-fan_0.12.10_all.deb ...
Unpacking ubuntu-fan (0.12.10) ...
Setting up git-man (1:2.17.1-1ubuntu0.1) ...
Setting up docker.io (17.12.1-0ubuntu1) ...
Adding group `docker' (GID 127) ...
Done.
Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket.
Processing triggers for ureadahead (0.100.0-20) ...
Setting up liberror-perl (0.17025-1) ...
Setting up cgroupfs-mount (1.4) ...
Setting up bridge-utils (1.5-15ubuntu1) ...
Setting up ubuntu-fan (0.12.10) ...
Created symlink /etc/systemd/system/multi-user.target.wants/ubuntu-fan.service → /lib/systemd/system/ubuntu-fan.service.
Processing triggers for systemd (237-3ubuntu10) ...
Processing triggers for man-db (2.8.3-2) ...
Setting up git (1:2.17.1-1ubuntu0.1) ...
Processing triggers for ureadahead (0.100.0-20) ...


We kunnen testen of docker werkt door bijvoorbeeld de versie op te vragen:

lbeuker@ubuntu:~$ docker --version
Docker version 17.12.1-ce, build 7390fc6

 

Docker-Compose

 

Docker werkt prima voor het draaien van 1 of meerdere containers. Maar het is natuurlijk veel mooier om 1 pakket te maken van alle afhankelijkheden binnen 1 configuratie.
Dat is waar docker-compose om de hoek komt kijken. We maken 1 configuratie waarin we een losse container voor home-assistant, influxdb en grafana kunnen maken. Later kunnen we deze uitbreiden met mqtt.

Helaas is docker-compose nog niet via de package manager te installeren. Daarom moet je deze handmatig instlalleren via het volgende commando:

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

Op dit moment is  versie 1.21.2 de laatste versie.  Kijk voor installatie even of er een nieuwe release is op  https://github.com/docker/compose/releases

Op een verse ubuntu instalaltie is curl echter niet beschikbaar, dus eerst installeren we dat.

lbeuker@ubuntu:~$ sudo apt install curl
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libcurl4
The following NEW packages will be installed:
curl libcurl4
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 373 kB of archives.
After this operation, 1,036 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libcurl4 amd64 7.58.0-2ubuntu3.1 [214 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 curl amd64 7.58.0-2ubuntu3.1 [159 kB] Fetched 373 kB in 1s (248 kB/s) Selecting previously unselected package libcurl4:amd64. (Reading database ... 162702 files and directories currently installed.) Preparing to unpack .../libcurl4_7.58.0-2ubuntu3.1_amd64.deb ... Unpacking libcurl4:amd64 (7.58.0-2ubuntu3.1) ... Selecting previously unselected package curl. Preparing to unpack .../curl_7.58.0-2ubuntu3.1_amd64.deb ... Unpacking curl (7.58.0-2ubuntu3.1) ... Setting up libcurl4:amd64 (7.58.0-2ubuntu3.1) ... Processing triggers for libc-bin (2.27-3ubuntu1) ... Processing triggers for man-db (2.8.3-2) ... Setting up curl (7.58.0-2ubuntu3.1) ... lbeuker@ubuntu:~$

 


En daarna installeren we docker-compose versie 1.21.2. 

 sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

% Total % Received % Xferd Average Speed Time Time Time Current
 Dload Upload Total Spent Left Speed
100 617 0 617 0 0 1058 0 --:--:-- --:--:-- --:--:-- 1056
100 10.3M 100 10.3M 0 0 2006k 0 0:00:05 0:00:05 --:--:-- 2752k

Nu de binary gedownload is in /usr/local/bin/docker-compose moet deze nog execute rechten krijgen zodat het gebruitk kan worden middels commando :

sudo chmod +x /usr/local/bin/docker-compose

Om te kijken of het werkt kunnen we de versie opvragen:

lbeuker@ubuntu:~$ docker-compose --version
docker-compose version 1.21.2, build a133471

 

Nu docker-compose is geinstalleerd kunnen we verder met het inrichten van containers.

 

 

Home-assistant & docker, van aqara tot z-wave in een stap of 10

Ik ben niet echt een actieve blogger, maar als ik me dan toch een keer voorneem om eea te documenteren kan ik het net zo goed delen.

Wat is het plan?

Uiteindelijk moet het hele feest op iets van een Intel NUC gaan draaien. Ik moet er nog een fixxen via marktplaats oid, maar dat wordt dan meteen een goede testcase voor de documentatie. Om te testen beginnen we met een clean Ubuntu 18.04 LTS (Bionic Beaver) installatie.  De keuze voor Ubuntu is overigens nergens op gebaseerd. Ooit meerder
mee gewerkt en beviel prima. Er zullen vast genoeg goede alternatieven zijn, maar daar gaat het niet nu om.

 

  1. Installeren docker & docker-compose
  2. Inrichten docker containers
  3. Container logging
  4. InfluxDB
  5. Grafana
  6. Emulated Hue / Logitech Harmony
  7. Jung ENet
  8. MQTT?
  9. RFXTRX433E
  10. Xiaomi Aqara / Zigbee?
  11. Z-Wave
  12. ...