Zo gebruik ik Claude voor Home Assistant: packages, codecontrole en dashboards

·

Illustratie van een laptop met links een chatvenster en rechts een code-editor met een pijl ertussen, naast mappen, met kaartjes voor een map, een checklist, code onder een vergrootglas en een dashboard

In Claude AI in Home Assistant schreef ik over Claude als spraakassistent. Maar waar ik Claude het meest voor gebruik, is iets anders: het schrijven van mijn Home Assistant-automatiseringen met Claude, het controleren van bestaande code, en het bouwen van dashboards. Gewoon via de chat, zonder koppeling met mijn huis. In dit artikel laat ik zien hoe ik dat doe, zodat je het zelf kunt proberen, ook als je nog nooit met YAML of AI hebt gewerkt.

Mijn opzet in het kort

  • De Claude-chat, niet de integratie in Home Assistant. Claude heeft geen toegang tot mijn huis.
  • Kopiëren en plakken. Ik plak een bestand in de chat, Claude geeft een nieuwe versie terug, en die zet ik zelf in Home Assistant.
  • Packages: één YAML-bestand per onderwerp, met alles wat erbij hoort.
  • Dashboards in YAML-modus, als bestanden die Claude kan lezen en schrijven.
  • Twee controles voordat iets live gaat: Claude test de logica, en Home Assistant controleert de configuratie.

Dat kopiëren en plakken is bewust. Ik zie elke wijziging voordat hij in mijn huis terechtkomt, en Claude kan niets kapotmaken.

Stap 1: werk met packages

Standaard staan je automatiseringen in automations.yaml, je template-sensoren in configuration.yaml en je helpers in de interface. Alles wat bij één onderwerp hoort, staat dus op drie plekken. Dat is lastig om aan Claude uit te leggen.

Een package lost dat op. Het is één bestand per onderwerp, met daarin alles: helpers, template-sensoren, scripts en automatiseringen. Zet dit in je configuration.yaml:

homeassistant:
  packages: !include_dir_named packages

Maak daarna een map packages naast je configuration.yaml. Elk .yaml-bestand in die map is een package. Een eenvoudig voorbeeld, packages/wasmachine.yaml:

template:
  - binary_sensor:
      - name: Wasmachine draait
        unique_id: wasmachine_draait
        delay_on: "00:02:00"
        delay_off: "00:05:00"
        state: "{{ states('sensor.wasmachine_vermogen') | float(0) > 10 }}"

automation:
  - id: wasmachine_klaar
    alias: "Wasmachine klaar"
    triggers:
      - trigger: state
        entity_id: binary_sensor.wasmachine_draait
        from: "on"
        to: "off"
    actions:
      - action: notify.mobile_app_telefoon
        data:
          message: "De was is klaar."

Waarom dit zo goed werkt met Claude:

  • Eén bestand is de hele context. Plak je het package, dan ziet Claude alles wat bij het onderwerp hoort, inclusief de helpers en sensoren waar de automatisering op leunt.
  • Eén bestand terug. Claude geeft het complete bestand terug, en jij vervangt het in één keer. Geen losse stukjes die je op drie plekken moet invoegen.
  • Het bestand is de waarheid. Automatiseringen in een package kun je niet in de interface bewerken. Dat voelt eerst onhandig, maar het voorkomt dat je in de interface iets aanpast dat bij de volgende ronde met Claude weer wordt overschreven.

Mijn zonwering staat bijvoorbeeld in één package met helpers, twee template-sensoren en de automatiseringen.

Stap 2: geef Claude de juiste context

Het verschil tussen een bruikbaar en een onbruikbaar antwoord zit bijna altijd in wat je meegeeft. Begin een nieuw gesprek met:

  • Je Home Assistant-versie. De syntax verandert. Sinds 2024.10 heet platform: in een trigger trigger:, en service: heet action:. Zonder versie krijg je soms oude voorbeelden.
  • De echte entiteitnamen. Anders verzint Claude ze. Kopieer ze uit Ontwikkelhulpmiddelen → Toestanden, of laat een template ze opsommen (zie hieronder).
  • Het hele package waar het over gaat, niet alleen het stukje dat je wilt veranderen.
  • Wat je wilt, in gewone taal, inclusief wat er niet mag gebeuren.

Dit template plak je in Ontwikkelhulpmiddelen → Template. Het geeft een lijst van alle entiteiten in een domein, met hun toestand en eenheid, die je zo in de chat kunt plakken:

{% for s in states.sensor | selectattr('entity_id', 'search', 'wasmachine') %}
{{ s.entity_id }}: {{ s.state }} {{ s.attributes.unit_of_measurement | default('') }}
{% endfor %}

Een eerste vraag aan Claude ziet er bij mij ongeveer zo uit:

Ik gebruik Home Assistant 2026.10 met packages.
Hieronder staat packages/wasmachine.yaml en de sensoren die ik heb.

Ik wil ook een melding als de wasmachine na 3 uur nog draait.
Geen melding 's nachts tussen 23:00 en 07:00.
Geef het complete bestand terug en leg kort uit wat je hebt veranderd.

[package]
[lijst met sensoren]

Vraag altijd om het complete bestand. Dan vervang je het in één keer en kun je niets verkeerd invoegen.

Stap 3: laat Claude testen

Dit is de stap die de meeste mensen overslaan, en die mij het meest oplevert. Claude kan in de chat zelf code uitvoeren. Daarmee test hij een template vóórdat het in Home Assistant staat. Hij bootst states() en now() na in Python met Jinja2, en rekent tientallen situaties door.

Vraag het expliciet:

Test de templates in dit package met Jinja2 in Python.
Neem in elk geval mee:
- een sensor die 'unavailable' of 'unknown' is
- de grenswaarden (precies op de drempel, net erboven, net eronder)
- het moment na een herstart van Home Assistant
Zet de uitkomsten in een tabel: scenario, verwacht, uitkomst.

Bij mijn zonwering leverde dat een tabel van negentien scenario’s op, met precies de randgevallen die je in het echt pas na weken tegenkomt. Het testscript staat in het zonwering-artikel.

Stap 4: zet het in Home Assistant en controleer

  1. Maak eerst een kopie van het oude bestand, of een back-up van Home Assistant. Dan kun je altijd terug.
  2. Vervang het bestand in de map packages, bijvoorbeeld met de File editor- of de Studio Code Server-add-on.
  3. Controleer de configuratie via Ontwikkelhulpmiddelen → YAML → Configuratie controleren. Krijg je een fout, plak die letterlijk terug in de chat.
  4. Herlaad op dezelfde pagina wat je hebt veranderd: automatiseringen, template-entiteiten, helpers. Komt er een nieuw soort integratie bij, dan is een herstart nodig.
  5. Laat een nieuwe automatisering eerst uit staan en kijk een dag in de geschiedenis of de sensoren doen wat je verwacht. Pas daarna zet je hem aan.

Bestaande code laten controleren

Je hoeft niet met iets nieuws te beginnen. Een van de nuttigste dingen is een bestaande automatisering laten nakijken, zeker een die “meestal” werkt. Dit is de vraag die ik gebruik:

Controleer dit package op fouten en zwakke plekken. Let vooral op:
- triggers op een entiteit zonder to:, die ook op attributen reageren
- sensoren die unavailable kunnen zijn, en wat er dan gebeurt
- harde grenzen zonder hysterese, waardoor iets gaat pendelen
- acties die elke keer opnieuw worden gestuurd, ook als er niets verandert
- de mode van de automatisering
- eenheden: W of kW, m/s of km/h
Geef per punt: wat er mis kan gaan, hoe ernstig, en de oplossing.
Verander nog niets.

Die lijst komt rechtstreeks uit mijn eigen fouten. De oude zonwering had er vijf tegelijk, en een eenheidsfout van W en kW liet EMHASS denken dat mijn huis ’s nachts 6 kW verbruikte. “Verander nog niets” is belangrijk: eerst begrijpen, dan pas aanpassen.

Dashboards laten maken

Dashboards bouw je normaal met de muis in de interface. Dat werkt, maar het is lastig om aan Claude te laten zien. Daarom zet ik mijn dashboards in YAML-modus: dan is een dashboard gewoon een bestand. Voeg dit toe aan configuration.yaml:

lovelace:
  dashboards:
    dashboard-energie:
      mode: yaml
      title: Energie
      icon: mdi:flash
      show_in_sidebar: true
      filename: dashboards/energie.yaml

