as the developer and maintainer of our PEGASUS SatNOGS ground station in Austria, I would like to ask for access to create a telemetry dashboard.
I am part of the ground station team among some other students which support my work. The PEGASUS mission will soon come to an end, but we would like to learn as much as possible from it. Therefore, we are in a hurry concerning the full implementation of our satellite. Our next CubeSat mission CLIMB is planed to be launch next year, it shall be fully integrated into SatNOGS.
As a starting point for the SatNOGS Dashboard, we have developed a satnogs-decoder parser with the support of @DL4PD. The merge request is currently still open. I have pushed the last changes today, I hope it gets merged soon
@fredy: If you will give us access to the dashboard, please contact me via DM, i will provide you with the accounts of the team.
@fh_wienerneustadt decoders have been deployed and the one for Pegasus has already been assigned to the satellite. In the next minutes all data will pass through the decoder and will be ready to be used in the dashboards site.
I have a question concerning booleans in SatNOGS Dashboards. PEGASUS has many status bits, which I have implemented using booleans in the Kaitai satnogs-decoder (e.g. b1 = true / false).
According to the Grafana description there is the possibility to map special values (e.g. booleans) with a user-defined text. Nevertheless, within SatNOGS Dashboards, I am only able to visualize “true” or “false”, but I am not able to map “true” = enabled or “false” = disabled. E.g.:
Am I doing something wrong, or aren’t there all Grafana features available within SatNOGS Dashboards? Looking into other boards didn’t help much, since they provide those status bits as a number (0 or 1) and map the text to it.
Within SatNOGS DB - PEGASUS I am able to see all decoder fields. Within SatNOGS Dashboard I am not able to select some of them, especially those of not frequently or only on request sent beacons:
A-Beacon
S-Beacon
E-Beacon (Not sure about that, since most of the fields are the same as within the O-Beacons)
HKD-Beacon (Not sure about that, since most of the fields are the same as within the O-Beacons)
O1-Beacon and O2-Beacon are sent every 30 Seconds and work perfectly fine. Is there a reason, why the other fields are missing / not selectable in the dashboard? The S-Beacon was received around 5 times since the decoder was implemented.
As @DL4PD says, this sounds like they are not decoded, in order to confirm it, is it possible to point me to them in one or more Network observations?
Here are the last observations with data in Network for the last week. After pointing me to the beacons in the observations I can check if they are decoded when sent in DB.
@DL4PD What do you mean with “no binary data in one of those fields”?
One Note (not sure if it is relevant): I left the last 18 bytes untouched, since these contain the CRC and FEC bytes. But I did that for all beacons, where this isn’t a problem - also according to Kaitai Doc thats perfectly fine. Only our station uploades this last 18 bytes due to a gr-satellites modification, since we need them for our local data base.
Oh, you should always check the whole decoding process as described in the readme.
That’s installing the package and run one of the decoder CLI commands. It should produce a JSON output with all fields present that are filled with data.
I have overseen this … thought it is enough to check it within Kaitai Web IDE and passing the pipeline after commiting the changes within the MR. I will have a look on how to check it correctly.
❯ decode_multiple --hex_frame C04F4E303341549E02091C00000001220001061C00C0A6FFFFC0A6B6A600FF0098600B00000195028B02FFFFFFFFBB7D7399142956E6C15FE2FAB02CE0C871D2 Pegasus
Traceback (most recent call last):
File "/Users/pd/Documents/software/.decoders-venv/bin/decode_multiple", line 33, in <module>
sys.exit(load_entry_point('satnogs-decoders', 'console_scripts', 'decode_multiple')())
File "/Users/pd/Documents/software/satnogs-decoders/satnogsdecoders/decode_multiple.py", line 63, in main
print(decode_multiple(args.decoder_name, parms, args.v))
File "/Users/pd/Documents/software/satnogs-decoders/satnogsdecoders/decode_multiple.py", line 180, in decode_multiple
return json.dumps(json_obj, indent=4, sort_keys=False)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/__init__.py", line 234, in dumps
return cls(
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/encoder.py", line 201, in encode
chunks = list(chunks)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/encoder.py", line 429, in _iterencode
yield from _iterencode_list(o, _current_indent_level)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/encoder.py", line 325, in _iterencode_list
yield from chunks
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/encoder.py", line 405, in _iterencode_dict
yield from chunks
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/encoder.py", line 405, in _iterencode_dict
yield from chunks
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/encoder.py", line 438, in _iterencode
o = _default(o)
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/json/encoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type bytes is not JSON serializable
When the MR is merged then it is part of the code, so what you need is to get the updated code and start from the beginning to apply your changes/fixes with new commit(s) and new MR.
So, in your local repo, you get the changes from the remote repo of LSF. Then you perform the commits, push to your own remote repo (in a new branch or in your master branch) and then you create the new MR.