Pages: [1] 2   Go Down
Author Topic: Système de gestion de DOME vidéo  (Read 5135 times)
0 Members and 1 Guest are viewing this topic.
83 - var
Offline Offline
God Member
*****
Karma: 9
Posts: 863
ARDUINO Powa !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour a tous,

Voila déjà 6 mois que je planche sur ce projet, la base était sous µC RABBIT puis vue la simplicité d'arduino le projet a changé de support ^^

Entreprise : STS vidéo surveillance

Place dans l'entreprise : Stagiaire, développeur

Autonomie : Total , Besoin exprimer par l'entreprise exécution seul de ma part (seul développeur de l'entreprise)

Sujet :

L'entreprise installe des dôme vidéo protocole PELCO D  pilotable en RS485, l’installation peut ce faire partout y compris à longue distance de la régis (Ordinateur pour la visualisation des vidéo) grâce à des patchs wifi qui forme un réseaux, les dômes était déjà pilotable (gauche droite haut bas zoom + - ) par le billet de l'enregistreur SATA.

La gestion des rondes ce fait par Serveur AXIS.. C'est la que mon travaille commence, ces serveurs sont totalement instable et fonctionnent mal il me faut donc crée un système moins défaillant (aucune gestion vidéo dans ce projet).

Matériel:

-ARDUINO ethernet,  m2 et m3 (m3 optionnel) dans le coffret électrique de chaque dômes vidéo m1 et m4 à la régi (m4 optionnel)
-MAX488 pour le liaison RS485 des dômes vidéo
-sonde de température pour surveiller les condition de vie de l'arduino dans le coffret électrique ( en extérieure  )

Fonction demander à la régi:

Par le billet d'une pager web être capable de:
-Piloter directement tout les dômes
-Définition des preset (position pour les rondes)
-Composition de rondes
-Enclenchement des rondes
-Ronde planifiée (heure de début et de fin renseigner)
-Visualisation des dômes présent sur le réseau
-système muni de l'heure et la date
-changer l'adresse IP de la page web
-Changer l'adresse IP de chaque module associé au dôme
-Disposer d'une notice d'utilisation
- pouvoir récupéré les donné sauvegardé sur SD dans le coffret

Fonction demandée dans le coffret du dôme vidéo:
-exécuter les rondes
-exécuter le pilotage direct web
-exécuter le pilotage direct DVR
-être configurable à distance par le maître
-Relever la température et ça tension d'alimentation et l'enregistrer sur carte µSD
-Surveiller l'ouverture du coffret avec un contacteur
-Arrêter la ronde pendant une durée configurable si un utilisateur prend la main par le web ou DVR
-Etre capable d'alimenter le coffret sur l'éclairage public la nuit et le jour sur batterie
-Relever les tensions température du coffret et les sauvegarder sur SD

Temps impartie: 3 mois 2 semaines

Temps écoulé: 1 mois et 3 semaines

État actuelle: Toute les fonctions on été intégrée avec succès et ne demande que de faire leurs preuves ^^'

Test à l'entreprise :
-1er test, un dôme, un arduino dôme, un arduino régi. 1ere nuit coupure de courant donc arrêt de la ronde au bout de 9h.. -___-
-2eme test, un dôme, un arduino dôme, un arduino régi. 2 jour de fonctionnement, aucune anomalie, ronde toujours en fonctionnement et aucun décalage de preset de durée ou autre. test réussi coi =)

Test en condition réel:
-prévue la semaine prochaine pour un mois d'autonomie avant vérification du bon fonctionnement smiley-grin suspense smiley-razz


