kopia lustrzana https://github.com/projecthorus/chasemapper
Add log inhibit, add speedometer.
rodzic
a3e241c772
commit
4c83c58d69
|
@ -41,6 +41,9 @@ default_config = {
|
|||
'range_ring_color': 'red',
|
||||
'range_ring_custom_color': '#FF0000',
|
||||
|
||||
# Chase Car Speedometer
|
||||
'chase_car_speed': True,
|
||||
|
||||
# Bearing processing
|
||||
'max_bearings': 300,
|
||||
'max_bearing_age': 30*60,
|
||||
|
@ -121,6 +124,12 @@ def parse_config_file(filename):
|
|||
chase_config['offline_tile_layers'].append(_dir)
|
||||
logging.info("Found Map Layers: %s" % str(chase_config['offline_tile_layers']))
|
||||
|
||||
try:
|
||||
chase_config['chase_car_speed'] = config.getboolean('speedo', 'chase_car_speed')
|
||||
except:
|
||||
logging.info("Missing Chase Car Speedo Setting, using default (disabled)")
|
||||
chase_config['chase_car_speed'] = False
|
||||
|
||||
# Telemetry Source Profiles
|
||||
|
||||
_profile_count = config.getint('profile_selection', 'profile_count')
|
||||
|
|
|
@ -165,6 +165,11 @@ range_ring_color = red
|
|||
# Custom range ring color, in hexadecimal #RRGGBB
|
||||
range_ring_custom_color = #FF0000
|
||||
|
||||
#
|
||||
# Chase Car Speedometer
|
||||
#
|
||||
[speedo]
|
||||
chase_car_speed = True
|
||||
|
||||
#
|
||||
# Bearing Processing
|
||||
|
|
|
@ -269,7 +269,8 @@ def handle_new_payload_position(data):
|
|||
flask_emit_event('telemetry_event', current_payloads[_callsign]['telem'])
|
||||
|
||||
# Add the position into the logger
|
||||
chase_logger.add_balloon_telemetry(data)
|
||||
if chase_logger:
|
||||
chase_logger.add_balloon_telemetry(data)
|
||||
|
||||
|
||||
def handle_modem_stats(data):
|
||||
|
@ -429,7 +430,8 @@ def run_prediction():
|
|||
flask_emit_event('predictor_update', _client_data)
|
||||
|
||||
# Add the prediction run to the logger.
|
||||
chase_logger.add_balloon_prediction(_client_data)
|
||||
if chase_logger:
|
||||
chase_logger.add_balloon_prediction(_client_data)
|
||||
|
||||
# Clear the predictor-running semaphore
|
||||
predictor_semaphore = False
|
||||
|
@ -684,7 +686,7 @@ def udp_listener_car_callback(data):
|
|||
bearing_store.update_car_position(_state)
|
||||
|
||||
# Add the car position to the logger, but only if we are moving (>10kph = ~3m/s)
|
||||
if _speed > 3.0:
|
||||
if (_speed > 3.0) and chase_logger:
|
||||
_car_position_update['speed'] = _speed
|
||||
_car_position_update['heading'] = _heading
|
||||
chase_logger.add_car_position(_car_position_update)
|
||||
|
@ -695,7 +697,8 @@ def udp_listener_bearing_callback(data):
|
|||
|
||||
if bearing_store != None:
|
||||
bearing_store.add_bearing(data)
|
||||
chase_logger.add_bearing(data)
|
||||
if chase_logger:
|
||||
chase_logger.add_bearing(data)
|
||||
|
||||
|
||||
# Data Age Monitoring Thread
|
||||
|
@ -849,6 +852,7 @@ if __name__ == "__main__":
|
|||
parser.add_argument("-c", "--config", type=str, default="horusmapper.cfg", help="Configuration file.")
|
||||
parser.add_argument("-v", "--verbose", action="store_true", default=False, help="Verbose output.")
|
||||
parser.add_argument("-l", "--log", type=str, default=None, help="Custom log file name. (Default: ./log_files/<timestamp>.log")
|
||||
parser.add_argument("--nolog", action="store_true", default=False, help="Inhibit all logging.")
|
||||
args = parser.parse_args()
|
||||
|
||||
# Configure logging
|
||||
|
@ -868,8 +872,11 @@ if __name__ == "__main__":
|
|||
web_handler = WebHandler()
|
||||
logging.getLogger().addHandler(web_handler)
|
||||
|
||||
# Start the Chase Logger
|
||||
chase_logger = ChaseLogger(filename=args.log)
|
||||
# Start the Chase Logger (if logging not inhibited.)
|
||||
if not args.nolog:
|
||||
chase_logger = ChaseLogger(filename=args.log)
|
||||
else:
|
||||
logging.info("Chase Logging has been inhibited, not starting logger.")
|
||||
|
||||
# Attempt to read in config file.
|
||||
chasemapper_config = read_config(args.config)
|
||||
|
@ -925,7 +932,8 @@ if __name__ == "__main__":
|
|||
data_monitor_thread_running = False
|
||||
|
||||
# Close the chase logger
|
||||
chase_logger.close()
|
||||
if chase_logger:
|
||||
chase_logger.close()
|
||||
|
||||
if habitat_uploader != None:
|
||||
habitat_uploader.close()
|
||||
|
|
|
@ -59,9 +59,9 @@ def send_bearing(json_data, udp_port=55672):
|
|||
pass
|
||||
s.bind(('',udp_port))
|
||||
try:
|
||||
s.sendto(json.dumps(packet), ('<broadcast>', udp_port))
|
||||
s.sendto(json.dumps(packet).encode('ascii'), ('<broadcast>', udp_port))
|
||||
except socket.error:
|
||||
s.sendto(json.dumps(packet), ('127.0.0.1', udp_port))
|
||||
s.sendto(json.dumps(packet).encode('ascii'), ('127.0.0.1', udp_port))
|
||||
|
||||
|
||||
def send_car_position(json_data, udp_port=55672):
|
||||
|
@ -100,9 +100,9 @@ def send_car_position(json_data, udp_port=55672):
|
|||
pass
|
||||
s.bind(('',udp_port))
|
||||
try:
|
||||
s.sendto(json.dumps(packet), ('<broadcast>', udp_port))
|
||||
s.sendto(json.dumps(packet).encode('ascii'), ('<broadcast>', udp_port))
|
||||
except socket.error:
|
||||
s.sendto(json.dumps(packet), ('127.0.0.1', udp_port))
|
||||
s.sendto(json.dumps(packet).encode('ascii'), ('127.0.0.1', udp_port))
|
||||
|
||||
|
||||
def send_balloon_telemetry(json_data, udp_port=55672):
|
||||
|
@ -142,9 +142,9 @@ def send_balloon_telemetry(json_data, udp_port=55672):
|
|||
pass
|
||||
s.bind(('',udp_port))
|
||||
try:
|
||||
s.sendto(json.dumps(packet), ('<broadcast>', udp_port))
|
||||
s.sendto(json.dumps(packet).encode('ascii'), ('<broadcast>', udp_port))
|
||||
except socket.error:
|
||||
s.sendto(json.dumps(packet), ('127.0.0.1', udp_port))
|
||||
s.sendto(json.dumps(packet).encode('ascii'), ('127.0.0.1', udp_port))
|
||||
|
||||
|
||||
def playback_json(filename, udp_port=55672, speed=1.0, start_time = 0):
|
||||
|
@ -223,6 +223,8 @@ if __name__ == '__main__':
|
|||
filename = sys.argv[1]
|
||||
speed = float(sys.argv[2])
|
||||
start_time = float(sys.argv[3])*60
|
||||
else:
|
||||
print("USAGE: python log_playback.py filename.log <speed_multiplier> <start_time>")
|
||||
|
||||
playback_json(filename, udp_port, speed, start_time)
|
||||
|
||||
|
|
|
@ -57,6 +57,12 @@ html, body, #map {
|
|||
font-size:5em;
|
||||
}
|
||||
|
||||
.chaseCarSpeed {
|
||||
color:black;
|
||||
font-weight: bold;
|
||||
font-size:3em;
|
||||
}
|
||||
|
||||
.dataAgeHeader {
|
||||
color:black;
|
||||
font-weight: bold;
|
||||
|
|
|
@ -176,6 +176,15 @@ function handleTelemetry(data){
|
|||
// Update range rings, if they are enabled.
|
||||
recenterRangeRings(data.position);
|
||||
|
||||
// Update Chase Car Speed
|
||||
if (document.getElementById("showCarSpeed").checked){
|
||||
$("#chase_car_speed").text( (chase_car_position.speed*3.6).toFixed(0) + " kph");
|
||||
$("#chase_car_speed_header").text("Chase Car Speed");
|
||||
} else {
|
||||
$("#chase_car_speed").text("");
|
||||
$("#chase_car_speed_header").text("");
|
||||
}
|
||||
|
||||
if (chase_car_position.marker == 'NONE'){
|
||||
// Create marker!
|
||||
chase_car_position.marker = L.marker(chase_car_position.latest_data,{title:"Chase Car", icon: carIcon, rotationOrigin: "center center"})
|
||||
|
|
|
@ -55,6 +55,9 @@ function serverSettingsUpdate(data){
|
|||
$('#ringColorSelect').val(chase_config.range_ring_color);
|
||||
$('#ringCustomColor').val(chase_config.range_ring_custom_color);
|
||||
$('#rangeRingsEnabled').prop('checked', chase_config.range_rings_enabled);
|
||||
|
||||
// Chase Car Speedometer
|
||||
$('#showCarSpeed').prop('checked', chase_config.chase_car_speed);
|
||||
|
||||
// Bearing settings
|
||||
$('#bearingLength').val(chase_config.bearing_length.toFixed(0));
|
||||
|
|
|
@ -315,6 +315,21 @@
|
|||
})
|
||||
.addTo(map);
|
||||
|
||||
// Chase Car Speed Display
|
||||
L.control.custom({
|
||||
position: 'bottomleft',
|
||||
content : "<div class='dataAgeHeader' id='chase_car_speed_header'></div><div id='chase_car_speed' class='chaseCarSpeed'></div>",
|
||||
classes : 'btn-group-vertical btn-group-sm',
|
||||
id: 'speed_display',
|
||||
style :
|
||||
{
|
||||
margin: '5px',
|
||||
padding: '0px 0 0 0',
|
||||
cursor: 'pointer',
|
||||
}
|
||||
})
|
||||
.addTo(map);
|
||||
|
||||
// Time-to-landing display - shows the time until landing for the currently tracked payload.
|
||||
L.control.custom({
|
||||
position: 'bottomleft',
|
||||
|
@ -741,6 +756,11 @@
|
|||
<b>Custom Color</b><input type="text" class="paramEntry" id="ringCustomColor" value="#FF0000"><br/>
|
||||
</div>
|
||||
|
||||
<h3>Speed Display</h3>
|
||||
<div class="paramRow">
|
||||
<b>Show Chase Car Speed:</b> <input type="checkbox" class="paramSelector" id="showCarSpeed">
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue