Utility per rendere più reattivo NissanConnect Services

Immagina un’esperienza di guida davvero connessa: navigazione intelligente, intrattenimento, sicurezza e molto altro ancora.
Regole del forum
Parlare di un solo e singolo argomento per discussione, nella sezione più corretta e con un titolo chiaro e descrittivo, evitando i fuori tema | Evitare di citare tutto il testo di un precedente messaggio, ma lasciare solo il minimo indispensabile usando questo sistema | Utilizzare le unità di misura corrette, in particolare i kW per la potenza e i kWh per l'energia, di cui è spiegata la differenza qui | Leggere il regolamento completo che è visibile qui
thecorsoguy
★★★ Intenditore
Messaggi: 248
Iscritto il: 18/09/2019, 8:33
Località: Verona
Veicolo: Nissan Leaf 2019

Utility per rendere più reattivo NissanConnect Services

Messaggio da thecorsoguy »

Uno dei problemi principali del servizio Nissan è che gli aggiornamenti dello stato della macchina sul software, anche quando questa è in una buona zona di copertura, sono veramente lenti. Si deve aprire il software, che mostra lo stato della macchina come l'hanno vista i server Nissan l'ultima volta, si deve premere la rotella e aspettare che il tutto si aggiorni.

E' veramente frustrante.

Allora ho deciso di provare a fare una cosa. Ho trovato i sorgenti di MyLeaf, che sono open source, e ci ho dato una studiata. Poi ho realizzato un programma, che intendo lasciare in esecuzione su un Raspberry a casa. Questo non fa altro che continuare a chiedere ai server di Nissan di chiedere alla macchina di mandare i dati aggiornati. Lo fanno ad un ritmo sufficiente a rendere l'esperienza di uso dell'app molto più ragionevole. Infatti adesso, appena aperta l'app, mostra i dati aggiornati poco prima.

Quelle che vorrei ottenere è:

- Aggiornamento più puntuale dell'app (e questo pare funzionare già adesso)
- Avere un messaggio se l'auto non risponde ai server. Se non è in copertura inutile che mi affanno con l'app, tanto non avrò mai alcun aggiornamento. Ma almeno lo so (anche questo funziona già adesso. Se l'auto non risponde per 5 minuti ho un segnale che lo mostra).
- Inviare i dati direttamente ai server ABRP. In questo modo l'app dovrebbe essere utilizzabile senza dover usare il dongle in macchina collegato a LeafSpy collegato a ABRP. Cosa che si può fare e ho già fatto, ma che è una complicazione inutile. Sembrerà più come tesla, dove ABRP prende i dati dal server tesla o qualcosa di simile. Inoltre adesso ABRP gira anche su Apple Carplay (non l'ho ancora provato) per cui dovrebbe essere ancora più usabile.
- Migliorare i comandi da remoto. Al momento sono in grado di accendere e spegnere il climatizzatore, sto vedendo se riesco a sistemare la carica della batteria. Non mi è chiaro se si può comandare la disattivazione della carica. Se ci riuscissi, mi sarebbe possibile impostare il sistema per bloccare la carica quando raggiunge l'80%, cosa che adesso è praticamente impossibile senza fare una serie di conti e approssimazioni (cosa assurda, i vecchi modelli di Leaf potevano farlo quelli nuovi no, misteri da giapponesi).

Allego uno screenshot. Al momento è ancora una specie di versione Alpha (e gira sotto Windows, per farla girare su Raspy la devo ricompilare, ma il codice è portabile).
Schermata 2021-01-21 alle 21.00.17.png
Schermata 2021-01-21 alle 21.00.17.png (91.75 KiB) Visto 1466 volte



Deen
★★★★ Esperto
Messaggi: 6497
Iscritto il: 21/08/2017, 15:17
Veicolo: Tesla Model 3 RWD

Re: Utility per rendere più reattivo NissanConnect Services

Messaggio da Deen »

Wow, bella cosa! :) Però si basa solo sull’app versione 2019 giusto?

