QsyControleur: QSY Salon pour installation sur réseau RRF

Dans cet article, je vous décris l’installation et le fonctionnement d’un programme de gestion de QSY Salon. Il est réalisé en Python.

J’ai profité de la période de confinement pour occuper intelligemment mon fils.
Je ne sais pas si vous le savez mais la programmation Python est maintenant inclus dans le programme de seconde.
Les calculatrices des élèves ont même la possibilité de lancer et d’éditer des programmes Python.

Tout ça pour vous dire que le plus gros de ce script a été écrit par Thibaut qui à 15 ans.
J’ai juste ensuite adapté le programme pour mon besoin avec la lecture du GPIO à la place d’un fichier texte et mis en page le script en mettant en forme les paramètres en variables .

Venons maintenant à ce Script…

Actuellement, vous êtes plusieurs à programmer des connexions sur un des salons du RRF en automatique.
Par exemple sur l’Ouest les vendredis soirs, il y a une interconnexion sur le salon local.

Comment cela fonctionne?

Dans un fichier CRON (fichier de programmation des actions sous Linux, décrit plus bas)
On va y indiquer l’heure pour lancer le script afin d’aller sur le salon local
/etc/spotnik/restart.loc
Donc par exemple on va lui dire qu’a 17H00 il se connecte sur le salon local et à 20h00, il retourne sur le RRF.
Le système quand il arrivera aux différents horaires lancera le script.

Que constate t-on?

Si vous mettez des heures piles vous avez des chances de faire le QSY en pleine balise horaire ( balise longue dans Svxlink).
Donc vous allez me dire, simple nous allons mettre 16h50 comme ça on est tranquille.
Oui, on est tranquille avec la balise, mais si un QSO est en cours le script se lancera quand même. Il ne tient pas compte de l’activité du relais.
Pour rappel, un script de changement de salon entraine l’arrêt du relais et le redémarrage du système avec un fichier de configuration spécifique propre à chaque salon.

La solution:

QsyControleur permet lorsque qu’il est intégré dans CRON de gérer un QSY programmé.
Avant d’effectuer le QSY, il contrôle que le relais n’est pas en émission afin d’éviter de couper un QSO.
Pour effectuer ce contrôle, il regarde tout simplement si la sortie PTT est à 1 ou à 0.

Fonctionnement:

Le script est lancé via le fichier cron et va lancer le QSY que vous avez défini.
Dans le programme, vous devez renseigner:

Le GPIO de la detection PTT:
gpio= »gpio18″
Le temps entre les test en s:
timetest=60
Le chemin du script à lancer
Script_Path= »/etc/spotnik/restart.bav »

Au démarrage le script va voir quel est l’état du port PTT ( selon le gpio que vous aurez indiquer), si il est égale à 0 (PTT OFF) il lance le qsy directement, si il est à 1 il relance le test selon le temps que vous aurez programmé dans timetest.

Affichage si PTT = 1
Pour le développement 10S ont été défini.
Affichage si PTT = 0



Remarque:
Pour connaitre le port PTT utilisé, allez voir le fichier de configuration:
taper spot puis choix14 et rechercher la ligne: PTT_PIN=gpio18 (dans notre exemple) ou alors éditer directement svxlink.conf.

Installation:

1- Paramêtrage du fichier CRON:

Editer votre fichier CRON:
nano /etc/crontab

/etc/crontab: system-wide crontab
 Unlike any other crontab you don't have to run the `crontab'
 command to install the new version when you edit this file
 and files in /etc/cron.d. These files also have username fields,
 that none of the other crontabs do.
 SHELL=/bin/sh
 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 Example of job definition:
 .---------------- minute (0 - 59)
 |  .------------- hour (0 - 23)
 |  |  .---------- day of month (1 - 31)
 |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr …
 |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
 |  |  |  |  |
 *  *  *  *  * user-name command to be executed
 17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
 25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
 47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
 52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
 #
 55 16 * * * root /opt/QsyControleur/QsyControleur1.py
 10 20 * * * root /opt/QsyControleur/QsyControleur2.py
 45 20 * * * root /home/SVXCARD/python3 corona.py

