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

MI Flora Plant sensor

Met de mi flora plant sensors kunnen we de kamerplanten monitoren.

Zorg dat bluetooth geconfigureerd is op je home-assistant installatie

 

Vervolgens kunnen we het mac address van de sensor vinden met het commando

sudo hcitool lescan

Dit geeft het volgende resultaat

LE Scan ...
C8:69:CD:CD:0F:F3 (unknown)
C8:69:CD:CD:0F:F3 (unknown)
41:48:8F:59:07:84 (unknown)
41:48:8F:59:07:84 (unknown)
C4:7C:8D:66:D5:80 (unknown)
C9:D1:55:AB:D8:14 (unknown)
C9:D1:55:AB:D8:14 Charge 2
C4:7C:8D:66:D5:80 Flower care
76:7A:CB:37:8D:94 (unknown)
76:7A:CB:37:8D:94 (unknown)

 

We zien de Flower care sensor er tussen staan.

Uiteraard willen we nu alles ziend dus voegen we dit in de config toe:

sensor:
  - platform: miflora
    mac: 'C4:7C:8D:66:D5:80'
    monitored_conditions:
      - moisture
      - light
      - temperature
      - conductivity
      - battery

 

 even wachten en....

 

 

Let op: Standaard worden de bluethooth le devices maar 1x per 20 minuten gepolled om de batterij te sparen. Het kan dus even duren voordat je daadwerkelijk informatie van je sensor krijgt.

Uit de docs:

By default the sensor is only polled once every 20 minutes. So, if you set median: 3 it will take at least 40 minutes before the sensor will report a value after a Home Assistant restart. Since the values usually change very slowly, this usually isn’t a big problem. Keep in mind though that reducing polling intervals will have a negative effect on the battery life.

 

 

 

Xiaomi Aqara

In de categorie veel voor weinig is er naast z-wave ook xiaomi spul. Betrekkelijk goedkoop te bestellen via ali-express.

Je krijgt een (chinese) gateway en best goedkope componenten.

De configuratie is nog wel even puzzelen omdat het vrij slecht vertaald is. Maar als het draait heb je de app niet meer nodig.

Puntje van aandacht is nog wel dat alles via een mainland china cloud oplossing loopt. Dus je hebt geen idee wat er van je netwerk gedeeld wordt met onze Chinese vrienden.
Op termijn ga ik nog even uitzoeken hoe je dat dicht kan zetten of wat er te omzeilen is.

 

Aangezien de xiaomi gateway al in het netwerk hangt krijg ik al de melding te zien dat die geconfigureerd moet worden.

 

De reden hiervoor is dat je een access key moet opgeven in de home-assistant configuratie.

De standaard configuratie is alvolgt:

# You can leave MAC empty if you only have one gateway.
xiaomi_aqara:
  discovery_retry: 5
  gateways:
    - key: xxxxxxxxxxxxxxxx

Nu de key nog, deze zit ergens verborgen in de mi home app. 

 