De naam van het dashboard (hier dashboard-energie) moet een streepje bevatten. Na een herstart staat het in de zijbalk. Het bestand dashboards/energie.yaml begint zo:

title: Energie
views:
  - title: Overzicht
    path: overzicht
    cards:
      - type: tile
        entity: sensor.batterij_soc
      - type: history-graph
        title: Batterij vandaag
        hours_to_show: 24
        entities:
          - sensor.batterij_soc

Wijzigingen in het bestand zie je na het verversen van de pagina; een herstart is alleen nodig als je een nieuw dashboard toevoegt. Tips voor de vraag aan Claude:

  • Zeg welke kaarten je hebt. Alleen de standaardkaarten, of ook kaarten uit HACS? Anders krijg je een kaart die bij jou niet bestaat.
  • Plak een screenshot van je huidige dashboard, of van een voorbeeld dat je mooi vindt. Claude kan afbeeldingen lezen.
  • Beschrijf het gebruik, niet alleen de inhoud. “Op mijn telefoon wil ik in één oogopslag zien of de batterij laadt en wat de prijs nu is” werkt beter dan “maak een energiedashboard”.

Twee voorbeelden uit mijn eigen huis

Zo zien twee van mijn dashboards eruit, allebei op deze manier met Claude gemaakt. Het eerste is het dagelijkse dashboard: weer, de lading van de thuisbatterij, verlichting, scènes, de zonwering en de muziek. Het tweede is een analysedashboard voor de warmtepomp. Elke grafiek beantwoordt één vraag, zoals “draait de warmtepomp op de goedkope momenten?”, en bovenaan staat in één zin hoe je de kleuren leest. Dat komt rechtstreeks uit de tip hierboven: beschrijf wat je wilt weten, niet welke kaarten je wilt.

Donker Home Assistant-dashboard met weerbericht en klok, een meter voor de batterijlading, twee thermostaten, schuifregelaars voor de lampen beneden, knoppen voor scènes en zonwering, en een mediaspeler
Mijn dagelijkse dashboard, als YAML-bestand gemaakt met Claude.
Lang analysedashboard van de warmtepomp met grafieken voor aanvoer en retour, vermogen en COP, debiet, Tibber-prijs, binnen- en buitentemperatuur, en dagtotalen over dertig dagen
Het analysedashboard van de warmtepomp: negen grafieken, van aanvoertemperatuur tot COP en stookkosten per dag. Klik voor de volledige grootte.

Waar je op moet letten

  • Plak geen geheimen. Geen secrets.yaml, geen tokens, wachtwoorden, IP-adressen van buiten of je huisadres. Vervang ze door een plaatshouder.
  • Claude verzint soms entiteiten of opties. Vooral als je ze niet meegeeft. De config-check vangt een deel af, maar een verkeerde entiteitnaam is geldige YAML. Kijk daar zelf naar.
  • Eén onderwerp per gesprek. Een lang gesprek over vijf packages raakt de draad kwijt. Begin liever opnieuw en plak de laatste versie.
  • Jij blijft verantwoordelijk. Lees wat je plakt, zeker bij iets dat schakelt. Voor kritieke sturing, zoals een batterij of warmtepomp, geldt hetzelfde als in het vorige artikel: Claude mag de code helpen schrijven, maar de code zelf moet voorspelbaar en getest zijn.

Samengevat

  1. Zet je configuratie in packages: één bestand per onderwerp.
  2. Geef Claude je versie, je echte entiteitnamen en het hele package.
  3. Vraag om het complete bestand terug, en om tests van de templates.
  4. Maak een kopie, vervang, controleer de configuratie en herlaad.
  5. Laat nieuwe automatiseringen eerst een dag meekijken voordat ze schakelen.

Nog geen Home Assistant? Begin bij Wat is Home Assistant?

Wat ik gebruik

Dit artikel bevat een affiliate-link. Als Amazon-partner verdien ik aan in aanmerking komende aankopen. Voor jou verandert de prijs niet.


Dit werkt in mijn situatie: de Claude-chat, kopiëren en plakken, packages en dashboards in YAML-modus. Syntax en menu’s veranderen per versie van Home Assistant. Controleer het tegen je eigen documentatie, en lees altijd wat je plakt. Stand: oktober 2026.


Lees ook


Reacties

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *