kopia lustrzana https://github.com/projecthorus/chasemapper
Add Sondehub Amateur chase car upload support
rodzic
c4b613b648
commit
baa3e01313
|
@ -8,4 +8,4 @@
|
||||||
|
|
||||||
# Now using Semantic Versioning (https://semver.org/) MAJOR.MINOR.PATCH
|
# Now using Semantic Versioning (https://semver.org/) MAJOR.MINOR.PATCH
|
||||||
|
|
||||||
__version__ = "1.3.6"
|
__version__ = "1.4.0"
|
||||||
|
|
|
@ -29,7 +29,9 @@ class SondehubChaseUploader(object):
|
||||||
""" Upload supplied chase car positions to Sondehub on a regular basis """
|
""" Upload supplied chase car positions to Sondehub on a regular basis """
|
||||||
|
|
||||||
SONDEHUB_STATION_POSITION_URL = "https://api.v2.sondehub.org/listeners"
|
SONDEHUB_STATION_POSITION_URL = "https://api.v2.sondehub.org/listeners"
|
||||||
|
SONDEHUB_STATION_POSITION_URL_AMATEUR = "https://api.v2.sondehub.org/amateur/listeners"
|
||||||
SONDEHUB_SONDE_RECOVERED_URL = "https://api.v2.sondehub.org/recovered"
|
SONDEHUB_SONDE_RECOVERED_URL = "https://api.v2.sondehub.org/recovered"
|
||||||
|
SONDEHUB_SONDE_RECOVERED_URL_AMATEUR = "https://api.v2.sondehub.org/amateur/recovered"
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
|
@ -38,6 +40,7 @@ class SondehubChaseUploader(object):
|
||||||
upload_enabled=True,
|
upload_enabled=True,
|
||||||
upload_timeout=10,
|
upload_timeout=10,
|
||||||
upload_retries=2,
|
upload_retries=2,
|
||||||
|
amateur=False # Upload to amateur DB instead of regular sondehub
|
||||||
):
|
):
|
||||||
""" Initialise the Sondehub Chase uploader, and start the update thread """
|
""" Initialise the Sondehub Chase uploader, and start the update thread """
|
||||||
|
|
||||||
|
@ -47,6 +50,7 @@ class SondehubChaseUploader(object):
|
||||||
self.upload_enabled = upload_enabled
|
self.upload_enabled = upload_enabled
|
||||||
self.upload_timeout = upload_timeout
|
self.upload_timeout = upload_timeout
|
||||||
self.upload_retries = upload_retries
|
self.upload_retries = upload_retries
|
||||||
|
self.amateur = amateur
|
||||||
|
|
||||||
self.car_position = None
|
self.car_position = None
|
||||||
self.car_position_lock = Lock()
|
self.car_position_lock = Lock()
|
||||||
|
@ -55,7 +59,14 @@ class SondehubChaseUploader(object):
|
||||||
self.uploader_thread = Thread(target=self.upload_thread)
|
self.uploader_thread = Thread(target=self.upload_thread)
|
||||||
self.uploader_thread.start()
|
self.uploader_thread.start()
|
||||||
|
|
||||||
logging.info("Sondehub - Chase-Car Position Uploader Started")
|
if amateur:
|
||||||
|
self.position_url = self.SONDEHUB_STATION_POSITION_URL_AMATEUR
|
||||||
|
self.recovery_url = self.SONDEHUB_SONDE_RECOVERED_URL_AMATEUR
|
||||||
|
logging.info("Sondehub-Amateur - Chase-Car Position Uploader Started")
|
||||||
|
else:
|
||||||
|
self.position_url = self.SONDEHUB_STATION_POSITION_URL
|
||||||
|
self.recovery_url = self.SONDEHUB_SONDE_RECOVERED_URL
|
||||||
|
logging.info("Sondehub - Chase-Car Position Uploader Started")
|
||||||
|
|
||||||
def update_position(self, position):
|
def update_position(self, position):
|
||||||
""" Update the chase car position state
|
""" Update the chase car position state
|
||||||
|
@ -137,7 +148,7 @@ class SondehubChaseUploader(object):
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
}
|
}
|
||||||
_req = requests.put(
|
_req = requests.put(
|
||||||
self.SONDEHUB_STATION_POSITION_URL,
|
self.position_url,
|
||||||
json=_position,
|
json=_position,
|
||||||
# TODO: Revisit this second timeout value.
|
# TODO: Revisit this second timeout value.
|
||||||
timeout=(self.upload_timeout, 6.1),
|
timeout=(self.upload_timeout, 6.1),
|
||||||
|
@ -203,7 +214,7 @@ class SondehubChaseUploader(object):
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
}
|
}
|
||||||
_req = requests.put(
|
_req = requests.put(
|
||||||
self.SONDEHUB_SONDE_RECOVERED_URL,
|
self.recovery_url,
|
||||||
json=_doc,
|
json=_doc,
|
||||||
# TODO: Revisit this second timeout value.
|
# TODO: Revisit this second timeout value.
|
||||||
timeout=(self.upload_timeout, 6.1),
|
timeout=(self.upload_timeout, 6.1),
|
||||||
|
|
|
@ -41,8 +41,16 @@ car_source_port = 12345
|
||||||
|
|
||||||
# Online Tracker System
|
# Online Tracker System
|
||||||
# Where to upload chase-car positions and balloon recovery notifications to.
|
# Where to upload chase-car positions and balloon recovery notifications to.
|
||||||
|
# Note - you can only select one of these at a time.
|
||||||
|
#
|
||||||
# sondehub = Sondehub v2 Database, for viewing on the SondeHub tracker (https://tracker.sondehub.org)
|
# sondehub = Sondehub v2 Database, for viewing on the SondeHub tracker (https://tracker.sondehub.org)
|
||||||
|
# Use this for chasing meteorological radiosondes!
|
||||||
|
#
|
||||||
|
# sondehubamateur = SondeHub Amateur Database, for viewing on the SondeHub-Amateur Tracker (https://amateur.sondehub.org)
|
||||||
|
# Use this when chasing your own flights, and you want to show up on the sondehub-amateur tracker.
|
||||||
|
#
|
||||||
# habitat = Habitat Database, for viewing on the HabHub tracker (https://tracker.habhub.org)
|
# habitat = Habitat Database, for viewing on the HabHub tracker (https://tracker.habhub.org)
|
||||||
|
# Use this when chasing your own flights, and you want to show up on the HabHub tracker.
|
||||||
online_tracker = sondehub
|
online_tracker = sondehub
|
||||||
|
|
||||||
# Other profiles can be defined in sections like the following:
|
# Other profiles can be defined in sections like the following:
|
||||||
|
|
|
@ -205,6 +205,12 @@ def client_settings_update(data):
|
||||||
update_rate=chasemapper_config["habitat_update_rate"],
|
update_rate=chasemapper_config["habitat_update_rate"],
|
||||||
callsign=chasemapper_config["habitat_call"],
|
callsign=chasemapper_config["habitat_call"],
|
||||||
)
|
)
|
||||||
|
elif _tracker == "sondehubamateur":
|
||||||
|
online_uploader = SondehubChaseUploader(
|
||||||
|
update_rate=chasemapper_config["habitat_update_rate"],
|
||||||
|
callsign=chasemapper_config["habitat_call"],
|
||||||
|
amateur=True
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
logging.error(
|
logging.error(
|
||||||
"Unknown Online Tracker %s, not starting uploader." % _tracker
|
"Unknown Online Tracker %s, not starting uploader." % _tracker
|
||||||
|
@ -959,7 +965,7 @@ def start_listeners(profile):
|
||||||
'telemetry_source_port' (int): Data source port
|
'telemetry_source_port' (int): Data source port
|
||||||
'car_source_type' (str): Car Position source type (none, horus_udp, gpsd, or station)
|
'car_source_type' (str): Car Position source type (none, horus_udp, gpsd, or station)
|
||||||
'car_source_port' (int): Car Position source port
|
'car_source_port' (int): Car Position source port
|
||||||
'online_tracker' (str): Which online tracker to upload chase-car info to ('habitat' or 'sondehub')
|
'online_tracker' (str): Which online tracker to upload chase-car info to ('habitat' or 'sondehub' or 'sondehubamateur')
|
||||||
"""
|
"""
|
||||||
global data_listeners, current_profile, online_uploader, chasemapper_config
|
global data_listeners, current_profile, online_uploader, chasemapper_config
|
||||||
|
|
||||||
|
@ -992,6 +998,12 @@ def start_listeners(profile):
|
||||||
update_rate=chasemapper_config["habitat_update_rate"],
|
update_rate=chasemapper_config["habitat_update_rate"],
|
||||||
callsign=chasemapper_config["habitat_call"],
|
callsign=chasemapper_config["habitat_call"],
|
||||||
)
|
)
|
||||||
|
elif _tracker == "sondehubamateur":
|
||||||
|
online_uploader = SondehubChaseUploader(
|
||||||
|
update_rate=chasemapper_config["habitat_update_rate"],
|
||||||
|
callsign=chasemapper_config["habitat_call"],
|
||||||
|
amateur=True
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
logging.error(
|
logging.error(
|
||||||
"Unknown Online Tracker %s, not starting uploader"
|
"Unknown Online Tracker %s, not starting uploader"
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
// URL to scrape recent vehicle position data from.
|
// URL to scrape recent vehicle position data from.
|
||||||
var sondehub_vehicle_url = "https://api.v2.sondehub.org/listeners/telemetry?duration=1h";
|
var sondehub_vehicle_url = "https://api.v2.sondehub.org/listeners/telemetry?duration=1h";
|
||||||
|
var sondehub_vehicle_url_amateur = "https://api.v2.sondehub.org/amateur/listeners/telemetry?duration=1h";
|
||||||
|
|
||||||
|
|
||||||
// Not really sure if this is necessary.
|
// Not really sure if this is necessary.
|
||||||
|
@ -163,6 +164,25 @@ function get_sondehub_vehicles(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Request the latest vehicle positions from Sondehub-Amateur
|
||||||
|
function get_sondehub_amateur_vehicles(){
|
||||||
|
|
||||||
|
if(!sondehub_request_running){
|
||||||
|
sondehub_request_running = true;
|
||||||
|
console.log("Requesting vehicles from Sondehub Amateur...")
|
||||||
|
$.ajax({
|
||||||
|
url: sondehub_vehicle_url_amateur,
|
||||||
|
dataType: 'json',
|
||||||
|
timeout: 15000,
|
||||||
|
async: true,
|
||||||
|
success: function(data) {
|
||||||
|
console.log(data);
|
||||||
|
process_sondehub_vehicles(data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Habitat ChaseCar lib (copied from SondeHub Tracker)
|
/* Habitat ChaseCar lib (copied from SondeHub Tracker)
|
||||||
* Uploads geolocation for chase cars to habitat
|
* Uploads geolocation for chase cars to habitat
|
||||||
|
|
|
@ -682,6 +682,9 @@
|
||||||
else if (chase_config.profiles[chase_config.selected_profile].online_tracker === "sondehub"){
|
else if (chase_config.profiles[chase_config.selected_profile].online_tracker === "sondehub"){
|
||||||
get_sondehub_vehicles();
|
get_sondehub_vehicles();
|
||||||
}
|
}
|
||||||
|
else if (chase_config.profiles[chase_config.selected_profile].online_tracker === "sondehubamateur"){
|
||||||
|
get_sondehub_amateur_vehicles();
|
||||||
|
}
|
||||||
else{
|
else{
|
||||||
// Do nothing...
|
// Do nothing...
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue