Tutte le sediSmart o inutile?Costruito con Claude

252 script dopo: cosa sapeva fare Claude e cosa no

Tre appartamenti, tre istanze, 252 script di servizio — costruiti con Claude come compagno di lavoro. Com è fatta la catena, e la regola senza la quale non regge.

Quello che è nato in tre mesi si può contare:

Appartamenti 3
Istanze di Home Assistant 3
Script di servizio, numerati 252
File di documentazione uno per tema, alcuni oltre 1000 righe

L’ho costruito con Claude come compagno di lavoro. Questa è la risposta onesta alla domanda su come si mette in piedi una cosa del genere — compresi i punti in cui è andata storta.

Primo passo: Claude deve vedere l’impianto

Ci sono due strade, e fanno cose diverse.

Script attraverso l’interfaccia. La via normale. Ogni script fa esattamente una cosa ed è ripetibile. Il numero davanti non è un sistema di archiviazione, è l’ordine di nascita:

10_verbindung.py        per primo: l istanza risponde?
13_ssh.py               poi: accesso al file system
43_reservierungen.py    molto dopo: verificare gli indirizzi fissi

Chi legge i numeri legge la storia della casa. Sembra contabilità ed è l’effetto collaterale più utile di tutta la faccenda.

MCP — il filo diretto. Configurato il 28.08.2026. Così Claude parla direttamente con l’istanza, invece di scomodare ogni volta uno script:

Claude  ──stdio──▶  mediatore  ──SSE──▶  Home Assistant  ──▶  Assist

Verificato con uno script di prova: 21 strumenti, tra cui accendere, impostare una luce, impostare una temperatura obiettivo e interrogare lo stato attuale.

Tre cose da cui dipende

Niente di tutto questo sta in una guida, e tutte e tre sono costate tempo.

Il nome deve essere univoco. Sotto home-assistant era già registrata Merano. Vienna ha quindi avuto un nome proprio, perché le due potessero coesistere. Con un appartamento è irrilevante, con tre no.

Un conflitto di versioni che sembra un errore di programma. Il mediatore non va d’accordo con la nuova versione principale della libreria sottostante:

ImportError: cannot import name 'request_ctx'

La soluzione non è retrocedere l’installazione globale, ma un ambiente separato e isolato con la versione giusta. La stessa combinazione gira ora in due appartamenti.

Il token va nell’ambiente, non sulla riga di comando. Il mediatore lo legge da lì e ne ricava l’intestazione di autorizzazione. Così non compare in nessun elenco di processi — una differenza che si nota solo quando al computer siede qualcun altro.

Cosa Claude può vedere lo decidi tu

È la parte che ritengo più importante. La portata la stabilisce esclusivamente l’abilitazione in Home Assistant, non Claude.

Al momento della configurazione a Vienna erano esposte 117 entità:

Numero Tipo
45 scene
26 luci
25 sensori
12 clima
4 interruttori
5 altro

Sirene e telecamere non ci sono — quelle Home Assistant non le espone da sé.

E un punto che ho lasciato aperto di proposito e messo per iscritto: l’interruttore «esponi automaticamente le nuove entità» a Vienna era attivo. Se più avanti arrivasse una serratura, sarebbe subito comandabile a voce e da Claude — le serrature sono tra i domini che Home Assistant espone da sé.

A Merano quell’interruttore è esplicitamente spento, proprio per questo. A Vienna è rimasto attivo perché in casa non c’è nessuna serratura. Quella decisione va presa prima della prima serratura, non dopo.

La portata di un assistente non è una proprietà dell’assistente. È un’impostazione di casa tua.

E adesso la parte onesta

In questo progetto si sono presentati tre tipi di errore, tutti documentati, tutti costosi.

Il riassunto al posto della fonte

Il peggiore. Nel progetto c’era un documento strategico riassuntivo, e si lavorava da quello — comodo, perché aveva tutto in un posto solo.

Misurato dopo: 18 file per complessive 20.199 righe erano più recenti nei contenuti di quel riassunto. Tre dei primi tre articoli di questo blog ne hanno ricavato errori di fatto. Uno descriveva come in corso un progetto concluso da settimane.

Il rimedio sta ora nell’intestazione di ogni articolo: un campo con file di origine e data di verifica. In più un indice generato che segnala quali documenti non vengono mai citati.

Il valore restituito al posto dello stato

Uno script di installazione ha segnalato un’interruzione con messaggio d’errore vuoto. Il componente era installato lo stesso — l’interfaccia segnala un errore non appena la risposta non è JSON.

Da allora nei tre appartamenti vale: dopo una chiamata in scrittura si misura lo stato. Di più in La prima misura è arrivata prima della prima integrazione.

Lo schema ricavato da due punti di misura

Due scansioni della rete, 14 apparecchi su 24 con indirizzo nuovo, quasi tutti di esattamente +2. Uno schema, annotato per bene — e crollato al terzo punto di misura, perché un apparecchio era tornato dove aveva cominciato. Tutta la storia in Per tredici ore la chiusura è dipesa dal cloud.

Tutti e tre gli errori hanno la stessa forma: si è preso qualcosa di plausibile per qualcosa di misurato. Un’IA lo fa volentieri, perché la plausibilità è il suo mestiere. Lo faccio anch’io — lei è solo più veloce.

La regola, una sola

Nei tre file di progetto sta la stessa frase:

Misurato, non supposto. Dove una supposizione è stata smentita da una misura successiva, nella documentazione ci sono entrambe — nell’ordine in cui sono andate le cose.

La seconda metà è la più importante, e non è un vezzo stilistico.

Circa la metà dei ritrovamenti di questo blog nasce dalla contraddizione tra una supposizione precedente e una misura successiva. Chi correggendo sovrascrive la supposizione tiene un risultato giusto e perde il ritrovamento.

E perde anche la pista su cui trovare il prossimo: tre volte in questo progetto ho fatto lo stesso errore di ragionamento prima di accorgermi che era lo stesso. Me ne sono accorto solo perché tutti e tre stavano ancora uno accanto all’altro.

Cosa aiuta davvero

  1. Fatti costruire strumenti, non dare risposte. Uno script che misura è ripetibile e verificabile. Una risposta in chat non è né l’uno né l’altro.
  2. Numera gli script nell’ordine in cui nascono. Il numero è la storia, e tra tre mesi ti servirà.
  3. Dai accesso in lettura prima dell’accesso in scrittura. E misura cosa è davvero raggiungibile, invece di dedurlo dalla configurazione.
  4. Decidi tu l’abilitazione, dominio per dominio. Soprattutto prima che arrivino una serratura, una sirena o una valvola.
  5. Pretendi la fonte, non il riassunto — e chiedi la data della fonte. Entrambe costano una riga e ti risparmiano un articolo sbagliato.
  6. Fatti contraddire. La frase più utile di questo progetto non è venuta da Claude ma da me: «lì è stata trascurata un’integrazione.» È così venuto alla luce un file di 2270 righe mai citato.

E quindi?

Claude è stato veloce a: leggere mille righe di documentazione, scrivere uno script di misura, confrontare tra loro tre installazioni, portare un testo in tre lingue.

È stato inaffidabile a: sapere cosa è attuale. E a distinguere ciò che ha misurato da ciò che ha dedotto.

Ne è nata una divisione del lavoro che ormai considero giusta: Claude propone e costruisce. La casa decide. Ogni affermazione di questo blog che conta ha sotto di sé una misura — e dove non c’è, è scritto.

La domanda non è se un’IA sappia costruire una domotica. Sa farlo. La domanda è se ti accorgi quando sbaglia.

Per questo esiste esattamente un rimedio, ed è lo stesso di sempre, IA o no: misurare.