Add log inhibit, add speedometer.

pull/21/head
Mark Jessop 2020-10-10 17:47:45 +10:30
rodzic a3e241c772
commit 4c83c58d69
8 zmienionych plików z 75 dodań i 13 usunięć

Wyświetl plik

@ -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')

Wyświetl plik

@ -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

Wyświetl plik

@ -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()

Wyświetl plik

@ -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)

Wyświetl plik

@ -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;

Wyświetl plik

@ -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"})

Wyświetl plik

@ -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));

Wyświetl plik

@ -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>