My HoloDeck v3.0

Col tempo perfeziono una zona di casa come area HoloDeck: l’obiettivo è avere esperienze (tipicamente gaming) il più realistiche e immersive possibile allo stato dell’arte tecnologica (casalinga ovviamente), generalmente VR.

Riporto i vari componenti hardware e motivazioni delle mie scelte, se volete cimentarvi in qualcosa di simile.

L’area è divisa in due zone:

una play-area (4mt x 2.5mt) per titoli a movimento libero in VR (come Half Life Alyx), e un simulatore per esperienze principalmente di guida (pCars3, iRacing, AssettoCorsa etc), o volo (Microsoft Flight Simulator 2020, Elite Dangerous etc).


Entrambe le aree (totale 6.5mt x 2.5mt) son coperte dal tracciamento nello spazio Steam / Valve Lighthouse, uso 3 Valve base-station 2.0: due inquadrano la play-area, una di supporto ridondante sopra il simulatore.

Controllo generale

Un monitor ad-hoc mostra la UI del software di gestione, dedicato al progetto.

Compare anche come overlay VR (via OVR Toolbox), quindi visibile (insieme al desktop) in qualsiasi gioco, invocato a comando da un pulsante fisico su un joystick citato dopo.
(Per dire, OVR Toolbox permette di istanziare una finestra Zoom in coordinate del mondo virtuale sul sedile destro della Lambo mentre giro in Projects Cars 3 :D)


E’ scritto in C#, basato su DirectInput, mai rilasciato al pubblico perchè attualmente troppo specifico per il mio hardware. Si occupa del boot, check che tutto sia operativo, macro, stats e gestione generale.
Ho una serie di pulsanti (tipici pulsanti da Mame visti come joystick) nella postazione fissa (per macro quali shutdown/reboot)

e un joystick C64 sulla piattaforma mobile (quindi che si muove con me) che uso ad-hoc per lanciare altre macro (abilitare viste in VR, tuning, settaggi etc) o navigare negli overlay VR senza dover afferrare i controller Valve Index. Ho optato per un semplicissimo joy C64 perchè piccolo, roseo da gestire via DirectInput e la stick è comoda per i menu.

Entrambi i joystick sono gestiti direttamente dal software sopra-citato.

Uso joystick dedicati per la gestione generale per evitare conflitti di mappaggio rispetto agli altri (wheel e hotas) nei singoli giochi, e perchè quasi sempre son operativo nel gaming senza dover afferrare una tastiera che tengo solo a portata di mano.

Uso una trackball davanti all’hotas destro come mouse, anch’essa sulla piattaforma mobile (motivo per cui non è un mouse) in movimento insieme a me.

Tutto è connesso con delle Shelly Plug S, perchè così quando voglio giocare, entro nell’area o salgo sul simulatore, indosso il caschetto e pronuncio “Alexa, accendi HoloDeck” e il software di gestione fa partire quel che serve, oltre a misurarne il consumo in watt. Questo è utile anche perchè il sistema fa da gaming-server (via Nvidia GameStream), per accenderlo e usarlo da remoto quando voglio giocare da altri hometheater in casa.

Estetica

La play-area è circondata da 10mt di ledstrip gestite da un Shelly RGBW2. Il software di controllo ne gestisce il colore: rosso durante il boot, verde quando tutto quel che serve è pronto, etc.

La piattaforma ha 5 ledstrip da un metro l’una, led indipendenti, che visualizzano speed, RPM e bandiere di gara nei giochi di guida. Sono gestite da un Arduino, parte del sistema SimRacingStudio, che si occupa anche di leggere i dati di telemetria dai giochi.

PC

Il tutto è gestito da un PC Windows, perchè i titoli VR sono principalmente per Windows. Attualmente le mie specs principali sono una CPU AMD Ryzen 3950X e una GeForce RTX 2080 Ti.

Quanto serve di potenza computazione è relativo, nel mio caso cerco di avere 90fps stabili in VR in risoluzioni supersamples da 5K e oltre.

Audio

Uso delle Sennheiser Momentum in combo con una chiavetta bluetooth 1Mii Bluetooth B10 che permette l’uso del codec audio aptX low latency supportato dalle Momentum.

Preferisco avere solo delle cuffie wireless, gli ospiti sentono l’audio dal monitor.

Volante e pedaliera

Volante, per giochi di guida.
Questione di gusti e budget.

Attualmente uso un direct-drive Fanatec Podium DD1 , pedaliera ClubSport Pedals V3, Podium Advanced Paddle Module , volante R300 .
Tengo il DD1 al 60% circa, oltre troppa fatica alle braccia. Per questo non ho preso il DD2.

Non ho alcun cambio manuale, preferisco il sequenziale essendo più orientato al genere track e non al rally.

Hotas

X52 di Saitek

Per simulatori di volo, sia realistici (es. XPlane o Microsoft Flight Simulator 2020) sia fantasy (Elite Dangerous, Star Wars Squadron etc).

Sedile

Anche qui questione di gusti.

Prima di quella avevo una RSeat RS1, ma sfortunatamente era incompatibile con la piattaforma DOF che ho acquistato in seguito.

Vento

SRS Power Wind di Sim Racing Studio.

Il software Sim Racing Studio si collega ai dati di telemetria di diversi titoli (Projects Cars 2/3, Assetto Corsa, iRacing, Flight Simulator 2020 etc) per regolare il vento in base alla velocità.

E’ molto godibile, aumenta notevolmente la percezione della velocità, e molto piacevole d’estate perchè evita che si appanni l’headset se fa caldo.
Le due ventole sono ‘stereo’, spingono aria diversamente a seconda se nel simulatore sto affrontando una curva a destra o sinistra.

Prima (2019) avevo le Fan Controller di Sim Projects e due SANYO high speed fan ( 16.000 RPM , 12V, 3A ). Molto violente, generalmente stesso effetto, io ho cambiato e preso le SRS principalmente per coerenza (usare lo stesso software) rispetto ad altri componenti sottocitati: Shake e 6DOF.

Vibrazioni

Elite SRS ShakeCombo di Sim Racing Studio

Serve per sentire fisicamente quando si tocca un cordolo o si entra in una zona sterrata, o i giri del motore (sentire la vibrazione della postazione che sale quando si sgasa a una partenza d’auto, merita).

Anche questo si collega ai dati di telemetria, il kit è visto dall’OS come scheda audio a cui il driver manda i bassi per le vibrazioni.
Ho tre aree: seduta, pedaliera, schienale.

Motion Platform

P6 di DOF Reality

Piattaforma di movimento su 6 assi.

Le piattaforme son classificate a seconda di quanti assi gestiscono (da 1 a 6). I primi tre assi sono rotazione sugli assi X, Y, Z. Gli altri 3 sono traslazione sugli assi.

Ho scelto il modello P6 (6 DOF) di DOF Reality per il costo contenuto (non avendo modo di provarne diversi), perchè ho iniziato con il modello P3 3DOF (qui la precedente versione di questo progetto) e ho fatto l’upgrade successivamente al modello 6DOF.

La versione P (P3/P6) è la ‘professional’, si differenzia dalla H (H3/H6) ‘home’ perchè ha dei motori più potenti, angoli di motion più ampi e generalmente una durata di vita maggiore. Se il vostro simulatore dovrà essere aperto al pubblico, la versione P è d’obbligo, altrimenti per uso privato la H vi permette di risparmiare senza troppe rinunce. Personalmente ho dovuto pianificare con un fabbro degli aggiustamenti, soprattutto per il supporto hotas.

Onestamente, il salto di experience/feeling tra ‘nulla’ e ‘3DOF’ è enorme, tra ‘3DOF’ e ‘6DOF’ minimo. Se avete problemi di budget, H3 è il mio consiglio.

Se vi interessa SOLO il racing e non i simulatori di volo, un 3DOF che abbia la perdita di trazione (come l’H3 di DOF Reality) è probabilmente preferibile a un 6DOF che la simula, ma son gusti.

Nel gaming reale, soprattutto se si fanno lunghe sessioni (es. ore di guida), violenti movimenti sono stancanti, inutili, fastidiosi. In gaming e soprattutto in VR, basta un piccolo movimento per percepire la sensazione, oltre rasenta l’inutile, diventa una giostra piuttosto che simulazione.
Per questo sono molto perplesso relativamente ad altre soluzioni non basate su bracci tipo Feel Three.

VR Headset / HMD

Pimax 5K+
Dual Customized CLPL panels with 5Kplus 2*2560*1440 
200° Diagonal FOV, physical IPD adjustment

Il visore non è dotato di audio, uso delle cuffie a parte.

C’è di meglio oggigiorno (2021), ma attendo a upgradare perchè già con un 5K+ faccio fatica a tenere framerate decenti.

La scelta è tra usare monitor 2D o un visore VR.
Monitor, di solito se ne usano 3 (più altri per stats e telemetria), ma preferisco la VR come realismo. Per questo ho optato per il Pimax, che ha un FOV (Field Of View) enorme riducendo notevolmente “l’effetto maschera” di altri headset (Oculus, Vive etc), oltre ad una risoluzione notevole contro lo screen-door effect.

Se optate per i 3 monitor, tenete presente che dovrebbero muoversi insieme alla piattaforma DOF, altrimenti provocano nausea.

Probabilmente per sessioni di ore ed ore da professionista, monitor 2D sono meno faticosi per la vista.

Versioni precedenti

Qui trovate una versione precedente di questo progetto, la v2, sulla versione 6DOF.
Qui la v1, sulla versione 3DOF.

My Home Automation – Memole

Aggiornato in dicembre 2019.

Qui racconto le soluzioni di home-automation che ho adottato in casa mia, progetto perennemente in corso. E’ sempre stato un sogno nel cassetto realizzare un prodotto (hardware+software) user-friendly e open-source dedicato alla home-automation, anche se non ho mai rilasciato nulla perchè ancora oggi sto usando casa mia come caso di studio e sviluppo :P.

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, anche se è sempre stato un sogno nel cassetto realizzare un prodotto per home-automation user-friendly  e open-source.

Come dice Francesco,

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

il mio sistema di domotica è nato dal rifiuto 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à.

Non sempre è possibile, la domotica/IoT è piena di soluzioni cloud-only, tendenzialmente capita che uso queste soluzioni al fine di capire le mie necessità, per poi (col tempo) migrarle a soluzioni open.
Il riconoscimento vocale in casa, lo faccio con degli Alexa, perchè una soluzione non-cloud affidabile ancora non esiste.

Memole, la centralina di controllo

Un Raspberry PI principale, chiamato Memole, l’assistente di casa, quasi un membro della famiglia.

Memole gestisce tutta la casa. DHCP & DNS per la rete privata (con blocco anti-ads e anti-malware a monte via PiHole), ha UI (tablet in casa) e chatbot (Telegram), gestisce la casa e comanda tutti gli altri hub.

  • 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",
    },

    Memole 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.
    Ovviamente la vedo da smartphone.
    In casa, ho dei tablet in modalità Kiosk che mostrano l’interfaccia.
    La vedo da remoto via port-forwarding su una VPS mia su Amazon EC2.
    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ì:

  • Uso anche un bot Telegram per interazione. Ad esempio, se tiro il campanello di allarme della sauna, l’avviso arriva dal bot Memole. Risponde a comandi quali “accendi studio”, “spegni tutte le luci”, “dimmi lo stato uso corrente”, “accendi camino elettrico” etc.
  • Memole interroga anche gli altri Raspberry dislocati in casa, generalmente usati come sensori (temperature, umidità etc) o come interfaccie cablate ad altri sistemi (ad esempio ho un raspberry in caldaia che traduce comandi di Memole in comandi seriali via modbus alla pompa di calore).
  • La maggior parte dei pulsanti fisici (i ‘frutti’) sono pulsanti che Memole sente, e comanda altri device correlati.
    Ad esempio, in mansarda ho dei pulsanti tradizionali, che se premuti accendono delle fascie di led di Philips Hue. Se doppio-click, cambiano preset di colori.

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.

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 13.5 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 tre 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, otto splitter e altre tre macchine esterne degli splitter. 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.

Alexa – Amazon Echo

Come interfaccia di gestione vocale, per la copertura della maggior parte delle aree di casa, son costretto ad usare degli Echo (ne ho un po’, a memoria 8). Lo so, discutibile come privacy, e cloud-based.
Ma NON uso alcuna skill per la domotica. Mi son scritto la mia skill (Lambda su AWS), in modo che Alexa funzioni da gateway traslando comandi vocali per passarli a Memole.
Quindi un domani mi basterà trovare un’equivalente che faccia un riconoscimento e TextToSpeech. Ad oggi, con un Raspberry e soluzioni non-cloud, il riconoscimento di testo libero (senza esercitazione su word specifiche) è tragico.

Piscina

Uso un Blue Connect (cloud-based) come aiuto nella gestione, perchè è parecchio complicato gestire il PH, la salinità etc, ma il resto della gestione (come la schedulazione della pompa di filtraggio o il riscaldamento) è anch’essa gestita direttamente da Memole.

Rete lan

Ho 15 punti lan e diversi router wifi. La casa è ampia, è l’unico modo per avere una copertura decente da ogni punto della casa.
Sto testando l’uso di Ubiquiti con punti mesh per risolvere il problema di copertura con un’unico SSID.
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.

Altri agganci con hub IoT

Memole interagisce con diversi hub di altre soluzioni domotiche (alcune cloud-based). Ribadisco, Memole è l’interfaccia primaria, i seguenti hub sono usati come ‘helper’ da Memole, mai direttamente.
Attualmente come gateways ho:

  • Un hub Z-Wave Fibaro con cui controllo qualche presa comandata e gestisco gli occhietti Fibaro
  • Un hub Philips Hue per diverse luci RGB.
  • Un Fingbox anche se sto cercando di abolirlo

Quindi attualmente quando devo agganciare un devices IoT, posso scegliere se Konnex, Z-Wave (via Fibaro), Zigbee, o perlomeno scelgo un device che potrò controllare direttamente da Memole via LAN (via API), o se ha un’interfaccia almeno seriale (modbus ad esempio), gli piazzo un Raspberry che Memole controllerà.

Altri devices agganciati

  • Un Lametric Time come UI per l’output di qualche valore
  • 4 Dyson Pure Cool, per rilevamento e pulizia qualità dell’aria in casa.
  • Un videocitofono Biticino (che odio, prima o poi lo costruisco da solo).
  • Una sauna Jacuzzi MI. La elenco qui perchè ho fatto io l’aggancio con Alexa per comandare Memole da dentro la sauna e per la gestione di musica d’ambiente e cromoterapia.
  • Una shower toilet Ghroe Sensia Arena , praticamente un bagno stile giapponese. Non è ancora collegata a Memole, non c’è motivo, ma lo riporto qui perchè è comunque un device tecnologico parte della casa.

Altri devices tecnologici in casa, non legati a IoT

  • Diversi sistemi di home-theater, nelle varie aree (cinema con proiettore in taverna, salotto, camere, palestra) di cui non sto a elencare hardware. Generalmente Android.
  • Sono un gran fan delle tecnologie VR. Ho 2 aree distinte, tantissimi headset, soprattutto una postazione gaming che cerco di tenere tecnologicamente all’avanguardia.
  • Un cabinato da bar originale Jamma ristaurato con una collezione di giochi arcade pre-anni-90. Mame, C64, Amiga, GameBoy e laser-disc emulation via Daphne. Monta un catodico originale, una scheda VGA custom per riprodurre il feeling esatto a 15 khz e risoluzione esatta nativa (Bubble Bobble per dire gira a 256×224, 256 colori), crediti inserendo monete.
  • Un laghetto per tartarughe (con pompa e cascata) controllato da Memole.

Fine

Bon, per ora mi fermo, magari se l’argomento piace integrerò qualche altra spiegazione.
Ciao!

Pocket Firewall for Windows

  • Vista and above, don’t work on XP
  • Doesn’t require any driver installation
  • Portable
  • Pocket, <700kb
  • Safe, absolutely not OS invasive: if you brutally kill the process, rules are cleaned.
  • Requires Administrator privileges and .NET 4
  • 32 bit and 64 bit edition

Screenshot

I develop this for AirVPN Community https://airvpn.org/

Released under GPL3 on GitHub