# OpenDMTP

OpenDMTP (Open Device Monitoring and Tracking Protocol) is een netwerkprotocol dat een bidirectionele communicatieverbinding mogelijk maakt tussen servers en apparaten (clients) over bestaande TCP/IP-netwerken zoals het internet.
OpenDMTP is gespecialiseerd in het uitwisselen van plaatsbepalende informatie zoals gps (Global Positioning System), maar ook van andere gegevens zoals temperatuur verzameld uit één of meerdere apparaten. Het is een definitie van een protocol, ontworpen door Martin Flynn en is op het moment van schrijven reeds geïmplementeerd in C, Java en PHP. OpenDMTP is opensourcesoftware, uitgebracht onder de Apache Software Licentie, versie 2 en mag volgens deze termen vrij gedownload en gedistribueerd worden.

## Overzicht

OpenDMTP is zodanig klein van omvang dat het perfect kan worden ingebouwd in kleine apparaten zoals pda's, mobiele telefoons en andere OEM-apparaten (bijvoorbeeld alarmsystemen of temperatuurmonitors) die beperkte netwerkverbindingen en systeembronnen bezitten. Het protocol is zeer efficiënt in het voeren van dialoog tussen de server en client aangezien het geoptimaliseerd is om enkel noodzakelijke informatie door te sturen met een minimum aan bytes in een zo kort mogelijke tijd.

## Specificaties
### Bidirectioneel

    Het protocol is ontworpen voor tweeweg- (duplex-)communicatie, waarbij de server een bericht kan beantwoorden, of enkele (simplex-)communicatie.

### Transportmedia

    Het ondersteunt zowel het gebruik van GPRS, satellietverbindingen of draadloze verbindingen (bijvoorbeeld Bluetooth), als het gebruik van andere op socket gebaseerde communicatie.

### Flexibele datacodering

    De flexibiliteit van het stukje software uit zich in de mogelijkheid tot het gebruik van zowel binaire als ASCII gecodeerde dataoverdracht (Base64 en Hex).

### Configureerbare berichten

    Het is tevens mogelijk dankzij de vrijesoftwarelicentie om standaardgeconfigureerde berichten aan te passen naar eigen goeddunken zodat een wijde waaier aan datatypes kan ondersteund worden.

## Toepassingsvoorbeelden

Hier volgen een paar voorbeelden voor welke applicaties OpenDMTP kan gebruikt worden:
* De mogelijkheid tot het traceren van de locatie van een voertuig dankzij het elke minuut doorsturen van coördinaten zolang het voertuig in beweging is. Bij stilstand worden slechts elk uur coördinaten verstuurd.
* Elke 10 km waarschuwen voor het vervangen van de olie van een voertuig.
* Een bericht versturen wanneer een voertuig de bestemming bereikt heeft.
* Informatie verzamelen over de afgelegde afstand, de temperatuur van een ijskast, het volume van de brandstoftank en een waarschuwing geven wanneer een bepaalde grens overschreden is.
* Het versturen van plaatsbepalende informatie naar een centrale server die deze onmiddellijk op een map uittekent.
* Bewaren van de verzamelde reisinformatie tot het voertuig zich terug op de thuislocatie bevindt en deze dan versturen via wifi of BlueTooth.
* Verzamelen van de reisinformatie van een voertuig op een SD-flashkaart die later kan gebruikt worden om een map uit te tekenen van de afgelegde weg via een pc.

## Client

De client bevat een kit voor het ontwerpen van een toepassingsrijk, op afstand controleerbaar apparaat.

### Ondersteunde platforms

Er bestaat zowel een op Java als op C gebaseerde clientuitvoering. De C-clientuitvoering is ontworpen om gecompileerd te worden op Linux en Cygwin aan de hand van de Gcc-compiler. Het is reeds getest op verschillende Linuxdistributies (onder andere ook op embedded-systemen) en op Windows XP (met Cygwin).

### GumStix

De GumStix-singleboardcomputer (http://www.gumstix.com) is een ideaal systeem voor het implementeren van het OpenDMTP-protocol. Wanneer men de GumStix-computer koppelt aan een gps-apparaat, wordt het mogelijk om reisinformatie te verzamelen en te versturen naar een back-endserver over BlueTooth of GPRS of om de data op te slaan op een SD-flashkaart.

## Server

De server vormt een back-endsysteem waar de verzamelde informatie van de client kan worden opgeslagen. De informatie kan zowel in een kommagescheiden bestand (CSV-bestandsformaat) worden opgeslagen als in een MySQL-database. Het is dan mogelijk om een zeer eenvoudige, statische webpagina op te zetten aan de hand van een webserver die de reisinformatie kan weergeven op een kaart dankzij Google Maps.

### Ondersteunde platforms

De server is geschreven in Java en draait op elk systeem dat de Java Runtime Environment ondersteunt. De server is reeds getest op Linux- en Windows XP-systemen met een MySQL-database.