ID.nl logo
Makkelijk switchen tussen AI-taalmodellen? Maak kennis met Jan
© ProGeraldo - stock.adobe.com
Huis

Makkelijk switchen tussen AI-taalmodellen? Maak kennis met Jan

OpenAI heeft het met ChatGPT het concept van een AI-chatbot populair gemaakt. Ook andere bedrijven bieden soortgelijke diensten aan. Daarnaast zijn er grote taalmodellen beschikbaar waarmee je zelf een chatbot kunt maken die op je eigen computer draait. Met Jan krijg je toegang tot al deze taalmodellen vanuit één interface.

Na het lezen van dit artikel weet je hoe je met Jan meerdere taalmodellen op je pc kunt beheren en hoe je ermee kunt werken:

  • Installeer Jan
  • Download de gewenste taalmodellen
  • Ga ermee aan de slag:
    • Vat pdf-documenten samen
    • Laat beschrijven wat er op een afbeelding te zien is
    • Laat je helpen bij programmeertaken

Ook bij een lokaal taalmodel is je prompt van belang: Prompt engineering: zo maak je precies het beeld dat je voor ogen hebt

Een groot taalmodel (Large Language Model of LLM) is een neuraal netwerk met miljarden parameters dat teksten kan genereren. Dit type algoritme kreeg brede bekendheid toen OpenAI in november 2022 de dienst ChatGPT lanceerde. Via deze webinterface kun je eenvoudig chatten met het taalmodel, en de antwoorden lijken vaak alsof ze van een mens komen.

Ook de concurrentie is niet stil blijven staan. Zo biedt het Franse bedrijf Mistral AI een online chatbot op basis van een eigen groot taalmodel. Daarnaast stellen bedrijven als Groq je in staat om allerlei grote taalmodellen in de cloud te draaien. Meta, het moederbedrijf van Facebook, bracht bovendien zijn groot taalmodel Llama uit in kleinere versies, die je zelfs op je eigen computer kunt draaien. Dat werd al snel gevolgd door een reeks andere grote en kleine taalmodellen van diverse bedrijven en onderzoeksinstellingen.

Het kan lastig zijn om al deze modellen uit te proberen: je moet dan allerlei verschillende webinterfaces gebruiken of van diverse locaties modellen downloaden. Jan biedt hiervoor een oplossing: je installeert deze opensourcesoftware op je eigen computer. Daarna verbind je via een API (Application Programming Interface) met een groot taalmodel in de cloud of download je een taalmodel van bijvoorbeeld Meta of Mistral op je eigen computer om het offline te gebruiken. En dat alles in één en dezelfde gebruikersinterface, waarin je eenvoudig tussen verschillende modellen kunt overschakelen.

1 Jan installeren

Jan is beschikbaar voor Windows, macOS (Intel- of Apple-processoren) en Linux. Op de downloadpagina vind je de verschillende versies. Als je lokaal grote taalmodellen wilt draaien, heb je een krachtige computer nodig. Onder Windows en Linux betekent dat een gpu van Nvidia of AMD met minstens 8 GB VRAM. Heb je een recente Mac, dan is een Apple M1-processor of nieuwer ook snel genoeg.

Nadat je Jan hebt gestart, schakel je eerst de hardwareversnelling in. Op Macs met een Apple-processor gebeurt dat automatisch, maar voor Windows en Linux dien je dat handmatig te doen. Raadpleeg de platformspecifieke installatie-instructies om de juiste drivers en andere nodige software te installeren. Voor een Nvidia-gpu open je in Jan de instellingen (het icoontje van het tandwiel linksonder) waar je klikt op Advanced Settings en GPU Acceleration inschakelt.

Voor de beste prestaties laat je Jan gebruikmaken van je gpu.

2 Lokaal AI-model draaien

Als je een groot taalmodel op je eigen computer wilt draaien, moet je dit eerst downloaden. Klik daarvoor in Jan linksboven op het icoontje met de vier vierkantjes. Dit brengt je naar de Hub, een verzameling van modellen die je kunt downloaden. Bij de modellen die je lokaal kunt draaien, staat de bestandsgrootte en een knop Download. Als er Recommended bij staat, draait het model goed op je hardware. Staat er de waarschuwing Slow on your device, dan komt dat bijvoorbeeld omdat je gpu te weinig VRAM heeft. Klik rechts naast de downloadknop voor extra uitleg over het model en klik op Download om het model op te slaan. Download bijvoorbeeld Mistral Instruct 7B Q4. Dat is een goed algemeen model dat al op een gpu met 8 GB VRAM draait.

Zodra het model is gedownload, verandert de downloadknop in Use. Klik erop om een nieuwe ‘thread’ te starten, een conversatie met het model. Dit kan ook door op de tekstballon linksboven te klikken. Voordat je een vraag typt in het tekstveld onderaan, raden we je aan aan de rechterkant naar enkele instellingen te kijken. In het tabblad Assistant kun je onder Instructions specifieke instructies geven die de antwoorden van de chatbot beïnvloeden, zoals de rol die het moet uitvoeren. In het tabblad Model kun je het taalmodel kiezen: naast de gedownloade modellen zijn ook de modellen die je online gebruikt via een API zichtbaar. Laat de andere instellingen voorlopig op hun standaardwaarden staan (zie het kader ‘Modelparameters’ voor de betekenis ervan). Nu kun je je vraag stellen. Jan zal eerst het taalmodel in het VRAM of RAM laden, wat even kan duren. Daarna verschijnt het antwoord redelijk snel. Vervolgvragen worden hierdoor ook sneller beantwoord.

Dankzij Jan kun je met alle mogelijke grote taalmodellen chatten.

Modelparameters

