Réalisation d'une WEBSDR

Fermé
TR_2000 Messages postés 21 Date d'inscription mardi 17 mai 2022 Statut Membre Dernière intervention 28 juin 2022 - 17 mai 2022 à 09:55
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 18 mai 2022 à 18:15
Bonjour,

Je suis en stage et ma mission consiste à réaliser une WEBSDR. La SDR tourne sur un serveur. L'interface recherchée est semblable à cela :

Le client doit pouvoir observer les fréquences reçues par la SDR grâce à un spectre (waterfall) et pouvoir appliquer des filtres.


Je pense que le processus doit se comporter un peu comme la figure ci dessus. Néanmoins, on me demande que ce soit le site qui gère le traitement et non Gnuradio car plusieurs utilisateurs peuvent se connecter en même temps. Je pourrai me pencher sur cela plus tard ce n'est pas (encore) mon problème.

Pour le moment, j'ai réussi à envoyer les données depuis GnuRadio vers un port du serveur en UDP. J'aimerais maintenant réaliser la passerelle vers le Web mais je ne maitrise vraiment pas les concepts et cela fait plusieurs semaines que je cherche, j'ai l'impression de m'égarer.

Je n'arrive pas à comprendre comment utiliser les websockets. Depuis le serveur je pense qu'il est possible de faire ça via le code python que j'ai déjà programmé pour écouter le port en UDP. Il faudrait alors rajouter une partie qui prend ces données pour les envoyer un autre port à l'aide des websockets.
Cependant c'est plutôt du coté client web que je suis perdu. J'ai passé quelques temps à étudier la création d'un site (très simple) et je peux concevoir un code HTML avec du CSS et potentiellement le rendre dynamique avec du PHP. Le problème c'est que je ne sais pas comment intégrer la partie échange de données avec le serveur. Je n'arrive pas à savoir si cela doit être intégrer au code html. Je ne sais pas en quel langage cela se ferait le mieux.

Bref, je suis perdu... Je recherche des pistes pour continuer mon travail

Merci pour votre écoute,

2 réponses

Salut,
non HTML existe uniquement par le navigateur en local, du moins la page. On parle de page statiques(ou contenus statique).
Sinon ce sont les pages dynamiques où la gestion des données se fait à la demande de la page et pour construire/remplir le HTML avec les contenus dynamiques.
Plus d'explications sur le sujet ici
https://fr.wikipedia.org/wiki/Page_web_dynamique
et là:
https://fr.wikipedia.org/wiki/Architecture_trois_tiers

Ce qui permet d'éviter les websockets dont je ne vois pas l'intérêt dans ce contexte, ça serait utile si vous avez des données qui transitent dans les deux sens et besoin de les synchroniser(exemple typique pour un jeu en ligne où les joueurs ont besoin d'avoir la gestion de leurs stats/personnages en "temps réel").

Il faut regarder plutôt du côté de la gestion des flux(streaming) pour ce que vous voulez je pense.
Surtout que du côté de l'appli audio il y a pas mal de possibilité mais c'est un développement assez costaud en JavaScript. Il existe par contre des bibliothèque qui font ça notamment en libre et open source.

Ou alors faire transiter les données analysées(ex : la visualisation du spectre avec Python) par une base de données qui va servir à afficher celles ci dans la page ou même en flux de données associées au sons. Mais ça paraît plus compliqué que l'autre méthode(et lourd car en plus du traitement côté serveur il faut compter le poids des données envoyées) pour des résultats de même type.


Voilà j'espére ne pas dire de bêtise mais comme vous avez plusieurs tâches à faire et êtes en apprentissage le mieux serait de vous tourner vers votre responsable de stage pour lui demander:
  • quelle tâche faire en priorité(le serveur radio pour le web ou le lecteur côté client avec l'ajout de l'analyseur et des filtres audio).

Les deux seront nécessaires et il existent des solutions déjà faites, des bibliothèques de code notamment JavaScript ou des tutos pour faire le code vous même:
https://duckduckgo.com/?t=ffab&q=javascript+spectre+audio&ia=web
  • de quelle manière ou avec quels outils vous suggère t'il de le faire.

plutôt que passer par les websockets le mieux serait de créer un/des fichiers de lecture disponible par HTTP. Ce qui me semble bien plus pratique
S'il n'a rien à vous suggérer regardez par là:
https://developer.mozilla.org/fr/docs/Web/API/Web_Audio_API

Trouvé ça aussi:
https://www.commentcamarche.net/faq/37282-creer-une-webradio

ps: si vous avez node.js dans votre environnement de travail ou un serveur du même type(comme PHP) il existe d'autres possibilités/solutions envisageable mais ce ne seront pas les plus simples ni les plus pratiques. A voir si elles correspondent mieux à vos besoins.
0
TR_2000 Messages postés 21 Date d'inscription mardi 17 mai 2022 Statut Membre Dernière intervention 28 juin 2022 1
17 mai 2022 à 14:25
Bonjour,

Tout d'abord, merci pour votre réponse.

Je suis désolé mais j'ai si peu de notions... Je ne fais que chercher et lire pleins de documents à ce sujet que je me suis perdu.
Pouvez-vous m'indiquer quelles doivent être les étapes dans les grandes lignes une fois que je possède les données captées par la radio. A cette étape la je suis sur le serveur et je ne sais pas quoi en faire. Je connais simplement le but final (correspondant à la première image). Je me doute qu'il y a de nombreuses étapes entre mais je ne les connais pas et je n'arrive pas à les trouver. J'aimerai dans un premier temps, fondamentalement comprendre.

Je vais essayer de vous expliquer ce que je pense qu'il faut faire pour que vous puissiez me dire si j'ai à peu près compris ou non…
Je viens de récupérer des données sur un port de mon serveur, désormais je dois envoyer ces données sur le web. C'est après cela que je pourrais les traitées en fonction de ce que le client souhaite.
C'est tout ce que je suis capable de dire…

Merci encore
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
Modifié le 18 mai 2022 à 18:15
Bonjour,

Coté client web, donc en javascript, tu peux utiliser l'API WebSocket : https://developer.mozilla.org/fr/docs/Web/API/WebSockets_API

Tu peux trouver plusieurs exemples pour le coté client en regardant le code source des sites similaires, par exemple tous les sites référencés sur websdr.org

Peut-être aussi regarder des exemples sur Github :
- https://github.com/FarnhamSDR/websdr (voir dans le dossier webpages pour la partie client)
- https://github.com/naj1024/pyspectrum (voir notamment les fichiers src/webUI/WebSocketServer.py et src/webUI/webroot/main.js)
0