TamperMonkey Script for seeing others sats on Observations

I wrote a TamperMonkey script for adding a list of others sats over head on or neat an observations frequency to the bottom of observation pages.

It works using a new endpoint on my satnogs map server to let python handle the heavy lifting. Currently it just shows sats that are within 30Khz either side of the observation frequency using the current TLEs (I may add support for using old TLEs later)

I have plans to expand it to generate ikhnos like waterfalls that display all the other satellites on the waterfall.

Here is an example.

// ==UserScript==
// @name         ObservationExtra
// @version      2026-08-21
// @description  Add Other Sats on Freq Over Head to Satnogs Observations
// @author       KD9KCK
// @match        https://network.satnogs.org/observations/*/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=satnogs.org
// @grant        GM.xmlHttpRequest
// @require      https://cdnjs.cloudflare.com/ajax/libs/satellite.js/4.1.4/satellite.min.js
// ==/UserScript==

(async function() {
‘use strict’;
let obs = document.getElementById(“observation-info”).innerHTML.trim().split(“#”)[1]
let overhead = JSON.parse(await httpGet( “https://satnogs.jwgtechs.com/overhead_sats/”+obs))
let edgeTable = document.getElementsByClassName(“table table-sm table-borderless table-hover”)[0].tBodies[0]
const newRow = edgeTable.insertRow();
const label = newRow.insertCell();
label.classList.add(‘badge’)
label.classList.add(‘badge-secondary’);
label.innerHTML = “Other Sats On Freq Over Head”
const list = newRow.insertCell();
let mittle = “”
overhead.forEach(sat => {
mittle += “”+ sat + “”;
})
list.innerHTML = “” +mittle + “”

function httpGet(url) {
return new Promise((resolve, reject) => {
GM.xmlHttpRequest({
method: “GET”,
url: url,
onload: (response) => resolve(response.responseText),
onerror: (error) => reject(error),
ontimeout: (error) => reject(error)
});
});
}
})();

10 Likes

This is something I wanted to implement for a long time!

We should definitely add this in Network code, if you are interested we can discuss it and see how it can be added (plan, design, implement frontend and backend).

Just a quick note, there is a plan to replace waterfall (image) with waterfall data (aka artifacts), so while the backend would remain the same, I wouldn’t spend a lot of time on the frontend part that uses the waterfall image, however I don’t say it wouldn’t be useful to have something like ikhnos written in javascript and plot directly on the observation page the other satellites.

4 Likes

Yes! i do believe this could easily be added to network! If help is needed on this, i can be available.

4 Likes

cool. can you share the backend source
https://satnogs.jwgtechs.com/overhead_sats/14865033

1 Like

poke @f4tnk

check here

1 Like

I’ve seen this, however I think it is better to keep the “raw” data (in this case the produced waterfall image) clean and work separately on any further analysis.

1 Like

Yeah I need to do a push for my Map to add it. But basically it has a copy of the transmittet list it downloads once an hour or so, that it searches thru to find the near by in freqency sats, (this would be just a basic DB querry if adding to the network) then I am propagating the satellites over the observation timeframe to generate if they are above the horizon for the station AND to get the range_rates for the waterfall stuff.

1 Like