Als het goed is heb je bij de installatie van de gateway de Mi home app gedownload. (https://play.google.com/store/apps/details?id=com.xiaomi.smarthome)

Je moet hiervoor inloggen / een account aanmaken. Daarna is het even puzzelen om de key te achterhalen.

 

Klik op de mi control hub.  Daarna rechtsboven op het cirkeltje met de 3 puntjes. Er klapt een menu uit en klik op about.

 

  

Klik daarna als een malle op het plug-in version: 2.57.5 label.  Er schiet dan een keer een chinees tekstje voorbij waarna je in developer mode zit als het goed is.  (Mijn chinees is niet zo goed...) 

Klik daarna op hub info. En kies daarna het linker knopje. Vervolgens krijg je de optie om de wireless communcation aan en uit te zetten, en krijg je het password van de gateway te zien. Deze kan je vervolgens gebruiken om in de config van home-assistant op te nemen.

Eenmaal na het herstarten van home-assistant wordt de gateway light getoond.

Gordijnen waar ik eerder mee getest heb komen ook meteen mee. Daarover later meer...

 

 

 

 

 

 

 

 

 

Logitech Harmony & (Emulated) Hue

Nu we de z-wave werkend hebben en er wat switches in gebruik zijn zou het mooi zijn om een standaard lamp met de logitech harmony afstandbediening aan en uit te schakelen.


Om makkelijk te schakelen tussen de tv en chromecast etc.. gebruik ik al de logitech harmony companion. Hiermee kan je gemakkelijk scenes switchen zonder dat het de hoofdprijs kost. Met de harmony app kan je standaard al wel de hue bridge vinden en de philips hue lampen schakelen. 

Met het emulated hue component kunnen we een hue bride simuleren waarbij de logitech harmony denkt met een hue bridge te praten. Home assistant geeft vervolgens alle devices door zodat je met de hue afstandbediening alle devices kan schakelen.

 

Voor het koppelen kan je de normale stappen van de hue bridge in de harmony app gebruiken.

Eerst gaan we de hue hub toevoegen. Voor de zekerheid heb ik eerst de bestaande hue brigde even uitgeschakeld, Dan weet je zeker dat je de emulated hue bridge ontdekt op je netwerk.

  

Apparaat toevoegen > home control > philips hue

Het wordt wat verwarrend als je op de knop moet drukken. Maar een minuutje wachten en niets doen volstaat. De bridge wordt automatisch gekoppeld.

Daarna kan je een overzicht krigen van de gekoppelde apparaten in je hue bridge.

 

 

 

 

 

 

Harmony-setup > Apparaten en activiteiten toevoegen/wijzigen > Harmony Companion / Home Control

Daarna kiezen we voor knoppen voor home control. Daar kunnen we per knop een mapping maken naar een device in home assistant.

Knop 1 binden we aan de hue group woonkamer.   Knop 2 wordt gekoppeld aan een z-wave switch die voor een normale lamp zit.

 

ALs je bovenin het > pijltje gebruikt wordt het opgeslagen en gesynct naar de harmony hub.  Vanaf nu kunnen we de lamp aanschakelen door op de knop te drukken. De knop ingedrukt houden zorgt er voor dat de lamp weer uit gaat.

 

 

USB apparaten koppelen

Om te communiceren via andere protocollen moeten er nog wat extra USB apparaten gekoppeld worden.

Voor algemene weerstation sensoren via het klik aan klik uit systeem (433 mhz) gebruik ik een RFXcom ontvanger.

Voor z-wave devices de Aeotec USB Z-Stick - Z-Wave Plus

 

Voor zigbee de Conbee, 2.4GHz Zigbee USB Gateway

Over het zigbee stuk later meer... Hier heb ik nog niets mee gedaan.

 

Eerst moeten we kijken of en hoe de usb devices gemapt zijn in de docker-host machine.

met 

 ls /dev/tty*

kan je een overzicht krijgen van USB devices. Uiteindelijk worden ze gemapt aan ttyUSB0, ttyUSB1 en ttyACM0. 

Door ze 1 voor 1 toe te voegen kan je vrij gemakkelijk zien welke stick op welke poort gemapt wordt.

Daarna zorgen we dat de devices gemapt worden in de dockerhost door ze als device toe te voegen.

    volumes:
      - ./home-assistant/config:/config
      - /opt/bluetooth:/var/lib/bluetooth
    devices:
      - /dev/ttyACM0:/dev/ttyACM0   #Z-Wave stick
      - /dev/ttyUSB0:/dev/ttyUSB0   #Zigbee
      - /dev/ttyUSB1:/dev/ttyUSB1   #RFXCom

Daarna restarten we de docker-host.

Om meteen de config van de docker-compose file te testen stop ik meestal de docker container met

docker stop home-assistant

Vervolgens start ik alle containers met 

sudo docker-compose -f docker-compose.yml up -d

De grafana en influxdb container draaiden al dus daar gebeurt niets mee. De home-assistant container nog niet dus die wordt opnieuw gestart met de nieuwe config.

 
Om te testen of het werkt kunnen we nu de config van home-assistant aanpassen om z-wave en de rfxcom toe te voegen.

rfxtrx:	  
  device: /dev/ttyUSB1
  debug: True
  dummy: False

 

zwave:
  usb_path: /dev/ttyACM0

 

Als alles goed is gegaan krijg je een Z-wave tabje op het panel. Aangezien ik al eerder met de stick heb getest komen er al wat gekoppelde devices in staan.

Philips Hue

Al na de installatie had home-assistant vrij snel door dat er een hue bridge in het netwerk zit. Deze kunnen we vrij makkelijk configureren.

Klik op configure:

Druk op de knop en gaan!

 

De google chromecast is nog makkelijker. Daarvoor hoef je niets op het device te doen maar is 2x klikken genoeg.

 

Nadat de configuraties zijn doorlopen krijg je deze meteen als panels in het dashboard te zien.

Dat lamp 3 en de lightstrips het nu niet doen heeft er met name mee te maken dat deze op zolder in een doos liggen. Later komen deze vast weer van pas.

 

 

Bluetooth configureren

Een makkelijke manier om aanwezigheid te registreren is via bluetooth.

Om te beginnen gaan we aanwezigheid van apparaten registreren. Dit kan vrij gemakkelijk door het volgende toe te voegen in de configuration.yml van home-assistant.

device_tracker:
  - platform: bluetooth_tracker

Tot zover de theorie... Na het aanmaken van de device tracker en een herstart van home assistant, geen devices.... Wel een error:

ModuleNotFoundError: No module named 'bluetooth'

Blijkbaar wordt de bluetooth module niet standaard gekoppeld aan je docker container.  Daarom passen we de config van de docker-compose.yml file aan en
koppelen we een extra volume.

Dus naast het koppelen van het config volume voegen we de regel toe van de bluetooth module.

   volumes:
      - ./home-assistant/config:/config
      - /opt/bluetooth:/var/lib/bluetooth

Herstart home-assistant en nu moet het werken!

 

Na verloop van tijd zie je vanzelf ontdekte apparaten voorbij komen. Je hoeft ze niet te binden met de host, het gaat puur om de aanwezigheid.

 

 

Zoals altijd geldt ook hier, als het te mooi klinkt om waar te  zijn zal het wel zo zijn.  Na een paar dagen heb ik allemaal devices er in staan die ik niet ken. Zo heb ik geen Huawei Y7, heb ik geen idee wat de AA43925 is en lijkt VZ-948-B wel op een kenteken van een bezorger.  Dat wil ik allemaal niet bijhouden.

Alle devices worden bijgehouden in known_devices.yml
Hierin kunnen we van de gedetecteerde apparaten aangeven dat we ze niet willen volgen

link_vz948b:
  hide_if_away: false
  icon:
  mac: BT_E4:04:39:52:E9:54
  name: LINK VZ-948-B
  picture:
  track: false

huawei_y7:
  hide_if_away: false
  icon:
  mac: BT_0C:8F:FF:29:80:C4
  name: HUAWEI Y7
  picture:
  track: false

aa43925:
  hide_if_away: false
  icon:
  mac: BT_E0:9D:31:FA:47:30
  name: AA43925
  picture:
  track:false

 

Grafana grafiek in home-assistant dashboard

Het invoegen van de grafana grafieken kan op 2 manieren.  

1) Lokale download via api-key

Met een api key download je de afbeelding via een home-assistant sensor. Elke minuut wordt de grafiek lokaal opgeslagen. Bij het openen van home-assistant wordt de laatst gedownloade afbeelding lokaal geopend.  Op deze manier wordt er dus 1440 x een afbeelding gemaakt en opgeslagen.  
Hoewel het conceptueel een mooie oplossing is, vind ik het zonde van de resources om de afbeelding zo vaak te verversen.
Uiteindelijk heb ik het wel werkend gekregen, maar het is een behoorlijke puzzelen met rechten op een lokale directory, kopieren van api keys etc..
Wil je het proberen staat dat hier exact beschreven https://community.home-assistant.io/t/complete-guide-on-setting-up-grafana-influxdb-with-home-assistant-using-official-docker-images/42860

 

2) Embed de afbeelding met een gebruikersnaam en wachtwoord.

Kies in grafana voor de direct link rendered image.  Deze afbeelding wordt geopend in een nieuw tabblad.  Kopieer de link van het tablad. Dit is de link naar de grafiek.

 

We maken een viewer account aan onder de settings van grafana. Om een account aan te maken zonder invite ga naar Server Admin --> Add User

 

Vervolgens gebruiken we de credentials om een statische afbeelding te embedden in home-assistant. Plak de volgende code in de configuration.yml

 

camera:
  - platform: generic
    name: Grafana_image
    still_image_url: 'http://localhost:3000/render/d-solo/an20tcOmz/sun?orgId=1&panelId=2&width=1000&height=500&tz=Europe%2FAmsterdam'
    username: viewer
    password: viewerrrrr


 

 

 

 

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 willen 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. 

sudo docker restart home-assistant

 

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)

Voor nu geven geven we rechten op met 

sudo chmod 777 grafana

(De betere linux kenner zal vast uitzoeken onder welke user het moet draaien, of welke beperktere set nodig is. Voor nu volstaat dit in elk geval.)

 

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