Fiat Ecodrive – Database

E così ho comprato una 500, come per le macchine di nuova produzione della Fiat a bordo hanno equipaggiato un sistema che si chiama Blue & Me un computer di bordo basato su Windows Mobile for Automotive, che tuttosommato non è neanche una scelta così pessima quando funziona.

Questa breve introduzione mi era necessaria per descrivere un software fornito dalla Fiat chiamato Ecodrive installabile sul computer di bordo dell’automobile. Nonostante il nome non è nientaltro che un datalogger dei dati di bordo come velocità, numero di giri del motore, temperature ecc. che salva tutto su una drive collegato alla porta usb della macchina.

Di base nasce tutto come un supporto alla guida che aiuti a migliorare lo stile al fine di ridurre i consumi..
Inutile dire che fa abbastanza ridere questa cosa come anche l’interfaccia grafica del software che lo rendo un giocattolo.

A questo punto dati + software indecente, nasce spontaneo eliminare una delle due cose e correre ai ripari.

I dati grezzi vengono salvati nel drive usb in /iFiat/ecoDrive/data/
in un file chiamato eddrm.-idnumericoauto-.bin
da lazyman non ho ancora trovato il significato di questo file quindi consiglio di passare allo step successivo che offre i dati già pronti.

Il software Ecodrive fornito è un’applicativo scritto in Adobe AIR ad occhio può sembrare una scelta di dubbia convenienza ma sul sito fiat ho avuto una grande sorpresa il download era disponibile anche per Mac OS X.
Ovviamente non sto a descrivere come installare e usare il programma quindi do per scontato che sia già stata fatta la prima importazione dei dati.

I dati sono stoccati sulla macchina locale in quattro file SQLite in una directory simile a questa:

/Users/username/Library/Preferences/com.fiat.convergence.-idnumerico-.1/Local Store/

ecoDrive.db (Questo file contiene di dati varibili del software come costo carburante e simili aggiornati automaticamente da internet)
ecoDriveCommunity.db (Questo file contiene i dati statistici della comunity usati per fare in confronto con i trend locali)
ecoDriveJourney.db (Questo file contiene i dati devi viaggi effettuati dai veicoli)
iFiat.db (Questo file contiene le configu razioni base del programma e veicoli)

I file si possono aprire con qualsiasi cosa supporti SQLite ad esempio io uso SQLite Database Browser per Mac OS X:
A noi serve il seguente file ecoDriveJourney.db in seguito illustro lo schema per tabelle:

Table: AccellerationBandData
Field: JourneyId (integer PRIMARY) id numerico del viaggio generato ad ogni avvio e spegnimento del computer di bordo.
Field: LowerSpeed (integer PRIMARY) valore numerico che esprime la velocità minima in km/h
Field: UpperSpeed (integer PRIMARY) valore numerico che esprime la velocità massima in km/h
Field: Acceleration (FLOAT) valore numerico positivo che esprime l’accellerazione in “g” per essere più chiari m/s2
Field: Deceleration (FLOAT) valore numerico negativo che esprime l’accellerazione in “g” per essere più chiari m/s2
Table: DatabaseVersion (questa tabella non contiene dati utili)

Table: DrivingCategoryScore
Field: JourneyId (integer PRIMARY) id numerico del viaggio generato ad ogni avvio e spegnimento del computer di bordo.
Field: JourneyCategoryId
Field: Score

Table: GearData
Field: JourneyId (integer PRIMARY) id numerico del viaggio generato ad ogni avvio e spegnimento del computer di bordo.
Field: Gear (integer PRIMARY) id numerico che indica la marcia 0 indica la retro
Field: AverageAcceleration (FLOAT) valore numerico positivo che esprime l’accellerazione in “g” per essere più chiari m/s2 per la singola marcia
Field: AverageDownshiftRPM (FLOAT) valore numerico che indica gli RPM minimi raggiunti con la marcia inserita
Field: AverageUpshiftRPM (FLOAT) valore numerico che indica gli RPM massimi raggiunti con la marcia inserita
Field: PercentUsage (FLOAT) sono ancora indeciso su questo dato non riesco ad interpretare i decimali
Field: AverageDeceleration (FLOAT) valore numerico negativo che esprime l’accellerazione in “g” per essere più chiari m/s2

Table: Journey
Field: Id (integer PRIMARY) id numerico del viaggio generato ad ogni avvio e spegnimento del computer di bordo.
Field: UserLocalId identificativo interno dell’autista
Field: VehicleLocalId identificativo interno del veicolo
Field: StartTime ora di inizione del viaggio espresso in unixtimestamp
Field: StartDate data di inizione del viaggio espresso in unixtimestamp
Field: EndTime ora fine di fine del viaggio espresso in unixtimestamp
Field: StartOdometer kilometri indicati dal tachimetro al momento di inizio del viaggio
Field: StopOdometer kilometri indicati dal tachimetro all fine del viaggio
Field: EcoIndex paramentro dell’ecodrive
Field: EcoIndexServerId paramentro dell’ecodrive
Field: EcoIndexServerAlgorithmVersion paramentro dell’ecodrive
Field: PricePerUnit costo del carburante
Field: FuelConsumed carburante usato
Field: JourneyType tipo di viaggio urbato/extraurbano viene calcolato in base a velocità massima e distanza, dato non reale
Field: ComputedServerFuelConsumption carburante usato
Field: ConsumptionUnit unità in cui è espresso il consumo
Field: TripDataCount ???