Beh se riesci a impostare anche lo stop della ricarica sei un genio :) Perchè è una cosa che neanche la vecchia app fa! (nelle vecchie Leaf si può impostare l’80% dall’auto, ma non da remoto)

P.S. Però la batteria dell’auto non ne risente con queste richieste continue?
thecorsoguy
★★★ Intenditore
Messaggi: 248
Iscritto il: 18/09/2019, 8:33
Località: Verona
Veicolo: Nissan Leaf 2019

Re: Utility per rendere più reattivo NissanConnect Services

Messaggio da thecorsoguy »

Al momento funziona solo con le 2019+ perchè è l'auto che ho. Ma sono disponibili anche le API per le vecchie, anche se sono significativamente diverse. Ma la cosa, in futuro, si potrebbe fare...

Per la batteria dei servizi non ho idea. Ma so che viene caricata da quella di trazione quando serve, per cui sono poco preoccupato...

Ciao

Luca
Avatar utente
selidori
★★★★★ Ambasciatore
Messaggi: 20524
Iscritto il: 14/02/2016, 11:17
Località: Milano
Veicolo: EC4...
Contatta:

Re: Utility per rendere più reattivo NissanConnect Services

Messaggio da selidori »

Deen ha scritto:P.S. Però la batteria dell’auto non ne risente con queste richieste continue?
Invece io ho dubbi che quei marcioni di NISSAN blocchino troppe richieste ai loro server dallo stesso account.
Con la scusa che pensino ad un attacco hacker, potrebbero avere filtri in tal senso.
Lo so che tu farai una richiesta ogni enne minuti (a proposito, quanto?) mentre gli DDOS sono tipo migliaia di migliaia al secondo, ma stiamo parlando pure sempre di Server Nissan, quindi mi aspetto qualche mega di ram dedicati a tal servizio ed una connettività modem PSTN a 14,4 kbps (se no non si spiega neppure il ritardo nelle risposte).

Comunque complimenti.
A parte hardware (Raspberry) ed OS (windows, in effetti scelta strana "anche se è portabile") che ambiente di sviluppo hai usato? Lo chiedo perchè immagino sarà qualcosa dentro ad un sito web e quindi facile da implementare per tutti.
Si potrebbe farci un servizio pubblico, anche se poi non so come si potrebbe NON passagli i propri user/pass.
Si può avere il TUO sorgente, anche se io ho una leaf 2018, quindi non lo posso usare direttamente?
FAQ - Roaming!
Immagine Immagine
"Come sempre, basta sapere abbastanza poco e tutto diventa magicamente semplice" (T.P.)
thecorsoguy
★★★ Intenditore
Messaggi: 248
Iscritto il: 18/09/2019, 8:33
Località: Verona
Veicolo: Nissan Leaf 2019

Re: Utility per rendere più reattivo NissanConnect Services

Messaggio da thecorsoguy »

Ciao Selidori,

sono tre/quattro giorni che li spammo con una richiesta dati dal server ogni 30 secondi e una richiesta di aggiornamento dati dalla macchina ogni minuto.

Sono convinto che il problema non ci sia un reale problema di "server" alla Nissan, ma che abbiamo ridotto al minimo la comunicazione auto/server, per ragioni che non ho molto chiare. Di sicuro la macchina manda un aggiornamento ai server ogni volta che viene accesa e spenta di sua spontanea volontà, ma sembra che poi non lo faccia più. O meglio, che non lo faccia più quando è spenta e magari in ricarica (quando servirebbe) mentre sembra che lo faccia mentre la guidi (e non interessa a nessuno che si aggiorni, visto che ci sei sopra...).

Ovviamente sto vedendo per capire che cosa succede. Se mi dovessero in qualche modo bannare, amen.

Per quel che riguarda la scelta della piattaforma, una precisazione: l'hardware di riferimento è Raspy (ovviamente con il suo sistema operativo). Al momento lo faccio girare su una macchina virtuale Windows per questioni di comodità. Ho usato Lazarus e Free Pascal, per una questione di conoscenze. Sono un "vecchio" programmato e Pascal/Delphi mi sono più congeniali. Non è la scelta migliore, ma funziona ed ha un buon supporto. Inoltre basterà ricompilare il codice sulla piattaforma di destinazione in teoria senza grosse modifiche, essendo Free Pascal multi piattaforma.

Ci tengo a precisare che io ho solo messo assieme i pezzi, facendo il porting della libreria che ha scritto l'autore di MyLeaf. I sorgenti sono completamente pubblici e se volete fare qualcosa di analogo consiglio di partire da lì. Sono in DART, ma se sono riuscito a leggerli io ci possono riuscire tutti. Tra l'altro è un linguaggio più adatto allo scopo (e compila quanto meno per Android e iOS da quello che ho capito). Aggiungo che l'autore di MyLeaf ha la libreria di comunicazione per tutte le diverse versioni (vecchie Leaf, 2019+ e Nord America da quello che ho capito) che sono tutte diverse.

Nella mia idea non penso ad un servizio pubblico, per quello c'è già Tronity e pensare di farlo meglio è una utopia. In più anche io sono stato fermato dal fatto che dovrei dare User e PWD anche se hanno una modalità che permetterebbe di "tenerle" in casa.

Comunque appena sono un pò decenti te li posso spedire.

Ciao

Luca

Avatar utente
selidori
★★★★★ Ambasciatore
Messaggi: 20524
Iscritto il: 14/02/2016, 11:17
Località: Milano
Veicolo: EC4...
Contatta:

Re: Utility per rendere più reattivo NissanConnect Services

Messaggio da selidori »

thecorsoguy ha scritto:Sono convinto che il problema non ci sia un reale problema di "server" alla Nissan, ma che abbiamo ridotto al minimo la comunicazione auto/server, per ragioni che non ho molto chiare. Di sicuro la macchina manda un aggiornamento ai server ogni volta che viene accesa e spenta di sua spontanea volontà, ma sembra che poi non lo faccia più. O meglio, che non lo faccia più quando è spenta e magari in ricarica (quando servirebbe) mentre sembra che lo faccia mentre la guidi (e non interessa a nessuno che si aggiorni, visto che ci sei sopra...).
Molto molto molto interessante (e stupido...).
thecorsoguy ha scritto:Nella mia idea non penso ad un servizio pubblico, per quello c'è già Tronity e pensare di farlo meglio è una utopia. In più anche io sono stato fermato dal fatto che dovrei dare User e PWD anche se hanno una modalità che permetterebbe di "tenerle" in casa.
Anche io, potessi usare Tronity, lo userei senza reinventare la ruota, ma con le leaf 2018 non va....

Vado a studiarmi il myleaf (che infatti ho per la mia leaf) e se ci riesco faccio una versione web che poi mi piacerebbe condividere con tutti, ma appunto dovranno passarmi password/user non mi piace per niente.
Magari rilascerei la "mia" versione (la farei in php).
Ultima modifica di selidori il 24/01/2021, 13:37, modificato 1 volta in totale.
FAQ - Roaming!
Immagine Immagine
"Come sempre, basta sapere abbastanza poco e tutto diventa magicamente semplice" (T.P.)
thecorsoguy
★★★ Intenditore
Messaggi: 248
Iscritto il: 18/09/2019, 8:33
Località: Verona
Veicolo: Nissan Leaf 2019

Re: Utility per rendere più reattivo NissanConnect Services

Messaggio da thecorsoguy »

Cerca su github perchè c'è più di una incarnazione per la vecchia versione. Praticamente solo quella di MyLeaf invece per la nuova....

Per cui magari qualcosa di più affine alle tue conoscenze la trovi.

Io non ho usato PHP perchè ho veramente poca esperienza. Ecco perchè alla fine mi sono orientato su una applicazione "classica".

Pensavo che Tronity andasse anche con le vecchie....
thecorsoguy
★★★ Intenditore
Messaggi: 248
Iscritto il: 18/09/2019, 8:33
Località: Verona
Veicolo: Nissan Leaf 2019

