Skip to content

Commit

Permalink
v1.4
Browse files Browse the repository at this point in the history
  • Loading branch information
corentindrd committed Aug 31, 2022
1 parent 1a483f5 commit 0d5a85b
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 12 deletions.
Binary file added Broadcast Solution Installer.exe
Binary file not shown.
29 changes: 25 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
# RPI RADIO BROADCAST
# CLIENT TCP AVEC INTERFACE GRAPHIQUE

Ce programme est un client TCP de réception de trame venant d'un serveur.
Ce logiciel est un client TCP qui permet de recevoir un message via le protocole TCP venant d'un serveur
puis de l'interpréter afin d'effectuer une action graphique, logicielle ou mécanique sur un relais par exemple.
Sur windows il comporte en plus un système de sauvegarde de configuration et d'un système d'envoi de mail.
Des logs sont également gérer et stockés dans le répertoire _C:/User/Program Files/BROADCAST SOLUTION_ .

Ce logiciel à été concu pour une utilisation en radio pour permettre au studio d'envoyé des informations
sur un studio déporté à l'autre bout de la planète. Mais il peut être adapté à toutes situations.

***

Expand All @@ -19,7 +25,7 @@ Ce programme est un client TCP de réception de trame venant d'un serveur.
- Raspberry Pi 4 ([Raspberry](https://www.kubii.fr/cartes-raspberry-pi/2772-nouveau-raspberry-pi-4-modele-b-4gb-kubii-0765756931182.html)).
- Carte PiFace digital 2 ([PiFace](https://shop.mchobby.be/fr/pi-hats/221-piface-digital-2-pour-raspberry-pi-3232100002210.html)).
- Médialon Manager ([Téléchargement](https://medialon.com/products/medialon-manager/) )
- Windows (soon)
- Tout système comportant un serveur TCP

## Installation sur Raspberry Pi 4
- Flasher Raspbian Desktop sur la carte SD avec Raspberry Imager.
Expand Down Expand Up @@ -57,16 +63,31 @@ Ce programme est un client TCP de réception de trame venant d'un serveur.
- Ouvrir un terminal.
`sudo nano /etc/xdg/lxsession/LXDE-PI/autostart`
Rajouter en bas du fichier `@sudo python3 main.py`
#### ❗ Problèmes connus ❗:
#### ❗ Problèmes connus Raspberry❗:
- Le programme ne se lance pas au démarrage du RPI :
- Le fichier main.py n'est pas dans le bon répertoire, le fichier autostart est défini de base dans le répertoire `/home/pi/`
Si le programme est dans un autre répertoire il faut l'indiquer dans le fichier autostart EXEMPLE : `@sudo python3 /home/pi/radio/main.py`
- "_No PiFace Digital board detected_":
- Enlever et remettre la carte sur le RPI puis relancer le programme.
- Refaire la procédure d'installation des librairies.
#### ❗ Problèmes connus windows❗:

***
## CHANGELOG
### V1.4.0
#### **Principaux ajouts (windows) :**
- **Arrivée du programme sur windows :**
- Système de sauvegarde de configuration
- Bouton paramètres avec interface graphique ayant la possibilité de changer les informations : réseau (adresse IP et port) , messages provenant du serveur
- Ajout d'un système d'envoi de mail (fonction actuellement en test) fonctionnant avec GMAIL en créant un mot de passe pour application avec votre adresse GMAIL ([APP Password](https://myaccount.google.com/apppasswords))
- Ajout d'un bouton qui permet de redémarrer le client
#### **Améliorations et divers (windows) :**
- Ajout d'un bouton quitter en haut à droite
#### **Principaux ajouts (linux) :**
- Ajout de voyants :
- Voyant _PiFace_ pour savoir si votre carte PiFace est bien installée et reconnue
- Voyant _Librairies_ pour savoir si toutes les librairies nécessaires ont bien été chargée et correctement installés
- Voyant _Serveur_ pour savoir si la connexion au serveur est bien active
### V1.3.3
#### **Principaux ajouts :**
- Refonte complète du système de chronomètre pour diminuer la charge système.
Expand Down
51 changes: 43 additions & 8 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,16 @@

try:
import pifacedigitalio as p
piface = 1
except:
piface = 0
pass

# fonction chrono

def updateTime():

global chronotitle
global str_time
global chronotitle, str_time

if startchrono == 1:
now = default_timer() - start
Expand Down Expand Up @@ -54,11 +55,8 @@ def trigo():

# fonction serveur tcp
def onair():
global connected
global sock
global title
global start
global startchrono

global connected, sock, title, start, startchrono

while True:
try:
Expand All @@ -70,26 +68,32 @@ def onair():
updateTime()
try:
p.digital_write(0, 1)
voyant1.create_rectangle(0, 0, 60, 20, fill='green')
except:
voyant1.create_rectangle(0, 0, 60, 20, fill='red')
pass
elif message.find("10,0") != -1:
title.config(text="ON AIR", font=("Avenir-Black", title_size), bg='#4D0000', fg='black')
startchrono = 0
updateTime()
try:
p.digital_write(0, 0)
voyant1.create_rectangle(0, 0, 60, 20, fill='green')
except:
voyant1.create_rectangle(0, 0, 60, 20, fill='red')
pass

except socket.error:
connected = False
sock = socket.socket()
print("Connexion perdue... reconnexion")
voyant3.create_rectangle(0, 0, 60, 20, fill='red')
while not connected:
try:
sock.connect((ipaddress, port))
connected = True
print("Re-connexion réussie")
voyant3.create_rectangle(0, 0, 60, 20, fill='green')
except socket.error:
time.sleep(0.5)

Expand Down Expand Up @@ -138,10 +142,41 @@ def onair():
title = Label(root, text="ON AIR", font=("Avenir-Black", title_size), bg='#4D0000', fg='black')
title.place(relx=0.5, rely=0.12, anchor=CENTER)

#création du canvas
#création du canvas secondes et heures

C = Canvas(root, bg="black", height=canvas_size, width=canvas_size, highlightthickness=0)

#création des canvas voyants

voyant1 = Canvas(root, bg="white", height=20, width=60, highlightthickness=0)
voyant2 = Canvas(root, bg="white", height=20, width=60, highlightthickness=0)
voyant3 = Canvas(root, bg="white", height=20, width=60, highlightthickness=0)

voyant1.create_rectangle(0, 0, 60, 20, fill='red')
voyant2.create_rectangle(0, 0, 60, 20, fill='red')
voyant3.create_rectangle(0, 0, 60, 20, fill='red')

voyant1.place(relx=0.05, rely=0.95, anchor=CENTER)
voyant2.place(relx=0.1, rely=0.95, anchor=CENTER)
voyant3.place(relx=0.15, rely=0.95, anchor=CENTER)

#création des titres voyants

voyanttitre1 = Label(root, text="PiFace 2", font=("Avenir-Black", 10), bg='black', fg='white')
voyanttitre2 = Label(root, text="Librairies", font=("Avenir-Black", 10), bg='black', fg='white')
voyanttitre3 = Label(root, text="Serveur", font=("Avenir-Black", 10), bg='black', fg='white')

voyanttitre1.place(relx=0.05, rely=0.93, anchor=CENTER)
voyanttitre2.place(relx=0.1, rely=0.93, anchor=CENTER)
voyanttitre3.place(relx=0.15, rely=0.93, anchor=CENTER)

#affichage voyant libraries

if piface == 1:
voyant2.create_rectangle(0, 0, 60, 20, fill='green')
else:
voyant2.create_rectangle(0, 0, 60, 20, fill='red')

#création du chrono

chronotitle = Label(root, fg='white', bg='black', font=("Avenir-Black", chrono_size))
Expand Down

0 comments on commit 0d5a85b

Please sign in to comment.