Domotica DIY personale

Nel leggere il progetto di Francesco Tucci : La domotica fai da me mi è venuta voglia di raccontarvi il mio, molto simile come motivazione di base.

Premessa: NON mi occupo di questo per lavoro, l’ho realizzato negli anni SOLO per casa mia SOLO per hobby.

Come dice Francesco,

“Non sono dipendente da servizi che potrebbero fallire o chiudere”

il mio sistema di domotica è nato dal rifiuto totale di volermi appoggiare su progetti commerciali di terze parti. Casa mia dovrà funzionare anche tra trent’anni quando sarò un vecchio rimbambito. E magari non essere costretto a usare App Android separate tra loro e poter liberamente scrivere script di interoperabilità.

Centralina di controllo

Un Raspberry PI.

  • Ha un unico file config.json con tutte le opzioni specifiche di casa mia: temperature volute, widgets da mostrare nella UI, mappa mac-address>plugin, etc.
  • Riempie un unico file data.json con tutti i dati che raccoglie.
  • Raccoglie dati via nmap sui devices in rete. Questo per avere un’elenco dei devices in rete locale. Shot di UI
  • Nel file config.json ci sono tutti i map mac-address->plugin, ad esempio c’è
    "C8-FF-77-D8-FE-C5": {                
    	"name": "Dyson Camera",                
    	"type": "dyson-pure-cool",                
    	"category": "Domotics",                
    	"dyson_name": "Camera",
    },

    La centralina dopo aver verificato quali devices sono online, se al device corrisponde un plugin (nel caso di esempio “dyson-pure-cool”) lancia lo script che lo controlla per raccogliere dati
    (nel caso di esempio temperatura, umidità etc).

  • Monta un webserver (nginx) con un’interfaccia jQuery tutta in ajax che legge il data.json e genera la UI. La vedo da remoto via port-forwarding su una VPS mia su Amazon EC2. Ho un’app Android ad-hoc (che in pratica è solo un WebView).
    Ad esempio, un widget in config.json così

    "riscald_primo": {
                    "x": 55,
                    "y": 16,
                    "width": 18,
                    "height": 10,
                    "title": "Riscaldamento Primo",
                    "text": "[field=devices.B8-27-EB-7A-26-B9.caldaiaRelayPrimo,format=bool] [field=devices.B8-27-EB-7A-26-B9.temperature_detected_primo]\u00b0 [fontawesome]f18e[\/fontawesome] [field=config.temperature_target_primo]\u00b0"
                },

    viene renderizzato in html così:

Konnex

Ho un sistema Instabus/EIB/Konnex, uno standard open che permette l’interoperabilità di componenti elettriche.
In pratica quando ho costruito casa, ho fatto mettere una canalina che contiene un bus-dati EIB.
In un sistema elettrico normale ogni interruttore è collegato a una luce fisicamente, io invece in OGNI interrutture di casa ho un modulo che manda un telegramma “è stato premuto” e basta, e una centralina che reagisce in base alla configurazione, tipicamente un “accendi la luce X”.
Questo mi permette via API di controllare tutto (per dire, aprire il garage o il cancello elettrico dalla mia UI).
Permette anche la creazione di scenari, tipo “Se premo il bottone vicino all’uscita, spegni tutte le luci e chiudi tutti i vasistas”.

Uso il software ETS5.5 per la configurazione e debugging, e un Gira Ethernet per il controllo dai miei scripts. Shot per curiosità di ETS5.5:

Autoalimentazione elettrica

Ho diverse soluzioni semi-funzionanti per rilevare l’uso della corrente elettrica.
L’ultimo in uso oggi sono le API di TeslaWall2 (qui un esempio di output json), che mi permettono di leggere in realtime il consumo di casa, quanto produce il fotovoltaico, quanto è coperto dalla batteria di accumulo, quanto compro da Enel.

Ho un fotovoltaico da 18 kW, una batteria di accumulo da 14 kW (sto valutando se metterne altre due), il tutto in un trifase con stabilizzatore di tensione.

In estate ho un’autoalimentazione da oltre il 90%, in inverno con il riscaldamento una percentuale molto più bassa.

Riscaldamento

Questo è stato uno dei primi obiettivi del mio sistema, in quanto per scelta NON ho alcun termostato in casa e se il riscaldamento funziona male mia moglie giustamente sclera.

Attualmente ho due Raspberry che rilevano temperatura e umidità per piano.
Il raspberry centralina li interroga, e in base a un’algoritmo scritto in uno script determina se comunicare ad un quarto Raspberry collegato via modbus alla caldaia l’attivazione dei relè.
Praticamente ho un termostato software.

Cerco di usare una caldaia a gas SOLO come sistema di backup, ma a regime il riscaldamento a pavimento è alimentato da una pompa di calore, un Hybrid Cube Daikin per l’acqua calda, sei splitter e altre due macchine esterne. Via modbus ho i dati in realtime dello stato caldaia e delle temperature (water inlet, leaving, outside, tank etc).

Al fine di aumentare l’autosostenimento, applico regole tipo il cercare di alzare la temperatura finchè il fotovoltaico produce evitando se ragionevole l’uso della corrente di notte.

Altri agganci con IoT

  • Un hub Z-Wave Fibaro con cui controllo qualche presa comandata e gestisco gli occhietti Fibaro
  • Un Fingbox anche se sto cercando di abolirlo
  • Un Lametric Time come UI per l’output di qualche valore
  • Un Philips Hue per qualche luce RGB
  • 4 Dyson Pure Cool
  • Un videocitofono Biticino

Rete lan

Ho 15 punti lan e 5 router wifi. La casa è ampia, è l’unico modo per avere una copertura decente da ogni punto della casa.
Uso un Vigor 2760 come router primario per l’ADSL, QoS etc, principalmente perchè il mio ISP mi ha dato una configurazione IPv6 strana che riesco a far andare solo con quello.
Ai tempi della richiesta IPv6, diversi anni fa, a detta del mio ISP fui il primo a chiederlo…

Antifurto

No. Cioè, c’è l’antifurto, un TecnoAlarm, ma per scelta è totalmente manuale e separato dalle mie diavolerie DIY.

Fine

Bon, per ora mi fermo, magari se l’argomento piace integrerò qualche altra spiegazione.
Mi piacerebbe migliorare la UI, collegare qualche assistente tipo Google Home o Amazon Alexa, proseguire con l’abolizione di roba di terze parti (es. il videocitofono) e mille altre robe. Come sempre è il tempo che scarseggia.
Ciao!