Table: TripAComputerData
Field: JourneyId (integer) id numerico del viaggio generato ad ogni avvio e spegnimento del computer di bordo.
Field: DateTime cambo che indica data e ora in cui viene registrato il record espresso in unixtimestamp
Field: PartialOdometer inidica in kilometri quanto indica il tachimetro parziale
Field: AverageSpeed velocità media espressa in km/h
Field: AverageFuelConsumption: valore che esprime il consumo medio in litri per 100Km
Field: EventType tipo di viaggio urbano/extraurbano
Field: DistanceUnit indica con che unità sono espresse le distanze.

Table: TripData
Field: JourneyId (integer) id numerico del viaggio generato ad ogni avvio e spegnimento del computer di bordo.
Field: DateTime cambo che indica data e ora in cui viene registrato il record espresso in unixtimestamp
Field: EngineSpeed RPM del motore
Field: VehicleSpeed velocità veicolo in Km/h
Field: IstantaneosFuelConsumption valore che esprime il consumo medio in litri per 100Km
Field: AverageFuelConsumption valore che esprime il consumo medio in litri per 100Km

Table: TripStatusData
Field: JourneyId (integer) id numerico del viaggio generato ad ogni avvio e spegnimento del computer di bordo.
Field: DateTime cambo che indica data e ora in cui viene registrato il record espresso in unixtimestamp
Field: ExternalTemperature temperatura esterna espressa in gradi centigradi
Field: CompressorSts ???

10 thoughts on “Fiat Ecodrive – Database”

  1. Eccellente lavoro! Grazie per le info.
    Vado subito a dare un’occhiata al file.

    Condivido con te che le informazioni rese dal software Ecodrive sono povere rispetto alle informazioni raccolte.
    E l’intefaccia visuale è proprio brutta!

    Sai se qualcuno ha già realizzato qualche software?

    Ciao

    Giaski

  2. Ciao,

    ti ringrazio per il post, il software Ecodrive in effetti è povero e dedicato decisamente ad un’utenza diversa, è molto un’iniziativa di social computing.

    Su qualche forum se ne parla di software alternativi, ma non si muove nulla.. in ogni caso se hai in mente qualche idea proponi e vediamo se è possibile realizzarla!

    Leo

  3. Ciao Leo,
    ho provato a convertire la data e ora dal formato unix timestamp come da te indicato ma … i conti non tornano.

    Sicuro che sia Unix time stamp con riferimento al 1/1/1970?

    Ciao
    Gianni

  4. Ciao,

    scusa ma sono stato un po’ fuori mano, si è in formato unix timestamp, devi però essere sicuro che la macchina abbia la data giusta.

    Cosa non ti torna?

    Leo

  5. Ciao trovo interessante i dati rilevati e visibili dell’ecoDrive visibili tramite l’apposito plugin su firefox.
    Io non sono programmatore e ho provato a convertire i dati unix timestamp e ho notato che sul sito http://www.unixtimestamp.com/index.php che ho usato per effettuare la conversione prevede un numero a 10 cifre, mentre quello creato dall’ecodrive è a 13. eliminando i 3 zeri in eccesso tutto è convertito correttamente.

    Se per caso riuscite a creare un software che genera telemetrie più serie dell’ecodrive, io sono interessato a provarlo. chiaramente piattaforma Os X, ma va bene anche windows

    ciao

  6. Stupendo… proprio quello che cercavo… sto sviluppando un software… vorrei porti le seguenti domande:

    a) sarebbe interessante prendere i file alla sorgente… cioè dalla penna USB… sai in ke formato sono quei .bin???

    b) se ciò nn fosse possibile… come si potrebbe portare tutto in un DB MySql??? in maniera automatica e sistematica ovviamente… del tipo… metto la penna… i scatta un bat ke, dopo aver atteso lo scaricamento dei dati mi avvia una procedura ke da Sqlite mi butti tutto su un db MySql… lo preferisco di gran lunga!

    altrimenti… sn costretto a inserire una classe per leggere i db SqLite in java…

    aspetto vostre news…

  7. Ciao,

    purtroppo i dati che vengono salvati sulla chiavetta sono in un formato RAW di cui non ho ben capito l’origine dato che il software che li generare gira su windows mobile su piattaforma ARM e il software di lettura è fatto con adobe Air, non danno molta possibilità di debug.

    Infatti passare da EcoDrive era stata la scelta più rapida per avere i dati in formato leggibile, mi viene in mente che si potrebbe usare appunto questa applicazione facendola eseguire in background in modo che faccia solo la conversione del db.

    Trattandosi di sql semplice non vedo difficile fare un warehouse che estrapola i dati e li converte/inserisce in un database come MySQL

    Non so a cosa avevi pensato, il java di solito non mi è molto amico, in genere ho la tendenza a trasformare tutto in webapp per comodità vista la svariata cerchia di sistemi che uso quotidianamente.

    Se poi si vuole far girare l’applicazione “as service” vi posso fornire spazio e risorse su uno dei miei server.

    Fatemi sapere, intanto provo ad indagare sul formato.

    Leo

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.