Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
df-aggregator
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Oleksandr Barabash
df-aggregator
Commits
6ad49ac3
Commit
6ad49ac3
authored
Dec 05, 2020
by
Corey Koval
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added option to invert bearing.
parent
0094ed8f
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
46 additions
and
7 deletions
+46
-7
README.md
README.md
+2
-0
df-aggregator.py
df-aggregator.py
+22
-5
receiver_configurator.js
static/receiver_configurator.js
+22
-2
No files found.
README.md
View file @
6ad49ac3
# DF Aggregator
## New Features December 2020:
-
Added option to invert (uninvert?) the DOA bearing. If you're using a KerberosSDR,
keep this option checked.
-
LOBs are drawn for each receiver. The orange lines extending from each receiver
show the direction the signal is coming from. Currently the line is fixed to 40km
draw distance.
...
...
df-aggregator.py
View file @
6ad49ac3
...
...
@@ -20,7 +20,7 @@ from czml3 import Packet, Document, Preamble
from
czml3.properties
import
Position
,
Polyline
,
PolylineOutlineMaterial
,
Color
,
Material
from
bottle
import
route
,
run
,
request
,
get
,
post
,
put
,
response
,
redirect
,
template
,
static_file
d
=
40000
#meters
d
=
40000
#
draw distance of LOBs in
meters
receivers
=
[]
###############################################
...
...
@@ -46,8 +46,10 @@ class receiver:
self
.
isAuto
=
True
# hashed_url = hashlib.md5(station_url.encode('utf-8')).hexdigest()
# self.uid = hashed_url[:5] + hashed_url[-5:]
self
.
update
(
first_run
=
True
)
self
.
isActive
=
True
self
.
flipped
=
False
self
.
inverted
=
True
self
.
update
(
first_run
=
True
)
# Updates receiver from the remote URL
def
update
(
self
,
first_run
=
False
):
...
...
@@ -68,7 +70,12 @@ class receiver:
self
.
heading
=
float
(
xml_heading
.
text
)
xml_doa
=
xml_contents
.
find
(
'DOA'
)
self
.
raw_doa
=
float
(
xml_doa
.
text
)
if
self
.
inverted
:
self
.
doa
=
self
.
heading
+
(
360
-
self
.
raw_doa
)
elif
self
.
flipped
:
self
.
doa
=
self
.
heading
+
(
180
+
self
.
raw_doa
)
else
:
self
.
doa
=
self
.
heading
+
self
.
raw_doa
if
self
.
doa
<
0
:
self
.
doa
+=
360
elif
self
.
doa
>
359
:
...
...
@@ -79,7 +86,7 @@ class receiver:
self
.
confidence
=
int
(
xml_conf
.
text
)
except
KeyboardInterrupt
:
finish
()
except
:
except
Exception
as
ex
:
if
first_run
:
self
.
station_id
=
"Unknown"
self
.
latitude
=
0.0
...
...
@@ -92,6 +99,7 @@ class receiver:
self
.
confidence
=
0
self
.
doa_time
=
0
self
.
isActive
=
False
print
(
ex
)
print
(
f
"Problem connecting to {self.station_url}, receiver deactivated. Reactivate in WebUI."
)
# raise IOError
...
...
@@ -102,7 +110,7 @@ class receiver:
'latitude'
:
self
.
latitude
,
'longitude'
:
self
.
longitude
,
'heading'
:
self
.
heading
,
'doa'
:
self
.
doa
,
'frequency'
:
self
.
frequency
,
'power'
:
self
.
power
,
'confidence'
:
self
.
confidence
,
'doa_time'
:
self
.
doa_time
,
'mobile'
:
self
.
isMobile
,
'active'
:
self
.
isActive
,
'auto'
:
self
.
isAuto
})
'active'
:
self
.
isActive
,
'auto'
:
self
.
isAuto
,
'inverted'
:
self
.
inverted
})
latitude
=
0.0
longitude
=
0.0
...
...
@@ -532,11 +540,19 @@ def rx_params():
response
.
headers
[
'Content-Type'
]
=
'application/json'
return
json
.
dumps
(
all_rx
)
###############################################
# Returns a CZML file that contains intersect
# and ellipse information for Cesium.
###############################################
@get
(
'/output.czml'
)
def
tx_czml_out
():
output
=
write_czml
(
*
process_data
(
database_name
,
geofile
))
return
str
(
output
)
###############################################
# Returns a CZML file that contains receiver
# and LOB information for Cesium.
###############################################
@get
(
'/receivers.czml'
)
def
rx_czml_out
():
output
=
write_rx_czml
()
...
...
@@ -564,7 +580,8 @@ def update_rx(action):
action
=
int
(
action
)
try
:
receivers
[
action
]
.
isMobile
=
data
[
'mobile'
]
receivers
[
action
]
.
station_url
=
data
[
'station_url'
]
receivers
[
action
]
.
inverted
=
data
[
'inverted'
]
# receivers[action].station_url = data['station_url']
receivers
[
action
]
.
update
()
update_rx_table
()
except
IndexError
:
...
...
static/receiver_configurator.js
View file @
6ad49ac3
...
...
@@ -57,15 +57,22 @@ function editReceivers(rx_json, id) {
"Frequency:<input style=
\"
width: 105px;
\"
type=
\"
text
\"
value=
\"
"
+
receivers
[
id
].
frequency
+
"
\"
name=
\"
frequency_"
+
id
+
"
\"
/>"
;
var
mobile
=
id
+
"-mobile"
;
var
editButton
=
document
.
getElementById
(
id
+
"-edit"
);
var
isMobileCheck
=
document
.
getElementById
(
"mobilerx_toggle_"
+
id
);
var
isInvertedCheck
;
var
editButton
=
document
.
getElementById
(
id
+
"-edit"
);
if
(
editButton
.
checked
)
{
clearInterval
(
autoRefresh
);
let
isMobile
=
""
;
if
(
receivers
[
id
].
mobile
)
isMobile
=
"checked"
;
let
isInverted
=
""
;
if
(
receivers
[
id
].
inverted
)
isInverted
=
"checked"
;
document
.
getElementById
(
id
+
"-editicon"
).
innerHTML
=
"save"
;
document
.
getElementById
(
mobile
).
innerHTML
=
"Mobile Receiver: <input "
+
isMobile
+
" id=
\"
mobilerx_toggle_"
+
id
+
"
\"
type=
\"
checkbox
\"
/>"
;
document
.
getElementById
(
id
+
"-invert"
).
innerHTML
=
"Inverted DOA: <input "
+
isInverted
+
" id=
\"
invert_toggle_"
+
id
+
"
\"
type=
\"
checkbox
\"
/>"
;
isInvertedCheck
=
document
.
getElementById
(
"invert_toggle_"
+
id
);
isInvertedCheck
.
setAttribute
(
"title"
,
"KerberosSDR users keep this checked."
);
// document.getElementById(id + "-manual").innerHTML = edit_manualInfo;
// // document.getElementById(id + "-url").innerHTML = edit_stationUrlHtml;
// document.getElementById("manual_toggle_" + id).onchange = function() {
...
...
@@ -89,6 +96,13 @@ function editReceivers(rx_json, id) {
}
else
{
receivers
[
id
].
mobile
=
false
;
}
isInvertedCheck
=
document
.
getElementById
(
"invert_toggle_"
+
id
);
if
(
isInvertedCheck
.
checked
)
{
receivers
[
id
].
inverted
=
true
;
}
else
{
receivers
[
id
].
inverted
=
false
;
}
const
otherParams
=
{
headers
:
{
"content-type"
:
"application/json"
...
...
@@ -210,6 +224,7 @@ function showReceivers(rx_json, id) {
const
urlspan
=
document
.
getElementById
(
id
+
"-url"
);
const
mobilespan
=
document
.
getElementById
(
id
+
"-mobile"
);
const
invertspan
=
document
.
getElementById
(
id
+
"-invert"
);
// const manualspan = document.getElementById(id + "-manual");
const
idspan
=
document
.
getElementById
(
id
+
"-id"
);
const
locationspan
=
document
.
getElementById
(
id
+
"-location"
);
...
...
@@ -228,7 +243,9 @@ function showReceivers(rx_json, id) {
.
setAttribute
(
"title"
,
"Click to enable this receiver."
);
}
document
.
getElementById
(
id
+
"-mobile"
).
innerHTML
=
""
;
// document.getElementById(id + "-mobile").innerHTML = "";
mobilespan
.
innerHTML
=
""
;
invertspan
.
innerHTML
=
""
;
document
.
getElementById
(
id
+
"-editicon"
).
innerHTML
=
"edit"
;
// document.getElementById(id + "-manual").innerHTML = manualInfo;
// document.getElementById(id + "-url").innerHTML = stationUrlHtml;
...
...
@@ -255,6 +272,7 @@ function createReceivers(rx_json, id) {
// const urlspan = document.createElement('span');
const
mobilespan
=
document
.
createElement
(
'span'
);
const
invertspan
=
document
.
createElement
(
'span'
);
// const manualspan = document.createElement('span');
const
idspan
=
document
.
createElement
(
'span'
);
const
locationspan
=
document
.
createElement
(
'span'
);
...
...
@@ -304,6 +322,7 @@ function createReceivers(rx_json, id) {
// urlspan.id = receivers[i].uid + "-url";
mobilespan
.
id
=
receivers
[
i
].
uid
+
"-mobile"
;
invertspan
.
id
=
receivers
[
i
].
uid
+
"-invert"
;
// manualspan.id = receivers[i].uid + "-manual";
idspan
.
id
=
receivers
[
i
].
uid
+
"-id"
;
locationspan
.
id
=
receivers
[
i
].
uid
+
"-location"
;
...
...
@@ -314,6 +333,7 @@ function createReceivers(rx_json, id) {
// rxcard.appendChild(urlspan);
rxcard
.
appendChild
(
mobilespan
);
rxcard
.
appendChild
(
invertspan
);
// rxcard.appendChild(manualspan);
rxcard
.
appendChild
(
idspan
);
rxcard
.
appendChild
(
locationspan
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment