Go Down

Topic: Domo'Duino, la domotique par Arduino (NEWS: Modules 2.4ghz ) (Read 112614 times) previous topic - next topic

chicotore

Quote
Content de voir que tu es toujours en vie, je parlais justement de toi ici http://arduino.cc/forum/index.php/topic,80422.315.html.   


Oui je vient de voir ça ^^
Quote
L'enc28j60 toujours en vie également ? 
Toujours dans la même optique pour ton projet ?


Oui toujours en vie et oui toujours la même optique pour le projet. En fait je vient de reprendre mon code et il est presque finit en fait ! Il me manque juste le fait de pouvoir sécurisé le tous avec un mot de passe à la connections sur mon arduino sinon tous le reste est OK et fonctionnel ... mais je galère toujours autant a faire un login+mdp ^^

Quote
Pas envie de rejoindre l'autre projet ?


Bah en fait j'ai un peut raté le train de ce projet donc je ne sait pas du tout de quoi il en retourne ... c'est une interface full arduino ou PC+Arduino ? Car moi je veut vraiment faire un truc sans PC, juste l'arduino qui gère tout ^^

Quote
Attention beaucoup de changement niveau core arduino depuis la dernière fois !


C'est a dire ? changement core ?

merci

Brisebee


Bah en fait j'ai un peut raté le train de ce projet donc je ne sait pas du tout de quoi il en retourne ... c'est une interface full arduino ou PC+Arduino ? Car moi je veut vraiment faire un truc sans PC, juste l'arduino qui gère tout ^^


Pour ce qui me concerne il n'y aura pas de PC. Même si je ne sais pas encore si le site web sera dans l'arduino ou sur un serveur externe.
Cela dépendra du nombre de données à stocker, et plus j'y réfléchi, plus je pense qu'il va falloir externaliser.

Je vais relire tranquillement ce topic, comme me le suggérait Osaka, j'aurai probablement des questions à te poser.

chicotore

Moi je part vraiment sur un programme entièrement dans l'arduino sans serveur externe ou PC ... le but est d'avoir l'arduino et rien d'autre  :smiley-mr-green:

D'ailleurs le projet est quasiment finit, il me manque juste a faire une sécurité d'accès avec login+mdp mais je galère encore et toujours ^^

zoroastre

Yep!

J'ai hâte de voir les avancés de ton projet, d'autant plus que j'ai un enc28j dans mes bacs et j'escompe vivement l'integrer dans mon projet en cours.

De toute manière et dans la globalité, je suis admiratif !!! Tu as réalisé un projet domotique superbe et relativement complet dont beaucoup vont à coup sûr s'inspirer, et moi le premier. Je suis donc avec une grande attention tes interventions ;)

Quote
Pas envie de rejoindre l'autre projet ?

Je rejoins cette reflexion, l'ideal domotique est personnel, n'empêche que la modularité des projets rend cet aspect durement commun et distant à la fois. C'est un peu comme si nous recherchions tous un vaccin contre le virus ebola avec nos methodes propres, méthodes de laborantin. Alors que la philosophie "opensource" devrait permettre à chacun de nous de participer à un projet unique aux milles facettes et couleurs, mais tous ensemble.
D'ailleurs, au vue de l'avancé de untel et de la motivation d'autres, nous devrions tous collaborer dans le même laboratoire, dans le même atelier.
Le projet de Chicotore est on ne peut plus remarquable, mais certains ont des sillons bien costauds aussi, et là, je pense à Gromain59 et au XPL.

@+

Zoroastre.
Gné! ;)

osaka


Quote
Pas envie de rejoindre l'autre projet ?


Bah en fait j'ai un peut raté le train de ce projet donc je ne sait pas du tout de quoi il en retourne ... c'est une interface full arduino ou PC+Arduino ? Car moi je veut vraiment faire un truc sans PC, juste l'arduino qui gère tout ^^


En fait c'est pas vraiment un poste pour un projet, mais plutôt un poste pour plusieurs projets presque similaire qui tourne autour de la domotique.
On discutes et s'entraide surtout.  :smiley-surprise:
Maintenant la solution full arduino pour l'interface web, tu connais les limites hein mais pour tes besoins c'est suffisant.  :smiley-mr-green:


Quote
Attention beaucoup de changement niveau core arduino depuis la dernière fois !


C'est a dire ? changement core ?


Ici c'est l'ensemble des classes dédié au code arduino (main, HardwareSerial, wiring, etc), tout ce que la team arduino à écrit pour te "facilité" la vie (pinMode(), digitalWrite(), Serial.println(), etc ) qui te cache ce qu'il ce passe réellement  XD.
Enfin il y a eu pas mal de changement qui peuvent rendre l'ancien code ou lib incompatible avec les dernières màj du core arduino. 

chicotore


Yep!

J'ai hâte de voir les avancés de ton projet, d'autant plus que j'ai un enc28j dans mes bacs et j'escompe vivement l'integrer dans mon projet en cours.

De toute manière et dans la globalité, je suis admiratif !!! Tu as réalisé un projet domotique superbe et relativement complet dont beaucoup vont à coup sûr s'inspirer, et moi le premier. Je suis donc avec une grande attention tes interventions ;)

Quote
Pas envie de rejoindre l'autre projet ?

Je rejoins cette reflexion, l'ideal domotique est personnel, n'empêche que la modularité des projets rend cet aspect durement commun et distant à la fois. C'est un peu comme si nous recherchions tous un vaccin contre le virus ebola avec nos methodes propres, méthodes de laborantin. Alors que la philosophie "opensource" devrait permettre à chacun de nous de participer à un projet unique aux milles facettes et couleurs, mais tous ensemble.
D'ailleurs, au vue de l'avancé de untel et de la motivation d'autres, nous devrions tous collaborer dans le même laboratoire, dans le même atelier.
Le projet de Chicotore est on ne peut plus remarquable, mais certains ont des sillons bien costauds aussi, et là, je pense à Gromain59 et au XPL.

@+

Zoroastre.


Merci a toi  ;) mais c'est surtout grâce a cette communautés que le programme en est a ce stade  :smiley-mr-green:

Quote
Ici c'est l'ensemble des classes dédié au code arduino (main, HardwareSerial, wiring, etc), tout ce que la team arduino à écrit pour te "facilité" la vie (pinMode(), digitalWrite(), Serial.println(), etc ) qui te cache ce qu'il ce passe réellement  .
Enfin il y a eu pas mal de changement qui peuvent rendre l'ancien code ou lib incompatible avec les dernières màj du core arduino.


Ok, je n'est pas mis a jour mon logiciel arduino, ça doit être pour ça que je n'est pas vu les news ^^

Sinon pour en revenir a mon mot de passe, est-ce que il ne serait pas possible de mettre un MDP directement a mon DNS que de vouloir le mettre dans mon code arduino ? j'essaye de trouver un DNS gratuit avec MDP mais pour le moment je trouve pas grand chose ^^


osaka


Plus personne ? ^^


Lol c'est toujour le même problème, tu n'as pas choisis la facilité avec l'enc28j60.  ]:D
Sinon je sais plus ce qui avais été testé et ce qui ne marchait pas  :smiley-sweat:, tu avais testé la dernière solution que je t'avais donné page précédente ?
Pas le courage d'y regarder tout de suite ...  :smiley-fat:  XD
Va me falloir un mois pour me remettre dans ton projet lol. :smiley-mr-green:

chicotore

Je vient d'avoir une nouvelle idée pour ma gestion de la sécurité ^^ Comme j'ai un code complet avec accès par MDP qui fonctionne mais fait bugger le reste du code ! que pensez vous de mettre en place ce code avec MDP sur un arduino seul et une fois le bon MDP taper, cela donne accès au second arduino qui contient le code domotique ?

Cela permet également de gagner un peut de place pour le programme domotique non ? mais comment ouvrir un programme sur un autre arduino a partir d'un premier arduino ? qu'en pensez-vous ?

Code: [Select]
void analyse_req(char *str)
{
 //  Serial.println(str);
 //authentification, modifier dGVzdDp0ZXN0
 if (strstr( str, "Authorization: Basic Y2hpY290b3JlOmRvbW90aXF1ZQ==") != NULL) authentified = 1;


Apres sauf si quelqu'un sait comment faire pour avoir une authentification par MDP dans un programme arduino car la je sèche vraiment et ça m'énerve un peut d'être bloqué pour un truc tout bête je suit sur ...

chicotore

Salut,

Voila le code actuel sur lequel j'essaye de bidouiller pour arriver à le faire fonctionner. En fait l'identification fonctionne mais ensuite plus rien ne fonctionne dans le code. Aucun bouton rien ...

http://chicowebsite.free.fr/secu.pde

J'ai essayer ton dernier code mais il ne fonctionne pas du tout et comme tous à été changer dedans j'ai un peu (beaucoup) de mal à le comprendre ^^

osaka

Il me semble qu'à l'époque, ce "figage" était du a un problème de taille mémoire (sram) c'est pour celà que j'avais fais un max de macro avec le code html répétitif en progmem dans la dernière version ?
Tu utilisais un arduino uno ou mega, je sais plus ?

Brisebee

Bonjour,

En cherchant des exemples de mise en oeuvre de serveur web avec arduino, je suis tombé sur un exemple d'authentification par MdP dans les exemples de la librairie Webduino, mais tu l'as probablement déjà vu.

A tout hasard, voici le code de cet exemple :
Code: [Select]
/* Web_Authentication.ino - Webduino Authentication example */

/* This example assumes that you're familiar with the basics
* of the Ethernet library (particularly with setting MAC and
* IP addresses) and with the basics of Webduino. If you
* haven't had a look at the HelloWorld example you should
* probably check it out first */

/* you can change the authentication realm by defining
* WEBDUINO_AUTH_REALM before including WebServer.h */
#define WEBDUINO_AUTH_REALM "Weduino Authentication Example"

#include "SPI.h"
#include "Ethernet.h"
#include "WebServer.h"

/* CHANGE THIS TO YOUR OWN UNIQUE VALUE.  The MAC number should be
* different from any other devices on your network or you'll have
* problems receiving packets. */
static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

/* CHANGE THIS TO MATCH YOUR HOST NETWORK.  Most home networks are in
* the 192.168.0.XXX or 192.168.1.XXX subrange.  Pick an address
* that's not in use and isn't going to be automatically allocated by
* DHCP from your router. */
static uint8_t ip[] = { 192, 168, 1, 210 };

/* This creates an instance of the webserver.  By specifying a prefix
* of "", all pages will be at the root of the server. */
#define PREFIX ""
WebServer webserver(PREFIX, 80);

void defaultCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();
  if (type != WebServer::HEAD)
  {
    P(helloMsg) = "<h1>Hello, World!</h1><a href=\"private.html\">Private page</a>";
    server.printP(helloMsg);
  }
}

void privateCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  /* if the user has requested this page using the following credentials
   * username = user
   * password = user
   * display a page saying "Hello User"
   *
   * the credentials have to be concatenated with a colon like
   * username:password
   * and encoded using Base64 - this should be done outside of your Arduino
   * to be easy on your resources
   *
   * in other words: "dXNlcjp1c2Vy" is the Base64 representation of "user:user"
   *
   * if you need to change the username/password dynamically please search
   * the web for a Base64 library */
  if (server.checkCredentials("dXNlcjp1c2Vy"))
  {
    server.httpSuccess();
    if (type != WebServer::HEAD)
    {
      P(helloMsg) = "<h1>Hello User</h1>";
      server.printP(helloMsg);
    }
  }
  /* if the user has requested this page using the following credentials
   * username = admin
   * password = admin
   * display a page saying "Hello Admin"
   *
   * in other words: "YWRtaW46YWRtaW4=" is the Base64 representation of "admin:admin" */
  else if (server.checkCredentials("YWRtaW46YWRtaW4="))
  {
    server.httpSuccess();
    if (type != WebServer::HEAD)
    {
      P(helloMsg) = "<h1>Hello Admin</h1>";
      server.printP(helloMsg);
    }
  }
  else
  {
    /* send a 401 error back causing the web browser to prompt the user for credentials */
    server.httpUnauthorized();
  }
}

void setup()
{
  Ethernet.begin(mac, ip);
  webserver.setDefaultCommand(&defaultCmd);
  webserver.addCommand("index.html", &defaultCmd);
  webserver.addCommand("private.html", &privateCmd);
  webserver.begin();
}

void loop()
{
  char buff[64];
  int len = 64;

  /* process incoming connections one at a time forever */
  webserver.processConnection(buff, &len);
}


Je ne sais pas si c'est exactement ce que tu cherches !

@+

osaka

Je ne connais pas lib Webduino et la classe WebServer, mais ça ressemble à ce que l'on a fais non ?
Donc chico, il faudrait peut être regardé ce qu'il y a de nouveau depuis ton retour (Webduino par exemple) et qui pourrait t'être utile  ?
Merci Bribri je crois que tu as trouvé quelque chose de sympa là, enfin je connaissais pas.  :smiley-surprise:

chicotore


Bonjour,

En cherchant des exemples de mise en oeuvre de serveur web avec arduino, je suis tombé sur un exemple d'authentification par MdP dans les exemples de la librairie Webduino, mais tu l'as probablement déjà vu.

A tout hasard, voici le code de cet exemple :
Code: [Select]
/* Web_Authentication.ino - Webduino Authentication example */

/* This example assumes that you're familiar with the basics
* of the Ethernet library (particularly with setting MAC and
* IP addresses) and with the basics of Webduino. If you
* haven't had a look at the HelloWorld example you should
* probably check it out first */

/* you can change the authentication realm by defining
* WEBDUINO_AUTH_REALM before including WebServer.h */
#define WEBDUINO_AUTH_REALM "Weduino Authentication Example"

#include "SPI.h"
#include "Ethernet.h"
#include "WebServer.h"

/* CHANGE THIS TO YOUR OWN UNIQUE VALUE.  The MAC number should be
* different from any other devices on your network or you'll have
* problems receiving packets. */
static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

/* CHANGE THIS TO MATCH YOUR HOST NETWORK.  Most home networks are in
* the 192.168.0.XXX or 192.168.1.XXX subrange.  Pick an address
* that's not in use and isn't going to be automatically allocated by
* DHCP from your router. */
static uint8_t ip[] = { 192, 168, 1, 210 };

/* This creates an instance of the webserver.  By specifying a prefix
* of "", all pages will be at the root of the server. */
#define PREFIX ""
WebServer webserver(PREFIX, 80);

void defaultCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();
  if (type != WebServer::HEAD)
  {
    P(helloMsg) = "<h1>Hello, World!</h1><a href=\"private.html\">Private page</a>";
    server.printP(helloMsg);
  }
}

void privateCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  /* if the user has requested this page using the following credentials
   * username = user
   * password = user
   * display a page saying "Hello User"
   *
   * the credentials have to be concatenated with a colon like
   * username:password
   * and encoded using Base64 - this should be done outside of your Arduino
   * to be easy on your resources
   *
   * in other words: "dXNlcjp1c2Vy" is the Base64 representation of "user:user"
   *
   * if you need to change the username/password dynamically please search
   * the web for a Base64 library */
  if (server.checkCredentials("dXNlcjp1c2Vy"))
  {
    server.httpSuccess();
    if (type != WebServer::HEAD)
    {
      P(helloMsg) = "<h1>Hello User</h1>";
      server.printP(helloMsg);
    }
  }
  /* if the user has requested this page using the following credentials
   * username = admin
   * password = admin
   * display a page saying "Hello Admin"
   *
   * in other words: "YWRtaW46YWRtaW4=" is the Base64 representation of "admin:admin" */
  else if (server.checkCredentials("YWRtaW46YWRtaW4="))
  {
    server.httpSuccess();
    if (type != WebServer::HEAD)
    {
      P(helloMsg) = "<h1>Hello Admin</h1>";
      server.printP(helloMsg);
    }
  }
  else
  {
    /* send a 401 error back causing the web browser to prompt the user for credentials */
    server.httpUnauthorized();
  }
}

void setup()
{
  Ethernet.begin(mac, ip);
  webserver.setDefaultCommand(&defaultCmd);
  webserver.addCommand("index.html", &defaultCmd);
  webserver.addCommand("private.html", &privateCmd);
  webserver.begin();
}

void loop()
{
  char buff[64];
  int len = 64;

  /* process incoming connections one at a time forever */
  webserver.processConnection(buff, &len);
}


Je ne sais pas si c'est exactement ce que tu cherches !

@+


Salut,

Merci a toi mais ce code ne fonctionne pas, il y a une erreur au niveau de

Code: [Select]
WebServer webserver(PREFIX, 80);

Brisebee

Bonjour,
As-tu téléchargé et installé la librairie WebServer.h ?
https://github.com/sirleech/Webduino
Il faudra certainement adapter le sketch, car il a été écrit pour l'IDE 1.0 : Web_Authentication.ino et non Web_Authentication.pde
Je ne suis pas du tout un spécialiste du C, je ne te serai pas d'un grand secours dans le « debuggage » du sketch.
J'ai pas mal galéré pour transformer tout mon sketch pour l'IDE 1.01
@+

Go Up