Les 3 dernières lignes constituent les différents programmes:
à 16:55 lancement de notre QSY vers un salon
à 20:10 lancement de notre QSY vers le retour au RRF par exemple
à 20:45 lancement du script qui va chercher les informations de la balise Corona virus voir article f1zbv-balise-dinformation-coronavirus
La prise en compte du fichier CRON demande un redémarrage ou une commande crond restart (sur Raspberry)

Installation du script

Se rendre dans le répertoire /opt/
cd /opt/
Télécharger le programme
git clone https://github.com/F8ASB/QsyControleur.git

Se rendre dans le répertoire ou le fichier est présent:
cd QsyControleur

faire 2 copies que vous programmerez
cp QsyControleur.py QsyControleur1.py
cp QsyControleur.py QsyControleur2.py


Ensuite éditer les 2 scripts
nano QsyControleur1.py
et
nano QsyControleur2.py

Remplir les paramétres en indiquant:
gpio=(votre gpio)
timetest=(le temps entre les tests)
Script_Path=(le chemin du script à lancer)

Voila c’est maintenant en place est fonctionnel.

Le Programme:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import time
import  os
 
'''
                   > QsyControlleur.py <

Programme de gestion de QSY Salon
Ce script permet lorsque qu'il est integré dans CRON de gerer un QSY programmé. Avant d'effectuer le QSY ce script controle que le relais n'est pas en émission afin d'éviter de couper un QSO

73 & 88 de F8ASB & F8ASB Junior (Thibaut)

Plus d'info: F8ASB.COM
'''

##############
# PARAMETRES #
##############

#Entrer le GPIO de la detection PTT
gpio="gpio18"

#Entrer le temps entre les test en s
timetest=60

#Chemin du script à lancer
Script_Path="/etc/spotnik/restart.bav"

while True:
 
    fichier = open("/sys/class/gpio/"+gpio+"/value", "r")
    etat = fichier.read()
    print ("Etat GPIO: "+etat)
    if etat == "0\n":
        print ('\x1b[1;37;40m'+"+++++++++++" +'\x1b[0m')
        print ('\x1b[1;37;40m'+"+ PTT OFF +" +'\x1b[0m')
        print ('\x1b[1;37;40m'+"+++++++++++" +'\x1b[0m')
        print ('\x1b[3;31;42m'+"lancement QSY " +'\x1b[0m')
        os.system (Script_Path)
        break
    else:
        print ('\x1b[5;37;41m'+"     +++++++++++     " +'\x1b[0m')
        print ('\x1b[5;37;41m'+"     + PTT ON  +     " +'\x1b[0m')
        print ('\x1b[5;37;41m'+"     +++++++++++     " +'\x1b[0m')
        print ('\x1b[6;31;47m'+"Nouveau test dans "+str(timetest)+"s" +'\x1b[0m')
        time.sleep(timetest)

Page GitHub dédiée:
https://github.com/F8ASB/QsyControleur

Conclusion:

Voila un petit programme simple et efficace qui une fois en place fera du bon travail, sans couper les QSO, qui sont plus présents actuellement du fait du confinement.
RESTER CHEZ VOUS ET FAITES DE LA RADIO!

Vous pouvez recevoir un email dès la parution d’un article sur le Blog F8ASB.COM, entrez votre mail sur la fenêtre à droite et cliquer sur abonnement. Tous les articles en 1 clic ICI

Ce contenu a été publié dans radioamateur, Raspberry, Relais F1ZBU /F1ZBV, Svxlink, avec comme mot(s)-clé(s) , , , , , , , , , , , , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Time limit is exhausted. Please reload CAPTCHA.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.