PHP: multi-process socket TCP per acquisire dati dal GPS Tracker GPS-102 compatibile OpenGTS

multi-process php socket
multi-process php socket

Nei precedenti articoli “PHP: un socket TCP per acquisire dati dal GPS Tracker GPS-102 compatibile OpenGTS” (prima, seconda e terza parte), ho descritto come implementare un socket TCP in PHP per acquisire i dati GPS da un tracker di tipo TK-102 (e compatibili).

Lo script però era progettato per singolo processo, cioè non poteva servire più di una connessione alla volta e non era dunque in grado di gestire connessioni concorrenti.

E’ invece molto utile che un socket server di questo tipo sia in grado di gestire connessioni concorrenti in modo da prendere in carico più GPS tracker contemporaneamente. Fortunatamente il linguaggio PHP supporta la programmazione multi-processo attraverso l’utilizzo di fork(). In questo modo il processo padre chiamato in causa da una nuova connessione genera un processo figlio che condivide le variabili e le risorse e rimane libero di accettare nuove connessioni.

Leggi tutto

PHP: un socket TCP per acquisire dati dal GPS Tracker GPS-102 compatibile OpenGTS (terza parte)

php daemon
php daemon

In quest’ultimo articolo descrivo come si lancia in background lo script PHP su un server con sistema operativo Linux Ubuntu o Debian. Come vi sarete accorti lo script descritto nella seconda parte contiene nella prima riga il seguente codice:

#!/usr/bin/env php

in gergo questa sintassi si chiama Shebang e viene utilizzata per lanciare dalla shell l’interprete dello script che sta per essere eseguito. In questo caso il PHP. Sarà dunque necessario verificare che PHP5-CLI (command line interpreter) sia installato.

Leggi tutto

PHP: un socket TCP per acquisire dati dal GPS Tracker GPS-102 compatibile OpenGTS (seconda parte)

Socket PHP
Socket PHP

Nella prima parte di questo articolo ho illustrato come creare le tabelle del DB dove registrare i dati provenienti dal tracker GPS, le principali funzionalità dello script e la possibilità di “agganciare” questo socket direttamente al software Open Source: OpenGTS.

Quest’ultima caratteristica, la ritengo particolarmente interessante in quanto permette di evitare di scriversi tutta la parte che riguarda la visualizzazione dei punti inviati dal tracker, sulle mappe.

Settaggi del socket
ChiaveValori possibiliDescrizione
VERBOSEtrue|falseSe impostato a true fornisce un output dettagliato degli errori
MOVING_THRESHOLD.05Soglia minima in Km per la registrazione del dato [.05 = 50 metri]
OPENGTStrue|falseSe impostato a true invia query per le tabelle OpenGTS
IP_ADDRxxx.xxx.xxx.xxxIndirizzo IP in ascolto [0 = tutti gli indirizzi]
TCP_PORT0..65535La porta TCP da utilizzare
DBHOSTlocalhostIndirizzo del DB MySQL
DBUSERdbuserutente del DB MySQL
DBPASSdbpasswordpassword dell’utente del DB MySQL
DBNAMEgpsdnome del DB MySQL
POLL_TIME20|30|60|300|600Tempo di polling del tracker in secondi
SPEED_CONV1.609344|1.852Conversione da Miglia (terrestri|marine) a Km
DFLT_MSG‘tracker’Messaggio di default del tracker
SOCK_RCV_TIMEOUT120Timeout in secondi per il socket in ricezione

Ed ecco il codice PHP del loop del socket (L’intero script è disponibile qui):

Leggi tutto

PHP: un socket TCP per acquisire dati dal GPS Tracker GPS-102 compatibile OpenGTS (prima parte)

Tracker GPS 102
Tracker GPS 102

Alcuni mesi fa mi è stato regalato questo questo tracker GPS per studiare come registrare su un database MySQL i dati che vengono trasmessi. L’apparecchio si chiama GPS-102 viene prodotto dalla Cobanch ed è disponibile anche in Italia ad un costo inferiore a 100€ su questo sito: www.nonsoloprevenzione.it

Poiché le informazioni della documetazione allegata sono, come spesso accade, piuttosto scarse, mi sono messo alla ricerca nel Web delle specifiche tecniche e del datagramma per la comunicazione dei dati forniti dal tracker (coordinate, velocità, ecc). Fortunatamente ho trovato questo foglio di calcolo, che si riferisce ai modelli TK102, TK103 ma il protocollo risulta identico e fornisce dunque le informazioni necessarie allo sviluppo del software.

Leggi tutto