Repository URL to install this package:
|
Version:
0.2.1 ▾
|
saildrone-push
/
__init__.py
|
|---|
import configparser, os, logging
from saildrone_push.common.saildrone import SaildroneAPIError, SaildroneAPI
from saildrone_push.common.data_handler import DataHandler
# Initialize root logger
logging.basicConfig(level=logging.INFO, format="%(asctime)s: %(levelname)s %(message)s")
cfg_path = os.environ.get('SAILDRONE_PUSH_CFG_FILE') or "{0}/config/config.cfg".format(os.path.dirname(os.path.realpath(__file__)))
# Try to read and parse configuration
config = configparser.ConfigParser()
print(f"cfg_path:{cfg_path}")
try:
config.read(cfg_path)
except IOError:
# Print as logger is not yet initialized
print("Error: Could not parse configuration file. Program exited.")
exit()
def push_to_saildrone():
"""Pushes all available and enabled positions from geoserver to saildrone API"""
updated = []
try:
# Try to read data from server
data_handler = DataHandler(config)
data_handler.try_load()
# Push all enabled devices to Saildrone
platforms = data_handler.get_updated_platforms()
if len(platforms) < 1:
logging.warning('No updated platforms info.')
return []
saildrone_api = SaildroneAPI()
for key in platforms:
platform = platforms[key]
if platform["enabled"]:
ok = saildrone_api.push_vessel(key,
platform["timestamp"],
platform["latitude"],
platform["longitude"],
platform["speed_over_ground"],
platform["course_over_ground"],
platform["heading"])
if ok:
updated.append(key)
logging.info("Posted update of platform {0} to the Saildrone API".format(key))
return updated
except (IOError, SaildroneAPIError) as exc:
logging.exception("Could not push updates to Saildrone API. Update skipped.", exc)