Jan laat je bij elk model diverse parameters aanpassen. In het tabblad Model heb je bijvoorbeeld Inference Parameters. Met de temperatuur stel je in hoe divers of voorspelbaar de antwoorden zijn en met Top P stel je in hoe gefocust of creatief het taalmodel is. Ook het maximumaantal tokens in het antwoord kun je instellen. Bij Engine Parameters kun je bij sommige modellen ook de contextlengte kiezen, wat de maximale lengte van de invoer bepaalt. Stel dat je korte vragen stelt, dan kun je de contextlengte korter houden, waardoor de berekening sneller gaat. Wil je daarentegen een langer document laten samenvatten, dan heb je een langere contextlengte nodig. Bij grote modellen is het soms nuttig om te kiezen hoeveel lagen van het neurale netwerk je op de gpu uitvoert; de rest wordt op je (tragere) cpu berekend. Jan doet standaard al zo veel mogelijk op je gpu.

//k1-jan-model-parameters.png// Jan laat toe om allerlei parameters van de taalmodellen aan te passen.

3 AI-model in de cloud draaien

Op dezelfde manier kun je modellen in de cloud draaien bij leveranciers als OpenAI, Anthropic, Mistral, Cohere en Groq. Hiervoor moet je eerst een API-sleutel voor de desbetreffende dienst instellen. Keer daarvoor terug naar de instellingen van Jan en klik bij Model Providers op de gewenste dienst. We illustreren dit met OpenAI. Bij API Key moet je een API-sleutel invullen, die je aanmaakt op de pagina API keys van je OpenAI-account. Klik daar op Create new secret key, geef je sleutel een naam en ken ze aan een project toe (er is een Default project). Klik dan op Create secret key. Kopieer nu onmiddellijk de gegenereerde sleutel en vul die in Jan in, want je krijgt die daarna nooit meer te zien.

Je kunt nu in de Hub van Jan naar OpenAI GPT 4o gaan en ernaast op Use klikken om een nieuw gesprek te starten. Of je klikt op de tekstballon linksboven, daarna op het icoontje met het potlood om een nieuwe thread aan te maken, om vervolgens aan de rechterkant bij Model OpenAI GPT 4o uit de lijst te selecteren. Cloudmodellen waar je geen toegang toe hebt omdat je nog geen API-sleutel hebt ingesteld, zijn grijs weergegeven. Je kunt tijdens het gesprek overigens op elk moment van model veranderen. Als je bijvoorbeeld merkt dat het model niet goed genoeg is voor je vraag, verander dan het model en klik op het knopje Regenerate bij het antwoord.

Creëer een API-sleutel om OpenAI’s grote taalmodellen in Jan te gebruiken.

4 Pdf-documenten samenvatten

Als je een model met lange contextlengte gebruikt, kun je in Jan ook pdf-documenten laten samenvatten of op andere manieren analyseren. Klik daarvoor eerst in de instellingen op Advanced Settings en schakel Experimental Mode in. Je threads tonen nu aan de rechterkant ook een tabblad Tools. Schakel daar Retrieval in.

Klik nu in je thread op het icoontje van de paperclip en kies Document. Selecteer het pdf-bestand dat je wilt analyseren. Nu kun je in het tekstveld onderaan vragen stellen aan het taalmodel over dit document. Als het lijkt alsof het taalmodel de informatie niet volledig heeft verwerkt, kun je experimenteren met de parameters in het tabblad Tools. Wees overigens altijd kritisch over de antwoorden. Vaak zit het taalmodel ernaast of antwoordt het onvolledig.

Als je de datasheet van de Raspberry Pi Pico W met GPT-4o bevraagt, zijn de antwoorden helaas onvolledig.

5 Multimodaal model

Sommige modellen kunnen niet alleen overweg met tekst, maar ook met afbeeldingen. Ze kunnen bijvoorbeeld een afbeelding die je hen voorlegt beschrijven of erover redeneren. We noemen dat multimodale modellen. Een voorbeeld hiervan is LLaVA (Large Language and Vision Assistant). In de Hub van Jan zijn enkele varianten te vinden, zoals LlaVa 7B, BakLlava 1 en LlaVa 13B Q4 (voor GPU’s met meer dan 8 GB VRAM).

Na je selectie kun je een afbeelding uploaden door in een gesprek op de paperclip klikken en voor Image te kiezen. Als het niet om een multimodaal model gaat, blijft Image grijs en kun je het niet selecteren. Daarna kun je vragen stellen over de afbeelding. Helaas bleek in onze test geen van de LLaVA-modellen uit Jans Hub te werken, ook niet met een LLaVA-model dat we van Hugging Face downloadden. Het is een van de redenen waarom de ontwikkelaars van Jan nog steeds waarschuwen dat hun programma in bètafase is.

6 Modellen van Hugging Face

Hugging Face is een Frans-Amerikaans bedrijf dat met zijn Model Hub een populaire website aanbiedt waar iedereen AI-modellen kan publiceren. Jan kan deze modellen van de Hugging Face Model Hub ook lokaal draaien, zolang ze in het formaat GGUF (GPT-Generated Unified Format) worden aangeboden. We illustreren dit met Granite Code 8B, een taalmodel van IBM dat is getraind om programmeertaken uit te voeren.

Als je binnen de Hugging Face Model Hub op de pagina van een GGUF-model rechtsboven op Use this model klikt en vervolgens op Jan, krijg je de vraag om de pagina in Jan te openen. Een andere manier is om in de Hub van Jan de url van het model te plakken. Jan toont je dan informatie over het model en biedt verschillende versies ter download aan. In ons voorbeeld is er maar één versie, maar vaak zijn er verschillende kwantisaties beschikbaar (zie het kader ‘Welke modelvariant kiezen?’). Klik op de downloadknop naast het gewenste model. Zodra het is gedownload, klik je op Use om een gesprek te beginnen.

Jan kan alle GGUF-taalmodellen van Hugging Face downloaden.

7 Modellen die programmeren

Taalmodellen zoals Granite Code, Codestral, Deepseek Coder en CodeNinja zijn gespecialiseerd in alles wat met programmeren te maken heeft. Vraag bijvoorbeeld om een Python-script dat met de bibliotheek Bleak scant naar bluetooth-apparaten in de buurt, en het taalmodel toont je de code hiervoor, inclusief uitleg en instructies om de benodigde bibliotheken te installeren.

Er zijn veel apparaten die met bluetooth werken

Draadloze koptelefoons bijvoorbeeld

De code zelf wordt in afzonderlijke kaders getoond, die je met een klik op het icoontje rechtsboven kopieert, zodat je de code in je eigen code-editor kunt plakken en uitproberen. Je kunt ook code invoeren in Jan en het model vragen om deze uit te leggen. Of geef code waarvan je weet dat er een fout in zit en vraag het model om de code te verbeteren. Vaak krijg je overigens code die niet werkt, of die een foutmelding geeft. Reageer dan met de foutmelding of vertel wat er fout gaat, en je krijgt een verbeterde versie. Na wat heen en weer communiceren krijg je vaak wel een bruikbaar resultaat.

Granite Code kan je helpen bij programmeertaken.

Welke modelvariant kiezen?

De meeste modellen komen in enkele varianten. De belangrijkste eigenschap is het aantal modelparameters, wat meestal in de miljarden ligt. Veelvoorkomende aantallen zijn 7B, 8B, 13B, 33B en 70B, waarbij de B voor miljard (billion in het Engels) staat. Een grotere versie behaalt doorgaans betere resultaten, maar je hardware moet het aankunnen. Idealiter kies je een model dat volledig in het VRAM van je gpu past: dan laadt Jan dit volledig in je gpu en worden de berekeningen ook volledig versneld door de gpu. Een 7B-model past doorgaans in een gpu met 8 GB VRAM, 13B in 16 GB VRAM en 33B in 32 GB VRAM. Draai je een model dat groter is dan je VRAM, dan wordt een deel van het neurale netwerk in het RAM geladen en door de cpu uitgevoerd, wat trager is. Modellen komen ook in verschillende kwantisaties. Veelvoorkomende aanduidingen zijn f16 (16 bits kommagetallen) en int4 (4 bits gehele getallen). Een int4-model is kleiner en werkt sneller dan hetzelfde model in de f16-versie, maar is minder nauwkeurig. Ook hebben de kwantisaties weleens aanduidingen als IQ3_XS, Q2_K_L en Q5_K_M. De exacte betekenis daarvan valt buiten het bestek van dit artikel, maar Q5_K_M biedt meestal een goed evenwicht tussen snelheid en nauwkeurigheid.

8 Extra cloudmodellen toevoegen

Er komen continu nieuwe taalmodellen bij, en Jan kan dat niet altijd direct volgen. Gelukkig kun je vaak met wat handmatige configuraties de nieuwe modellen toch nog aan de praat krijgen. We illustreren dit met GPT-4o mini, de goedkopere versie van GPT-4o die OpenAI aanbiedt. Tijdens het schrijven stond deze nog niet in Jans Hub, maar je kunt deze eenvoudig toevoegen. Jan slaat de configuratie van elk model op in een bestand in zijn datadirectory. Voor OpenAI’s GPT-4o is dat bijvoorbeeld in het bestand jan\models\gpt-4o\model.json in je persoonlijke map.

Om Jan toegang te geven tot GPT-4o mini, maak je een map gpt-4o-mini aan en kopieer je het bestand model.json van GPT-4o daarnaartoe. Pas nu in dit json-bestand het id aan van gpt-4o naar gpt-4o-mini, de naam van OpenAI GPT 4o naar OpenAI GPT 4o mini en het maximumaantal tokens van 4096 naar 16384. Deze waarde vind je op de website van OpenAI bij de eigenschappen van het model. Sla het bestand op, sluit Jan af en start het programma weer op. Daarna is het model in Jan beschikbaar.

Voeg het nieuwste model van OpenAI aan Jan toe.

9 Meer mogelijkheden

Jan biedt nog heel wat meer mogelijkheden. Zo kun je het programma als server draaien en functionaliteit van de taalmodellen aan andere programma’s aanbieden. In de code-editor Visual Studio Code kun je bijvoorbeeld met de extensie Continue hulp bij het programmeren krijgen. Continue communiceert dan op de achtergrond met een taalmodel dat Jan uitvoert.

Een ander interessant programma is Open Interpreter. Dit laat een groot taalmodel code genereren die dan op je computer wordt uitgevoerd. Je kunt bijvoorbeeld aan een taalmodel van Jan vragen om een bestand met data in te lezen en daar grafieken van te maken. Verder zullen er wellicht nog meer tools komen dan enkel het inlezen van pdf-bestanden.

Jan ondersteunt allerlei integraties om de grote taalmodellen toe te passen.

▼ Volgende artikel
Bedien je slimme apparaten met een zelfgebouwd touchscreen
© InfiniteFlow - stock.adobe.com
Huis

Bedien je slimme apparaten met een zelfgebouwd touchscreen

Houd je van knutselen én automatiseer je alles in en om je huis met Home Assistant? Kijk dan zeker eens naar ESPHome. Je kunt eindeloos variëren met componenten. Dankzij de koppeling met Home Assistant bouw je gemakkelijk en voor weinig geld een lichtschakelaar of sensor, om maar wat te noemen. De LVGL-bibliotheek zorgt ervoor dat je nu ook eenvoudig met een touchscreen en zelfbedachte gebruikersinterface kunt werken. We laten zien hoe dat werkt met tips voor passende projecten.

In dit artikel laten we zien hoe je een touchscreen-interface bouwt voor Home Assistant met ESPHome en LVGL:

  • Installeer ESPHome en configureer een ESP32-microcontroller voor je project
  • Sluit een touchscreen aan en stel de juiste GPIO-pinnen en drivers in
  • Gebruik LVGL-widgets voor een interactieve interface
  • Integreer je touchscreen met Home Assistant voor directe bediening van je slimme apparaten

Lees ook: 5 fouten die je niet moet maken in je smarthome

Code downloaden

In dit artikel staat een voorbeeld van wat YAML-code. Omdat YAML erg gevoelig is voor foute spaties, kun je die code beter downloaden en daarna bekijken of kopiëren. In het bestand espcode.txt staan alle regels voorbeeldcode zoals ze in dit artikel aan bod komen. Maar je vindt ook een uitgewerkt voorbeeld in het bestand cyd-demo.yaml. Beide bestanden zijn hier te downloaden.

Uitgewerkt voorbeeld

Het meest uitgewerkte voorbeeld voor de demo met LVGL vind je op deze GitHub-pagina van auteur Gertjan Groen. In de code die je kunt downloaden (ook in het losse bestand cyd-demo.yaml) hebben we ook de RGB-led op de achterzijde toegevoegd, die je bijvoorbeeld als statusmelding kunt gebruiken. Verder is een timer toegevoegd om de backlight te regelen, zodat deze bij inactiviteit wordt uitgeschakeld. Tot slot laten we zien hoe je de GPIO-pinnen kunt gebruiken via de I2C-bus. Op de GitHub-pagina vind je nog meer handige informatie.

ESPHome maakt het heel makkelijk om apparaten te maken voor een slim huis, zoals je eigen sensors. Zo bouwden we eerder al eens een luchtkwaliteitsmonitor, een infraroodzender/ontvanger en een controller met drukknoppen en leds, waarmee je apparaten kunt bedienen en de status aflezen. Hoe je dat doet, lees je in dit artikel: Zo maak je met ESPHome apparaten geschikt voor je smarthome.

De basis voor ESPHome is een kleine, voordelige en zuinige microcontroller, meestal de ESP32. ESPHome ondersteunt enorm veel componenten en biedt daardoor haast onbegrensde mogelijkheden. We helpen je kort op weg met ESPHome, maar gaan ook meteen een stapje verder met de toevoeging van een touchscreen en de LVGL-bibliotheek. Daar kun je sinds augustus 2024 officieel gebruik van maken binnen ESPHome.

Met LVGL kun je aan de hand van widgets een grafische gebruikersinterface opbouwen en weergeven (zie kader ‘Grafische interfaces met widgets’). Soms kom je de term HMI (Human Machine Interface) tegen, waarmee een grafische gebruikersinterface voor het bedienen van apparatuur wordt bedoeld.

De kracht van ESPHome is dat je niet alleen lokaal aangesloten apparaten bedienbaar kunt maken, bijvoorbeeld via een relais, maar ook alle apparaten die je binnen Home Assistant gebruikt.

Grafische interfaces met widgets

LVGL staat voor Light and Versatile Graphics Library. Het is een opensource-bibliotheek die sinds 2016 bestaat. Je kunt ermee werken binnen ESPHome, Arduino, Tasmota en openHASP. Het laatste project is zelfs specifiek bedoeld voor microcontrollerfirmware met LVG.

De bibliotheek is heel licht, waardoor het soepel en snel kan werken op apparaten met beperkte capaciteit, bijvoorbeeld met een microcontroller. Bovendien kan LVGL flexibel met verschillende lay-outs, schermformaten en invoermethodes werken. Naast touchscreens kun je ook bijvoorbeeld muis, toetsenbord, losse knoppen en draaiknoppen toevoegen.

Via meer dan dertig widgets kun je een grafische gebruikersinterface opbouwen. Het uiterlijk is via thema’s en stijlen eenvoudig aan te passen. Bovendien kun je met animaties werken.

LVGL wordt gebruikt in slimme apparaten zoals thermostaten, smartwatches en keukenapparatuur, en zelfs in touchscreens voor industriële omgevingen. Op de website vind je enkele interactieve demo’s voor bekende toepassingen, waarbij de gebruikersinterface in de browser wordt getoond.

Met LVGL kun je via widgets een gebruikersinterface bouwen.

1 Wat gaan we doen?

Met ESPHome kun je relatief eenvoudig apparaatjes voor je slimme huis maken. Een voordeel ten opzichte van bijvoorbeeld Arduino en MicroPython is dat je niet hoeft te programmeren. Je hoeft alleen een configuratiebestand te maken waarin je de gebruikte microcontroller, verbindingsgegevens voor je wifi-netwerk en alle aangesloten componenten aanduidt. Hierna wordt firmware gemaakt en weggeschreven op je microcontroller. Alleen die eerste keer is dit soms wat lastig. Heb je het eenmaal werkend? Alle keren erna kun je heel eenvoudig de configuratie aanpassen en over-the-air (OTA) naar de microcontroller sturen.

In dit artikel gaan we met LVGL werken. Hiermee kun je binnen ESPHome grafische interfaces maken via widgets. Voor veel projecten zul je daarom niet eens componenten hoeven aan te sluiten, maar heb je genoeg aan een touchscreen. Denk bijvoorbeeld aan een lichtknop en helderheidsregeling voor een slimme lamp in Home Assistant, zoals we in dit artikel demonstreren. Je kunt natuurlijk ook geavanceerdere gebruikersinterfaces maken voor vrijwel elk apparaat in Home Assistant.

©pozitivo - stock.adobe.com

Je kunt bijvoorbeeld zelf een gebruikersinterface voor je slimme lampen bouwen, zodat je ze eenvoudig kunt bedienen.

2 Wat heb je nodig?

Wat hardware betreft, is het vrij eenvoudig. De ESP32-chip heeft snel de voorkeur boven de verouderde ESP8266-versie, zeker als je met een touchscreen gaat werken. De Raspberry Pi Pico W (zie gelijknamig kader) is ook een optie, maar die wordt nog niet volledig ondersteund binnen ESPHome.

Makkelijk om mee te starten is een eenvoudig ontwikkelbordje rondom de ESP32 dat je voor ongeveer 5 euro kunt aanschaffen. Het is wel fijn als je hier goede documentatie bij hebt, zodat je op zijn minst weet waar alle aansluitingen zitten.

Er zijn diverse varianten van de ESP32-module. Bekende opties zijn de ESP-WROOM-32E, ESP32-C3 en ESP32-S3. De ESP32-C3 wordt vaak in extra compacte bordjes gebruikt, die je onder de naam ‘super mini’ tegenkomt – handig als je niet veel aansluitingen nodig hebt of niet veel ruimte hebt.

De ESP32-S3 is een fijne optie vanwege de beschikbaarheid van PSRAM (Pseudo Static RAM), een voordelig type werkgeheugen dat onder meer nuttig is bij grafische toepassingen. Staat een touchscreen centraal in jouw project en wil je snel van start, overweeg dan een model met ingebouwde ESP32-chip (zie volgende paragraaf).

De ESP32-module is in verschillende uitvoeringen verkrijgbaar.

Raspberry Pi Pico W

De Raspberry Pi Pico is een voordelige en flexibele serie ontwikkelbordjes rondom de RP2040-microcontroller. De eerste versie verscheen in januari 2021. De Pico W is vanwege de wifi-connectiviteit een interessante optie voor ESPHome. Recent werd de Pico 2 W aangekondigd die op meerdere fronten is verbeterd. Dat model is op het moment van schrijven echter nog niet geschikt voor ESPHome.

De Raspberry Pi Pico W is ook bruikbaar in Home Assistant.

3 Touchscreen

Als je een touchscreen gaat gebruiken in je ESPHome-project, dan kun je eventueel een los exemplaar op de microcontroller aansluiten en configureren. Maar je kunt ook een touchscreen met ingebouwde ESP32 kiezen. Dat is vaak veel handiger en goedkoper. Je hoeft niet te solderen en kunt direct een gebruikersinterface bouwen in YAML-code. Het scheelt ook wat tijd. Bovendien zijn er zelfs modellen compleet met behuizing.

Kies een scherm dat door ESPHome wordt ondersteund. De website van ESPHome geeft goede suggesties. Je kunt ook afgaan op ervaringen van anderen. Het kan dan een iets grotere uitdaging zijn om de juiste configuratie voor je display in ESPHome te vinden. Je zult daarbij waarschijnlijk wel even moeten experimenteren, niet alleen bij het instellen van je display, maar ook bijvoorbeeld voor het touchgedeelte. Zelfs bij het vrij gangbare touchscreen dat we in dit artikel gebruiken, was dat een beetje prutsen.

Kies een touchscreen dat door ESPHome wordt ondersteund.

4 Scherm met ESP32

Voor dit artikel hebben we een eenvoudige ESP32-2432S028 gebruikt, met een resistief touchscreen van 2,8 inch met 240 × 320 pixels. Dit model wordt ook wel de ‘Cheap Yellow Display’ genoemd, wat vooral met de gele printplaat te maken heeft.

Er zijn meerdere varianten. Zo wordt in de schermpjes vaak de ILI9341-chip als aansturing gebruikt, maar soms ook de ILI9342, zoals in ons exemplaar. Dat vergt dan een heel kleine, maar noodzakelijke aanpassing in je configuratie.

Je kunt het scherm flexibel inzetten voor je IoT-projecten. Zoek je een wat groter touchscreen, dan kun je bijvoorbeeld de CrowPanel van Elecrow overwegen. Die is er in een versie van 5 inch (ca. 32 euro) en 7 inch (ca. 42 euro), inclusief acrylbehuizing en verzending via de fabrikant. Beide versies hebben een touchscreen met hoge resolutie van 800 × 480 pixels en zijn voorzien van de modernere ESP32-S3-chip. Het touchscreen is capacitief, wat zeker voor kleinere bedieningselementen fijner werkt dan het resistieve touchscreen in ons goedkope alternatief.

Tegenwoordig bestaan er ook ronde touchscreens. Een leuke optie (zij het met beperkte schermruimte) is de ESP32-2424S012 met een ESP32-C3-microcontroller, een rond kleuren-touchscreen van 1,28 inch en in een witte of zwarte behuizing. Makerfabs heeft een vergelijk schermpje zonder behuizing. De LilyGo T-RGB heeft een wat groter 2,1inch-scherm (zonder behuizing), maar is ruim twee keer zo duur.

De ESP32-2432S028 is een voordelig scherm (onder), een wat duurder alternatief is het capacitieve 5inch-aanraakscherm met ESP32 van Elecrow (boven).

5 Add-ons voor ESPHome

Hoewel je bijvoorbeeld een pc met Python kunt gebruiken voor het bewerken van je configuratiebestanden en het flashen van de microcontroller met de software voor ESPHome, is het meestal veel makkelijker om de add-on voor ESPHome binnen Home Assistant te gebruiken. Dat geeft ook een ander groot voordeel: je kunt de configuratie voor alle apparaten met ESPHome binnen Home Assistant beheren. Je zult zeker in de testfase veel wijzigingen aan de configuratie moeten maken.

Via de add-on voor ESPHome voeg je eenvoudig microcontrollers toe.

6 Microcontroller toevoegen

We gaan nu een verse microcontroller toevoegen. Je kunt eventueel ESPHome Web gebruiken om de microcontroller voor te bereiden voor gebruik met ESPHome, maar wij geven zoals gezegd de voorkeur aan de ESPHome-add-on, die je binnen Home Assistant kunt openen.

Je kunt voor deze methode de microcontroller gewoon via usb aansluiten op je eigen pc, maar dit vereist wel dat je Home Assistant opent via een beveiligde https-verbinding. Lukt dat niet? Als alternatief kun je de microcontroller ook via usb aansluiten op het systeem met Home Assistant zelf, voordat je verder gaat in ESPHome.

Het dashboard van ESPHome toont alle toegevoegde apparaten.

Ook leuk: Werk met wat je hebt: creëer je eigen alarmsysteem met Home Assistant

7 Configuratie

Klik binnen ESPHome op New device om een nieuwe microcontroller te initialiseren. Vul bij Name een naam in voor het apparaat. Bij Network name vul je de naam (SSID) in van het wifi-netwerk waarmee de microcontroller moet verbinden en bij Password het bijbehorende wachtwoord. Klik dan op Next.

In de volgende stap zal ESPHome een configuratiebestand maken, firmware bouwen en de microcontroller flashen. Klik daarvoor dus eerst op Connect. Als het goed is, kun je nu de com-poort selecteren waarmee de microcontroller is verbonden. Zie je geen com-poort, dan zul je eerst drivers moeten installeren. De instructies krijg je als je het venster sluit zonder een com-poort te selecteren. Als de verbinding is gelukt, zal de installatie verdergaan. Lukt het niet? Dan kun je kiezen voor Skip this step gevolgd door een handmatige configuratie.

Vul een naam in en de details voor het wifi-netwerk.

Toepassingen voor een touchscreen

Er zijn veel leuke toepassingen voor een touchscreen. Zo kun je bijvoorbeeld een soort weerstation maken, dat je voorziet van actuele informatie van Home Assistant. Ook kun je live de opbrengst van je zonnepanelen laten zien of het verbruik in huis. Je zou een schermpje voor Music Assistant kunnen maken met bijvoorbeeld de weergave van het nummer en volumeregeling (zie ook: Met Music Assistant ben jij de baas over jouw muziekcollectie). Tot slot kun je een scherm gebruiken voor statusmeldingen of loggegevens.

8 Touchscreen met ESP32

We gebruiken in dit artikel zoals gezegd de ESP32-2432S028 als voorbeeld. Dit is een touchscreen met ingebouwde ESP32-chip. Dit apparaatje kun je direct toevoegen aan ESPHome: precies zoals in paragraaf 7 staat omschreven, al moesten we in dit geval na het aanwijzen van de com-poort wel de boot-knop even indrukken.

Overigens bevat het apparaat meestal een voorgeprogrammeerde demo met een gebruikersinterface op basis van LVGL. Die zie je als je hem zo uit de doos op een voeding aansluit. Je kunt daarmee meteen de werking controleren. Je zult bij een model met resistief aanraakscherm overigens iets harder moeten drukken dan je misschien gewend bent.

We gebruiken dit voordelige 2,8inch-aanraakscherm, dat ook wel ‘Cheap Yellow Display’ wordt genoemd.

9 Schermconfiguratie

Na het toevoegen van je touchscreen heb je direct een basisconfiguratie voor ESPHome. Via Edit kun je deze configuratie aanpassen. Zowel voor het aansturen van het display als de registratie van het aanraken wordt SPI (Serial Peripheral Interface) gebruikt. Voor onze ESP32-2432S028 is dit de configuratie, rekening houdend met de gebruikte interne GPIO-pinnen:

We voegen nu eerst de configuratie van het display toe en in paragraaf 11 het touchgedeelte. Voor het display is de configuratie als volgt:

Merk op dat er ook een (oudere) variant van dit touchscreen is met de ILI9341. In dat geval gebruik je model: ILI9341 en invert_colors: false. Na het maken van de aanpassingen kies je Install. Je kunt nu kiezen hoe je de firmware wilt overbrengen. Meestal kies je Wirelessly voor over-the-air-updates. Het apparaat hoeft daarbij niet meer met jouw pc te zijn verbonden.

Binnen ESPHome kun je eenvoudig de configuratie bewerken.

10 LVGL-bibliotheek

Binnen ESPHome kon je voorheen met displays werken door binnen de component display met lambda bijvoorbeeld teksten met een bepaald lettertype naar je scherm te sturen. Als je LVGL gaat gebruiken, gebruik je geen lambda meer, maar alleen LVGL en widgets. Als eerste voegen we de LVGL-bibliotheek toe aan de YAML-code:

lvgl:
  buffer_size: 25%

De optie buffer_size is ons geval noodzakelijk, vanwege de afwezigheid van PSRAM. In paragraaf 13 voegen we ook nog widgets toe. Omdat we dat hier nog niet hebben gedaan, zie je na het flashen als het goed is een demo met een knop, checkbox, cirkel met tekst en schuifbalk.

11 Configuratie touchscreen

Bediening via het scherm is nog niet mogelijk. Daarvoor moeten we het touchscreen toevoegen aan de configuratie van ESPHome:

