aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debug.xml1
-rw-r--r--src/org/traccar/BasePipelineFactory.java9
-rw-r--r--src/org/traccar/reports/Summary.java8
-rw-r--r--src/org/traccar/reports/model/SummaryReport.java11
-rwxr-xr-xtools/test-generator.py7
5 files changed, 34 insertions, 2 deletions
diff --git a/debug.xml b/debug.xml
index 3f875aae7..8570f6893 100644
--- a/debug.xml
+++ b/debug.xml
@@ -49,6 +49,7 @@
<entry key='event.motionHandler'>true</entry>
<entry key='event.geofenceHandler'>true</entry>
<entry key='event.alertHandler'>true</entry>
+ <entry key='event.ignitionHandler'>true</entry>
<!--<entry key='event.forward.enable'>true</entry>
<entry key='event.forward.url'>http://localhost/</entry>
diff --git a/src/org/traccar/BasePipelineFactory.java b/src/org/traccar/BasePipelineFactory.java
index 2b5028f33..ed7aa0a69 100644
--- a/src/org/traccar/BasePipelineFactory.java
+++ b/src/org/traccar/BasePipelineFactory.java
@@ -31,6 +31,7 @@ import org.jboss.netty.handler.logging.LoggingHandler;
import org.jboss.netty.handler.timeout.IdleStateHandler;
import org.traccar.events.CommandResultEventHandler;
import org.traccar.events.GeofenceEventHandler;
+import org.traccar.events.IgnitionEventHandler;
import org.traccar.events.MotionEventHandler;
import org.traccar.events.OverspeedEventHandler;
import org.traccar.events.AlertEventHandler;
@@ -55,6 +56,7 @@ public abstract class BasePipelineFactory implements ChannelPipelineFactory {
private MotionEventHandler motionEventHandler;
private GeofenceEventHandler geofenceEventHandler;
private AlertEventHandler alertEventHandler;
+ private IgnitionEventHandler ignitionEventHandler;
private static final class OpenChannelHandler extends SimpleChannelHandler {
@@ -156,6 +158,9 @@ public abstract class BasePipelineFactory implements ChannelPipelineFactory {
if (Context.getConfig().getBoolean("event.alertHandler")) {
alertEventHandler = new AlertEventHandler();
}
+ if (Context.getConfig().getBoolean("event.ignitionHandler")) {
+ ignitionEventHandler = new IgnitionEventHandler();
+ }
}
protected abstract void addSpecificHandlers(ChannelPipeline pipeline);
@@ -225,6 +230,10 @@ public abstract class BasePipelineFactory implements ChannelPipelineFactory {
pipeline.addLast("AlertEventHandler", alertEventHandler);
}
+ if (alertEventHandler != null) {
+ pipeline.addLast("IgnitionEventHandler", ignitionEventHandler);
+ }
+
pipeline.addLast("mainHandler", new MainEventHandler());
return pipeline;
}
diff --git a/src/org/traccar/reports/Summary.java b/src/org/traccar/reports/Summary.java
index e0da1c87e..2c777b9bb 100644
--- a/src/org/traccar/reports/Summary.java
+++ b/src/org/traccar/reports/Summary.java
@@ -33,6 +33,14 @@ public final class Summary {
if (previousPosition != null) {
result.addDistance(DistanceCalculator.distance(previousPosition.getLatitude(),
previousPosition.getLongitude(), position.getLatitude(), position.getLongitude()));
+ if (position.getAttributes().get(Position.KEY_IGNITION) != null
+ && Boolean.parseBoolean(position.getAttributes().get(Position.KEY_IGNITION).toString())
+ && previousPosition.getAttributes().get(Position.KEY_IGNITION) != null
+ && Boolean.parseBoolean(previousPosition.getAttributes()
+ .get(Position.KEY_IGNITION).toString())) {
+ result.addMotorHours(position.getFixTime().getTime()
+ - previousPosition.getFixTime().getTime());
+ }
}
previousPosition = position;
speedSum += position.getSpeed();
diff --git a/src/org/traccar/reports/model/SummaryReport.java b/src/org/traccar/reports/model/SummaryReport.java
index e42727eaf..01006558f 100644
--- a/src/org/traccar/reports/model/SummaryReport.java
+++ b/src/org/traccar/reports/model/SummaryReport.java
@@ -47,4 +47,15 @@ public class SummaryReport {
this.maxSpeed = maxSpeed;
}
}
+
+ private long motorHours;
+ public long getMotorHours() {
+ return motorHours;
+ }
+ public void setMotorHours(long motorHours) {
+ this.motorHours = motorHours;
+ }
+ public void addMotorHours(long motorHours) {
+ this.motorHours += motorHours;
+ }
}
diff --git a/tools/test-generator.py b/tools/test-generator.py
index 41a32a565..0b8e4113c 100755
--- a/tools/test-generator.py
+++ b/tools/test-generator.py
@@ -32,10 +32,12 @@ for i in range(0, len(waypoints)):
lon = lon1 + (lon2 - lon1) * j / count
points.append((lat, lon))
-def send(conn, lat, lon, course, alarm):
+def send(conn, lat, lon, course, alarm, ignition):
params = (('id', id), ('timestamp', int(time.time())), ('lat', lat), ('lon', lon), ('bearing', course))
if alarm:
params = params + (('alarm', 'sos'),)
+ if ignition:
+ params = params + (('ignition', 'true'),)
conn.request('GET', '?' + urllib.urlencode(params))
conn.getresponse().read()
@@ -56,6 +58,7 @@ while True:
(lat1, lon1) = points[index % len(points)]
(lat2, lon2) = points[(index + 1) % len(points)]
alarm = ((index % 10) == 0)
- send(conn, lat1, lon1, course(lat1, lon1, lat2, lon2), alarm)
+ ignition = ((index % len(points)) != 0)
+ send(conn, lat1, lon1, course(lat1, lon1, lat2, lon2), alarm, ignition)
time.sleep(period)
index += 1