Avec notre RFSniffer modifié, nous savons désormais comment recevoir un code dans un fichier stocké dans /home/pi/recu.txt, un processus mis en tâche de fond.
Voyons maintenant comment, au moyen d’un simple script rx2.py, placé dans /home/pi, nous allons pouvoir lancer des actions en fonction du code reçu (pensez à recréer les identations nécessaires à Python, WordPress a la faculté de tout bousiller lors d’un copier/coller, désolé…).
Nous allons commencer par copier recu.txt dans un fichier temporaire, temp.txt. Ouvrons alors ce fichier, lisons son code et lançons alors les actions appropriées :
- allumage du salon (un script .sh tout simple exécuté en arrière plan)
- extinction du salon
- activation du relai 0 du PiFace, sous forme de pression : j’appuie, je relâche, comme s’il s’agissait d’une pression sur une télécommande
- activation du relai 1 du PiFace
Pensez à créer un fichier /home/pi/zero.txt contenant juste le chiffre 0 (zero) sans rien d’autre.
Lancez le script simplement :
python3 rx2.py
Si vous voulez le faire tourner en tache de fond, ajoutez simplement un # devant les lignes contenant print, de façon à ce qu’aucun affichage ne vienne vous déranger, puis lancez le :
python3 rx2.py &
Je suis conscient qu’il doit être possible de faire un script beaucoup plus « pro » : je ne suis pas programmeur, je l’assume pleinement, mais le script fonctionne, n’est-ce pas l’essentiel ?
Et puis Blogwifi reste ouvert pour la publication de vos améliorations, c’est le principe d’un travail sans licence commerciale, non ? 😉
A vos scripts, prêts, partez !!
#!/usr/bin/python3 # # Lecture du code de télécommande reçu par RFSniffer (version modifiée, en tâche de fond) # le code reçu se trouve dans /home/pi/recu.txt # import os # # Boucle de detection sans fin # # var = 1 while True : # # on copie recu.txt dans temp.txt pour éviter de le lire alors que le processus RFSniffer l'utilise (plantage assuré) # os.system('sudo cp /home/pi/recu.txt /home/pi/temp.txt') # # Ouverture et lecture de temp.txt # f = open('/home/pi/temp.txt', encoding='utf-8') g = int(f.read()) # # détection du code # puis remise à zero de recu.txt en copiant zero.txt à sa place # (zero.txt contient un simple 0) # # # activation relai 0 du PiFace : ON puis OFF # if g == 4195665: print ("Relai 0") os.system('sudo python /home/pi/output.py 0') os.system('sudo cp /home/pi/zero.txt /home/pi/recu.txt') # # activation relai 1 du PiFace : ON puis OFF # if g == 4195668: print ("Relai 1") os.system('sudo python /home/pi/output.py 1') os.system('sudo cp /home/pi/zero.txt /home/pi/recu.txt') # # télécommande du salon, lancement des scripts salon_on ou salon_off (envoi de trappes SNMP à un contrôleur 10 relais) # à modifier selon les besoins, le code est indiqué dans g == xxxxxxxx: xxxxxxx = code de télécommande # elif g == 4198737: print ("salon on") os.system('sudo sh /home/pi/salon_on.sh &') os.system('sudo cp /home/pi/zero.txt /home/pi/recu.txt') elif g == 4198740: print ("salon off") os.system('sudo sh /home/pi/salon_off.sh &') os.system('sudo cp /home/pi/zero.txt /home/pi/recu.txt')
Commentaires fermés.