Merge pull request #202 from ewsandor/develop
User Customization of APRS IGate Beacon Details
This commit is contained in:
commit
9674af10ce
@ -340,6 +340,27 @@ aprs_igate_beacon = False
|
|||||||
# path to the aprs symbols repository (get it here: https://github.com/hessu/aprs-symbols)
|
# path to the aprs symbols repository (get it here: https://github.com/hessu/aprs-symbols)
|
||||||
aprs_symbols_path = "/usr/share/aprs-symbols/png"
|
aprs_symbols_path = "/usr/share/aprs-symbols/png"
|
||||||
|
|
||||||
|
# Uncomment the following to customize gateway beacon details reported to the aprs network
|
||||||
|
# Plese see Dire Wolf's documentation on PBEACON configuration for complete details:
|
||||||
|
# https://github.com/wb2osz/direwolf/raw/master/doc/User-Guide.pdf
|
||||||
|
|
||||||
|
# Symbol in its two-character form as specified by the APRS spec at http://www.aprs.org/symbols/symbols-new.txt
|
||||||
|
# Default: Receive only IGate (do not send msgs back to RF)
|
||||||
|
# aprs_igate_symbol = "R&"
|
||||||
|
|
||||||
|
# Custom comment about igate
|
||||||
|
# Default: OpenWebRX APRS gateway
|
||||||
|
# aprs_igate_comment = "OpenWebRX APRS gateway"
|
||||||
|
|
||||||
|
# Antenna Height and Gain details
|
||||||
|
# Unspecified by default
|
||||||
|
# Antenna height above average terrain (HAAT) in meters
|
||||||
|
# aprs_igate_height = "5"
|
||||||
|
# Antenna gain in dBi
|
||||||
|
# aprs_igate_gain = "0"
|
||||||
|
# Antenna direction (N, NE, E, SE, S, SW, W, NW). Omnidirectional by default
|
||||||
|
# aprs_igate_dir = "NE"
|
||||||
|
|
||||||
# === PSK Reporter setting ===
|
# === PSK Reporter setting ===
|
||||||
# enable this if you want to upload all ft8, ft4 etc spots to pskreporter.info
|
# enable this if you want to upload all ft8, ft4 etc spots to pskreporter.info
|
||||||
# this also uses the receiver_gps setting from above, so make sure it contains a correct locator
|
# this also uses the receiver_gps setting from above, so make sure it contains a correct locator
|
||||||
|
34
owrx/kiss.py
34
owrx/kiss.py
@ -11,6 +11,7 @@ FESC = 0xDB
|
|||||||
TFEND = 0xDC
|
TFEND = 0xDC
|
||||||
TFESC = 0xDD
|
TFESC = 0xDD
|
||||||
|
|
||||||
|
FEET_PER_METER = 3.28084
|
||||||
|
|
||||||
class DirewolfConfig(object):
|
class DirewolfConfig(object):
|
||||||
def getConfig(self, port, is_service):
|
def getConfig(self, port, is_service):
|
||||||
@ -39,6 +40,7 @@ IGLOGIN {callsign} {password}
|
|||||||
)
|
)
|
||||||
|
|
||||||
if pm["aprs_igate_beacon"]:
|
if pm["aprs_igate_beacon"]:
|
||||||
|
#Format beacon lat/lon
|
||||||
lat = pm["receiver_gps"]["lat"]
|
lat = pm["receiver_gps"]["lat"]
|
||||||
lon = pm["receiver_gps"]["lon"]
|
lon = pm["receiver_gps"]["lon"]
|
||||||
direction_ns = "N" if lat > 0 else "S"
|
direction_ns = "N" if lat > 0 else "S"
|
||||||
@ -48,11 +50,33 @@ IGLOGIN {callsign} {password}
|
|||||||
lat = "{0:02d}^{1:05.2f}{2}".format(int(lat), (lat - int(lat)) * 60, direction_ns)
|
lat = "{0:02d}^{1:05.2f}{2}".format(int(lat), (lat - int(lat)) * 60, direction_ns)
|
||||||
lon = "{0:03d}^{1:05.2f}{2}".format(int(lon), (lon - int(lon)) * 60, direction_we)
|
lon = "{0:03d}^{1:05.2f}{2}".format(int(lon), (lon - int(lon)) * 60, direction_we)
|
||||||
|
|
||||||
config += """
|
#Format beacon details
|
||||||
PBEACON sendto=IG delay=0:30 every=60:00 symbol="igate" overlay=R lat={lat} long={lon} comment="OpenWebRX APRS gateway"
|
symbol = str(pm["aprs_igate_symbol"]) if "aprs_igate_symbol" in pm else "R&"
|
||||||
""".format(
|
gain = "GAIN=" + str(pm["aprs_igate_gain"]) if "aprs_igate_gain" in pm else ""
|
||||||
lat=lat, lon=lon
|
adir = "DIR=" + str(pm["aprs_igate_dir"]) if "aprs_igate_dir" in pm else ""
|
||||||
)
|
comment = str(pm["aprs_igate_comment"]) if "aprs_igate_comment" in pm else "\"OpenWebRX APRS gateway\""
|
||||||
|
|
||||||
|
#Convert height from meters to feet if specified
|
||||||
|
height = ""
|
||||||
|
if "aprs_igate_height" in pm:
|
||||||
|
try:
|
||||||
|
height_m = float(pm["aprs_igate_height"])
|
||||||
|
height_ft = round(height_m * FEET_PER_METER)
|
||||||
|
height = "HEIGHT=" + str(height_ft)
|
||||||
|
except:
|
||||||
|
logger.error("Cannot parse 'aprs_igate_height', expected float: " + str(pm["aprs_igate_height"]))
|
||||||
|
|
||||||
|
if((len(comment) > 0) and ((comment[0] != '"') or (comment[len(comment)-1] != '"'))):
|
||||||
|
comment = "\"" + comment + "\""
|
||||||
|
elif(len(comment) == 0):
|
||||||
|
comment = "\"\""
|
||||||
|
|
||||||
|
pbeacon = "PBEACON sendto=IG delay=0:30 every=60:00 symbol={symbol} lat={lat} long={lon} {height} {gain} {adir} comment={comment}".format(
|
||||||
|
symbol=symbol, lat=lat, lon=lon, height=height, gain=gain, adir=adir, comment=comment )
|
||||||
|
|
||||||
|
logger.info("APRS PBEACON String: " + pbeacon)
|
||||||
|
|
||||||
|
config += "\n" + pbeacon + "\n"
|
||||||
|
|
||||||
return config
|
return config
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user