Home Assistant op je NUC met Proxmox

Door K-Jay op vrijdag 26 juni 2020 09:30 - Reacties (15)
Categorie: Home automation, Views: 5.130

Ik ben al een tijd lang een tevreden gebruiker van Home Assistant. Helaas crashte mijn installatie onlangs en besloot ik om mijn nieuwe installatie wat anders aan te pakken. Alle stappen heb ik genoteerd om later eventueel op terug te kunnen vallen. Omdat sharing=caring, hierbij mijn stappenplan, dat eigenlijk verrassend simpel is.

Mijn opzet

De hardware waar alles op draait is een Intel NUC. Als besturingssysteem heb ik gekozen voor Proxmox. Dat is een versie van Linux die bedoeld is om virtuele machines en containers op te draaien. Binnen Proxmox heb ik nu dit draaien:
- Virtuele machine op basis van HassOs met Home Assistant en alle add-ons
- Container op basis van Ubuntu met daarin Docker. Binnen Docker heb ik diverse containers draaien (vpn-server, ontwikkelservers, AdGuard, enz)



Zoals ik het nu opschrijf lijkt het een beetje inception zo met containers in Ubuntu in een container in Proxmox, maar het werkt allemaal super goed. Het voordeel van Proxmox is dat je heel snel een snapshot kan maken en terugzetten als je de boel kapotgetweakt hebt en de voordelen van Docker ga ik hier niet allemaal opsommen maar het is best awesome allemaal :)

Genoeg theorie. Aan de slag

Stap 1 is het installeren van Proxmox op de NUC. Ga naar https://www.proxmox.com/en/downloads, kies de juiste versie en zet deze op een usb-stick met BalenaEtcher https://www.balena.io/etcher/. Start op van de USB-stick en volg de instructies. Uiteindelijk kom je dan in de Proxmox webinterface terecht. Deze video leidt je stap voor stap door de installatie heen.



Stap 2 is het installeren van Home Assistant. Daarvoor hoef je maar 1 regel code uit te voeren in Proxmox! In deze video gaat DrZzs er met de maker van het script stap voor stap doorheen, dus dit kan niet misgaan.

En dan heb je Home Assistant al draaien! Vervolgens kun je aan de slag met add-ons en eventueel terugzetten van een snapshot van je vorige HA-installatie.

Stap 3 is optioneel, de Ubuntu-container met Docker. Daarvoor heb ik deze stappen gevolgd, uitgelegd in deze video.

Heb je vragen? Suggesties? Feedback? Laat een reactie achter. En neem ook een kijkje op het forum: https://gathering.tweakers.net/forum/list_message/62870246

Automatiseer je zwembad!

Door K-Jay op donderdag 21 juni 2018 11:27 - Reacties (14)
Categorie: Home automation, Views: 9.627

Het is zomer! Tijd om het zwembad op te zetten. Vorig jaar beschreef ik hoe ik de temperatuur van het zwemwater in de gaten kan houden. Dit jaar ga ik een stap verder.

De blogpost heeft een minder technisch karakter dan mijn voorgaande posts. Wil je meer details weten, laat dan een reactie achter. Alle foto's zijn klikbaar voor groter formaat.

Overzicht

Het probleem
Intex-bezitters kennen wellicht deze FWP's:
  • ik moet steeds die pomp aan- en uitzetten
  • hoe krijg ik dat water een beetje warmer?
  • wanneer moet ik het filter van mijn pomp schoonmaken?
Oplossing 1: pomp aansturen via Sonoff
Je kunt je pomp natuurlijk aan een tijdschakelaar hangen, maar een beetje tweaker wil meer control. Met een Sonoff Basic kun je eenvoudig schakelen via wifi. Ik heb de Sonoff geflashed met Tasmota zodat ik deze makkelijk kon opnemen in mijn domoticasysteem.

Oplossing 2: poor man's zwembadverwarming
Ik heb een eenvoudige Intex filterpomp om het water een beetje schoon te houden. Een van de slangen heb ik vervangen door een zwart exemplaar van een meter of 4. Als daar de zon op schijnt warmt het water snel op.
Een sensor in de zwarte slang registreert de opwarming. Als het temperatuurverschil met het zwemwater hoog genoeg is, wordt de pomp kort ingeschakeld (zie oplossing 1). Zo stroomt het warme water het zwembad in en komt er weer koud water in de zwarte slang. De zon kan haar werk weer gaan doen 8-)

Sensor in zwemwater

Sensor in zwarte slang (via pomp-uitloop)

Oplossing 3: debiet meten
Op Ebay heb ik een flow-sensor gekocht die ik dankzij Tasmota eenvoudig kon aansluiten op de Sonoff die mijn pomp aanstuurt. De sensor levert een getal aan dat met elke omwenteling wordt opgehoogd. Met wat meet- en rekenwerk (lees: emmer en stopwatch) heb ik een regel in mijn domoticasysteem opgenomen die dit gegeven omrekent aan het aantal liters per minuut.
Met een schoon filter zit ik rond 13 liter per minuut. Na verloop van tijd loopt het filter vol, zakt het debiet in en krijg ik een notificatie van mijn domiticasysteem :) Tijd om het filter te vervangen of schoon te spuiten. Bovendien kan ik dit gegeven ook gebruiken om per dag te berekenen hoeveel liter water er gefilterd is.

De pomp met de flow-meter

Op een rijtje
Het domoticasysteem dat ik gebruik is pimatic. Lees mijn andere blogberichten hierover maar eens.
Alles bij elkaar heb ik de volgende hardware aan mijn zwembad geknoopt:
  • Intex filterpomp
  • Sonoff Basic
  • 2x DS18B20 temperatuursensor (in zwemwater en in zwarte slang)
  • 1x Flow meter


One more thing
Vond je dit een leuke post om te lezen? Je kunt hem nomineren voor blogpost van de maand. Uiteraard kun je daar ook blogposts van andere Tweakbloggers onder de aandacht brengen :)

Domotica met je oude schakelaar!

Door K-Jay op donderdag 16 november 2017 14:00 - Reacties (10)
Categorieën: Geknutsel, Home automation, Views: 10.444

In mijn allereerste post op dit blog legde ik uit hoe je verlichting kan schakelen met pimatic. Tot op de de dag van vandaag werkt dat prima bij mij, maar er zijn wel nadelen:
  • de draadloze communicatie is niet beveiligd, wordt soms verstoord en kent geen ontvangstbevestiging
  • je moet je wandschakelaar vervangen voor een KaKu-exemplaar
  • beperkte reikwijdte van het signaal
In deze blogpost ga ik uitleggen hoe je verlichting kan schakelen zonder deze nadelen. Dus:
  • schakelen met je oude vertrouwde wandschakelaar...
  • ...maar ook gewoon met je domoticasysteem
  • via WIFI, maar werkt ook nog als dat onverhoopt uitvalt
  • beveiligde communicatie met ontvangstbevestiging
  • en ook nog eens goedkoper dan KlikaanKlikuit!


Wat heb je nodigAan de slag
De Sonoff Basic is een draadloze schakelaar die je via WIFI kan aansturen. Deze moeten we eerst voorzien van Tasmota-software. Volg hiervoor het stappenplan op de Tasmota-wiki of de zeer duidelijke blogpost van holygame.
Zet voor het flashen de juiste waarden in user_config.h en pas ook deze waarden aan:
code:
1
2
MQTT_STATUS_OFF "0"
MQTT_STATUS_ON "1"

Flashen gelukt? Ontkoppel de FTDI-adapter en zorg ervoor dat de pinnen GND en GPIO14 beschikbaar zijn buiten de behuizing. Dit zijn de onderste twee pinnen uit het rijtje van vijf onder het drukknopje. Hier moet je namelijk je wandschakelaar op aansluiten.

Sluit de Sonoff aan op je huidige installatie. Schakel indien mogelijk eerst de groep uit.
  • de lamp op Output
  • de wandschakelaar op GND en GPIO14
  • als laatste: input verbind je met 230V
Het is aan jou waar je de Sonoff precies plaatst. Doe je dat in de buurt van de schakelaar, dan zul je waarschijnlijk nog een (blauwe) nuldraad moeten trekken. Plaats je de Sonoff bij de lamp, dan zul je nog een extra (zwarte) schakeldraad naar je schakelaar moeten trekken.

Schakel de stroom weer in. De Sonoff zal zich aanmelden op je WIFI-netwerk. Ga in de webinterface naar de configuratie van de module en zet GPIO14 op Switch.
https://tweakers.net/ext/f/dBXuBWQ4igZFkOces73sT0pq/full.png

Neem de schakelaar op in je domoticasysteem. Voor pimatic ziet dat er zo uit:

https://tweakers.net/ext/f/IKtV8NuHYAupQ8Rls1q61Bok/full.png

Je bent klaar! Je kunt de Sonoff nu schakelen via je domoticasysteem, maar ook met de wandschakelaar. Het maakt voor de software in de Sonoff niet uit of de schakelaar in de aan-of uitstand staat, alleen de schakelactie zelf is van belang. En mocht je WIFI niet werken, dan kun je dus terugvallen op je wandschakelaar.
En misschien wel het grootste voordeel: kritische huisgenoten hebben niet eens door dat je weer hebt zitten hobby'en...

Vragen
:? Sonoff, dat is toch onveilige Chinese meuk?
Dat mag je zelf beoordelen. Op internet kun je inderdaad foto's vinden van gesmolten Sonoffs. Feit is wel dat de fabrikant hiermee aan de slag is gegaan, wat geresulteerd heeft in een ander ontwerp en CE-certificering. Wil je per se je wasmachine of straalkachel schakelen? Misschien beter om een andere oplossing te zoeken.

:? Hoezo is dit veiliger dan KlikaanKlikuit?
KaKu werkt met RF-communicatie op 433 MHz. Het signaal is niet beveiligd en makkelijk te onderscheppen. In theorie kan zelfs je buurman met zijn KaKu-schakelaar per ongeluk jouw apparatuur bedienen. Het WIFI-signaal daarentegen is wel te beveiligen.

:? He, met het knopje op de Sonoff behuizing kan ik de lamp ook schakelen!
Dat klopt! Maar pas op, hij kan nog veel meer.

:? Het lukt me niet om via MQTT te schakelen
In de webinterface van Tasmota vind je o.a. een uitgebreide logging die je prima als debugger kunt gebruiken.

En verder...
In je Sonoff zitten nu nog een paar ongebruikte GPIO-pinnen. Handig om een sensor op aan te sluiten!

Zwembadtemperatuur via mqtt

Door K-Jay op vrijdag 23 juni 2017 11:09 - Reacties (9)
Categorieën: Geknutsel, Home automation, Raspberry pi, Views: 8.394

Inleiding
Als je mijn voorgaande blogposts gelezen hebt, weet je dat ik regelmatig met pimatic in de weer ben. Zo kan ik verlichting schakelen, temperatuur loggen, een foto maken als iemand aanbelt en nog veel meer.

433MHz vs wifi
Het is mooi weer en daarom heb ik een zwembadje in de achtertuin opgezet. Je kunt natuurlijk met je grote teen voelen hoe koud het water is, maar de tweaker in mij wil de watertemperatuur uiteraard objectief vastgelegd hebben. Probleem: de afstand van mijn meterkast naar het zwembad is ongeveer 25 meter. Te lang voor een kabeltje en eigenlijk ook te lang om 433MHz-communicatie te gebruiken. Maar dankzij mijn nieuwe Unifi accesspoint heb ik wel beschikking over betrouwbare wifi!

