first commit
BIN
Dev_PocSag/Festival.mp3
Normal file
23
Dev_PocSag/data.json
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"Designation": "Motarola Noir",
|
||||||
|
"Freq": "466050000",
|
||||||
|
"ARP": 4101663222,
|
||||||
|
"CapCode": "0166322",
|
||||||
|
"NumSerial": "234IVWC812"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Designation": "Motorola Bleu",
|
||||||
|
"Freq": "466175000",
|
||||||
|
"ARP": 7101411852,
|
||||||
|
"CapCode": "0141185",
|
||||||
|
"NumSerial": "9802040601391"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Designation": "Motorola Vert",
|
||||||
|
"Freq": "466206250",
|
||||||
|
"ARP": 3107158462,
|
||||||
|
"CapCode": "0715846",
|
||||||
|
"NumSerial": "723IXU66VL"
|
||||||
|
}
|
||||||
|
]
|
46
Dev_PocSag/gohttp.py
Executable file
|
@ -0,0 +1,46 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
from flask import Flask, request, render_template
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
# Charger le fichier JSON
|
||||||
|
with open('data.json', 'r') as json_file:
|
||||||
|
data = json.load(json_file)
|
||||||
|
|
||||||
|
@app.route('/', methods=['GET', 'POST'])
|
||||||
|
def index():
|
||||||
|
if request.method == 'POST':
|
||||||
|
# Récupérer les données du formulaire
|
||||||
|
capcode = request.form['capcode']
|
||||||
|
message = request.form['message']
|
||||||
|
# Trouver la fréquence correspondant au CapCode
|
||||||
|
frequency = get_frequency_by_capcode(capcode)
|
||||||
|
if frequency:
|
||||||
|
# Envoyer le message POCSAG à l'application
|
||||||
|
send_pocsag_message(frequency, capcode, message)
|
||||||
|
return "Message envoyé avec succès à la fréquence {}".format(frequency)
|
||||||
|
else:
|
||||||
|
return "CapCode non trouvé !"
|
||||||
|
else:
|
||||||
|
return render_template('index.html', data=data)
|
||||||
|
|
||||||
|
def get_frequency_by_capcode(capcode):
|
||||||
|
for item in data:
|
||||||
|
if item["CapCode"] == capcode:
|
||||||
|
return item["Freq"]
|
||||||
|
return None
|
||||||
|
|
||||||
|
def send_pocsag_message(frequency,capcode,message):
|
||||||
|
# Formatage de la commande shell avec les variables
|
||||||
|
command = f'sudo pocsag -f "{frequency}" -t 1 -r 1200 -b 3 -' # -n pour digital number
|
||||||
|
message_command = f'printf "{capcode}:{message}" | {command}'
|
||||||
|
print("le cmd=",message_command)
|
||||||
|
# Exécution de la commande
|
||||||
|
os.system(message_command)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run(host='0.0.0.0', port=8080, debug=True)
|
||||||
|
|
14
Dev_PocSag/read.me
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
Dans cet exemple :
|
||||||
|
|
||||||
|
Nous importons Flask pour gérer les requêtes Web.
|
||||||
|
La fonction index gère à la fois les méthodes GET et POST. En cas de méthode POST, elle récupère le message à partir du formulaire et appelle la fonction send_pocsag_message. En cas de méthode GET, elle affiche le formulaire.
|
||||||
|
La fonction send_pocsag_message est l'endroit où vous enverrez réellement le message POCSAG à votre application. Vous devrez remplacer le contenu de cette fonction par la logique réelle pour envoyer le message à votre application POCSAG.
|
||||||
|
Le serveur Flask est démarré en mode debug pour faciliter le développement.
|
||||||
|
|
||||||
|
Assurez-vous de personnaliser ce script en fonction de la manière dont vous voulez envoyer les messages POCSAG à votre application. Vous devrez remplacer send_pocsag_message par le code réel qui envoie les messages POCSAG. De plus, vous devrez créer un modèle HTML pour votre formulaire (index.html).
|
||||||
|
|
||||||
|
Dans ce fichier HTML :
|
||||||
|
|
||||||
|
Nous avons un formulaire simple avec un champ de texte pour le message POCSAG et un bouton d'envoi.
|
||||||
|
L'action du formulaire est définie sur la racine de votre site (/), ce qui signifie qu'il enverra les données du formulaire à la même route où votre application Flask attend les demandes POST.
|
||||||
|
Le champ de texte est défini comme un <textarea> pour permettre aux utilisateurs de saisir des messages de plusieurs lignes.
|
22
Dev_PocSag/templates/index.html
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Envoyer un message POCSAG</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Envoyer un message POCSAG</h1>
|
||||||
|
<form action="/" method="post">
|
||||||
|
<label for="capcode">CapCode:</label>
|
||||||
|
<select id="capcode" name="capcode" required>
|
||||||
|
{% for item in data %}
|
||||||
|
<option value="{{ item.CapCode }}">{{ item.CapCode }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select><br><br>
|
||||||
|
<label for="message">Message:</label><br>
|
||||||
|
<textarea id="message" name="message" rows="4" cols="50" required></textarea><br><br>
|
||||||
|
<input type="submit" value="Envoyer le message">
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
128
README.md
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
RpiTx modified F4IYT
|
||||||
|
============================
|
||||||
|
|
||||||
|
![RpiTX](img/rpi.png)
|
||||||
|
Source de F5OEO<br>
|
||||||
|
https://github.com/F5OEO/rpitx
|
||||||
|
<br>
|
||||||
|
|
||||||
|
## RPITX Version en production 2.0
|
||||||
|
Avec un raspberry pi 3<br>
|
||||||
|
J'ai modifié le système
|
||||||
|
et crer un proto hardware<br>
|
||||||
|
![PocSaG](img/1717951887961.jpg)
|
||||||
|
La sortie ce fait sur le GPIO 4<br>
|
||||||
|
Mes padgers<br>
|
||||||
|
![PocSaG](img/1717951887952.jpg)
|
||||||
|
|
||||||
|
Les 2 du bas sont des numériques<br>
|
||||||
|
et les 2 du haut des alphanumérique<br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
le fichier .img zipper sur une carte de 16Go<br>
|
||||||
|
|
||||||
|
|
||||||
|
# Les infos
|
||||||
|
|
||||||
|
En France, les fréquences attribuées au POCSAG sont sur la bande du 466 MHz interdi à tout transmission !
|
||||||
|
|
||||||
|
466.025 MHz<br>
|
||||||
|
466.050 MHz<br>
|
||||||
|
466.075 MHz<br>
|
||||||
|
466.175 MHz<br>
|
||||||
|
466.20625 MHz<br>
|
||||||
|
466.23125 MHz<br>
|
||||||
|
|
||||||
|
Il faut avoir un numéro nommé ARP qui est un CAP Code numéo unique d'identifiant du PAGGER<br>
|
||||||
|
sans ce numéo il est impossible de pourvoir communiquer avec<br>
|
||||||
|
|
||||||
|
ex:<br>
|
||||||
|
![PocSaG](img/1717951887955.jpg)
|
||||||
|
ici ARP: 31 0715846 2<br>
|
||||||
|
Pour avoir un CapCode, il suffit de supprimer les 2 premiers et le dernier chiffre ARP<br>
|
||||||
|
Donc CAP Code=0715846<br>
|
||||||
|
et la fréquence ici 466.20625Mhz<br>
|
||||||
|
|
||||||
|
# les protocols
|
||||||
|
|
||||||
|
TamTam, c'est Cegetel/SFR arrété en in 1999, il utilisait le protocol ERMES.<br>
|
||||||
|
|
||||||
|
KOBBY, c'est Bouygue Telecom, arrété en 2005, il utilisait le protocol ERMES/FLEX.<br>
|
||||||
|
|
||||||
|
TATOO, c'est FT/Orange, qui utilise le POCSAG, il fonctionne depuis 2000.<br>
|
||||||
|
|
||||||
|
pour emettre sur 438.2160 il faudrai un quartz de 49.152 Mhz<br>
|
||||||
|
|
||||||
|
|
||||||
|
# Calcul du quartz
|
||||||
|
Pour connaitre la fréquence du quartz:<br>
|
||||||
|
|
||||||
|
(F - IF ) /8 = Quartz<br>
|
||||||
|
|
||||||
|
exemple 466.050Mhz pour F<br>
|
||||||
|
IF toujours 45Mhz<br>
|
||||||
|
|
||||||
|
(466.05 -45)/8 = 52.631Mhz<br>
|
||||||
|
|
||||||
|
|
||||||
|
Autre methode trouver la fréquence avec un quartz:<br>
|
||||||
|
|
||||||
|
(Q+IF/8)*8=F<br>
|
||||||
|
Soit un Q=48Mhz<br>
|
||||||
|
(48+45/8)*8=429Mhz<br>
|
||||||
|
|
||||||
|
#Utilisation du Os RpiTx
|
||||||
|
Attention a avoir une bonne alementation 5V 3A<br>
|
||||||
|
connection en SSH<br>
|
||||||
|
```cd rpitx```
|
||||||
|
```./easytest.sh```
|
||||||
|
![OsRpi](img/ssh.png)
|
||||||
|
![OsRpi](img/433.png)
|
||||||
|
![OsRpi](img/menu.png)
|
||||||
|
![OsRpi](img/MenuSuite.png)
|
||||||
|
![OsRpi](img/spectrum2.png)
|
||||||
|
ici complet
|
||||||
|
![OsRpi](img/spectrum.png)
|
||||||
|
si incomplet Pb Alim
|
||||||
|
![OsRpi](img/FmRDS.png)
|
||||||
|
|
||||||
|
# Bonnus
|
||||||
|
SSTV en modem color 24 si non remplacer 24 par 16
|
||||||
|
```sudo ./gosstv.sh 433.0 /home/pi/rpitx/src/resources/TestPattern.jpg F4IYT 24```
|
||||||
|
|
||||||
|
Stream RadioFM<br>
|
||||||
|
```./streamradiofm.sh``
|
||||||
|
|
||||||
|
Cq CQ CW
|
||||||
|
```sudo ./morse 434000000 25 "Cq Cq F4IYT"```
|
||||||
|
|
||||||
|
Spectrum
|
||||||
|
```./testspectrum.sh 433000000 src/resources/TestPattern.jpg```
|
||||||
|
|
||||||
|
FT8
|
||||||
|
|
||||||
|
```sudo ./pift8 -m "CQ F4IYT JN33" -f 433.1e6```
|
||||||
|
|
||||||
|
# Formulaire
|
||||||
|
allez dans le répertoire
|
||||||
|
PocSag
|
||||||
|
cd PocSag
|
||||||
|
puis ./gohttp.py
|
||||||
|
ouvrir une page Web sur IP du RPI3 avec le port 8080
|
||||||
|
exempel ici
|
||||||
|
http://192.168.0.70:8080/
|
||||||
|
![OsRpi](img/FormPocsag.png)
|
||||||
|
puis choisir dans la liste le CapCode du Pagger
|
||||||
|
saisir un message et envoyer
|
||||||
|
le message sera reçu si le pagger est allumé et à porter.
|
||||||
|
pour changer la liste editer le fichier data.json
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
73<br>
|
||||||
|
Xavier
|
||||||
|
|
||||||
|
|
BIN
RpiTX.v2.zip
Normal file
BIN
img/1717951887946.jpg
Normal file
After Width: | Height: | Size: 3.7 MiB |
BIN
img/1717951887949.jpg
Normal file
After Width: | Height: | Size: 4.9 MiB |
BIN
img/1717951887952.jpg
Normal file
After Width: | Height: | Size: 4.0 MiB |
BIN
img/1717951887955.jpg
Normal file
After Width: | Height: | Size: 5.6 MiB |
BIN
img/1717951887958.jpg
Normal file
After Width: | Height: | Size: 4.5 MiB |
BIN
img/1717951887961.jpg
Normal file
After Width: | Height: | Size: 4.3 MiB |
BIN
img/1717951887963.jpg
Normal file
After Width: | Height: | Size: 4.2 MiB |
BIN
img/433.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
img/FmRDS.png
Normal file
After Width: | Height: | Size: 787 KiB |
BIN
img/FormPocsag.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
img/MenuSuite.png
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
img/bipeur-tatoo-motorola.jpg
Normal file
After Width: | Height: | Size: 717 KiB |
BIN
img/menu.png
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
img/rpi.png
Normal file
After Width: | Height: | Size: 183 KiB |
BIN
img/septrum2.png
Normal file
After Width: | Height: | Size: 43 KiB |
BIN
img/spectrum.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
img/ssh.png
Normal file
After Width: | Height: | Size: 64 KiB |