Panneaux de signalisation ultra simple sur réseau local ou public
Panneaux de signalisation principalement, mais aussi publier et/ou recevoir des contenus issus d'autres machines sur le réseau local ou public.
Les contenus sont en fait des captures d'écrans complètes ou partielles.
Les machines sont clientes et/ou serveurs situées indifféremment sur le réseau local ou public
Un simple navigateur et une ip locale suffiont pour gérer cette affaire.
Il y a 2 modes de fonctionnement:
-
Publication locale simple
- Une machine serveur, publie son écran localement en http://0.0.0.0:8080
- Les clients visionnent en http://ip-du-server:8080
-
Publication par messagerie MQTT
- Les machines clientes écoutent sur l'adresse locale http://127.0.0.1:8080
- Les machines qui publient leur écran exécutent le service de capture
Il y a 3 services:
-
Publication local simple: ./webserver.py --handle capture
-
Clients de messagerie MQTT: ./webserver.py --handle monitor
-
Publication par messagerie MQTT, capture d'écran: ./snoop.py
Les machines peuvent être à la fois en écoute ou être écoutée.
Sous Linux on utilisera supervisor pour lancer ou stopper ces services
Tous les scripts sont en python3
L'affichage se fait uniquement depuis un seul fichier html flux/web/index.html facilement modifiable.
- Machines sous Linux de préférence, mais ce n'est pas obligatoire.
- Raspberry pi 3, 4 5 sont l'idéal.
- Firefox, Chromium, Chrome et dérivés sont conseillés
Prévoir un accès ssh pour installer VNC. Un écran branché n'est pas nécessaire.
Toutes les manipulations pourront alors se faire directement par VNC.
La machine est en 192.168.1.10:8080
Dans une console:
-
On lance ./webserver.py -- handle capture
-
ou bien supervisor dans un navigateur http://127.0.0.1:9001
-
Lancer une présentation avec LibreOffice Impress
- Les clients suivent cette présentation en http://192.168.1.10:8080
-
Capturer la webcam avec VLC
- visionnage en http://192.168.1.10:8080
- visionnage en http://192.168.1.10:8080
etc...
Cloner ou télécharger le code depuis https://github.com/deunix-educ/Net-Flux
$> git clone git@github.com:deunix-educ/Net-Flux.git
ou
$> tar xzfv Net-Flux-main.zip
$> mv Net-Flux-main Net-Flux
$> cd Net-Flux
-
Dans répertoire etc on trouve:
- bin: quelques utilitaires
- conf: exemple de configuration pour un raspberry pi4
- install: exemple d'installation système pour un raspberry pi4
-
Installer les packages suivants:
$> sudo apt update $> sudo apt -y install build-essential git supervisor $> sudo apt -y python3-dev python3-pip python3-venv chromium-chromedriver $> sudo cp /etc/supervisor/supervisord.conf /etc/supervisor/supervisord.conf.old $> sudo cat >> /etc/supervisor/supervisord.conf << EOF [inet_http_server] port=*:9001 username=root password=toor EOF
-
Installer mosquitto si besoin sur une machine du réseau local
$> sudo apt -y install mosquitto
-
Sinon utiliser un serveur mqtt public
-
Changer les droits des fichiers suivants
$> chmod +x netflux/*.py $> chmod +x etc/bin/*.sh
-
Installer l'environnement virtuel python (dans .venv)
$> etc/bin/venv-install etc/install/requirements.txt
-
Enfin installer le fichier de configuration service supervisor
$> sudo cp etc/conf/netflux_service.conf /etc/supervisor/conf.d/ $> sudo supervisorctl reread && sudo supervisorctl update
Tester à la main.
$> cd netflux
-
copier config_example.yaml
$> cp config_example.yaml config.yaml
-
Editer la configuration des services depuis config.yaml
-
Compléter les champs de mqtt
-
Compléter screen
- fps x image/s
- title titre écran
- display: blanc ou (x11 display :0.0 pour linux)
-
compléter server
- host: ip ou 0.0.0.0 pour toute ip
- port: 8080
-
Mode local si la machine serveur/capture est en 192.168.1.10:8080
$> ./webserver --handle capture
Les clients visitent la page avec chromium
http://192.168.1.10:8080
Les clients peuvent lancer aussi directement chromium
$> ./browser.py --host 192.168.1.10 --port 8080
Sur la machine serveur on peut lancer la démonstration
$> ./demo_webpage.py
Publication par messagerie MQTT par capture d'écran
Sur les machines qui doivent publier,
-
Service à lancer
./snoop.py
Clients de messagerie MQTT en 192.168.1.20:8080
-
Service à lancer
./webserver.py --handle monitor
-
Résultat avec chromium
- sur le serveur: http://127.0.0.1:8080
- à partir d'une machine sur le réseau: http://192.168.1.20:8080