Mqtt
Het wordt dus wifi. Een geschikt protocol om dan te gebruiken is mqtt, een protocol waarmee IoT-apparaten op een simpele manier informatie met elkaar uitwisselen. Bij een mqtt-uitwisseling zijn drie partijen betrokken:
- een publicerende partij, in mijn geval een ESP8266 met een temperatuursensor
- een ontvangende partij, die de gepubliceerde gegevens weergeeft, in mijn geval pimatic
- een broker die de communicatie tussen beide bovenstaande partijen verzorgt. Ik gebruik Mosquitto, geinstalleerd op de Raspberry pi waar pimatic ook op staat

Wat heb je nodig
- een werkende pimatic installatie op een Raspberry pi
- een ESP8266 nodemcu (ebay link)
- een DS18b20 temperatuursensor (ebay link)
- een weerstand 4.7K
- voeding voor je ESP (standaard telefoonoplader, micro-usb)
- behuizing, ik gebruik deze

Aan de slag

Stap 1: ESPEasy installeren op de ESP8266
De open-sourcesoftware ESPEasy zorgt dat de ESP8266 diverse sensoren kan uitlezen en de waarden via mqtt kan versturen. ESPEasy kan nog veel meer overigens.
Download ESPEasy en verbind je ESP met een USB-kabel aan je PC. Volg nu het stappenplan op de wiki van ESPEasy:
Upload succesvol? Herstart je ESP en maak verbinding met het wifi-netwerk dat je ESP nu heeft opgezet. Vul in de getoonde pagina de gegevens van jouw wifi-netwerk in. De ESP is nu in je netwerk opgenomen en kan via de browser beheerd worden.
Tip vanuit de reacties: kies bij de Controllers voor OpenHAB MQTT.

Stap 2: Temperatuursensor verbinden en uitlezen
Verbind de DS18B20 als volgt aan je ESP:
- zwart aan GND
- rood aan 3V3
- geel aan GPIO 13 (D7)
en plaats een weerstand van 4.7K tussen geel en rood.
Navigeer nu met een browser naar het ip van je ESP. Voeg een nieuw device toe:



Stap 3: Mosquitto installeren
Ga met Putty of een andere SSL-tool naar je Raspberry pi. Voer de volgende commando’s uit:
Key importeren:
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key

mosquitto ophalen:
cd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list

terug naar root:
cd

updaten:
sudo apt-get update

mosquitto installeren:
sudo apt-get install mosquitto

mosquitto starten:
mosquitto -v

Stap 4: pimatic aanpassen
Installeer in pimatic de plugin pimatic-mqtt. Dat kan via de interface, of door de config aan te passen.
Voeg vervolgens de volgende regels toe aan je config, bij de devices:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
   {
      "class": "MqttSensor",
      "id": "espeasy_1",
      "name": "espeasy_1",
      "attributes": [
        {
          "name": "temperature",
          "topic": "/espeasy_1/temp_zwembad/Temperature",
          "type": "number",
          "unit": "°C",
          "acronym": "Temperatuur zwembad",
          "messageMap": {}
        }
      ],
      "xAttributeOptions": []
    }

Herstart pimatic. Je nieuwe device zal nu de temperatuur laten zien.



Nog een extra tip: na een eventuele herstart van je pi moet je Mosquitto ook weer starten. Dit kun je automatiseren door het starten van Mosquitto als een regel aan pimatic toe te voegen waarin je gebruik maakt van de shell-execute plugin:
code:
1
2
3
4
5
6
7
    {
      "id": "start-mosquitto",
      "name": "Start mosquitto",
      "rule": "when pimatic is starting then execute \"sudo mosquitto -d\"",
      "active": true,
      "logging": true
    }

En nu verder!
Met ESPEasy kun je nog veel meer. Ik heb inmiddels ook al twee deursensoren op dezelfde ESP aangesloten. Indien gewenst kan ik dat in een volgend blogbericht uitleggen. Verder wil ik de mqtt-communicatie nog beveiligen met een wachtwoord. Genoeg te doen dus!


En je ziet er bijna niets van

Op verzoek twee foto's van mijn ESP in de schuur, kastje open en kastje dicht.

Heteluchtverwarming loggen (pimatic deel 5)

Door K-Jay op maandag 5 december 2016 11:55 - Reacties (4)
Categorieën: Geknutsel, Home automation, Raspberry pi, Views: 6.686

Inleiding
Mijn woning wordt verwarmd met een heteluchtverwarmingssysteem van Brink. Omdat ik wel benieuwd ben wat dat apparaat allemaal uitspookt, wil ik dat inzichtelijk hebben in pimatic. Ik wil wel eens zien wanneer en hoe vaak hij aanslaat en hoe lang hij dan aanstaat.

Achtergrond
De installatie werkt als volgt.
Op zolder heb ik een normale CV-ketel (Brink Kombi Kompakt) die warm water maakt voor de verwarming en de douche. Het warme water voor de verwarming stroomt echter niet door radiatoren, maar naar een luchtverwarmer (Brink Elan). Deze zet de warmte van het water om naar warme lucht en stuurt deze naar alle uitstroomroosters in huis.
De warmtevraag wordt geregeld door een Honeywell Chronotherm Touch-thermostaat in de woonkamer.

Meten is weten
De luchtverwarmer slaat aan als de temperatuur van het aangevoerde water boven een bepaalde drempel komt. Die ligt volgens mij rond de 30 graden. Dus als ik die temperatuur kan meten, weet ik wanneer de luchtverwarmer aan is.
Ik heb een DS18B20-sensor gekoppeld aan een ESP8266 met ESPimatic. De sensor zit op de aanvoerleiding ge-tiewrapt en ESPimatic geeft elke minuut de meetwaarde door aan pimatic.

De sensor

Verwerking in pimatic
Ik kan de meetwaarden nu dus zien in pimatic. I love grafiekjes. Het temperatuurverloop is duidelijk zichtbaar.

Grafiek met meetwaarden

Nu wil ik nog in een oogopslag zien of de heteluchtverwarmer aan staat of niet. Dat kan met een variabele, twee regels en een device.

Variabele
In de variabele "vorigecvtemp" leg ik de voorlaatste meetwaarde vast. Let op, je moet deze bij het definieren even een startwaarde van nul geven.

Regels
Met deze regels stel ik vast of de of de aanvoertemperatuur aan het stijgen of aan het dalen is. Stijgend en warmer dan 30 betekent Aan, dalend betekent uit. $temp2 is overigens de doorgegeven meetwaarde.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
      "id": "heteluchtverwarming-aan-of-uit",
      "name": "Heteluchtverwarming aan of uit 1",
      "rule": "when $temp2 > 30 and $vorigecvtemp < $temp2 then $vorigecvtemp = $temp2 and $cvketel = \"Aan\"",
      "active": true,
      "logging": false
},
{
      "id": "heteluchtverwarming-aan-of-uit-2",
      "name": "Heteluchtverwarming  aan of uit2",
      "rule": "when $vorigecvtemp > $temp2 then $vorigecvtemp = $temp2 and $cvketel = \"Uit\"",
      "active": true,
      "logging": false
}


Device
Als laatste een VariablesDevice om de status weer te kunnen geven in de gui van pimatic:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
{
      "id": "heteluchtverwarming",
      "name": "Heteluchtverwarming",
      "class": "VariablesDevice"
      "variables": [
        {
          "name": "cvketel",
          "expression": "$cvketel",
          "type": "string"
        }
      ],
      "xAttributeOptions": []
}


En dan is dit het resultaat:

Status in de GUI

En verder...
Ik heb dus geen fancy slimme thermostaat, maar in mijn Honeywell thermostaat zit wel een zogenaamd "TELE"-contact. Volgens de handleiding "biedt de TELE-functie de mogelijkheid om de temperatuurinstelling op afstand, bijvoorbeeld via de telefoon, te wijzigen.". Ik zie een volgend project aankomen...