Sistema di tracciamento GPS basato su ActiveXperts Messaging Server

1. Background

Questo Case Study descrive uno scenario in cui un cliente desidera tenere traccia di un elevato numero di camion con GPS e SMS. L’SMS viene utilizzato in quanto la rete telefonica è una rete molto grande e robusta che è disponibile quasi ovunque. Inoltre i camion inviano automaticamente la loro posizione 2 o 4 volte all'ora e questa può essere una soluzione molto conveniente anche da un punto di vista economico.

Questo studio caso dimostra come tenere traccia dei camion e tracciarla sull’interfaccia web Google Maps.

2. Individuazione del problema

Una società di trasporto vuole aggiornare il proprio sistema di gestione dei camion con un sistema che sia in grado di monitorare dinamicamente la posizione dei loro camion. Hanno bisogno di conoscere la posizione dei loro camion disponibili in tempo reale tracciati su una mappa.

3. Obiettivi del nuovo sistema

Il sistema ha i seguenti obiettivi:

4. Soluzione ActiveXperts SMS Messaging Server

Ogni camion dell'azienda è dotato di un dispositivo abilitato SMS e di localizzazione GPS. Questi dispositivi invieranno messaggi SMS contenenti l'ID del camion e la sua posizione 4 volte ogni ora.

Il server di messaggistica SMS riceve i messaggi SMS e un trigger di script analizza i messaggi e li memorizza nel database di rilevamento.

Questo database è accessibile anche attraverso un sito web. Su questo sito web, le coordinate GPS dei camion sono mappati in tempo reale su un'immagine di Google Maps.


GPS Demo
Figura 1: Una schermata dell'applicazione GPS Demo

Formato messaggio SMS

I formati dei messaggi SMS inviati dai camion ad ActiveXperts SMS Messaging Server:

Message body (syntax): [truckid] [latitude] [longitude]
Sample:                5 40.7069943037633 -74.009313583374
Explanation:           Truck sends his identifier number and current latitude/longitude values

Hardware and Software

Il sistema comprende i seguenti componenti:

Hardware and Software

Il database GPS Tracker: GPS Coordinates.mdb

Tabella dei Camion:

Tabella delle coordinate:

Trigger

Un trigger viene chiamato quando arriva un nuovo messaggio nel sistema. Il progetto GPS Tracking accetta solo i messaggi via SMS. Dal numero di SMS in arrivo viene definito un trigger.

Il trigger GPS Coordinates.vbs esegue le seguenti operazioni:

Option Explicit

CONST STR_DATABASEFILE = "C:\\GPS Coordinates.mdb"

Dim g_objMessageDB, g_objConstants

' Creation of global objects
Set g_objConstants      = CreateObject( "Axsms-messaging-server.Constants" )
Set g_objMessageDB      = CreateObject( "Axsms-messaging-server.MessageDB" ) 

' // ========================================================================
' // Function: ProcessMessage
' // ------------------------------------------------------------------------
' // ProcessMessage trigger function to process incoming messages
' // ========================================================================

Function ProcessMessage( numMessageID )
   Dim objMessageIn, objMessageOut

   ' Open the Message Database
   g_objMessageDB.Open
   If( g_objMessageDB.LastError <> 0 ) Then
      Exit Function
   End If

   ' Retrieve the message that has just been received. If it fails then exit script 
   Set objMessageIn   = g_objMessageDB.FindFirstMessage( "ID = " & numMessageID ) 
   If g_objMessageDB.LastError <> 0 Then
      g_objMessageDB.Close
      Exit Function
   End If

   ' Change Status to from Pending to Success. If you don't do it, the message will 
   ' be processed by subsequent triggers (if defined) because message is still 
   ' pending
   objMessageIn.StatusID = g_objConstants.MESSAGESTATUS_SUCCESS
   g_objMessageDB.Save objMessageIn   

   SaveCoordinate ( objMessageIn )
 
   ' Close the Message Database
   g_objMessageDB.Close
End Function


' // ========================================================================
' // ReplyMessage
' // ------------------------------------------------------------------------
' // Auto reply to every incoming SMS message
' // ========================================================================

Function SaveCoordinate( objMessageIn )
   Dim objMessageOut
   Dim strResponse   
   Dim strResult, strCall
   Dim objConn
   Dim RSResult
   Dim nCount
   
   Set objConn = CreateObject("ADODB.Connection")
   objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & STR_DATABASEFILE & ";"
   strResult = Split(objMessageIn.Body)  
   
   If (UBOUND(strResult) + 1 < 3) Then
    Exit Function
   End If
   Set RSResult = objConn.Execute("SELECT TOP 1 * FROM Coordinates WHERE TruckID='" & _
                  strResult(0) & "' ORDER BY Callnr DESC")
   
    if ( RSResult.EOF ) Then 
     strCall = 0
     else
     strCall = RSResult ("Callnr")
    end if
   
   strCall = strCall + 1
   objConn.Execute "INSERT INTO Coordinates (TruckID,Latitude,Longitude,Callnr) VALUES ('" & _
                   strResult(0) & "','" & strResult(1) & "','" & strResult(2) & "'," & _
                   strCall & ")"
End Function