KapfenbergTre luoghi, una quotidianitàRete e misurePrimi passi e gestione

Kapfenberg è stata in piedi in un giorno

La terza installazione è stata la più rapida — non perché fossi migliorato, ma perché le prime due erano per iscritto. Più una misura senza occasione.

Kapfenberg è stata la terza istanza, un giorno dopo Vienna e tre settimane dopo Merano. È stata in piedi in un giorno solo.

Non perché fossi diventato più veloce. Perché Merano e Vienna avevano già pestato ogni trappola e qualcuno le aveva messe per iscritto.

Da quel giorno sono comunque nate tre cose che prima non c’erano.

Il componente non basta — manca una riga

Home Assistant ha un componente aggiuntivo chiamato «Terminal & SSH». Installarlo non basta.

Senza la mappatura della porta 22/tcp: 22 è soltanto un terminale nel browser. Una riga nella configurazione decide se da fuori si entra con una chiave oppure se per ogni comando bisogna prima aprire l’interfaccia.

La chiave è una ed25519, creata il giorno dell’installazione — e creata in Bash, non in PowerShell. Perché conti sta nell’articolo su Merano: lì proprio questo è costato mezza serata.

unknown_error non significa «fallito»

Lo script che doveva installare il componente si è interrotto:

Supervisor POST /store/addons/core_ssh/install fallito:
{'code': 'unknown_error', 'message': ''}

Un messaggio vuoto, un’interruzione. Il componente era installato lo stesso.

La spiegazione è poco spettacolare e piena di conseguenze: l’interfaccia usata segnala unknown_error non appena la risposta del Supervisor non è JSON. Succede con un’installazione come con la lettura di un registro. La chiamata ha avuto effetto — solo la risposta non è passata.

Da lì è nata una regola per tutti gli script dei tre appartamenti:

Dopo una chiamata in scrittura si misura lo stato, non si crede al valore restituito. Un unknown_error non è un motivo per fermarsi.

Un valore restituito è un’affermazione sul risultato. Lo stato è il risultato.

La prima integrazione è arrivata senza che la chiedessi

Al Pi era collegata una chiavetta Zigbee. Non l’avevo cercata: Home Assistant l’aveva riconosciuta via USB e aveva già la finestra di configurazione aperta.

È comodo ed è proprio per questo delicato. Una rete Zigbee nuova avrebbe staccato tutti gli apparecchi prima associati a quella chiavetta.

Quindi una domanda prima di proseguire: la chiavetta è nuova di fabbrica? Lo era. Solo dopo è stata creata la rete.

Una finestra che si apre da sola non è un consiglio. È solo una finestra.

Per inciso, il percorso seriale punta all’identificativo dell’apparecchio, non a ttyUSB0. Il numero può spostarsi dopo un riavvio, l’identificativo no — un dettaglio che si fa sentire solo quando arriva un secondo apparecchio USB.

La misura che per due mesi non è servita a niente

Il giorno dell’installazione alla chiavetta non era collegato nemmeno un apparecchio. Ho comunque misurato se Zigbee e Wi-Fi si pestano i piedi: condividono la banda dei 2,4 GHz.

Frequenza
Wi-Fi, canale 1 (uguale su tutti e tre i ripetitori) 2402–2422 MHz
Zigbee, canale 20 2450 MHz

Nessuna sovrapposizione, 26 MHz di distanza. Il canale che il programma si era scelto da solo era per caso il migliore possibile. Un risultato del tutto inutile quel giorno, annotato in tre righe.

Il 7 novembre valeva improvvisamente dei soldi. Nel passaggio a un altro programma Zigbee, la sua finestra proponeva il canale 11 e lo aveva già scritto:

canale Zigbee 11   2405 MHz   in mezzo al Wi-Fi occupato

Per questa casa la scelta peggiore possibile. Cambiato in 20 prima che il primo apparecchio fosse associato.

Se ce ne fosse già stato uno, sarebbe costato una nuova associazione. E se non fosse stato notato, la casa avrebbe fatto girare per mesi una rete Zigbee nel rumore del Wi-Fi — e io avrei poi sospettato la portata, le batterie, i muri. Tutto sbagliato, e tutto plausibile.

A Merano il Wi-Fi sta sul canale 11, e lì Zigbee 20 era esattamente la scelta sbagliata. Stessa raccomandazione, due esiti opposti — perché non è una raccomandazione ma una misura.

Perché SSH, e l’ironia della cosa

SSH non era fine a sé stesso. La sezione http: nel file di configurazione non si può scrivere attraverso l’interfaccia; non esiste un endpoint. Senza accesso ai file niente messa in sicurezza dell’accesso remoto, quindi SSH.

E lo stesso giorno è emerso che quella sezione non ha comunque più alcun effetto da una certa versione — l’impostazione migra una volta sola in un archivio interno, e da lì in poi vince l’archivio.

L’avviso è stato scritto qui, con tanto di frase che Vienna e Merano sono interessate allo stesso modo. Vienna è stata aggiornata dieci giorni dopo, e io non l’ho letto — il che è costato un’intera serata.

Il motivo per cui ho configurato SSH era decaduto prima che la chiave avesse una settimana. L’accesso no.

È rimasto utile per quello che non avevo previsto: leggere i registri. Quello che la strada interna non consegna, una riga via SSH lo prende direttamente dall’apparecchio.

Cosa ti consiglio

  1. Verifica la mappatura della porta, non solo l’installazione. Un componente che gira non è ancora un accesso dall’esterno.
  2. Non credere ad alcun valore restituito. Dopo una chiamata in scrittura misura lo stato, soprattutto se il messaggio d’errore è vuoto.
  3. A una configurazione non richiesta rispondi con una domanda. Una finestra che si apre da sola non sa nulla di quello che hai già.
  4. Misura il canale radio il primo giorno, anche se non c’è ancora nulla collegato. Costa tre righe.
  5. Scrivi l’avviso per l’installazione gemella — e poi leggilo anche.

E quindi?

Di quel giorno non sopravvive una sola automazione. Non c’era ancora niente da automatizzare — 25 entità, una rete Zigbee vuota, un terminale.

Sopravvivono: una regola sui valori restituiti, una domanda che ha salvato una rete, e tre righe sui canali radio che per dieci settimane sono sembrate superflue.

È questa la differenza tra la prima installazione e la terza. Non la velocità, non l’abitudine — ma che le prime due sono messe per iscritto. Due volte quel giorno mi ha risparmiato una deviazione. E una volta, dieci giorni dopo, me ne è costata una, perché il mio stesso appunto non l’avevo letto.