Re: Utility per rendere più reattivo NissanConnect Services

Messaggio da thecorsoguy »

Graficamente un pò sgarrupato ma sono riuscito a compilarlo e farlo partire su un Raspberry PI 3, e comunica correttamente con macchina e server Nissan.

Adesso lo testo per qualche giorno mentre sistemo un pò il codice e se riesco aggiungo il supporto per le vecchie Nissan...

Ciao

Luca
thecorsoguy
★★★ Intenditore
Messaggi: 248
Iscritto il: 18/09/2019, 8:33
Località: Verona
Veicolo: Nissan Leaf 2019

Re: Utility per rendere più reattivo NissanConnect Services

Messaggio da thecorsoguy »

ATTENZIONE: come suggeriva Deen, dopo aver lasciato tutto acceso una notte, ho trovato la batteria dei servizi scarica. Per cui o riduco la frequenza o trovo un modo per fare richieste più frequenti quando è necessario e aumentare l'intervallo quando non serve.

Ciao

Luca
thecorsoguy
★★★ Intenditore
Messaggi: 248
Iscritto il: 18/09/2019, 8:33
Località: Verona
Veicolo: Nissan Leaf 2019

Re: Utility per rendere più reattivo NissanConnect Services

Messaggio da thecorsoguy »

Stabilito che continuare a chiedere alla macchina di aggiornare i server Nissan è tossico, sto pensando di cercare una soluzione diversa, basata anche sulla localizzazione.

Come prima info, sembra che in ogni caso la macchina aggiorni i dati ad ogni accensione e ad ogni spegnimento. Oggi ho fatto qualche prova e sembra sia proprio così (almeno per le 2019+). Per averne la certezza ho modificato il programma in modo che non forzi più l'aggiornamento dei dati sui server, ma monitori e scriva in un log quando vengono aggiornati in autonomia dall'auto. Assieme mi faccio scrivere anche la posizione GPS, in modo da poter verificare dove sono avvenuti gli aggiornamenti e poter consolidare i dati. Ovviamente mi astengo dall'usare la app, in modo da non causare aggiornamenti non voluti. Se venisse confermato potrei fare così:

1) Se l'auto mi risulta essere ferma e non collegata alla ricarica, riduco la frequenza degli aggiornamenti (infatti in questi casi non mi interessa avere un aggiornamento rapido, tanto non cambierà nulla).
2) Se è ferma ma in ricarica, continua a chiedere gli aggiornamenti con un velocità determinata dalla velocità di carica. Più la carica è rapida più gli aggiornamenti devono essere rapidi.
3) Se l'auto è in movimento allora continuo a chiedere gli aggiornamenti (se uso la funzione di comunicare i dati a ABRP). Altrimenti potrei non fare nulla, tanto non serve un granchè...

Ogni volta che vedo un nuovo aggiornamento non richiesto dalla app faccio una serie di chiamate alla velocità massima per capire in quale caso siamo. In questo modo, anche se sono in un caso in cui chiederei un aggiornamento ogni ora, ad esempio, posso cambiare stato perchè la condizione è cambiata.

Mi apre manchi solo il caso un cui la macchina è ferma da un pò e quindi sono nel caso 1, e si decide di collegarla alla carica... In questo caso, se non arriva un messaggio dalla macchina, il primo aggiornamento potrebbe metterci del tempo ad arrivare e quindi a passare dallo stato 1 allo stato 2.

Se questa strategia funziona, dovrei riuscire ad ottenere quello che voglio senza drenare la batteria.

Aggiungo che differentemente da quello che pensavo (e anche qui aveva ragione Deen) non è possibile fermare la carica da app. Il comando viene ricevuto, ma non succede nulla. Lo stesso vale per la temperatura della climatizzazione. Non serve a nulla, la temperatura impostata è sempre quella che si è lasciato sul climatizzatore.

Ciao

Luca

Rispondi

Torna a “NissanConnect Services (Leaf 2019+)”