Repository navigation
SatMe PC Web publishing
← SatMe-PC guide · October 2026
SatMe-PC can push what the station makes to your own web site: SSTV and SSDV pictures, planches, event reports, contacts, the journal's videos, FT8 / FT4 passes, and as an option live data (auto-pilot, QO-100 spectrum, DATV picture, station, FT8 / FT4), your favourite satellites and your awards. Your site receives them as it likes — a PHP file on shared hosting, a WordPress plugin, a small Python or Node server, anything that answers an HTTP request. With no server at all, SatMe-PC can also write into a folder for a static site or a sync tool.
SatMe-PC always does the sending: it works from behind a home router, and nothing is opened on the station — the site never connects to the PC.
The full wire format, the examples and the receivers: docs/publication-web.md in the repository (in French: publication-web.fr.md).
Publication web is a module of Réglages › Modules, off by default, and no profile switches it on (nor off when it is ticked). While it is unticked, SatMe-PC sends nothing to anyone — no queue, no test, no live data — and no 🌐 button shows. See Modules.
Where: Réglages › Services en ligne › Envoyer vers un site web (once the module is ticked).
- Où envoyer (where to send): Adresse web (HTTPS) or Dossier sur ce PC (a folder on this PC).
-
The address that receives, two ways:
- with
{type}in it, replaced by each request's type:https://example.org/api/satme/{type}→…/api/satme/sstv-image; - without
{type}: everything goes to that one address (webhook style), the type in theX-SatMe-Typeheader:https://example.org/satme/recevoir.php.
- with
-
The token (optional, advised): a secret you make up (for instance
openssl rand -hex 32) and your site checks, sent asAuthorization: Bearer <token>. It stays on this PC and is never shown again. -
Tester (test): SatMe-PC sends a
ping(nothing is published), or tries to write into the folder. Sending is ready only after a test that passes; another address, token or folder is tested again. - Quoi envoyer (what to send): each kind Sur clic (at a click: the 🌐 button of each item), Automatique (as it comes) or Jamais (never). Everything starts at « Sur clic »: nothing goes by itself until you choose « Automatique ».
http:// (no S) is accepted only towards this machine or the local network (127.0.0.1, 192.168.…, 10.…, ….local…); elsewhere https:// is required. Redirects are not followed: give the final address.
| Kind | Type | 🌐 button | In « Automatique » |
|---|---|---|---|
| SSTV pictures | sstv-image |
the SSTV viewer | each picture received live (not the tests nor the replays) |
| SSDV pictures | ssdv-image |
under each picture, Télémesure › Images SSDV (see SSDV) | as it comes; sent again by itself when more packets arrive, under the same key |
| Planches | planche |
Planche page, 🌐 Planche vers le site | those with pictures, 2 min after the last picture received |
| Reports |
rapport (PDF) |
Planche page, 🌐 Rapport vers le site | — |
| Contacts |
qso (ADIF) |
each line of the log (Contacts) | each contact added |
| Journal videos |
journal-video (MP4) |
the journal's editor, under a video made | — |
| FT8 / FT4 passes | ft8-passage |
the Passages FT8/FT4 sur le site card of the FT8/FT4 tab (see FT8 / FT4) | at the end of each pass |
| An award received | diplome-image |
Envoyer le diplôme reçu in Agenda › Diplômes (see Awards) | never: only on that click |
Planches say everything about their series: the satellite, the event or the auto-pilot's campaign, the first and last picture's dates, slides received out of those expected and the ones missing, the best picture of each slide, the passes that brought pictures (AOS, LOS, max elevation, number of pictures, 🤖 auto-pilot) with each one's journal video, and the link to their report. An SSTV picture and a journal video say their pass and whether the auto-pilot received them. A site that does not know these optional fields ignores them.
Under En direct, each part is ticked on its own; nothing by default:
- Auto-pilote: a campaign's next pass, the reception under way, the next picture, the last picture received; during a pass, the picture coming in every 5 s.
- Spectre QO-100: the narrow-band transponder as the SDR sees it, a line a second.
- Image DATV: a small picture and the MER, while the receiver is locked.
- Station: the satellite followed, where the antennas really point, the receiving chain in use (« something transmits »: yes or no, nothing more).
- FT8/FT4: each FT8 (15 s) or FT4 (7.5 s) slot once decoded — the satellite of the pass (or the band), each message heard with its audio frequency, report, text, callsign and locator, and a small strip of the waterfall to draw a spectrogram. Only messages heard on the air.
- Satellites favoris: the ★ list, as soon as it changes, at most once an hour otherwise (for a home page to feature them).
- Diplômes: the awards followed in Agenda › Diplômes and your progress (« 37/100 locators »), as soon as they change, else once a day — never the contacts counted, the pictures' names, the notes or your details.
Only names, times and measurements — never an address, a pairing code, a password or a key. No queue: when the site does not answer, SatMe-PC waits and tries again. Effacer le direct (clear the live data) removes it from the site at once. A site that does not know a type is left alone (« non pris en charge par le site »), without an error.
Nothing goes from the page itself: each item is first copied into a queue on disk (the data folder's site/), sent one at a time, in order. No answer, a timeout or a server error: tried again after 30 s, 1 min, 2 min… then every hour, with the same delivery id, even after a restart. On the card: what waits, the last answers, Réessayer maintenant (retry now), Vider la file (empty the queue). A refusal by the site is not tried again (a refused kind shows « refusé (403) » in the history); a refused token stops everything until the next test.
Every request is one POST to the address set, with the headers X-SatMe-Version: 1, X-SatMe-Type, X-SatMe-Id (one id per delivery: the same from one try to the next, so nothing is published twice) and, with a token, Authorization: Bearer ….
-
Media (pictures, planches, reports, contacts, videos):
multipart/form-datawith three fields —type,meta(a JSON card: title, satellite, UTC time, mode, your callsign and locator, the file's name, type, size and SHA-256…) andfichier(the file). -
Data (
ping, live data, favourites, awards): a JSON. -
The answer: any 2xx is accepted; 401 = token refused (everything stops); 403 = this kind is not taken by the site; 408, 429, 5xx or no answer = tried again later. An
{"erreur": "…"}in the answer is shown as it is on the card. - The version only changes if a receiver written for v1 would stop working: adding a type or a field does not change it. Ignore the fields you do not know.
In the repository, docs/exemples/publication-web/ (GPL, copy and adapt them):
-
recevoir.php: one PHP file for shared hosting — checks the token and the type, stores each file with its JSON card, keeps anindex.json; -
recevoir.py: Python 3, standard library only — the same, plus the live data; serves the folder read-only too; -
index.html: a plain page that readsindex.jsonand shows the pictures, videos, documents and contacts.
Security, on your side: HTTPS on the Internet, a long random token compared in constant time, an allow-list of types and sizes, files named by you (never by the name received), stored where the web server does not execute them, and every text escaped when shown.
Dossier sur ce PC and a full path (/home/me/Nextcloud/satme, C:\Users\me\Sync\satme); Tester checks it can be written. SatMe-PC then writes each item with the same queue and the same choices: <type>/<year>/<id>.<ext> and its .json card, an index.json (the last 500), an Atom feed flux.xml, and when ticked direct/direct.json and the live pictures, favoris.json, diplomes.json. Never half a file: each one is written beside its place, then renamed. For a static site (Hugo, Jekyll, plain HTML) or a sync tool you already have (Nextcloud, Syncthing, an rsync or FTP mirror) — SatMe-PC never does FTP itself.
In --demo, only to a site on this machine (http://127.0.0.1:…), never to a folder: try it with recevoir.py started beside it.
SatMe · free software (GPL-2.0-or-later) · Source code · Issues · 73 de F4IOZ
SatMe
🇬🇧 English
- Home
- Why SatMe
- Installation
- Getting started
- Passes and tracking
- Orbital elements
- Rig control (CAT)
- Audio recording
- SSTV
- METEOR pictures
- Pass journal
- APRS
- Logbook
- Locators and skeds
- QO-100
- SatMe-PC
- Install SatMe-PC
- SatMe-Node (Raspberry Pi)
- Extensions
- SatMe GP server
- What's new
- FAQ
- Privacy
🇫🇷 Français
- Accueil
- Pourquoi SatMe
- Installer SatMe
- Premiers pas
- Passages et suivi
- Éléments orbitaux
- Pilotage du poste (CAT)
- Enregistrement audio
- Images SSTV
- Images METEOR
- Journal des passages
- APRS
- Carnet de trafic
- Locators et skeds
- QO-100
- SatMe-PC
- Installer SatMe-PC
- SatMe-Node (Raspberry Pi)
- Extensions
- Serveur GP SatMe
- Nouveautés
- FAQ
- Confidentialité