Mon projet ne m'appartenant pas je pense que je ne diffuserait pas la dernière version de mes codes au cas ou mon travaille serait industrialisé (possible) mai j'approfondirait plus le coté prog (parce que la c'est bien beau mais on apprend pas grand chose appart ma vie :p ) quand j'aurai un peut plus de temps je vous rajouterais mon code détailler décortiquer puis des photo sur le terrain en labo etc..

Donc suite et fin d'ici 2 semaines je pense =)

Skizo !
« Last Edit: May 10, 2012, 03:39:01 am by skizoh » Logged

Un tien vaux mieux que deux tu l'auras !

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3430
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Par le biais d'une page web être capable de:

........

Etat actuelle: Toute les fonctions on été intégrées avec succès malgré quelque difficulté avec l'heure qui utilise la fonction "millis()" comme référence et par conséquent prend un peut de retard.. 1s / 22h..
Si tu as un PC dans le système il serait peut être plus simple de lui demander d'envoyer l'heure à tous les dômes.
Logged

83 - var
Offline Offline
God Member
*****
Karma: 9
Posts: 863
ARDUINO Powa !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

disons que c'est ce que je commençais à envisagé, mais le problème c'est que c'est un PC windows à chaque fois et que en linux sa aurais été du gâteau mais en windows rien n'est jamais simple donc il faut que je m'y mette coi ^^

Surtout que c'est pas compliquer y a un ARDUINO qui a besoin de l'heure après c'est lui qui périodiquement dit au autre l'heure qu'il est, donc ouai une petite liaison serie RS232 entre le PC et l'arduino et on est bon !

A voire ^^ merci du conseil en tout k !

Skizo !
Logged

Un tien vaux mieux que deux tu l'auras !

Offline Offline
Sr. Member
****
Karma: 2
Posts: 259
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Travaillant aussi dans la vidéo-surveillance (entre autre), mais pas dans le développement, il y a une autre version que tu aurais pu approcher: la transmission PTZ par coax!

Bon j'avoue, c'est bien moins évident à mettre en oeuvre avec Arduino, mais ce doit être faisable tout de même.

Ceci dit, beau projet, félicitation!

schizophrene
Logged

83 - var
Offline Offline
God Member
*****
Karma: 9
Posts: 863
ARDUINO Powa !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci !!!! ^^ ouai je me doute qu'il y est d'autre méthode mais la il en fallait une pas cher et la comparé au serveur axis ( a peut pret 400€ ) moi j'en ai pour 65€ à peut pret ^^
mais dit moi toi qui travaille la dedans, les dôme vidéo protocole pelco D son beaucoup utilisé ou pas?


Skizo !!
Logged

Un tien vaux mieux que deux tu l'auras !

Offline Offline
Sr. Member
****
Karma: 2
Posts: 259
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pelco est une marque qui fait des produits vidéos, et qui a crée le protocole Pelco-D donc...

L'avantage de ce protocole, c'est que beaucoup d'autres marques l'ont repris et implémenté dans leurs propres produits. C'est le cas par exemple des enregistreurs Panasonic (en RS485), des Dedicated Micros (en RS485 et coaxial), et de beaucoup d'autres marques.

Donc oui, ce protocole est pas mal utilisé!
Logged

83 - var
Offline Offline
God Member
*****
Karma: 9
Posts: 863
ARDUINO Powa !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok ok bas c'est cool mon gestionnaire de ronde a donc des chance de dépasser le state de simple bidouillage :p

Skizo !
Logged

Un tien vaux mieux que deux tu l'auras !

Offline Offline
Sr. Member
****
Karma: 2
Posts: 259
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Même à petite échelle, si ton produit peut être commercialisé, pourquoi pas! smiley
Logged

83 - var
Offline Offline
God Member
*****
Karma: 9
Posts: 863
ARDUINO Powa !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Le problème c'est qu'il m'appartient pas :s mais c'est toujours cool de rajouter sure son CV qu'on a crée un système qui est commercialisé pendant ces études :p

Je vais voire ce que je peut en tirer  smiley-twist

Skizo !
Logged

Un tien vaux mieux que deux tu l'auras !

83 - var
Offline Offline
God Member
*****
Karma: 9
Posts: 863
ARDUINO Powa !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Suite ! Partie matériel plus montage ( a venir photo en condition réel ! )

Voici le matériel utilisé:

Une carte Arduino Ethernet SD       


Transceiver TTL RS485 MAX488


Une carte µSD 8GB

 
Un enregistreur SATA + visualisation vidéo logiciel PSS


Des dômes vidéo en tout genre dont celui la qui est plutôt massif! smiley-grin


Une pupitre de commande utilisé habituellement pour le dépannage et l'accès au menu synaptique




Petit schéma fait sur paint (soyez indulgent  smiley-sad )(manque un max488 entre le pupitre et l'arduino mais bon on ferra comme si vous ne l'aviez pas vue hein :p)




Voici un résumé du matériel qui support mon application, la partie liaison par patchs wifi était déjà en place aisin que l'enregistreur SATA etc..

Je vais maintenant détailler la programmation en 6 parties :

Arduino Régi :
- Page web
- Communication avec les Arduinos Dôme vidéo

Arduino Dôme vidéo :
- Communication avec l'Arduino régi
- Communication avec le Dôme vidéo

Arduino Autonomie coffret
-intégralité

Arduino  Alarme SMS/coffret
-intégralité

Skizo ! ! !
« Last Edit: May 10, 2012, 03:16:57 am by skizoh » Logged

Un tien vaux mieux que deux tu l'auras !

83 - var
Offline Offline
God Member
*****
Karma: 9
Posts: 863
ARDUINO Powa !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Programmation:
(j'ai exclu les déclaration de variable et de librairie, ça évitera les copier coller bête et méchant :p )

Partie 1:  Le gestionnaire Régi !

Page web:

Partie commune:   (pris et adapté d'un programme web exemple)
Code:
//(partie à modifier si rajout ou suppression de pages)
#define NUM_PAGES 5

// page erreur 404
PROGMEM prog_char content_404[] = "HTTP/1.1 404 Not Found\n Erreure \nContent-Type: text/html\n\n<html><head><title>STS Gestion des rondes - Error </title></head><body><h1>Une erreure est survenue veuillez nous en excusez...</h1></body>";
PGM_P page_404[] PROGMEM = { content_404 };


// HTML Header for pages
PROGMEM prog_char content_main_header[] = "HTTP/1.0 200 OK\nServer: arduino\nCache-Control: no-store, no-cache, must-revalidate\nPragma: no-cache\nConnection: close\nContent-Type: text/html \n";

PROGMEM prog_char content_main_top[] = "<html><head><title>STS Reglage des presets et des ronde </title><style type=text/css>...

PROGMEM prog_char content_main_top2[] = "Suite du CSS";
PROGMEM prog_char content_main_top3[] = "Suite du CSS";
PROGMEM prog_char content_main_top4[] = "</style></head><body><h11>S</h11><h22>T</h22><h33>S</h33><br><center><br/><br/><br/><div class=debut><h1>Menu de gestion des rondes</h1></div><br/> "; // Titre de la page web

PROGMEM prog_char content_main_menu[] = "<div class=gros><br/><div id=tabs><center>"
"<li><a href=/page1 onclick=\"window.open('/page1','wclose','width=730,height=950,toolbar=no,status=no,left=-10,top=0')\"><span>Gestion module</span></a></li>"
"<li><a href=page2 onclick=\"window.open('page2','wclose','width=730,height=950,toolbar=no,status=no,left=-10,top=0')\"><span>Composition rondes</span></a></li>"
"<li><a href=page3 onclick=\"window.open('page3','wclose','width=730,height=950,toolbar=no,status=no,left=-10,top=0')\"><span>Definition preset</span></a></li>"
"<li><a href=page4 onclick=\"window.open('page4','wclose','width=730,height=950,toolbar=no,status=no,left=-10,top=0')\"><span>Planification rondes</span></a></li>"
"<li><a href=/ onclick=\"window.open('page5','wclose','width=730,height=950,toolbar=no,status=no,left=-10,top=0')\"><span>Notice d'utilisation</span></a></li>"
"</center></div>";// mon menu avec ouverture d'une fenêtre redimensionnée appart sur clique pour ceux que sa intéresse voila:
//<a href=/ onclick=\"window.open('page5','wclose','width=730,height=950,toolbar=no,status=no,left=-10,top=0')\">Notice d'utilisation</a>"

PROGMEM prog_char content_main_footer[] = "</div></body></html>";// fin de page

PGM_P contents_main[] PROGMEM = {
   content_main_header, content_main_top, content_main_top2, content_main_top3, content_main_top4, content_main_menu, content_main_footer }; // table de composition de la page web

#define CONT_HEADER 0
#define CONT_TOP 1
#define CONT_TOP2 2
#define CONT_TOP3 3
#define CONT_TOP4 4
#define CONT_MENU 5
#define CONT_FOOTER 6

(partie à modifier si rajout ou suppression de pages)
// table des titre de pages
PGM_P contents_titles[] PROGMEM = {
  content_title1, content_title2, content_title3, content_title4, content_title5};
// tables des URL
PGM_P http_uris[] PROGMEM = {
  http_uri1, http_uri2, http_uri3, http_uri4, http_uri5 };
// table des contenu de page
PGM_P contents_pages[] PROGMEM = {
  content_page1, content_page2, content_page3, content_page4, content_page5};

struct HTTP_DEF
{ int pages;
  char vars[STRING_VARS_SIZE]; // structure page web
};

//dans l'init:
EthernetServer server(80);
server.begin();

//dans le loop
EthernetClient client = server.available();
if (client)
{ HTTP_DEF http_def = readHTTPRequest(client);
  if (http_def.pages > 0)
  { sendPage(client,http_def); }
  else
  { http_def.pages=retien_pages;
    sendPage(client,http_def);
  }
  delay(25);
  client.stop();
}


struct HTTP_DEF readHTTPRequest(EthernetClient client) {
//... partie lecture pour récupérer les informations non détaillée, similaire à l’exemple, partie traitement détaillé page par page.
}


//impression de la page en plusieurs parties
void sendPage(EthernetClient client,struct HTTP_DEF http_def) {

  contentPrinter(client,(char*)pgm_read_word(&(contents_main[CONT_TOP])));//titre
  contentPrinter(client,(char*)pgm_read_word(&(contents_main[CONT_TOP2])));//CSS
  contentPrinter(client,(char*)pgm_read_word(&(contents_main[CONT_TOP3])));//CSS
  contentPrinter(client,(char*)pgm_read_word(&(contents_main[CONT_TOP4])));//CSS
  contentPrinter(client,(char*)pgm_read_word(&(contents_main[CONT_MENU])));//Menu

  contentPrinter(client,(char*)pgm_read_word(&(contents_titles[http_def.pages-1])));//corps de la page demandée
  sendContent(client,http_def.pages-1);

//affichage des Arduinos Dôme présent 1 à 9 max (sure toute les pages)
  client.print("<br/><center>Dome present : |");
  if(arduino_present[1]!=0){client.print(" 1 |");}
  if(arduino_present[2]!=0){client.print(" 2 |");}
  if(arduino_present[3]!=0){client.print(" 3 |");}
  if(arduino_present[4]!=0){client.print(" 4 |");}
  if(arduino_present[5]!=0){client.print(" 5 |");}
  if(arduino_present[6]!=0){client.print(" 6 |");}
  if(arduino_present[7]!=0){client.print(" 7 |");}
  if(arduino_present[8]!=0){client.print(" 8 |");}
  if(arduino_present[9]!=0){client.print(" 9 |");}

//ID du dôme séléctionné
  client.print("<br/>Dome selectionnee : ");
  client.print(ID_dome);
 
//heure du système
  client.print("<br/>");
  client.print(heure);
  client.print(":");
  client.print(minute);

//lien web + @ + n°tel
  client.print("<br/><br/>");
  client.print("<FONT size=2><a href=\"http://www.xxxxxxxx/\" target=_blank>Notre site web</a><br/>");
  client.print("<br/>Contacte: 04.xx.xx.xx.xx - email: xxx@xxxxx.net<br/>SECURITE TECHNOLOGIE SERVICES</FONT></center>");
 
// bas de page
  contentPrinter(client,(char*)pgm_read_word(&(contents_main[CONT_FOOTER])));
}

//partie non modifié envoie de la page web
void contentPrinter(EthernetClient client, char *realword) {
  int total = 0;
  int start = 0;
  char buffer[STRING_BUFFER_SIZE];
  int realLen = strlen_P(realword);
  memset(buffer,0,STRING_BUFFER_SIZE);

  while (total <= realLen) {
    strncpy_P(buffer, realword+start, STRING_BUFFER_SIZE-1);
    client.print(buffer);

    total = start + STRING_BUFFER_SIZE-1;
    start = start + STRING_BUFFER_SIZE-1;
  }
}
void sendContent(EthernetClient client, int pageId)
{
  contentPrinter(client,(char*)pgm_read_word(&(contents_pages[pageId])));
}
Logged

Un tien vaux mieux que deux tu l'auras !

83 - var
Offline Offline
God Member
*****
Karma: 9
Posts: 863
ARDUINO Powa !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Page 1  Géstion général: Heure, IP, séléction du Module à configurer, Ronde forcée

HTML:
Code:
// Page 1
PROGMEM prog_char http_uri1[] = "/page1";
PROGMEM prog_char content_title1[] = "<center><br/><br/><h2>Gestion module</h2>";
PROGMEM prog_char content_page1[] = "Bienvenue sur le module de configuration des domes videos<br/><br/>"
"<FORM ACTION=/page1 METHOD=GET> Reglage de l'heure (ex: 00h00, 03h04, 17h40) : <INPUT NAME=IP TYPE=TEXT />"
"<br/><br/>Modifier l'IP d'un module <INPUT NAME=M_module TYPE=TEXT /><br/>ID du dome video a cibler"
"<INPUT NAME=ZD_dome TYPE=TEXT /><br/><br/><br/>Vous pouvez forcer une ronde :<br/><br/>"
"Ronde ID: <INPUT NAME=YD_ronde TYPE=TEXT /><br/>On - Off<br/><INPUT TYPE=checkbox NAME=Ronde value=1 />"
" - <INPUT TYPE=checkbox NAME=Ronde value=0 /><br/><br/><input type=submit value=Configurer /></form></center>";

Methode get: ( réalisé pendant la récupération caractère par caractère des data méthode GET, switch case, case 1 => page 1 )
Code:
case '1':
                    if (pres_value==1 && time_preset_id=='I') { heure_web[recuperation]=c;  recuperation++; new_heure=1;}
                    if (pres_value==1 && time_preset_id=='R') { ronde_active=int(c)-48; send_para_rond=1; }
                    if (pres_value==1 && time_preset_id=='Y') { ID_ronde=int(c)-48; }
                    if (pres_value==1 && time_preset_id=='Z') { ID_dome=int(c)-48;  }
                    if (pres_value==1 && time_preset_id=='M') { IP_modif[recuperation]=c;  recuperation++; new_ip=1; }
                    if (pres_id==1) { time_preset_id=c; pres_id=0; }
                    break;   

Page 2   Composition des rondes: N° de la ronde + durée de l’arrêt par preset

HTML:
Code:
// Page 2
PROGMEM prog_char http_uri2[] = "/page2";
PROGMEM prog_char content_title2[] = "<center><br/><br/><h2>Composition des rondes</h2>";
PROGMEM prog_char content_page2[] = "Inscriver la duree de l'arret par preposition et le numero de ronde concernee (en Seconde 0 - 999)<br /><br/><FORM ACTION=/page2 METHOD=GET>ID ronde : <INPUT NAME=ID_ronde TYPE=TEXT /><br/><br/>"
"Preset 1 : <INPUT NAME=1_t_p TYPE=TEXT /><br />Preset 2 : <INPUT NAME=2_t_p TYPE=TEXT /><br />"
"Preset 3 : <INPUT NAME=3_t_p TYPE=TEXT /><br />Preset 4 : <INPUT NAME=4_t_p TYPE=TEXT /><br />"
"Preset 5 : <INPUT NAME=5_t_p TYPE=TEXT /><br />Preset 6 : <INPUT NAME=6_t_p TYPE=TEXT /> <br />"
"Preset 7 : <INPUT NAME=7_t_p TYPE=TEXT /><br />Preset 8 : <INPUT NAME=8_t_p TYPE=TEXT /><br />"
"Preset 9 : <INPUT NAME=9_t_p TYPE=TEXT /><br /><br /><input type=submit value=Composer /><br /></center></form>";
Methode get:
Code:
case '2':       
                   if (fin_val==1 && oui==1)
                   {
                      if(tempo[2]=='*' && tempo[1]=='*') { U=(int(tempo[0])-48); }
                      else if(tempo[2]=='*') { D=10*(int(tempo[0])-48);  U=(int(tempo[1])-48); }
                      else { C=100*(int(tempo[0])-48); D=10*(int(tempo[1])-48);  U=(int(tempo[2])-48); }
           
                      switch (time_preset_id)
                      {
                          case '1': time_preset_1[ID_ronde_modif]=C+D+U;
                                    break;   
                          case '2': time_preset_2[ID_ronde_modif]=C+D+U;
                                    break;   
                          case '3': time_preset_3[ID_ronde_modif]=C+D+U;
                                    break;   
                          case '4': time_preset_4[ID_ronde_modif]=C+D+U;
                                    break;   
                          case '5': time_preset_5[ID_ronde_modif]=C+D+U;
                                    break;   
                          case '6': time_preset_6[ID_ronde_modif]=C+D+U;
                                    break;   
                          case '7': time_preset_7[ID_ronde_modif]=C+D+U;
                                    break;   
                          case '8': time_preset_8[ID_ronde_modif]=C+D+U;
                                    break;   
                          case '9': time_preset_9[ID_ronde_modif]=C+D+U;
                                    send_para_rond=1;
                                    break;
                                   
                          default : break;               
                      }
                      C=0; D=0; U=0; oui=0; fin_val=0; recuperation=0; tempo[0]='*'; tempo[1]='*'; tempo[2]='*';           
                       
                  }
                 
                  if (pres_id==1){ time_preset_id=c; pres_id=0; }
                  else if ( pres_value==1 && fin_val!=1 ) { oui=1; tempo[recuperation]=c;  recuperation++; }
                  if (time_preset_id=='I' && pres_value==1) { ID_ronde_modif=int(c)-48; }
                  break;             

Page 3  Configuration preset, déplacement haut bas gauche droite stop zoom + & - , numéro du preset a sauvgarder

HTML:
Code:
//Page 3
PROGMEM prog_char http_uri3[] = "/page3";
PROGMEM prog_char content_title3[] = "<center><br /><br /><h2>Reglage des presets</h2>";
PROGMEM prog_char content_page3[] = "Positionner votre dome video sur la position souhaitee<br /><br/>"
"<FORM ACTION=/page3 METHOD=GET><a href=\"./page3?H\"> Haut </a><br /><br />"
"<a href=\"./page3?G\">Gauche</a> - <a href=\"./page3?S\">Stop</a> - <a href=\"./page3?D\">Droite</a><br /><br /> "
"<a href=\"./page3?B\"> Bas </a><br /><br /><a href=\"./page3?P\">Zoom +</a>     <a href=\"./page3?M\">Zoom -</a><br/>"
"<br /><br />Donner un numero entre 1 et 9 a votre preposition :<br/><br /><INPUT NAME=new_preset TYPE=TEXT />"
"<br/><br/><input type=submit value=Enregistrer /><br/></center></form>";
Methode get:
Code:
case '3':   
                  if ( pres_value == 1 ) { num_preset=int(c)-48; pres_value=0;}
                  if ( pres_id == 1 )  { direc_prepo = c ; pres_id=0; }
                 
                  switch (direc_prepo)
                  {
                    case 'H':  Haut=1; break;
                    case 'G':  Gauche=1;break;
                    case 'D':  Droite=1; break;
                    case 'B':  Bas=1; break;
                    case 'S':  Stop=1; break;
                    case 'P':  Zoom_plus=1; break;
                    case 'M':  Zoom_moin=1; break;
                    default :  break;
                  }
                  break;
« Last Edit: April 24, 2012, 04:58:58 am by skizoh » Logged

Un tien vaux mieux que deux tu l'auras !

83 - var
Offline Offline
God Member
*****
Karma: 9
Posts: 863
ARDUINO Powa !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Page 4  Gestion des rondes planifier, heure de début et de fin de ronde, en cas de besoin d'une ronde de jour et de nuit

HTML:
Code:
PROGMEM prog_char http_uri4[] = "/page4";
PROGMEM prog_char content_title4[] = "<center><br /><br /><h2>Planification des rondes</h2>";
PROGMEM prog_char content_page4[] = " Rentrez l'heure de depart et de fin des ronde (01h20 pour 1h20, x pour ne pas faire la ronde)<br/><FORM ACTION=/page4 METHOD=GET><br />Ronde 1 - Debut: <INPUT NAME=0ronde TYPE=TEXT /> Fin: <INPUT NAME=1ronde TYPE=TEXT /><br/><br/>Ronde 2 - Debut: <INPUT NAME=2ronde TYPE=TEXT /> Fin: <INPUT NAME=3ronde TYPE=TEXT /><br/><br/><br/><br/><input type=submit value=Planifier /><br/></center></form>";
Methode GET:
Code:
        case '4':
                  if ( pres_value==1 )
                  {
                      switch (time_preset_id)
                      {
                        case '0':
                                if (time_preset_id=='0' && recuperation < 5) {h_start_ronde1[recuperation]=c; recuperation++; }
                                break;
                             
                        case '1':
                                if (time_preset_id=='1' && recuperation < 5) { h_fin_ronde1[recuperation]=c; recuperation++; }
                                break;

                        case '2':
                                if (time_preset_id=='2' && recuperation < 5) { h_start_ronde2[recuperation]=c; recuperation++; }
                                break;
                             
                        case '3':
                                if (time_preset_id=='3' && recuperation < 5) { h_fin_ronde2[recuperation]=c; recuperation++; }
                                break;
                               

                        default :  break;
                        }
                      }
                     
                      if (pres_id==1) {  time_preset_id=c;  pres_id=0;  fin_val=0;  recuperation=0; }                     
                      break;

Page 5 Notice d'utilisation

HTML:
Code:
PROGMEM prog_char http_uri5[] = "/";
PROGMEM prog_char content_title5[] = "<center><br /><h2><br/>Notice d'utilisation</h2>";
PROGMEM prog_char content_page5[] = "Page 1 : Gestion module<br/>En premier lieu vous trouverez un champ reserve a l'heure de votre module."
"<br/>Entrer l'heure que vous desirez puis cliquer sur configurer, l'ensemble du systeme sera remis a l'heure."
"<br/>En bas de page vous disposez de deux champs et deux cases a cocher, l'ID dome qui vous permet de selectionner le dome a configurer, l'ID ronde et les case on off, servent a lancer ou arreter immediatemment une ronde."
"<br/><br/>Page 2 : Composition rondes<br/>Cette page permet de construire vos rondes, vous disposez de 9 prepositions pour composer jusqu'a 5 rondes."
"<br/>D'abord entrer dans le champ ID ronde le numero de la ronde a composer(1 - 5), puis dans le champ de chaque preset prescisez la duree(en seconde 0 - 999) de l'arret sur cette position, en suite cliquez sur composer."
"<br/><br/>Page 3 : Definition preset"
"<br/>Cette page vous permettra de definir vos propres prepositions, au centre se trouve un pave directionnel vous permettant de diriger le dome video vers la position voulue, en suite entre un numero de preset(1 - 9) puis cliquez sur enregistrer <br/><br/>"
"Page 4 : Planification rondes<br/>"
"Cette page vous sera utile pour automatiser plusieurs rondes dans une meme journee.<br/> Renseignez Debut et Fin (sous la forme: 01h35, 05h40, 12h00 ou x pour ne pas la realiser) pour chaque ronde, verifier en bas de page que l'ID dome est bien celui du dome a configurer puis cliquer sur planifier.<br/>";


Voila pour les 5 pages web et la récupération des donnée, le traitement et le reste viendra dans les prochaines publications

Skizo !
« Last Edit: April 24, 2012, 05:26:19 am by skizoh » Logged

Un tien vaux mieux que deux tu l'auras !

Offline Offline
Sr. Member
****
Karma: 2
Posts: 259
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est pas mal du tout, pour un projet en stage! Moi je dis un grand bravo smiley
Logged

83 - var
Offline Offline
God Member
*****
Karma: 9
Posts: 863
ARDUINO Powa !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

tu dit ça parce que j'ai le même pseudo que toi à 6 lettres prêt smiley-razz

Merci beaucoup, je suis content de travailler sur un projet si intéressent, demain le patron est pas la et j'ai juste un programme pour piloter 5 relay reed  en fonction d'une tension à faire pour toute la journée ('programme de gestion d'autonomie et d'alimentation d'un coffret vidéo uniquement alimenté sur l'éclairage public et en journée sur batterie, surement mon prochain post ici smiley-grin), je vais bien trouver le moyen de continuer le poste smiley-grin

SkizOfrènNeuh smiley-grin
« Last Edit: April 25, 2012, 05:00:55 pm by skizoh » Logged

Un tien vaux mieux que deux tu l'auras !

Pages: [1] 2   Go Up
Jump to: