Retourner au contenu associé (entrée de forum : Fichier python pour lecture Arduino)
Posté par NeoX le 08 mars 2015 à 17:22. En réponse au message Fichier python pour lecture Arduino. Évalué à 2.
le code pour permettre aux autres de l'anlyser
#include "RCSwitch.h" #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <time.h> RCSwitch mySwitch; //int main(int argc, char *argv[]) { int main() { int PIN = 5; int radio_code = 0; int old_BL = 0; int new_BL = 0; char old_str[10] ; const char * sensor_loc ; const char * sensor_type ; // log struct tm * timeinfo; char timestamp_str[20] ; char localtime_s[20] ; char evnt_str[50] ; // capteurs BL int BL_plein = 5592332 ; int BL_vide = 5592323 ; // capteurs DI int DI0 = 1381717 ; int DI1 = 7673173 ; // capteurs Sonnette int BPSO = 13487999 ; // les fichiers FILE *file_BL; FILE *file_ALARM; FILE *file_SMS; FILE *file_TEST; FILE *file_DI; FILE *file_SO; // taille de file_ALARM //int file_ALARM_size = 0; int file_ALARM_size; int file_DI_size; int file_SO_size; // nanosleep struct timespec delay; delay.tv_sec =0 ; // delay.tv_nsec = 100000000L; // tts les 1/10 sec (10/s) // delay.tv_nsec = 200000000L; // tts les 1/5 sec (5/s) // delay.tv_nsec = 250000000L; // tts les 1/4 sec (4/s) delay.tv_nsec = 330000000L; // tts les 1/3 sec (3/s) // delay.tv_nsec = 500000000L; // tts les 1/2 sec (2/s) // delay.tv_nsec = 1000000000L; // tts les 1 sec (1/s) if(wiringPiSetup() == -1) { if((file_TEST = fopen("/home/www/logs/RADIO_TEST.log", "a+")) != NULL) { time_t now; time(&now); strftime(timestamp_str, 80, "%d/%m/%y %H:%M:%S", localtime (&now)); // mef horodatage --> timestamp_str sprintf(evnt_str,"%s : Erreur de lancement \n", timestamp_str); // prep ligne --> evnt_str fputs(evnt_str, file_TEST); fclose(file_TEST); } exit(9); } mySwitch = RCSwitch(); mySwitch.enableReceive(PIN); // lecture de l'etat initial de la boite aux lettres if((file_BL = fopen("/home/www/logs/BL-state.txt", "r")) != NULL) { fgets( old_str,10, file_BL ); fclose(file_BL); } else { if((file_TEST = fopen("/home/www/logs/RADIO_TEST.log", "a+")) != NULL) { time_t now; time(&now); strftime(timestamp_str, 80, "%d/%m/%y %H:%M:%S", localtime (&now)); // mef horodatage --> timestamp_str sprintf(evnt_str,"%s : Erreur lecture etat initial BL \n", timestamp_str); // prep ligne --> evnt_str fputs(evnt_str, file_TEST); fclose(file_TEST); } exit(9); } if (strstr(old_str,"PLEIN")!=NULL) { old_BL=BL_plein; } if (strstr(old_str,"VIDE")!=NULL) { old_BL=BL_vide; } /**/ if((file_TEST = fopen("/home/www/logs/RADIO_TEST.log", "a+")) != NULL) { time_t now; time(&now); strftime(timestamp_str, 80, "%d/%m/%y %H:%M:%S", localtime (&now)); // mef horodatage --> timestamp_str sprintf(evnt_str,"%s : Etat initial BL : %d \n", timestamp_str, old_BL); // prep ligne --> evnt_str fputs(evnt_str, file_TEST); fclose(file_TEST); } /**/ while(true) { if (mySwitch.available()) { radio_code = mySwitch.getReceivedValue(); if (radio_code != 0) { // on a recu un code /**/ /// pour test // if (radio_code==BL_plein || radio_code==BL_vide) { // uniquement la BL if((file_TEST = fopen("/home/www/logs/RADIO_TEST.log", "a+")) != NULL) { time_t now; time(&now); strftime(timestamp_str, 80, "%d/%m/%y %H:%M:%S", localtime (&now)); // mef horodatage --> timestamp_str sprintf(evnt_str,"%s : Code radio %d \n", timestamp_str, radio_code); // prep ligne --> evnt_str fputs(evnt_str, file_TEST); fclose(file_TEST); } // } /**/ /// fin test if (radio_code==BL_plein || radio_code==BL_vide) { // specifique boite aux lettres // if (old_BL != radio_code){ // ecriture nouvel etat if((file_BL = fopen("/home/www/logs/BL-state.txt", "r+")) != NULL) { if (radio_code==BL_plein){ fputs("PLEIN", file_BL); old_BL=radio_code; } else if (radio_code==BL_vide){ fputs("VIDE ", file_BL); old_BL=radio_code; } fclose(file_BL); } } // fin boite aux lettres // Sonnette // Capture des codes dans fichier SO-state.txt if (radio_code==BPSO) { if((file_SO = fopen("/home/www/logs/SO-state.txt", "w")) != NULL) { if (radio_code==BPSO){ fputs("Dring", file_SO); } fclose(file_SO); } // Envoie de mail avec gmail.pi if (radio_code==BPSO){system("python /home/www/py/gmail.py"); } } // Fin Sonnette // detection incendie if (radio_code==DI0 || radio_code==DI1) { // Capture des codes dans fichier DI-state.txt if((file_DI = fopen("/home/www/logs/DI-state.txt", "w")) != NULL) { if (radio_code==DI0){ fputs("Feu RdeCh", file_DI); sensor_loc="Incendie RdC"; sensor_type="detecteur"; } else if (radio_code==DI1){ fputs("Feu Etage", file_DI); sensor_loc="Incendie Etage"; sensor_type="detecteur";} fclose(file_DI); } // fin detection incendie // Remplissage fichier incidents Detecteur Incendie if((file_ALARM = fopen("/home/www/logs/ALARM-cumul.txt", "a+")) != NULL) { // le log time_t now; time(&now); strftime(timestamp_str, 80, "%d/%m/%y %H:%M:%S", localtime (&now)); // mef horodatage --> timestamp_str sprintf(evnt_str,"%s | ALARME detecteur %s\n", timestamp_str, sensor_loc); // prep ligne --> evnt_str fputs(evnt_str, file_ALARM); file_ALARM_size = ftell(file_ALARM); // Fin Remplissage fichier incidents Detecteur Incendie // log pour envoi SMS if((file_SMS = fopen("/home/www/logs/ALARM-SMS.txt", "a+")) != NULL) { fputs(evnt_str, file_SMS); fclose(file_SMS); } // envoi SMS si file_DI >= 300 if (file_DI_size>=300) { system("python /home/www/py/SMS2send.py >> /home/www/logs/SMS.log & "); } fclose(file_DI); } // Fin envoi SMS Detecteur Incendie } // Alarmes if(file_ALARM = fopen("/home/www/logs/ALARM-state.txt","r")) { // alarme active seulement si ALARM-state.txt existe fclose(file_ALARM); switch(radio_code){ // on cherche a quel emplacement correspond le code recu case 5592320 : sensor_loc="Garage"; sensor_type="contact"; break; case 5592404 : sensor_loc="Salon"; sensor_type="radar"; break; case 5592405 : sensor_loc="Sejour"; sensor_type="radar"; break; case 5592341 : sensor_loc="Entree"; sensor_type="radar"; break; case 5592389 : sensor_loc="Chambre"; sensor_type="radar"; break; case 5592149 : sensor_loc="Atelier"; sensor_type="radar"; break; case 5591381 : sensor_loc="Cuisine"; sensor_type="radar"; break; default: sensor_loc=""; sensor_type=""; break; } if (sensor_loc!="") { if((file_ALARM = fopen("/home/www/logs/ALARM-state.txt", "a+")) != NULL) { // le log time_t now; time(&now); strftime(timestamp_str, 80, "%d/%m/%y %H:%M:%S", localtime (&now)); // mef horodatage --> timestamp_str sprintf(evnt_str,"%s | ALARME capteur %s\n", timestamp_str, sensor_loc); // prep ligne --> evnt_str fputs(evnt_str, file_ALARM); file_ALARM_size = ftell(file_ALARM); // log pour envoi SMS if((file_SMS = fopen("/home/www/logs/ALARM-SMS.txt", "a+")) != NULL) { fputs(evnt_str, file_SMS); fclose(file_SMS); } // declenchement sirene et envoi SMS si file_ALARM >= 300 ou si sensor_type=contact if (file_ALARM_size>=300) { system("python /home/www/py/SMS2send.py >> /home/www/logs/SMS.log & "); system("python /home/www/py/Expander-set.py A 2 close 60 & "); } fclose(file_ALARM); // declenchement buzzer (GPA4) if (sensor_loc=="Garage") { system("python /home/www/py/Expander-set.py A 4 close 30 & "); } } } } // fin alarmes } mySwitch.resetAvailable(); } // fin mySwitch.available //sleep(1); //usleep(50000); // microsecond nanosleep(&delay, NULL); // nanosecond } // fin infinite loop exit(9); } // fin main
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: reflexion de base
Posté par NeoX . En réponse au message Fichier python pour lecture Arduino. Évalué à 2.
le code pour permettre aux autres de l'anlyser