Bewaar de aanpassingen en installeer de nieuwe firmware. Controleer of je de demo goed kunt bedienen. De regels onder on_touch zorgen dat in de logs de geregistreerde coördinaten worden getoond. Er kunnen aanpassingen nodig zijn in de regels onder calibration en transform.

12 Backlight

Het display is voorzien van een achtergrondverlichting (backlight) via pin 21. We definiëren deze output als volgt:

Daarna configureren we de achtergrondverlichting, waarbij we verwijzen naar de hierboven gedefinieerde output.

Na het flashen zal de backlight standaard aanstaan. Eventueel kun je deze vanuit Home Assistant aan- en uitzetten en de helderheid ervan regelen, bijvoorbeeld op basis van afwezigheid. Je kunt ook een script maken om de helderheid bij inactiviteit terug te brengen. Daarvoor verwijzen we je naar het uitgewerkte voorbeeld op GitHub (zie kader ‘Code downloaden’).

Binnen Home Assistant kun je eventueel ook de backlight aan- en uitzetten.

13 Widgets toevoegen

Onder de regel lvgl kun je nu de gewenste LVGL-componenten toevoegen aan je YAML-configuratie. Denk aan bijvoorbeeld knoppen, schuifregelaars, grafieken of labels. In dit voorbeeld voegen we aan de bovenkant alleen twee widgets toe voor een dimbare led, te weten een schakelaar (button) en schuifregelaar (slider).

De meeste opties dienen voor het positioneren van de widget. We geven bijvoorbeeld de breedte (width) en hoogte (height) aan, halen de widgets iets van de rand of met x en y, en regelen de uitlijning met align. Het gedeelte bij on_click zorgt dat de bewuste lamp in Home Assistant wordt omgeschakeld bij het klikken op de button. Voor de slider doen we hetzelfde onder on_release. Die acties zijn overigens om veiligheidsredenen niet direct mogelijk. In paragraaf 16 leggen we uit hoe je dit kunt toestaan.

We voegen in dit voorbeeld alleen twee eenvoudige widgets toe.

Cookbook voor ESPHome en LVGL

We houden het hier redelijk eenvoudig, maar je kunt natuurlijk veel geavanceerdere gebruikersinterfaces maken. Zo is bijvoorbeeld een geneste structuur mogelijk, kun je op verschillende manieren een grid maken, en met pagina’s individuele schermen of secties in je gebruikersinterface maken. Daarbij kan elke pagina zijn eigen widgets hebben. ESPHome geeft op zijn website in een ‘cookbook’ nog wat praktische voorbeelden voor het werken met LVGL, ook in combinatie met Home Assistant.

De website van ESPHome heeft veel voorbeelden voor het werken met LVGL.

14 Interactie met Home Assistant

De entiteit voor de dimbare lamp heeft in Home Assistant de naam light.wledkantoor. De waardes zijn nodig om de widgets de juiste status te kunnen geven. Daarom voegen we hieronder een binary_sensor toe voor de status (aan of uit) en een sensor voor het helderheidsniveau. We werken vervolgens bij on_state en on_value de widgets bij als de status verandert in Home Assistant. Bij id vul je uiteraard de id van de betreffende widget in.

Gebruik de logfunctie om te zien of bijvoorbeeld een status verandert.

15 Toevoegen aan Home Assistant

De add-on voor ESPHome hebben we gebruikt om de microcontroller van firmware te voorzien. Maar je zult het apparaat hierna nog wel moeten toevoegen aan Home Assistant. Dat is heel eenvoudig: het wordt automatisch gevonden. In Home Assistant zie je via Instellingen / Apparaten en diensten het bewuste apparaat direct terug op het tabblad Integraties. Klik op de knop Toevoegen om het aan Home Assistant toe te voegen.

Het apparaat met ESPHome moet je nog toevoegen aan Home Assistant.

16 Acties toestaan

Als je het touchscreen bedient, zal Home Assistant een melding geven dat het ESPHome-apparaat heeft geprobeerd een actie in Home Assistant uit te voeren. Standaard is dit om veiligheidsredenen niet toegestaan, maar dit is eenvoudig op te lossen.

Ga naar Instellingen / Apparaten en klik dan onder het kopje Geconfigureerd op ESPhome. Achter het bewuste apparaat klik je vervolgens op Configureren. Zet een vinkje bij Toestaan dat het apparaat Home Assistant-acties uitvoert. Klik op Verzenden. Hierna zijn alle acties zoals het omschakelen van de lamp en regelen van de helderheid wel toegestaan.

Zorg dat het apparaat acties in Home Assistant mag uitvoeren.

▼ Volgende artikel
Slimme stekkers: welke modellen zijn echt zuinig?
© Proxima Studio - stock.adobe.com
Huis

Slimme stekkers: welke modellen zijn echt zuinig?

Met slimme stekkers verander je je huis eenvoudig in een smart home: steek ze in een gewoon stopcontact, sluit er lampen of je televisietoestel op aan en regel via een app of met je stem bijvoorbeeld dat ze automatisch worden uitgeschakeld. Zo voorkom je onnodig stroomverbruik doordat apparaten niet meer op stand-by blijven staan. Maar slimme stekkers gebruiken zélf ook stroom. Welke zijn zuinig genoeg om écht geld te besparen?

Energie besparen en slimme apparaten gaan uitstekend samen. In dit artikel lees je hoe je geld bespaart door gebruik te maken van de zuinigste slimme stekkers. • Slimme stekkers en stroomverbruik • De zuinigste slimme stekkers op een rij • Waar je op moet letten bij het kopen van slimme stekkers

Ook lezen: Stroomvreters: deze apparaten in huis verbruiken meer energie dan je denkt


Slimme stekker of slim stopcontact?

De termen slimme stekker en slim stopcontact worden door elkaar gebruikt. Dat is een beetje verwarrend, maar wel begrijpelijk: het is een apparaat met aan de ene kant een stekker (voor je 'domme' stopcontact) en aan de andere kant een slim stopcontact. In dit artikel hanteren we de benaming slimme stekker.


Zo bespaart een slimme stekker stroom

Een slimme stekker helpt je stroom besparen door apparaten automatisch uit te schakelen, bijvoorbeeld 's nachts. Zo verbruikt je televisie geen stroom meer in de stand-bymodus. Je kunt instellen dat alle apparatuur op vaste tijden uitschakelt, bijvoorbeeld zodra je gaat slapen. Je kunt ook met één druk op de knop alle lampen en andere apparaten uitschakelen, zodat je niets vergeet. Slimme stekkers uit een hogere prijsklasse bieden bovendien inzicht in je stroomverbruik. Daardoor kun je gerichter energie besparen.

©Proxima Studio - stock.adobe.com

Verbruik van een slimme stekker

Tegenover de besparing staat het eigen stroomverbruik van slimme stekkers. Dat begint bij zo'n 0,3 watt en loopt op tot 2 watt. Niet veel, maar ze staan wel 24 uur per dag en 365 dagen per jaar aan. De zuinigste modellen verbruiken daardoor op jaarbasis 2,6 kWh (0,3 watt × 24 uur × 365 dagen ÷ 1000). Bij een stroomprijs van 0,30 euro per kWh komt dat neer op 0,79 euro per jaar. Een slimme stekker die 2 watt verbruikt kost op jaarbasis 5,26 euro. In een slim huis gebruik je al snel 10 slimme stekkers, waardoor je op jaarbasis aardig wat geld kunt besparen door de zuinigste modellen uit te kiezen.

Kies niet alleen op prijs, maar ook op verbruik Vergelijk je het jaarlijkse stroomverbruik met de aanschafprijs van een slimme stekker (meestal tussen de 5 en 35 euro), dan blijkt al snel dat vooral het stroomverbruik bepalend is voor de totale kosten op de lange termijn. Toch vermelden veel verkopers niets over het energieverbruik.

Denk aan de compatibiliteit

Alleen letten op het stroomverbruik van een slimme stekker is niet genoeg. Het is minstens zo belangrijk dat de stekker goed samenwerkt met jouw slimme netwerk. De meeste modellen werken met Google Home en Amazon Alexa, terwijl Apple HomeKit selectiever is. Check daarom altijd de productbeschrijving om zeker te weten dat de slimme stekker bij jou thuis werkt.

Slimme stekkers die samenwerken met

Google Assistant en met Alexa

Stroomverbruik en verbindingstype

Waar komt het grote verschil in stroomverbruik tussen slimme stekkers vandaan? Dat heeft alles te maken met de verbinding met je thuisnetwerk. De meeste stekkers gebruiken wifi om bereikbaar te blijven, zodat jij ze op afstand kunt bedienen. Maar wifi verbruikt relatief veel energie – het signaal is eigenlijk krachtiger dan nodig is voor dit soort toepassingen.

Een zuiniger alternatief is een hub die het wifisignaal omzet naar een lichter protocol, zoals Zigbee of Z-Wave. Die vormen een soort schakel tussen je netwerk en de slimme stekkers. Het grote voordeel: dit soort verbindingen verbruiken vaak minder dan 0,5 watt.

©Proxima Studio - stock.adobe.com

Zigbee en Z-Wave

De zuinige protocollen die gebruikt worden zijn Zigbee en Z-Wave en die werken allebei prima. Maar ze zijn niet verenigbaar met elkaar. Je zult dus één systeem moeten kiezen. Daarnaast heb je een centrale hub nodig om alles aan elkaar te koppelen. Dat is een kleine investering die zich, door de lagere stroomkosten, snel terugverdient.

Slimme stekkerVerbruik (watt)Protocol
TP-Link Tapo P1151 – 1,5Wifi
TP-Link Tapo P1000,5 – 1Wifi
Shelly Plug S0,9 – 1,5Wifi
Iqore Smart Plug1 – 2Wifi
Aqara Smart Plug0,3 – 0,5Zigbee
Philips Hue Smart Plug0,3 – 0,5Zigbee
IKEA TRETAKTSmart Plug0,3 – 0,5Zigbee
Samsung SmartThings Outlet0,5 – 1,5 WZigbee
Fibaro Wall Plug V20,5 – 1Z-Wave
Qubino Smart Plug0,5 – 1Z-Wave

Verbruik van hubs voor Zigbee en Z-Wave

Voor een compleet beeld moeten we ook kijken naar het stroomverbruik van een Zigbee- of Z-Wave-hub. Zigbee-hubs verbruiken doorgaans tussen de 0,5 en 3 watt. Sluit je meerdere slimme stekkers of andere apparaten aan, dan verdien je dat al snel terug ten opzichte van wifi. Z-Wave-hubs verbruiken wat meer, meestal tussen de 2 en 10 watt.

Ook qua veelzijdigheid zijn er verschillen. De Philips Hue Bridge (Zigbee) is bijvoorbeeld erg zuinig, met een verbruik tussen de 0,5 en 1 watt. Maar deze werkt uitsluitend met Philips Hue-apparaten.

Een slimme start is het halve werk

Zoals je ziet, zijn er heel wat factoren om rekening mee te houden. Breng daarom vooraf in kaart wat je nu nodig hebt én wat je in de toekomst verwacht te gebruiken. Zo voorkom je onnodige kosten en bespaar je op de lange termijn, vooral als je ook let op het energieverbruik per apparaat.


Nog meer energie besparen? ⤵️

Vraag een offerte aan voor verduurzaming: