Show Posts
Pages: [1] 2 3 ... 51
1  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: August 27, 2012, 01:28:38 pm
Je suis bien évidemment incapable de comprendre pourquoi !

Je suis également incapable de dire pourquoi.  smiley-mr-green
C'est un peux comme faire un reset du shield wizenet en remettant à jour les données de configuration réseau (ip, mac), pourtant fonctionnel sans chez moi et surtout que le code ajouter n'est qu'à la suite du code posant problème.
Je soupçonne le besoin d'un petit delay que le code ajouter ajoute  smiley-sweat.

Enfin ça fonctionne  smiley-mr-green .
2  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: August 27, 2012, 11:58:36 am
J'utilise un serveur local EasyPHP 5.3.9 est ce que cela peut venir de ça ?

Je pense pas comme tout est fonctionnel de ce côté là, essaie une fois en ajoutant un petit delay :

Code:
  Ethernet.begin(mac, ip);
  delay(100);
  print_NTP_Time(NTP());
3  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: August 26, 2012, 03:18:44 pm
- si je commente (/*   */) la partie suivante :

Code:
 
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    for(;;)
      ;
  }

j'obtiens :
Unix time = 0
The UTC time is 0:00:00
pseudo=a&frites=false&pays=france


Mauvais copier coller de ma part, tu peux supprimer cette partie.
En faisant divers testes j'ai pu constater ce comportement, la gestion des différent socket tcp ou udp semble parfois chaotique.
Je réédite mon poste précédent pour être certain d'avoir mis le bon (fonctionnel chez moi).

Juste aux cas ou je suis sous core 1.0.1 .
4  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: August 26, 2012, 07:49:19 am
Je viens de faire un rapide teste avec quelque modif et ça marche.
Je me suis d'abord charger du ntp et mis tout ce qui le concerne en local à une fonction comme utile qu'à l'initialisation.

Code:

#include <SPI.h>         
#include <Ethernet.h>
#include <EthernetUdp.h>

byte mac[] = {  0x90, 0xA2, 0xDA, 0x00, 0x6D, 0x86 };  // mac adresse propre à l'arduino
byte ip[] = { 192,168,1,109 }; // ip locale propre à l'arduino

EthernetServer server(1080); // 1080 a remplacer si différent fonctionne également avec ???? => à modifier alors dans php

byte nb = 0;

void setup()
{
  Serial.begin(9600);

  Ethernet.begin(mac, ip);
  print_NTP_Time(NTP()); // on s'occupe d'abord de récupérer l'heure via serveur NTP+affichage
  server.begin(); // ensuite du serveur de socket
}

void loop()
{
  EthernetClient client = server.available();
 
  if (client)
  {
    nb++;
    if (client.connected())
    {
      while (client.available())
      {
        char c = client.read();
        Serial.write(c); //on affiche dans le monitor les caractère reçu

        if(!client.available())
        {
          client.write("j'ai bien reçu la requete "); //réponse avec write
          client.print(nb, DEC); // réponse avec print (nb = nombre de requêtes)
          delay(1);
         
          client.stop();
        }
      }
      Serial.println (); // retour à la ligne dans serial monitor après chaque réception des données
    }
  }
}

unsigned long NTP() // retourne le nombre de sec. depuis 1 Jan 1970. (Unix time)
{
  EthernetUDP Udp;
  IPAddress timeServer(192, 43, 244, 18); // time.nist.gov NTP server
   
  const int NTP_PACKET_SIZE= 48; // NTP time stamp is in the first 48 bytes of the message
  byte packetBuffer[NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets
  memset(packetBuffer, 0, NTP_PACKET_SIZE); //initialise toute les "case" du tableau à 0
 
  //construction de la requete
  packetBuffer[0] = 0b11100011;   // LI, Version, Mode
  packetBuffer[1] = 0;     // Stratum, or type of clock
  packetBuffer[2] = 6;     // Polling Interval
  packetBuffer[3] = 0xEC;  // Peer Clock Precision
  // 8 bytes of zero for Root Delay & Root Dispersion
  packetBuffer[12]  = 49;
  packetBuffer[13]  = 0x4E;
  packetBuffer[14]  = 49;
  packetBuffer[15]  = 52;

  Udp.begin(8888);    
  Udp.beginPacket(timeServer, 123); //NTP requests are to port 123
  Udp.write(packetBuffer,NTP_PACKET_SIZE);
  Udp.endPacket();

  delay(1000); 
  if ( Udp.parsePacket() )
  { 
    Udp.read(packetBuffer,NTP_PACKET_SIZE);
    Udp.stop();

    const unsigned long seventyYears = 2208988800UL;
    unsigned long highWord = word(packetBuffer[40], packetBuffer[41]);
    unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]);
    unsigned long secsSince1900 = highWord << 16 | lowWord;
   
    return secsSince1900 - seventyYears;
  }
 
  return 0;
}

void print_NTP_Time(unsigned long epoch) // fonction utilitaire, affiche l'heure UTC
{
  Serial.print("Unix time = "); // Unix time starts on Jan 1 1970. In seconds, that's 2208988800:
  Serial.println(epoch); // print Unix time:                           

  // print the hour, minute and second:
  Serial.print("The UTC time is ");       // UTC is the time at Greenwich Meridian (GMT)
  Serial.print((epoch  % 86400L) / 3600); // print the hour (86400 equals secs per day)
  Serial.print(':'); 
  if ( ((epoch % 3600) / 60) < 10 ) // In the first 10 minutes of each hour, we'll want a leading '0'
  {
    Serial.print('0');
  }
  Serial.print((epoch  % 3600) / 60); // print the minute (3600 equals secs per minute)
  Serial.print(':');
  if ( (epoch % 60) < 10 ) // In the first 10 seconds of each minute, we'll want a leading '0'
  {
    Serial.print('0');
  }
  Serial.println(epoch %60); // print the second
}

5  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: August 26, 2012, 05:03:19 am
Yop Bribri,
Il y a déjà conflit avec le même port utilisé (8888) pour deux connexions simultané différente.

Code:
EthernetServer server(8888);

unsigned int localPort = 8888;      // local port to listen for UDP packets
Udp.begin(localPort);

6  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: August 24, 2012, 11:59:42 am
En fait le texte en lui même tu ne sais pas le positionner, par contre les balise type bloc ou inline oui, donc  pour inséré un texte différent, décalé ou autre tu auras 3 balise span par exemple, une contenant le texte à gauche, un au centre (celui qui sera décalé) et un à sa droite.
Enfin c'est clair qu'il faut joué et bricoler pour obtenir ce que l'on désire la plus part du temps  smiley-sad.
7  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: August 22, 2012, 01:39:30 pm
Pour ce qui concerne la position de "activée" ou "désactivé" dans une colonne, je n'ai pas essayé, comme tu le laisses entendre.
De toute manière, je ne sais pas comment indiquer où placer un bout de texte.

Pour placer des éléments à un endroit spécifique :
http://www.siteduzero.com/tutoriel-3-13566-le-positionnement-en-css.html#ss_part_4
http://www.siteduzero.com/tutoriel-3-13522-l-alignement.html
8  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: August 22, 2012, 12:26:34 pm
Je les ai petit à petit transformés pour que cela puisse correspondre à mon projet, et faire quelque chose de fonctionnel.
Ce que j’ai fait correspond à un bricolage, que beaucoup d’entre vous vont juger infâme, mais ça me permets d’apprendre, et de faire avancer mon projet.

C'est comme ça qu'on apprend et qu'on retiens.  smiley-wink

Je sais que tôt ou tard il va falloir que je passe en PHP avec une petite base de données MySql, mais pour le moment ce n’est pas à ma portée (je verrai probablement cela durant les longues soirées d’hiver).

Pour les petites quantités de données et ce que tu désires faire tu verras les bdd c'est très simple.  

1) Comment faire savoir à l’arduino quelle est la page (des 3) qui est concernée ? Ce qui reviendrait à transmettre un identifiant de la page active. J’ai essayé en vain, mais mes compétences en html sont très limitées.

Ici tu peux faire une fonction par formulaire ou si identique ajouter un ou des paramètres pour les différencier et ainsi séparer la fonction send() qui pourra alors envoyer différentes données, même autre que formulaires.

Code:
function sendForm(form)  //fonction qui sera appelé depuis la page html, form = numero du formulaire
{
  //appel de la fonction send(msg) chargé d'envoyé les différente valeurs trouvee grace a la fonction $(id)
  send(
{
 fnum: form,
 hda1: $('hda1').value, mda1: $('mda1').value, hfa1: $('hfa1').value, mfa1: $('mfa1').value,
 hda2: $('hda2').value, mda2: $('mda2').value, hfa2: $('hfa2').value, mfa2: $('mfa2').value,
 hda3: $('hda3').value, mda3: $('mda3').value, hfa3: $('hfa3').value, mfa3: $('mfa3').value,
 hdb1: $('hdb1').value, mdb1: $('mdb1').value, hfb1: $('hfb1').value, mfb1: $('mfb1').value,
 hdb2: $('hdb2').value, mdb2: $('mdb2').value, hfb2: $('hfb2').value, mfb2: $('mfb2').value,
 hdb3: $('hdb3').value, mdb3: $('mdb3').value, hfb3: $('hfb3').value, mfb3: $('mfb3').value,
 EV1: $('EV1').checked, EV2: $('EV2').checked
}
  );
}

function send(msg)
{
  // requête post vers socket.php avec les différentes valeurs du formulaire (msg)
  jQuery.post("socket.php", msg,
function(data) //data contiendra la ou les données en retour de la requête
{
 $("retour").innerHTML = data; // on integre dans la balise portant l'id "retour" les data de retour
});
}

function $(id)
{
  return document.getElementById(id); // fonction '$' recherche l'element html par son 'id'
}


Dans la page html, appel de la fonction adapté à ton formulaire spécifique ou différent (différencier ici par un paramètre (1) que tu changeras sur chaque pages ou chaque formulaires de page).
Code:
<div><button id="bouton" onclick="sendForm(1)">Valider</button></div>

Entre (), c'est ici que php te serait utile comme les pages et formulaires sont assé similaire et répétitives, mais bon une chose à la fois  smiley-grin.
 
2) Comment écrire à un endroit précis dans le tableau ? Dans la dernière colonne, à coté de « Electrovanne », j’aimerai écrire « activée » ou « désactivée » en fonction de l’état de l’électrovanne. Actuellement je n’arrive à l’écrire qu’en dessous du tableau « EV1 activée ou désactivée » et « EV2 activée ou désactivée ».

Ça c'est le truc le plus ch... avec le html, savoir placer ses données ou autres au bon endroit c'est tout une sinécure, c'est pour celà que je n'ai jamais chercher de ce côté là niveau emplois  smiley-sleep.
En séparent la case en deux colonne ça ne marche pas ?
9  International / Français / Re: Aidez nous ! Projet - Gestion domotique on: August 07, 2012, 02:51:01 pm
Salut, oui j'ai changé de pseudo

Bon ben finalement ça sera Blibli au lieu de skuzmi on est pas loin de Bribri.  smiley-mr-green

La prochaine étape sera la construction d'une CNC.

Sujet qui devrait intéresser du monde. smiley-surprise smiley-surprise

Dans mon cas j'ai déjà investi dans le logiciel Homeseer PRO ( j'ai craqué sur la licence à moitié prix...), faut avouer j'ai un peu du mal avec les systèmes Linux toussa...

mmmmh je ne sais pas trop ce que peux apporter Homeseer (windows only, pc, ...)  dans la gestion de plusieurs esclaves arduino, plugin existant ou à développer, je pense pas ou plutôt ne sais pas s'il en existe et si oui ça doit être limiter coté arduino ?
Pour Domogik le projet xpl de Gromain ou ce dont parlait olebrin peut être intéressant pour les débutants ?

En fait apres réflexion et lecture de vos messages, je pense que l'arduino "master" de mon croquis, on peut s'en passer et confier le boulot au serveur.

Attention il y a maître de bus qui gère la communication (collision, priorité, ...) entre esclaves (architecture maître-esclaves -> voir modbus par ex) et il y a maître de l'installation qui lui gère l'installation (ordres, commandes, enregistrement données, horaire, scénarios, ..., interface, ... ) ce n'est pas la même chose et comme je le voyais sur ton schéma je pensais que c'était pour le premier cas ?
(Dans ma gestion du bus je me passe de maître et gère le risque de collision différemment, avec protocole maison mais pas si éloigné de ce qui existe déjà).


10  International / Français / Re: Aidez nous ! Projet - Gestion domotique on: August 01, 2012, 11:02:59 am
j'arrive sur ce topic suite au conseil d' Osaka sur un autre topic du forum.

Yop Yop

(je délaisse un peu le multimetre pour le PC petit a petit). Du reste au mois d'octobre si tout va bien je devrais reprendre mes études (a 34 ans) et me lancer dans une licence pro Automatisme et info industrielle (parce que niveau programmation j'ai qd même des lacunes)

Moi je fais l'inverse à33 ans, je passe du monde de la programmation au monde industriel.  smiley-mr-green

En attendant vous pouvez toujours me dire ce que vous pensez de mon approche de la question. Je me suis "vachement inspiré" de ce qui existe deja dans l'industrie.

D'après ton diagramme ton approche modulaire est assé proche de la mienne.

Edit: skuzmi est devenu Blizzard27 ?
11  International / Français / Re: [Domotique] Limites de l'arduino ? on: July 29, 2012, 08:53:40 am
Sans doute a cause de mon métier d'électricien industriel qui fait un peu d'automatisme de tps en tps, j'imagine plutot une architecture qui se rapproche de ce qu'on fait dans l'industrie quand il y'a un automate, des peripheriques, et un systeme qui supervise l'ensemble.

Avec une archi de ce genre, seul l'arduino-automate a besoin de rester sous tension lors des coupures secteur.

Tu devrais bien t'entendre avec bribri, zoro, etc.  smiley-razz
On a pas mal discuter, protocole, bus, etc ...
http://arduino.cc/forum/index.php/topic,80422.msg607862.html#msg607862 (pub déguisé) smiley-mr-green
12  International / Français / Re: [Résolu] Comment utiliser un "String" comme membre de servo? on: July 29, 2012, 08:50:04 am
Je ne peux qu'être du même avis que zoro qui a juste fais un rappel et qui je pense s'en serait passer volontiers, il ne faut pas y voir d'action malveillante ce n'est pas son but et il ne pouvait deviner que la modération avait déjà été prévenue de l'erreur.
Maintenant s'il y a un règlement ce n'est pas par plaisir de sanctionner, sermonner ou autre mais plutôt une nécessité afin d'avoir un forum claire et agréable à parcourir pour tous.
Ici je crois bien que c'est l'un des forum les plus tolérant et respectueux que j'ai vu et rencontrer (même trop à mon gout  smiley-mr-green), il y a juste des limites, les règles il y a partout (conduire, travailler, etc) il suffit de les connaître et respecter et tout ira pour le meilleur des mondes (l'erreur est permise également).

(D'ailleurs, je suis outré que l'on puisse répondre à des problématiques qui ne sont pas dans les bonnes cases, Barbudor : -1 smiley-mr-green )

Mais qu'est-ce que j'ai fait moi  smiley-cry
La plupart du temps je répond aux topics qui apparaissent via un mail de notification, sans faire gaffe où ils se trouvent.

Barbu c'est non volontaire évidement mais en répondant trop précipitamment tu valides en quelque sorte le non respect de la charte et règlement.
13  International / Réalisations et Projets Finis / Re: Nos enfants, Nos voitures et Arduino : YaZo est né on: July 27, 2012, 10:44:28 am
Tien, j'ai directement pensé à ce projet.
http://www.rtl.be/info/votreregion/bruxelles/895913/bebe-mort-a-evere-un-systeme-a-l-etude-pour-eviter-ces-drames

Par contre ce baser uniquement sur des critères de températures n'est pas suffisant il me semble, il devrait y avoir réaction plutôt sur un critère temporelle quel que soit les conditions extérieure ?
14  International / Français / Re: Communication série entre arduino et un programme java on: July 21, 2012, 09:27:39 am
Oups non j'avais pas fais attention à l'origine de l’exception sur le dernier screen.
Normalement si l'origine de celle-ci est la lib rxtx la version du jdk sous laquel elle a été développé est dans le fichier README qui ce trouve dans l'archive téléchargé de la lib.
On devrais également pouvoir choisir la version du jdk à utilisé (si présent sur la machine) directement dans la configuration du projet, on peux choisir un jdk diff de celui par défaut par projet. (sous netbeans en tous cas où j'ai plus mes habitudes également  smiley-mr-green).
Comme quoi reprendre des exemples existant, la majorité du temps ça ne marche jamais.
! également, évité tout déplacement ou renommage manuel mais plutôt le faire via l'ide pour que la config du projet soit valide.   
Après avoir réglé ce problème de version le mieux serait de recommencé un nouveau projet tout propre.
15  International / Français / Re: Contrôler une LED par le web (IDE 1.0) on: July 20, 2012, 03:21:59 pm
http://php.net/manual/fr/function.explode.php
Je connais pas cette fonction explode mais apparemment elle retourne un tableau  de chaines, donc si tu tentes $msg=$msg+$msf vu que ce ne sont pas les même type de variables ça ne fonctionnera pas.

il faudrait faire quelque chose comme

Code:
function log($msg)
{
$msf=explode(":",$msg);
  $msg=$msg+" &#176;"+" C";
  $msg=$msg+"\n"+$msf[0]+"\n"+$msf[1]+"\n"+$msf[2];
  $("log").innerHTML=$msg;
}

Quelque chose dans le genre (suis pas pro php  smiley-mr-green).

Pages: [1] 2 3 ... 51