• [^] # Re: Version Python avec RF433Mhz sur l'arduino

    Posté par . En réponse au message Fichier python pour lecture Arduino. Évalué à 1. Dernière modification le 20 mars 2015 à 17:59.

    Bonjour Après multiple tentative de réglage et avec l'aide de Néox voila le code fonctionnel

    #!/usr/bin/env python
    # -*- coding: latin-1 -*-
    # DEBUG active (1) ou desactive (0) les messages d'erreurs à l'ecran (ou dans nohup.out)
    DEBUG=0
    # LOG active (1) ou desactive (0) le log dans RADIO_TEST.log
    LOG=1
    import os
    import time
    import serial
    ser = serial.Serial('/dev/ttyACM0', 9600)
    # envoie les SMS et alarmes apres MAXLOG octet d'alerte
    # 4 codes = 172octets
    MAXLOG=10
    # DELAY entre 2 tours de boucle, en secondes, 
    # peut etre une fraction, exemple 0.5 secondes
    DELAY=1
    # MAXCODE definit le nombre maxi de code à laisser passer
    MAXCHRONO=20
    # initialisation des compteurs
    OLDCODE=0
    CHRONO=0
    while 1 :
     message=ser.readline()
     radio_code=int(message.rstrip())
     #radio_code=input("votre code ? ")
     ## L'action REELLE COMMENCE ICI
     sensor_loc=""
     sensor_type=""
     CHRONO += 1
     if radio_code != 0 : # on recoit un code
     if DEBUG :
     print "=========="
     print "Ancien/Nouveau code : "+str(OLDCODE)+"/"+str(radio_code)
     print "compteur : "+str(CHRONO)+"/"+str(MAXCHRONO)
     if ( OLDCODE == radio_code and CHRONO < MAXCHRONO ) : # un code deja recu, on laisse tomber
     pass
     print "code deja vu"
     else :
     CHRONO = 0
     if DEBUG :
     print " nouveau code, on reinitialise le compteur"
     OLDCODE=radio_code 
     event=time.strftime("%d/%m/%y %H:%M:%S")+" : Code radio >>"+str(radio_code)+"<<\n"
     if LOG : 
     file_TEST = open("/home/www/logs/RADIO_TEST.log", "a+")
     file_TEST.write(str(event))
     file_TEST.close()
     if DEBUG :
     print "==========\n"+str(event)
     # Fin ecriture dans les logs
     # BL Pleine
     if radio_code == 55232 :
     if DEBUG :
     print "je dois ecrire >>PLEIN<< dans BL-state"
     file=open("/home/www/logs/BL-state.txt", "r+")
     file.write("PLEIN")
     old_BL=radio_code
     file.close()
     # BL Vide
     if radio_code == 5923 :
     if DEBUG :
     print "je dois ecrire >>VIDE << dans BL-state"
     file=open("/home/www/logs/BL-state.txt", "r+")
     file.write("VIDE ")
     old_BL=radio_code
     file.close()
     if radio_code == 13499 : # Sonnette 
     if DEBUG :
     print "je dois envoyer un email avec gmail.py"
     # Envoie de mail avec gmail.pi
     # copier/coller le code python pour l'envoie d'email à partir du fichier : 
     os.system("python /home/www/py/gmail.py")
     # DI0 : detection incendie RDC
     if radio_code == 1317 :
     if DEBUG :
     print "je dois ecrire >>Feu RDC<< dans DI-state"
     file=open("/home/www/logs/DI-state.txt", "w")
     file.write("Feu RdeCh")
     sensor_loc="Incendie RdC"
     sensor_type="detecteur"
     file.close();
     #DI1 : detection incendie Etage 
     if radio_code == 7373 : 
     if DEBUG :
     print "je dois ecrire >>Feu Etage<< dans DI-state"
     file=open("/home/www/logs/DI-state.txt", "w")
     file.write("Feu Etage")
     sensor_loc="Incendie Etage"
     sensor_type="detecteur"
     file.close()
     if radio_code == 522 :
     sensor_loc="Garage"
     sensor_type="contact"
     if radio_code == 5544 :
     sensor_loc="Salon"
     sensor_type="radar"
     if radio_code == 5545 :
     sensor_loc="Sejour"
     sensor_type="radar"
     if radio_code == 5231 :
     sensor_loc="Entree"
     sensor_type="radar"
     if radio_code == 5989 :
     sensor_loc="Chambre"
     sensor_type="radar"
     if radio_code == :3658
     sensor_loc="Atelier"
     sensor_type="radar"
     if radio_code == 511 :
     sensor_loc="Cuisine"
     sensor_type="radar"
     # Remplissage fichier incidents Detecteur Incendie
     if sensor_type == 'detecteur' :
     file_ALARM = open("/home/www/logs/ALARM-cumul.txt", "a+")
     # le log
     # mef horodatage --> timestamp_str
     event=time.strftime("%d/%m/%y %H:%M:%S")+" | ALARME detecteur "+sensor_loc+"\n" 
     if DEBUG :
     print "je dois ecrire >>"+str(event).rstrip()+"<< dans ALARM-cumul.txt"
     file_ALARM.write(str(event))
     file_ALARM_size = os.path.getsize("/home/www/logs/ALARM-cumul.txt")
     file_ALARM.close()
     # Fin Remplissage fichier incidents Detecteur Incendie
     if DEBUG :
     print "je dois ecrire >>"+str(event).rstrip()+"<< dans ALARM-SMS.txt"
     # log pour envoi SMS
     file_SMS = open("/home/www/logs/ALARM-SMS.txt", "a+")
     file_SMS.write(str(event))
     file_SMS.close();
     # envoi SMS si file_DI >= MAXLOG
     if file_ALARM_size >= MAXLOG :
     if DEBUG :
     print "je dois envoyer un SMS si "+str(file_ALARM_size)+">="+str(MAXLOG)
     # copier/coller ici le code contenu dans le fichier SMS2send.py
     os.system("python /home/www/py/SMS2send.py >> /home/www/logs/SMS.log & ") 
     # Fin envoi SMS Detecteur Incendie
     # Autres Alarmes
     try:
     file_ALARM = open("/home/www/logs/ALARM-state.txt","r")
     except IOError:
     if DEBUG :
     print "pas de fichier ALARM-state.txt"
     else :
     file_ALARM.close()
     if sensor_loc != "" :
     file_ALARM = open("/home/www/logs/ALARM-state.txt","a+")
     # le log
     event=time.strftime("%d/%m/%y %H:%M:%S")+" | ALARME capteur "+sensor_loc+"\n" 
     if DEBUG :
     print "je dois ecrire >>"+str(event).rstrip()+"<< dans ALARM-state.txt"
     file_ALARM.write(str(event))
     file_ALARM_size = os.path.getsize("/home/www/logs/ALARM-state.txt")
     file_ALARM.close();
     # log pour envoi SMS
     if DEBUG :
     print "je dois ecrire >>"+str(event).rstrip()+"<< dans ALARM-SMS.txt"
     file_SMS = open("/home/www/logs/ALARM-SMS.txt", "a+")
     file_SMS.write(str(event))
     file_SMS.close()
     # declenchement sirene et envoi SMS si file_ALARM >= 300
     if file_ALARM_size >= MAXLOG :
     if DEBUG :
     print "je dois envoyer un SMS si "+str(file_ALARM_size)+">="+str(MAXLOG)
     # copier/coller le code d'envoi de SMS et celui de Expander-set
     os.system("python /home/www/py/SMS2send.py >> /home/www/logs/SMS.log & ")
     if DEBUG :
     print "je dois declencher l'alarme"
     os.system("python /home/www/py/Expander-set.py A 2 close 60 & ")
     # declenchement buzzer (GPA4) si sensor_loc=garage
     if sensor_loc=="Garage" :
     if DEBUG :
     print "je dois declencher le buzzer du garage"
     # copier/coller le code du Exapnder-set.py
     os.system("python /home/www/py/Expander-set.py A 4 close 30 & ")
     # fin autres alarmes
     # attend DELAY secondes avant de faire la prochaine boucle
     time.sleep(DELAY)