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.

CoronaWarnApp o Immuni?

CoronaWarnApp è l’app equivalente di Immuni in Germania. https://www.coronawarn.app/ .

L’ho installata disattivando Immuni (non è possibile usarle entrambe), nonostante vivo in provincia di Milano e non ho intenzione di viaggiare fuori dall’Italia. Attenzione: NON vi sto consigliando di fare altrettanto. IO sto sperimentando.

  • E’ affidabile come fonte, è autorizzata da Google & Apple come app ufficiale di Exposure Notification della Germania.
  • E’ disponibile sul Play Store italiano:
  • E’ un International Gateway, è spiegato nella app direttamente (Immuni non riporta nulla del genere, almeno nella UI):

    So che anche Immuni dovrebbe essere (da dichiarazioni) un international gateway. Ma il volume riportato sotto attualmente non corrisponde.
  • Immuni fa il check delle mie esposizioni in un db di 4963 chiavi attualmente:
    CoronaWarnApp fa il check delle mie esposizioni in un db di 268412 chiavi: che dichiarano comprendono ANCHE le italiane.

Quindi, qualche ipotesi:

  • Case study: io in Italia entro in contatto con un positivo italiano. Dovrei essere notificato esattamente come se usassi Immuni, perchè CoronaWarnApp è un international gateway e fornisce al mio OS ANCHE le TEK italiane.
  • Case study: un tedesco (o un irlandese) viene in visita nelle mie zone, poi torna a casa, viene riscontrato positivo e inserisce le sue TEK nel suo paese.
    CoronaWarnApp dovrebbe avvisarmi, Immuni NO. E’ evidente, se Immuni fosse un international gateway già funzionante, conterrebbe anche lei oltre >200k TEK.
  • Case study: vengo notificato di possibile esposizione, ma CoronaWarnApp non ha istruzioni specifiche per le ASL italiane:
    basta che riattivo Immuni, e dovrei ricevere la stessa notifica. Il database TEK dei miei contatti è nel Framework Exposure del mio device, NON nelle App che lo usano.
  • Case study: vengo riscontrato positivo e devo fare la procedura di upload delle mie TEK:
    installo Immuni e faccio la procedura. Le mie TEK erano nell’OS, non importa se fino al giorno prima usavo CoronaWarnApp.

Dove sbaglio? Sto davvero cercando un motivo per capire se dovrei tornare a Immuni: attualmente non lo vedo, anzi, sono più protetto con CoronaWarnApp.

ANSAcheck … ma perchè?

Edit-add: questo articolo è nato come curiosità, per capire il giro ANSAcheck. Ho aggiunto in fondo la sezione ‘Altri articoli o video sullo stesso tema’, in modo da poter mixare le informazioni che otteniamo.

ANSA ha implementato ANSAcheck,

https://www.ansa.it/sito/static/ansa_check.html

“una soluzione che consente di “certificare” l’origine ANSA delle notizie grazie alla tecnologia Blockchain, che agisce come garante di trasparenza, sicurezza e apertura dell’informazione.”

TL;DR;

L’implementazione attuale di ‘verifica’ prevede passaggi che attualmente non mi risulta siano praticabili da terze parti. Dovendo fidarsi del dominio ANSA.it, mi risulta tutto inutile. 

Inoltre nella blockchain Ethereum viene salvato un ID specifico di ANSA (tra l’altro determinabile, essendo una data), NESSUN HASH di contenuti. Tecnicamente, è un timestamp su blockchain di un ID specifico di ANSA, di cui non colgo il senso.

Infine, i contenuti pubblicati sul sito web ANSA non corrispondono (perlomeno in termini di eventi) a quel che riportano nello storico su cui è basato il procedimento di verifica.

Mia opinione

Premessa: sono un fan della tecnologia blockchain, che ha e può avere diverse applicazioni pratiche e logiche. Ma come ogni tecnologia, non è una panacea.

A livello concettuale (sotto entro più nel merito tecnico) di ANSAcheck mi sfugge lo scopo al lato pratico utente.

Se leggo la notizia inventata “La cioccolata cura il covid19, notizia ANSA!”:

1- Se è riportata sul sito ANSA, è autentica per forza (garantita da protezione SSL sul dominio), e un sistema come ANSAcheck non serve.

2- Se l’ho letta su una testata giornalistica diversa,

2.1 – Se non riporta il bollino ANSAcheck (p.s. attualmente non ho ancora trovato una notizia ANSA rilanciata da altri che riporta tale bollino), allora il lettore deve cercare la notizia sul sito ANSA, e a quel punto torniamo al punto 1).

2.2 – Se riporta il bollino ANSAcheck (come link a ansa.it), a) siamo comunque al punto 1), e b) sarebbe bastato che il bollino punti all’articolo originale su ansa.it, senza tutto il giro ANSAcheck.

NON è possibile, partendo da un articolo rilanciato da una fonte non-ANSA, ricavare i dati che servono per consultare la blockchain senza passare prima dal sito ANSA. Se devo passare dal sito ANSA… discorso sopra.

Inoltre, i dati salvati su blockchain Ethereum sono inutili perchè richiedono comunque un trust nei confronti di ANSA per una eventuale (anche se impossibile ad ora) verifica di terze parti.

Di buono c’è che ora ANSA fornisce informazioni come ad esempio quando modifica una notizia, o il tempo intercorso tra la creazione e la pubblicazione. Potevano chiamarlo ANSAopen piuttosto, imho.
….
Aggiornamento: NO, capita che le date degli articoli sul sito ANSA siano posteriori alla data dell’ultimo evento dello storico per le ‘certificazioni’, compresa la data dell’evento pubblicazione (e no, non c’entra fuso ITA vs UTC). In fondo nelle note un esempio oltre ad altre mie perplessità.

Un occhiata passo passo

Provo a spiegarvi passo passo in cosa consiste la parte pubblica del sistema, partendo da un articolo di riferimento come esempio:

https://www.ansa.it/sito/notizie/cronaca/2020/04/06/buddisti-15-mln-euro-per-90-enti_f8dc8da1-5c4e-45f9-a839-047fd42363d7.html

PAGINA bollino ANSACHECK

Il link del ‘bollino’ “ANSAcheck – Notizie d’origine certificata” punta a

https://blockchain.check.ansa.it/landing/299de19d773a31c6a31a1b65233d4750/XCW7SUR847X047N

Qui abbiamo:

“MD5 News”: Ignoro attualmente come è computato. NON è l’MD5 del titolo, e non trovo documentazione in merito.

“MD5 Contenuto”: Dovrebbe essere un hash MD5. Cliccando le freccette, ci permette di vedere il corpo della notizia, che copia-incollato in https://www.md5hashgenerator.com/ al fine di verificarne la generazione hash terze parti, genera un hash diverso (notare: lo stesso metodo indipendente successivamente funziona sul corpo del blocco, quindi evidentemente non mostrano l’esatto testo su cui loro han generato il loro hash MD5).

Abbiamo l’elenco degli ‘eventi’ relativi alla notizia, in questo caso due eventi, la registrazione e la pubblicazione.

Analizziamo l’evento registrazione

ANSA ha il concetto di blocco in cui salva X eventi, che NON è il blocco blockchain.

Questo perchè evidentemente non salvano nella blockchain Ethereum OGNI evento (gli costerebbe troppo di fee?), ma raggruppano X eventi in un blocco loro ANSA, e ‘certificano’ quello. Nel nostro caso di studio, è il blocco AC202004061245 (ripeto, codice interno ANSA).

CERTIFICATO ANSACHECK

Cliccando “CERTIFICATO ANSACHECK” arriviamo qui:

https://blockchain.check.ansa.it/certification/AC202004061245

che come detto rappresenta il blocco, cioè un insieme di articoli/notizie/eventi, non singolarmente la notizia d’origine.

Qui vediamo:

  • Il BLOCK ID, quello referenziato dall’url che stiamo guardando
  • Il BLOCK HASH.
    E’ l’hash MD5 del JSON citato sotto in “Informazioni contenute nel blocco”.

Verifica indipendente, cliccate sul pulsante ‘copia in appunti’, andate su https://www.md5hashgenerator.com/ , incollate, genera 1e52cc6ff8daeff462cab1461eb18f0a
che è appunto l’hash citato in BLOCK HASH. Il dettaglio delle informazioni nel blocco è trattato successivamente. Almeno questo giro ha funzionato.

INFORMAZIONI CONTENUTE NEL BLOCCO

E’ un JSON con i vari record del blocco, nel nostro esempio

 {
        "id": "5029aaf4545931352300a1dd86eaffbe",
        "title": "Coronavirus: Buddisti, 1,5 mln euro per 90 organizzazioni",
        "content_hash": "9a08dcdf83759174fc97ae2f971e3a1b",
        "event": "publication",
        "timestamp": "2020-04-06T12:31:50.000Z"
 },
  • ID – ID univoco interno ANSA
  • Title – Titolo
  • Content Hash – Questo è l’aspetto catartico. Al 99% è un altro MD5, ma non è chiaro (e dovrebbe, altrimenti tutto crolla) come una terza-parte possa calcolarlo.
  • Event – Tipo (non entro nel dettaglio dei vari enum, non importa)
  • Timestamp – Data

TRANSAZIONE ETHEREUM

I dati custom salvati sulla blockchain pare siano questi:

Han salvato l’ID del blocco ANSA, NON c’è alcun HASH salvato nella blockchain.

Oltretutto, l’ID del blocco ANSA è determinabile (pare una data in formato AC + data (del blocco?) in formato ISO 8601 senza delimitatori).

Simone Cosimo in un articolo su Medium analizza più nel dettaglio il codice sorgente dello smart-contract Ethereum, decompilazione del bytecode e analisi.

Vi ricordo che nel passato son capitati bug anche molto gravi nella scrittura di codice sorgente di smart-contract (es. DAO su Ethereum: https://medium.com/@ogucluturk/the-dao-hack-explained-unfortunate-take-off-of-smart-contracts-2bd8c8db3562). 

Curiosità, si può sapere cosa pagano in $ per archiviare queste informazioni e altri dettagli (attualmente circa 0.07$ ogni ventina di eventi, a spanne).

ESEGUI VERIFICA

Il pulsante ESEGUI VERIFICA pare che verifica che il blocco che risulta ad ANSA corrisponda a quello nella blockchain.

NON verifica la notizia di partenza, in nessun momento utilizza il testo originale della notizia, non computa i content_hash del blocco.
Tecnicamente, fa ‘qualcosa’ lato client javascript, con una sola chiamata AJAX.

Per me, tutto questo è puro marketing, perchè tutta la procedura in pratica si auto-chiede la verifica, interrogando se stesso (una richiesta AJAX ad un sottodominio ansa.it). Sarebbe stato un po’ meglio se ci fossero state richieste AJAX verso un explorer Ethereum di terze parti.

Potrebbe fallire solo nei seguenti casi:

  • ANSA.it è stato compromesso (dati del blocco alterati). Irrilevante, perchè a quel punto potrebbe essere compresso il processo di verifica e restituire sempre SUCCESSO.
  • La blockchain Ethereum è stata compromessa. Ma se questo potrebbe accadere, allora tanto valeva usare un MySQL garantito dalla fonte in trust ANSA.

L’output della verifica è:

Verifying ANSAcheck Block AC202004061245 certification …
Calculating MD5 of AC202004061245 content…
Input: [{"id":"b58b3c33e6202623385efe15995a2deb","title":"Coronavirus: Ascani, confronto sia su come tornare a scuola","content_hash":"f8a53969fbec0be49690b034bfd2b9fc","event":"publication","timestamp":"2020-04-06T12:30:49.000Z"},{"id":"6ba06e89dc21f538f0dd01723807602e","title":"Coronavirus: giustizia per Bergamo, 30mila firmano petizione","content_hash":"7990e39976eaf11a720599989b26e217","event":"publi.....
Output: 1e52cc6ff8daeff462cab1461eb18f0a
Calling getter on ANSAcheck smartcontract to retrieve information…
Input: getNewsChain(AC202004061245)
Retrieved information: 1e52cc6ff8daeff462cab1461eb18f0a
Hash matches! News verified successfully!

In dettaglio, riga per riga:

Verifying ANSAcheck Block AC202004061245 certification …

D’accordo.

Calculating MD5 of AC202004061245 content…

A che pro, è tutto in casa, te lo stai chiedendo da solo.

Input: [{"id":"b58b3c33e6202623385efe15995a2deb","title":"Coronavirus: Ascani, confronto sia su come tornare a scuola","content_hash":"f8a53969fbec0be49690b034bfd2b9fc","event":"publication","timestamp":"2020-04-06T12:30:49.000Z"},{"id":"6ba06e89dc21f538f0dd01723807602e","title":"Coronavirus: giustizia per Bergamo, 30mila firmano petizione","content_hash":"7990e39976eaf11a720599989b26e217","event":"publi.....

Ok, sta calcolando 1e52cc6ff8daeff462cab1461eb18f0a, tutta roba che ha già in casa, pare scena.

Output: 1e52cc6ff8daeff462cab1461eb18f0a

Ok.

Calling getter on ANSAcheck smartcontract to retrieve information…
Input: getNewsChain(AC202004061245)

Ha fatto una richiesta AJAX a
https://scl.check.ansa.it/api/ncblock/AC202004061245/transaction
Ottenendo come risposta il JSON

{"get_news_block":"1e52cc6ff8daeff462cab1461eb18f0a"}
Retrieved information: 1e52cc6ff8daeff462cab1461eb18f0a

In pratica si è chiamato da solo (sempre ansa.it) per ottenere lo stesso hash 1e52cc6ff8daeff462cab1461eb18f0a sopracitato. Presumo che qualcosa server-side abbia consultato la blockchain Ethereum per ottenere quell’hash, ma ci dobbiamo fidare (quindi a che serve? mah).

Hash matches! News verified successfully!

Quindi ha confrontato l’hash calcolato nella prima fase, con un hash ottenuto dalla seconda.

Corrispondono, “verified successfully!”.

Entrambe le operazioni sono fatte da ANSA, non una verifica di terze parti. L’effetto step uno ad uno, ad intervallo di circa un secondo, a occhio è solo scena.

Note varie

  • Non mi è chiaro perchè non si è utilizzato degli standard aperti, come ad esempio https://opentimestamps.org/ (scherzo, immagino sia chiaro a tutti…).
  • Non mi è chiaro perchè si è preferita la blockchain Ethereum rispetto a quella Bitcoin, che ha un hashrate molto maggiore, che nel mondo blockchain significa più sicura (meno suscettibile ad attacchi).
    La risposta dovrebbe essere l’uso degli smart-contract, ma in assenza di dettagli, tutto quello sin’ora realizzato poteva essere benissimo salvato in OP_RETURN di TX Bitcoin.
    Oltretutto Ethereum dovrà fare lo switch da proof-of-work a proof-of-stake, tecnologia di fatto mai testata in produzione su questa scala, ma questi son discorsi opinabili.
  • Mi pare discutibile l’uso di MD5 al posto di, come minimo, SHA256. MD5 è considerato obsoleto da oltre una decade. Vlastimil Klima nel 2006 ha scritto un algoritmo in grado di trovare una collisione MD5 in un minuto con un notebook Pentium: https://eprint.iacr.org/2006/105 .

    Non so cosa comporterebbe prendere un articolo che cita un numero (ad esempio fondi stanziati di una manovra di governo), aggiungere un paio di zeri all’importo e tanti caratteri invisibili fino ad ottenere una collisione (lo stesso MD5 della notizia originale). A occhio penso sia fattibile, ma non sono un crittografo.
  • “MD5 News” e “MD5 Contenuto” e “content-hash” dei singoli eventi non sembrano calcolabili (o non tornano) da una terza parte.
  • Tutta la parte di “Processo di verifica” è totalmente inutile e irrilevante. In pratica si dice da solo “ok sono affidabile”.

Per ora mi fermo qui. Complimenti se avete letto fin qui, grazie.

Aggiunta 9 aprile 2020 – Whitelist siti ammessi alla consultazione storico

@bellapersonaa mi ha fatto notare che a partire da oggi, qualsiasi link ad una scheda di ANSAcheck (esempio) è permessa solo a un elenco di siti (whitelist) decisa da ANSA, altrimenti:

Immagine

Il “CHIUDI” chiude la finestra, impedendo di visionare “La storia di questa notizia” (a meno di tools tecnici).

Riflessione pratica: ANSA pubblica una fake-news. ANSA la pialla. Se non c’è un link al bollino della notizia piallata nel sito ANSA, la visione della storia di quella notizia piallata è inibita.

Riflessioni tecniche (verificano l’header HTTP ‘Referer’):

  1. Non mi risulta pubblica questa lista di Referer accettati.
  2. L’header è opzionale, può essere disabilitato, con la conseguenza che quel messaggio potrebbe venir mostrato ANCHE se visualizzo la notizia proprio da ansa.it.
  3. Esistono best-practice (via Referrer-Policy o Content-Security-Policy) che potrebbero specificare di non inoltrare il Referer (di solito per privacy). Ma noi speriamo che i siti che ospiteranno la verifica ANSAcheck non siano mai in grado di fare questo (← ironia).

Curioso che è stato introdotto così, giorni dopo l’annuncio del sistema. Sembra quasi che sia un’ideona nata al volo, non prevista nel design iniziale del sistema.

History articolo

08 aprile 2019 : Prima versione di questo articolo
09 aprile 2019: Aggiunti riferimenti ad altri articoli che trattano lo stesso tema
09 aprile 2019: Aggiunta la sezione “Whitelist siti ammessi alla consultazione storico”

Altri articoli o video sullo stesso tema

ANSACheck Deep Dive – di Simone Cosimo – Entra particolarmente nel merito dello smart-contract Ethereum

CERTIFICAZIONE BLOCKCHAIN DI ANSA? – Video YouTube, evidenzia particolarmente l’incongruenza tra i dati riportati nel sito ANSA rispetto ai dati pubblicati nel loro storico (base del sistema ANSAcheck).

My Gaming Sim (6DOF, VR etc)

(Aggiornata al 2020/10/12)

Col tempo perfeziono un simulatore di gaming, con l’obiettivo di rendere le esperienze il più realistiche e immersive possibile allo stato dell’arte tecnologica (casalinga :P). Riporto qui le scelte hardware/software che ho fatto fin’ora, e qualche commento se vi interessa cimentarvi in un progetto simile.

Qui trovate una versione precedente di questo articolo, sulla versione 3DOF.

Wheel

T500RS di ThrustMaster

Per simulatori di guida.

Questione di gusti e budget.
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).

Anche qui, questione di gusti. Ovviamente se mirate solo ad un simulatore di racing, è inutile: serve per titoli quali X-Plane o Elite Dangerous.

Seat

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.

Wind

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.

Shake

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 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.

Nel video sopracitato, la maggior parte delle scene è registrata con la potenza/escursione al massimo. Nel gaming reale, soprattutto se si fanno lunghe sessioni (es. ore di guida), è stancante, inutile, fastidioso. In gaming, basta un piccolo movimento per percepire la sensazione, oltre rasenta l’inutile, 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 Sennheiser wireless.

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.

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

Tenete presente che i titoli di racing che supportano il VR sono pochi.

Video card

Asus ROG STRIX RTX 2080 Ti Advanced Edition 11 GB GDDR6 (Amazon.it)

Anche una scheda video minore può essere accettabile, a patto di rinunciare alla qualità grafica mantenendo i 90fps se utilizzate un headset VR. Il frame-rate è fondamentale per evitare il motion sickness, soprattutto agli ospiti/amici neofiti. Per questo tendo ad evitare qualsiasi interpolazione (reprojection) cercando di tenere il rate dell’headset, a discapito della grafica.

Se optate per monitor 2D, è sufficente una scheda minore.

PC

Un qualsiasi PC medio-alto (un I7 come minimo), adatto alla scheda video.

Software

Windows 10.

Sim Racing Studio, SimDash per l’hardware

fpsVR , PiTool, SteamVR per il VR.

I titolo che uso (il simulatore ne supporta tantissimi, ma quelli che supportano il VR sono solo un sottoinsieme):

  • Projects Cars 2/3 – Entertainment, ad esempio giro Lamborghini in Costa Azzurra, o rally su neve. Il preferito per ospiti e neofiti. Il generale una configurazione che predilige la grafica e il divertimento alla precisione. Ad esempio, no danni reali.
  • Assetto Corsa – Simulazione, generalmente la F2004 di Michael Schumacher a Monza. Configurata per una esperienza il più realistica possibile.
  • iRacing ce l’ho configurato, ma preferisco Assetto Corsa nel suo target.
  • Elite Dangerous.
  • X-Plane 11
  • NoLimits 2 Roller Coaster Simulator – Piace agli ospiti.

Mastodon instance in house

Esperimento d’uso di una istanza Mastodon su un Raspberry PI4.

https://mastodon.clodo.it

La teoria che mi ha ispirato questo esperimento, è che sarebbe bello sensibilizzare sul tenersi il possesso (e la responsabilità) dei propri dati tenendoli in casa propria, a maggior ragione se una identità da social network.

Powered by rPI4, ssh reverse port forward su dominio mio e altre diavolerie tech.

Hosted in my house. Powered by rPI4. Kitoe monitor it.

My Racing Simulator (Track and Rally)

(Aggiornata al 2019/01/07)

Col tempo perfeziono un simulatore di guida.
Riporto qui le scelte hardware/software che ho fatto, e qualche commento se vi interessa cimentarvi in un progetto simile.

Wheel

T500RS di ThrustMaster

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

Seat

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.

Wind

Fan Controller di Sim Projects e due SANYO high speed fan ( 16.000 RPM , 12V, 3A ).

Il software Sim Dash si collega ai dati di telemetria di diversi titoli (Projects Cars 2, Assetto Corsa, iRacing 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.

Shake

Elite SRS ShakeCombo di Sim Racing Studio

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.
Tre aree: seduta, pedaliera, schienale.

Carino, ovviamente serve per sentire fisicamente quando si tocca un cordolo o si entra in una zona sterrata.

Motion Platform

P3 di DOF Reality

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 P3 (3 DOF) di DOF Reality per il costo contenuto (non avendo modo di provarne diversi), e perchè mi lascia la possibilità un domani di upgradare al modello P6 (6 DOF).

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 Sennheiser wireless.

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.

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

Tenete presente che i titoli di racing che supportano il VR sono pochi.

Video card

Asus ROG STRIX RTX 2080 Ti Advanced Edition 11 GB GDDR6 (Amazon.it)

Anche una scheda video minore può essere accettabile, a patto di rinunciare alla qualità grafica mantenendo i 90fps se utilizzate un headset VR. Il frame-rate è fondamentale per evitare il motion sickness, soprattutto agli ospiti/amici neofiti. Per questo tendo ad evitare qualsiasi interpolazione (reprojection) cercando di tenere il rate dell’headset, a discapito della grafica.

Se optate per monitor 2D, è sufficente una scheda minore.

PC

Un qualsiasi PC medio-alto (un I7 come minimo), adatto alla scheda video.

Software

Windows 10.

Sim Racing Studio, SimDash per l’hardware

fpsVR , PiTool, SteamVR per il VR.

Come simulatori, che supportano la VR ce ne sono pochi, attualmente uso

  • Projects Cars 2 – Entertainment, ad esempio giro Lamborghini in Costa Azzurra, o rally su neve. Il preferito per ospiti e neofiti. Il generale una configurazione che predilige la grafica e il divertimento alla precisione. Ad esempio, no danni reali.
  • Assetto Corsa – Simulazione, generalmente la F2004 di Michael Schumacher a Monza. Configurata per una esperienza il più realistica possibile.
  • iRacing ce l’ho configurato, ma preferisco Assetto Corsa nel suo target.

Chi sono

Sono nato nel 1976, estremamente ottimista, perennemente alla ricerca di cose in grado di stupirmi o emozionarmi, e mi sto rendendo conto ora di non avere mai scritto un curricum vitae in vita mia.
Colgo l’occasione per raccontare quanto ricordo, così se nessuno leggerà, almeno funzionerà da diario per quando sarò rimbambito.

Mi son appassionato all’informatica da bambino.
Durante le elementari e scuola media, scrissi il mio primo videogioco in Basic su Commodore 64. In seconda superiore vinsi una borsa di studio (foto ricordo) per aver sviluppato un motore di libri-game su 8086 (un Amstrad 1512), in Pascal. Nel 1990 non insegnavano programmazione nel biennio delle superiori, ero un autodidatta.

Ho vissuto i tempi del navigare nelle BBS con uno Zyxel da 1200 baud, attendere 20 minuti di dial-up per una GIF da 50kb, buttare giù innocenti con WinNuke perchè l’ISP aveva solo 8 linee dial-up sempre occupate. Giocavo ai titoli Sierra in CGA, per dire.

Triennio delle superiori come Perito Informatico. Uscito con 46/60, ero una capra in italiano e elettronica. Conclusi le superiori presentando una tesi in C++ (in classe insegnavano solo Pascal), un CAD tridimensionale, con relativa tesi su algoritmi di grafica tridimensionale e rendering di superfici nascoste, sempre studiati da autodidatta.

Il mio professore di Matematica delle superiori mi notò, e mi coinvolse in un progetto europeo di realizzazione di una piattaforma di e-Learning orientata non alla formazione, bensì al motore per lo svolgimento di esami (e-Testing). Sviluppai quel progetto mentre svolgevo il servizio civile, e la sera & weekend durante le prime esperienze lavorative.

Lavorai solo un anno o forse due a Milano come dipendente di altri, poi freelance con partita IVA, infine il progetto con il mio ex professore di Matematica iniziò a ingranare, e insieme a lui fondai la mia prima società.
Il nostro software di e-testing era usato da diversi clienti francesi (Bank BNP Paribas e diverse università), e dalla Università Bocconi di Milano.
Il software fu poi usato come piattaforma per l’ECDL in Italia da parte di AICA (un fork rinominato Alice), installato in migliaia di istituti d’Italia, con il quale la nostra società erogava milioni di esami all’anno.
Il picco della mia prima società fu un organico di 11 dipendenti, ma poi quell’avventura finì. Lo sbaglio fu che avevamo un singolo cliente che copriva oltre il 90% di fatturato, e quel cliente decise di realizzarne una copia in casa per ridurre i costi. Mai provato rancore, avrei fatto lo stesso, ma il dover licenziare degli amici è stata una delle esperienze più brutte della mia vita.

Da allora ho sempre schifato dover fare l’amministratore o discutere di contratti, commercialisti etc.
NIENTE è paragonabile allo scrivere un algoritmo e vederlo girare. E’ arte, creatività, l’adorare una propria creazione che diventa creatura.

Dal 2006 in poi mi sono dedicato sia in ambito lavorativo che per passione alle tematiche di Net Neutrality e decentralizzazione della rete.

Dal 2006 al 2011 ho sviluppato, insieme ad un mio amico, un software chiamato Osiris – Serverless Portal System. Era scritto in C++, multipiattaforma Win/Linux/macOS. Lo scopo era un Content Management System (in realtà molto orientato ai forum) in cui ogni nodo partecipava alla distribuzione dei contenuti (via P2P, DHT etc). Distribuito, indistruttibile, incensurabile, con un sistema di reputazioni per una amministrazione decentralizzata, e un sistema di fork nel caso di discordanze sull’amministrazione. Si arenò dopo 5 anni di sviluppi per una serie di problemi: perdita di interesse nello sviluppo (erano interessanti le tematiche P2P, ma non molto lo scrivere un CMS da zero), difficoltà di avviare un social, e non riuscivamo a trovare la quadra a una serie di problemi di un sistema trustless, molti dei quali affrontati e risolti da Bitcoin anni dopo con i “Proof of x” e gli incentivi economici.

Nel 2009/2010 uno dei principali beta-tester di Osiris, HostFat, iniziò a dedicarsi a Bitcoin, cercando di coinvolgerci. Lo ignorammo per proseguire con Osiris, il mio più grande rammarico…

Sempre in quel periodo realizzai una serie di progetti, tra cui un monitoring della Net Neutrality di rilevazione delle tecniche di blocchi/censure applicate da ISP e governi,
e ipleak.net , uno storico ancor oggi “what is my ip address”, probabilmente il primo in assoluto in grado di rilevare i DNS.

Nel 2009 presentai come relatore alla Festa dei Pirati a Roma sia Osiris che NeuMon, fu la mia prima e unica esperienza da relatore.
Quell’evento gettò le basi del progetto successivo, AirVPN.

Dal 2010 ad oggi, sono uno dei fondatori di un servizio di VPN chiamato AirVPN. Mi occupo come team-leader dell’infrastruttura e dello sviluppo di tutti i software, sia server che client.

Spin off: da tanti anni collaboro no-profit al progetto Bebras dell’Informatica.

Passioni

  • Hacking (ehm, più che altro mi piace capire e difendermi dai CVE, ma non ho mai fatto dei pentest seriamente), VPN, Net Neutrality, P2P, crittografia, cryptocoins.
  • Home-automation e IoT. Mi piace dedicarmi alla mia casa, che è un calderone enorme di svariate tecnologie da integrare. Ne parlo un po’ qui.
  • Grafica 3D e sviluppo videogiochi (più indie-art, mai pubblicato nulla seriamente).
  • VR/AR/MR e home-entertainment. Ho tantissimi headset VR e diversi hardware di gaming in casa.

Scelte da coder

  • Sviluppo prevalentemente in C# (VisualStudio, MonoDevelop sotto Linux, Xamarin sotto macOS).
    Occasionalmente, per cose di basso livello, C/C++.
    Lato server di solito PHP, più per abitudine che altro.
    Ovviamente HTML/JS/CSS/SQL.
    Ho masticato di tutto.
    Adoro Unity Engine.
  • Host primario Windows, principalmente perchè molti software che uso (soprattutto in ambito VR) non esistono in altri OS.
    E perchè sviluppando multipiattaforma, preferisco avere X distro Linux/macOS come VM piuttosto che focalizzarmi su una.
    In ogni caso preferisco Debian, che uso su tutti i server che gestisco.

Social / Contatto

  • Twitter.
  • Se volete contattarmi, il metodo più veloce è un DM in Twitter, e poi Signal/Telegram/Whatsapp.
    Se volete ingraziarmi, contattatemi su Mastodon o Keybase o qualche sistema di nicchia ma che merita, così lo studio. No Facebook, No Instagram, No Linkedin.

3D Vis – Indie Art – Game playground – Twitter Trends

Maded for fun.

I can release the source-code if anyone are interested. GPL.
Maybe can be used for video-card benchmark.

Preview captured with 1080p / nvidia 1080:

Music by Imphenzia .

#3d #indie #indiedev #webgl #madewithunity #gameart #animation #indiegame #videogame #gamedesign #gameplayground #unity3D #VFX

Play.

Social links
Youtube: https://www.youtube.com/watch?v=44phEHhGvEk
Twitter: https://twitter.com/Clodo76/status/1105238525115539456

Primo impatto con Alexa / Amazon Echo

Ho recentemente testato Amazon Echo / Alexa (in particolare un Echo Plus e un Echo Spot) per la mia domotica (una domotica che nel mio piccolo considero ‘seria’, non semplicemente du’ device IoT tipo le luci Ikea o Hue).

In linea generale, è un ottimo prodotto. Mi sto attrezzando per piazzare diversi Echo in giro per casa per un’ampia copertura, per cui ho gradito così tanto il prodotto che NON indagherò se la soluzione Google è meglio o peggio. Feedback molto graditi comunque.

E’ un’intelligenza artificiale?

No. Qualsiasi frase fuori dai suoi pattern-matching non funziona.

>Alexa, sei meglio di Cortana?
>Mi piacciono tutte le intelligenze artificiali.

>Alexa, sei un’intelligenza artificiale?
>Purtroppo non trovo la risposta alla domanda.

>Alexa, quanto fa 2+2?
>2 più 2 uguale 4

>Alexa, quanto fa 5-20%?
>Il risultato del calcolo è -1.995.

(sia Wolfram Alpha che -bada bene- Windows Calc.exe rispondono 4.)

E’ un sistema di controllo per domotica?

Attualmente no.
Forse può essere considerato un sistema minimo in tal senso. Meglio considerarlo un’estensione, un helper di un sistema terze-parti di domotica.

Pare limitato e pensato per chi ha un numero di device che si contano con le dita, pochissime tipologie, pochissime feature supportate.
A spanne pare più una scelta di target che un peccato di gioventù.
Nel mio caso specifico ho oltre 70 devices listati nell’app Alexa: li elenca in ordine alfabetico, senza alcuna organizzazione tipica di altri sistemi di domotica (stanze, aree etc).
Usabilità UI scarsissima. Per dire, per rimuoverle tutte durante le prove, ho dovuto cliccarle una ad una, oltre a crash vari.

A titolo di esempio, la gestione termostato: accetta un

>Alexa, imposta termostato a 20

oppure

>Alexa, alza la temperature di 3 gradi

e qualcosa su modalità e scheduling. Nient’altro.

Non mi risulta sia preso in considerazione abitazioni con più termostati (per dire uno per piano), figuriamoci la gestione di temperature diverse a livello di singola stanza (generalmente gestiti con valvole di regolazione radiatori termici, a livello di calorifero o a livello di collettori nei riscaldamenti a pavimento). Roba che una qualsiasi centrale z-wave (da Fibaro a domoticz su Raspberry) gestisce facilmente.

Se avete un termostato di quelli supportati, fatemi sapere nei commenti o su Twitter se esiste un modo per chiedere la temperatura impostata o chiedere la temperatura rilevata, che non sia un’invocation a skill esterne.
Un

>Alexa, chiedi a Nest la temperatura impostata”

può essere accettabile, ma significa che Alexa non lo supporta di suo (come feature Smart Home).

E’ vera domotica? Funziona senza internet?

No. Il che a mio avviso lo rende totalmente e perennemente NON catalogabile come “sistema di gestione domotica”.
Nessun altro sistema di domotica closed (Fibaro per dire) o open (Konnex, Domoticz, OpenHab per dire) richiede internet per forza, funzionano ovviamente in lan.
Di fatto, è un helper, un gateway, niente di più.

Oltre al suo funzionamento di base, che richiede un riconoscimento vocale lato cloud, anche tutte le Skill per estenderlo sono necessariamente cloud-based.
Se avete un device IoT o generalmente un hardware comandabile in casa (per dire, una caldaia via seriale o modbus) dovete sperare che il produttore supporti Alexa (via cloud per forza) o implementarlo voi (in bocca al lupo).

Per me è inconcepibile che un sistema di domotica che deve funzionare IN CASA MIA debba dipendere da qualcosa ESTERNO A CASA MIA.
Ci si ritrova a dover avere un sistema di backup per forza (immaginate il dover aprire un cancello in mancanza di connessione internet).

Per capirci, neanche una lampadina Philips Hue o Ikea che controlla una lampadina dentro una plafoniera è domotica vera: se non si può riaccendere via app dopo aver premuto il pulsante a parete, trattasi di giocattolo, non domotica. Imho.

Personalizzazioni, adattamento a sistemi di domotica custom

Racconto la mia necessità.
Come già raccontato qui, ho un sistema custom, realizzato personale per hobby solo per casa mia, principalmente basato su uno standard hardware open chiamato Konnex, che -incredibilmente- Alexa non supporta di suo (ed è lo standard per eccellenza di domotica, supportato dalla maggior parte dei produttori di componentistica elettrica).

Per cui l’integrazione tra Alexa e il mio sistema di domotica è necessariamente (o banalmente…) che Alexa sia un’interfaccia per richieste REST/API via http a un mio Raspberry locale che gestisce a sua volta tutto (compreso Konnex).

Ci sono fondamentalmente due approcci (distinti): una Custom Skill o una Smart Home Skill.

  • Una Custom Skill permette potenzialmente qualsiasi interazione, ma necessita di essere invocata esplicitamente per nome.
  • Una Smart Home Skill permette di controllare devices (solo quelli previsti, da elencare preventivamente) senza invocazione, ma supporta pochissimi comandi.

Per farvi un’idea, Fibaro li supporta entrambi, per cui ha dovuto creare due skill distinte, la Smart Home per i comandi base e la Custom per tutti gli altri comandi.

La mia Custom Skill


Output di linux “uptime” via Custom Skill, “Raspberry” come invocation

Una Custom Skill significa dare un nome alla propria skill (nel mio caso Memole) e invocarla.
L’ho chiamata “Memole” per rendere la gestione della mia domotica user-friendly, famiglia-compatibile. Ho seriamente pensato di mettere un pupazzetto di Memole sopra ogni Alexa, per dargli un senso.
D’altro canto, che alternative mi permettono? “Raspberry”, “Casa” sarebbero nomi peggiori come invocation (Chiedi a Casa la temperatura? … madò).
Quindi:

> Alexa, chiedi a Memole la temperatura in cucina

significa implementare in Alexa Developer Console una skill Memole, un intent MyGetTemperature, e infine il match di un utterance, una frase che Alexa può riconoscere, tipo

> Alexa, chiedi a {skill-name} la temperatura in {parametro}

Così posso ottenere che mi chiama un url del mio Raspberry passandomi l’intent GetTemperature e parametro=cucina
Questo per OGNI pattern che voglio gestire.

  • Non c’è verso che l’url sia lan. Deve essere raggiungibile da AWS. Deve essere sotto HTTPS valido, e -incredibile ma vero- LetsEncrypt non è accettato. Nel mio caso, ho configurato un reverse-proxy dal mio dominio al mio raspberry di casa.
  • Non c’è verso di ricevere la frase intera chiesta ad Alexa. Di più, i parametri devono essere dei tipi specifici. Pare che supportavano un generico AMAZON.Literal a mò di stringa, per permettere un

    > Alexa, chiedi a Memole {stringa Amazon.Literal}

    in modo da smazzarmi raspberry-side richieste generiche, ma è stato deprecato, perchè Amazon pretende che le varie utterance siano il più possibile esplicite nel loro cloud.

La mia Smart Home Skill

Lo scopo è poter dire ad Alexa

Alexa, accendi luce cucina

il che significa che, come minimo:

  • Alexa dovrà chiamare un url sul mio raspberry per l’accensione
  • Alexa dovrà chiamare un url per sapere lo stato attuale

Gli step sono i seguenti:

  • Creare una skill Smart Home su Alexa Console
  • Creare una funzione lambda su AWS
  • Collegare la skill Alexa con la funzione lambda su AWS (e tutta la configurazione di autorizzazioni, oauth2, AWS role etc…)
  • Attivare la skill sul mio Alexa

A questo punto, parte una procedura chiamata Discovery: La funzione lambda chiama il mio raspberry per avere un elenco di devices, in modo che Alexa sappia quali capabilities supporta e come invocarle. L’elenco è qui.

Non mi dilungo per ora sull’implementazione della funzione lambda, mi limito a qualche perplessità:

  • Tutti i device generalmente on/off (luci o prese comandate) è solo questione di manovalanza.
  • Idem le luci dimmerabili o RGB, anche se non le ho ancora affrontate.
  • Ad oggi non ho ancora capito qual’è il Controller raccomandato/equivalente a un semplicissimo e banale click. Per dire, il The Button Fibaro.
    Ad esempio, il mio cancello elettrico, posso solo dargli un impulso “Apriti”, ma non è uno switch on/off e non posso saperne lo stato, e ad oggi non ho idea di come gestirlo con Alexa.
  • Non ho ancora capito come gestire motori. Di solito nella domotica generale han funzioni “avvia/ferma/direzione(apertura/chiusura)”. Forse devo usare un LockController, ma non ci sono ancora riuscito.
    Ad esempio, per un vasistas una funzione base è avviare l’apertura, e potergli dire ‘stop’ al momento giusto. Discorso simile basculanti garage.

Bon, per ora mi fermo qui, se avrò feedback magari estenderò qualche spiegazione.

Ciao!