diff options
author | Abyss777 <abyss@fox5.ru> | 2016-08-11 11:34:51 +0500 |
---|---|---|
committer | Abyss777 <abyss@fox5.ru> | 2016-08-11 11:34:51 +0500 |
commit | 46be66c0639032c8ebf222f79e3a52b2b120ad24 (patch) | |
tree | 7fe77ba8692592ea5676665035f1c8a3daea6352 | |
parent | d89466435165e978429b609f43d3e5904212da3b (diff) | |
download | traccar-server-46be66c0639032c8ebf222f79e3a52b2b120ad24.tar.gz traccar-server-46be66c0639032c8ebf222f79e3a52b2b120ad24.tar.bz2 traccar-server-46be66c0639032c8ebf222f79e3a52b2b120ad24.zip |
- Enabled IgnitionEventHandler in pipeline
- Added motorHours to SummaryReport
- Added ignition to test-generator.py
-rw-r--r-- | debug.xml | 1 | ||||
-rw-r--r-- | src/org/traccar/BasePipelineFactory.java | 9 | ||||
-rw-r--r-- | src/org/traccar/reports/Summary.java | 8 | ||||
-rw-r--r-- | src/org/traccar/reports/model/SummaryReport.java | 11 | ||||
-rwxr-xr-x | tools/test-generator.py | 7 |
5 files changed, 34 insertions, 2 deletions
@@ -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 |