[Besoin d'aide]Arduino pour piloter un portail à partir d'un téléphone portable

Bonjour,

Je suis complètement novice en arduino, et je souhaite réaliser la commande d'un portail coulissant.

J'ai la "partie opérative" ou la "chaîne d'énergie" (moteur + la suite); en fait la carte de commande a grillé suite à un coup de foudre.

Je pense aussi en profiter pour remplacer les télécommandes spécifiques par des téléphones qui communiqueraient avec la carte de commande sans fil (donc le bluetooth me semble le plus adapté) simplement pour lancer l'exécution d'un programme.

En résumé je cherche une carte électronique ayant les caractéristiques suivantes:

  • stockage d'un programme;
  • capacité à recevoir par bluetooth l'ordre d'exécuter le programme en mémoire (l'ordre pouvant provenir d'une flotte de 10 téléphones environ, donc je veux éviter toute contrainte sur la marque ou l'OS du téléphone);
  • une autre entrée (ordre d'ouverture venu de l'interphone par bouton poussoir);
  • deux ou 3 sorties (je pense 1 pour la mise en marche du moteur, éventuellement PWM pour gérer une rampe mais pas obligatoire, 1 pour le sens de rotation du moteur, et 1 pour la lampe de fonctionnement, avec un probable clignotement géré par le prog)
  • sécurisation de la connexion entre les téléphones et la carte, pour que seuls les téléphones déclarés puissent commander l'exécution.
  • la place prise par la carte (arduino ou autre d'ailleurs) avec module BT intégré doit faire à peu près 20 cm x 15 cm sur 4 cm de haut, mais au besoin je peux avoir un module plus grand

Le sujet que j'ai vu ici : http://arduino.cc/forum/index.php/topic,53136.0.html ne me convient pas vraiment, parce que je préfèrerai du bluetooth pour ne plus être dépendant d'une télécommande.

Au besoin je pense qu'il me faudra peut-être rédiger un petit programme à installer sur chaque téléphone, en java ou autre, qui permettrait de piloter le portail. Mais si je peux éviter j'aime autant parce que je ne suis pas un programmeur.

Ensuite je peux bien sûr envisager plusieurs évolutions, mais si déjà j'arrive à faire fonctionner mon portail avec mon téléphone via bluetooth, je serai content.

Je ne suis pas vraiment arrêté sur le choix de l'arduino, ça me semble un bazooka pour écraser une mouche dans ce cas, mais ça sera pour moi l'occasion de m'y mettre, et puis j'avoue que par choix je préfèrerai l'arduino à une solution qui ne défend pas les valeurs du libre (picbasic ou autre).

Si mon sujet se recoupe avec un problème déjà traité je m'en excuse, mais je n'ai pas trouvé sur le forum un sujet assez proche du mien pour obtenir mes réponses.

A bientôt j'espère,
Xavier.

Salut, je pense pour ma part que coté téléphone, tu sera obliger de passer par un programme (existant peut être, ou le faire toi même..) la contrainte du téléphone sera obligatoire, téléphone plus ou moins récent, android, iphone, windowphone, et autre.. obligerons a modifier le logiciel.. (je suppose)..

niveau carte une uno pourrai allez.. arduinoBt mieux déjà le bt intégrer.. sinon ben passe en standalone et refais une carte entière (pour la place)..

Merci de ta réponse rapide, Tealcoune,

Ok pour la partie téléphone, il me faudra écrire (ou récupérer) un petit logiciel pour chaque téléphone, donc évidemment il faudra s'adapter au téléphone.

Je vais partir sur un arduino uno + extension bluetoothou sur un module avec bluetooth intégré.

Mais coté arduino, est-il possible de recevoir un ordre qui vienne d'un téléphone, et pas d'un pc ?
Et comment gérer l'association téléphone-arduino, histoire que tout le monde ne puisse pas ouvrir mon portail ?

En tout cas merci de te pencher sur mon problème.

alors pour recevoir l'ordre d'un tel .. bien sur .. même d'une tablette.. du moment qu'il y a un bt dedans ..
l'association ce fais comme avec le téléphone et le pc .. le téléphone trouve le bt de l'arduino et y'a un code d'association a faire..
ensuite a toi via des commande AT (ref : commande AT bt ... huhu suis je logique :slight_smile: ) .. de modifier le code d'association. et aussi voir si une fois tout les téléphone associé le rendre caché ..(pas regarder si y'a la commande pour .. mais je pense que oui.)

pour ma part je commence le bt : pc-->Bt-->arduino via logiciel java fais par moi .. et je refais le même logiciel mais Android-->BT-->arduino .. ^^..

Bon ça y est j'ai commandé ce module bluetooth :

et une carte Arduino Uno v3 :

J'ai rajouté une carte d'entrée sortie :

parce que je n'étais pas sûr de pouvoir raccorder directement le module bluetooth sur la carte uno.

L'ensemble plus les frais de port reste moins cher que tous les modules arduino avec bluetooth intégré que j'ai trouvés.

Dès que j'aurai tout ça je ferai des essais et je viendrai raconter tous les malheurs (et probablement demander de l'aide, parce qu'évidemment je vais pas m'en sortir facilement).

En attendant, tous vos avis et témoignages m'intéressent, sur la faisabilité, sur des exemples plus ou moins proches de communication en bluetooth entre un arduino et un téléphone.,... bref sur un projet approchant.

Au plaisir de vous lire... :slight_smile:

Coucou,

ça y est, j'ai commencé à bidouiller avec les matériel que j'ai décrit.

Pour l'instant voici ce que j'arrive à faire:

  • sans le module bluetooth sur la carte, j'arrive à faire fonctionner les programmes d'exemple "Blink" et "PhysicalPixel" (et à tester ce dernier grâce au moniteur série);

  • sans le BT, j'arrive aussi à faire écrire par l'arduino des infos sur le port série, par exemple "Bonjour tout le monde" grâce au prog suivant:

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

void loop()
{
Serial.print('H');
delay(1000);
Serial.print('L');
delay(1000);
}
Là aussi le contrôle grâce au moniteur série montre que tout fonctionne (c'est dire si je taquine grave en arduino, hein?)

  • avec le module bluetooth, Blink fonctionne mais pas PhysicalPixel, ce qui est logique puisque le module bluetooth prend les pattes 0(RX) et 1(TX) donc je peux pas envoyer l'ordre d'allumer ou d'éteindre la le de la patte 13;

  • toujours avec le BT, j'arrive à appairer le module BT de l'arduino avec un téléphone sous windows mobile, et un autre sous symbian 60, mais pas avec ma tablette sous ubuntu 12.04 (je ne vois jamais le BT de l'Arduino); pour autant sur le module BT la led STATE clignote de la même façon que je sois appairé ou pas, la led LINK n'est jamais allumée, et chacun des téléphones me dit qu'il n'arrive pas à se connecter au module BT.

  • lorsque je charge le prog ci-dessus dans l'arduino(sans le BT, sinon le transfert plante), puis que je déconnecte l'arduino, que je rajoute le BT et que je le réalimente, eh bien je ne reçois rien sur mes téléphones.

EN gros je ne suis plus totalement ignare en arduino, par contre je n'arrive presque à rien en bluetooth.

Quelqu'un sait-il où trouver de la doc, des exemples d'applications qui marchent,... bref n'importe quoi qui me permettrait de continuer à progresser sur le bluetooth, parce que là je tourne en rond ???

Tealcoune, tu parles de commandes AT que tu essaies d'envoyer grâce à un prog en java. As-tu réussi , et si oui peux-tu me monter à quoi ça ressemble ?

a plus,
Xavier

salut...
donc pour les commandes AT (qui permette de configurer le module bt) ce n'est pas avec un programme en java que je l'ai fais, simplement avec le moniteur de l'arduino ..
regarde ici http://arduino.cc/forum/index.php/topic,103182.0.html

ensuite pour la connections c'est normal, reconnaître l’appareil et etre connecter c'est deux chose différent.
par exemple moi mon pc, trouve mon module bluetooth, je les associes, mais c'est seulement avec pour mon programme qu'il ce connecte au bt.

salut

je m'y connais pas trop en BT mais je peut te donné un conseil , c'est de ne pas utilisé les pin 0 et 1 du rx/tx
Quand tu upload un sketch dans ton micro tu utilise les tx/rx ainsi que, quand tu veux vérifier la réception de données avec le moniteur cette mm ligne est utilisé.
donc je te conseil d'utilisé la librairie SoftwareSerial et d'utilisé les pin 2 et 3 comme je l'ai fait moi avec un xBee

cette astuce te changera pas la vie mais au moins tu pourra laissé connecté ton module BT a ton Arduino même en programment :wink:

#include <SoftwareSerial.h>
SoftwareSerial xbee(2, 3);

byte incomingByte, sensor1;

void setup()
{

  Serial.begin(9600);
  xbee.begin(9600);
  
  
}
void loop() 
{ 
  
  if (xbee.available())
  {  
      incomingByte = xbee.read();
      switch (incomingByte)
        {
      case 251:
          sensor1 = xbee.read();
          Serial.println("  Sensor 1 = ");
          Serial.println(int(sensor1));
          analogWrite (5, sensor1);
          break;

Salut

@ incubateur: Effectivement, je suis obligé de déconnecter mon module bluetooth pour avoir une liaison bidirectionnelle PC <-> Arduino .
Mais comme pour l'installation matérielle j'utilise une carte UNO + une extension IO avec implantation directe pour le module bluetooth, ta solution m'obligerait à recâbler le module bluetooth, et je crains les court-circuits pour les montages avec des fils partout (je me connais, je suis du genre à ne pas être très soigneux avec mes contacts) .

Par ailleurs, pour mon projet, j'ai fouiné un peu ans les projets existants, et ce qui s'en rapproche le plus (à savoir : déclenchement d'un prog assez simple à partir d'un téléphone portable, avec quasiment aucune contrainte sur le téléphone) me semble être celui-ci:
http://arduino.cc/forum/index.php/topic,97750.0.html

La solution en wifi, par rapport au bluetooth, me semble beaucoup plus simple:

  • rien à installer sur le client (le téléphone portable dans mon cas) ce qui est important car il y aura des téléphones sous windows mobile, sous iOs, sous symbian, ... bref en bluetooth il me faut écrire une appli pour chaque tél, bonjour la galère, alors qu'avec cette solution il suffit d'avoir un tél en wifi;

  • le projet que j'ai cité est très proche de ce que je cherche, donc il s'agira d'une adaptation, et a priori d'un investissement en temps plus faible je pense.

Par contre, d'après la discussion que j'ai lue ici:
http://arduino.cc/forum/index.php/topic,108184.0.html
il me faudra installer un routeur wifi, et connecter l'arduino à ce routeur (par ethernet par exemple).

Du coup je vais me tourner vers Arduino UNO (que j'ai déjà)+shield Ethernet v2+ un routeur wifi, ces deux derniers étant connectés par câble.

A noter que l'extension wifi pour l'arduino (65€ pour la Redfly, qui semble être appréciée) est plus chère que le routeur (avec 4 ports ethernet+ wifi, environ 30€)+ l'extension ethernet(25€).

C'est sûr que c'est beaucoup plus encombrant, mais ça n'impose pas au téléphone de savoir se connecter en mode ad hoc . Et puis l'extension ethernet v2 dispose d'un emplacement pour la carte µSD (nécessaire pour héberger le serveur web+ l'appli), alors qu'avec l'extension wifi il faut en rajouter une.

Donc je vais m'équiper dans ce sens, et je reviendrai raconter mes pérégrinations dans le monde arduinesque de la domotique. Merci en tous cas de toutes vos réponses.

Bonjour,
Je prend le train en marche donc j'espère ne pas avoir zappé des morceaux.

xav01:
@ incubateur: Effectivement, je suis obligé de déconnecter mon module bluetooth pour avoir une liaison bidirectionnelle PC <-> Arduino .
Mais comme pour l'installation matérielle j'utilise une carte UNO + une extension IO avec implantation directe pour le module bluetooth, ta solution m'obligerait à recâbler le module bluetooth, et je crains les court-circuits pour les montages avec des fils partout (je me connais, je suis du genre à ne pas être très soigneux avec mes contacts) .

La solution du "software serial" que te propose incubateur est la plus adapté.
Pour ce qui est du câblage ce n'est qu'une question de patience et de double/triple vérification avant de mettre l'alimentation :wink:

xav01:
Du coup je vais me tourner vers Arduino UNO (que j'ai déjà)+shield Ethernet v2+ un routeur wifi, ces deux derniers étant connectés par câble.

A noter que l'extension wifi pour l'arduino (65€ pour la Redfly, qui semble être appréciée) est plus chère que le routeur (avec 4 ports ethernet+ wifi, environ 30€)+ l'extension ethernet(25€).

Petite astuce du chef :grin:
Cherche sur ebay "WR703N" ce sont des petits routeur wifi (703N = version bleu) avec port usb intégré.
Il sont à ~20€ et remplace avantageusement une shield wifi :wink:
Il suffit de mettre à jour le firmware (en chinois de base) avec un firmware linux alternatif tel que openWRT ou DD-WRT.
Au final tu auras un routeur wifi complet et un port usb pour brancher ton arduino :wink:
-> économie d'argent et développement grandement simplifié (le routeur possède son propre serveur web + cgi-bin, l'arduino lui n'aura qu'as traiter les commandes série pour allumer / éteindre les sorties)

xav01:
C'est sûr que c'est beaucoup plus encombrant, mais ça n'impose pas au téléphone de savoir se connecter en mode ad hoc . Et puis l'extension ethernet v2 dispose d'un emplacement pour la carte µSD (nécessaire pour héberger le serveur web+ l'appli), alors qu'avec l'extension wifi il faut en rajouter une.

Avec le WR703N tu peut utiliser un hub usb et brancher une clef usb pour stocker tes pages web / images, etc ... :wink:

Salut,

Merci skywodd de prendre le train en marche.

Je ne dirais pas que pour moi le train se transforme petit à petit en galère, mais tout de même ça se complique...

Bon, j'ai regardé le composant WR703N sur ebay, et si j'ai bien compris :

  • c'est un routeur donc il peut mettre en relation des appareils wifi et un appareil avec port ethernet (ce qui ne serait plus nécessaire mais peut m'aider lors du développement) ;
  • il a un port USB donc il peut alimenter l'arduino et dialoguer avec ;
  • il peut héberger un site web capable de piloter mon portail, quitte à stocker le site sur une clé usb ;

Par contre pour que tout ça fonctionne il me faut (enfin il me suffit de :slight_smile: ) :

  • mettre à jour le micrologiciel interne du routeur ;
  • rajouter un concentrateur pour connecter à la fois la clé usb et l'arduino.

1re question: Déjà, est-ce que j'ai tout juste jusque là?

2e question: Comment le routeur va-t-il gérer à quel site on s'adresse: le site d'administration du routeur ou bien le site que j'aurais créé pour piloter le portail ?

Avec la solution routeur + {arduino avec extension ethernet}, ça me paraissait clair: l'arduino avait une adresse IP fixe, et lorsqu'un téléphone se connectait à cette adresse, il tombait sur le site de pilotage du portail. Là je vois pas trop comment ça va se faire.

Je pense que ma question montre tout mon niveau (enfin, mon manque) de maîtrise, mais le ridicule ne tue pas ...

3e question: la programmation du site web sera-t-elle très différente de celle du projet auquel je faisais allusion (cf: http://arduino.cc/forum/index.php/topic,97750.0.html )?

Je dis ça parce que mes compétences en programmation vont déjà être dépassées pour adapter ce projet, alors s'il faut beaucoup de modifs, ça va être long.

Pour vous donner une idée de mon niveau, je maîtrise la logique combinatoire, je sais écrire des grafcets, j'ai écrit un TETRIS en GFA Basic dans ma jeunesse (pour Atari 520 ST, nostalgie, quand tu nous tiens...) , je sais écrire des progs pour calculatrices programmables TI et CASIO, j'ai créé quelques sites web grâce à Joomla, en bidouillant parfois (et mal) le .css du modèle, ...

Bref je bidouille mais je n'avais jamais écrit la moindre ligne de C ou c++ jusqu'à toucher à arduino, et s'il me faut bien comprendre des progs en html, php, css, flash, ... et faire dialoguer ces progs avec un arduino, je crains d'en être bien incapable =( .

J'ai bien fait tourner les programmes d'exemple Blink, physicalPixel, et quelques uns avec des chaînes de caractère, mais c'est tout.

Mon projet n'est pas pressé mais j'ai un peu peur de me perdre en route.

Je sais bien que je suis lourd avec mes envies et un niveau probablement insuffisant pour les réaliser, mais ça me permettra d'apprendre des tonnes de trucs, au pire.

Merci en tout cas de m'aider dans ma démarche, vous me débroussaillez le chemin mais je ne sais toujours pas avancer assez...

xav01:
Je ne dirais pas que pour moi le train se transforme petit à petit en galère, mais tout de même ça se complique...

Si il n'y as pas de chalenge il n'y as pas d'intérêt :grin:

xav01:
Bon, j'ai regardé le composant WR703N sur ebay, et si j'ai bien compris :

  • c'est un routeur donc il peut mettre en relation des appareils wifi et un appareil avec port ethernet (ce qui ne serait plus nécessaire mais peut m'aider lors du développement) ;
  • il a un port USB donc il peut alimenter l'arduino et dialoguer avec ;
  • il peut héberger un site web capable de piloter mon portail, quitte à stocker le site sur une clé usb ;
  • oui, l'ethernet est un point nom négligeable !
    --> le wifi sera en "mode AP" (réception), l'ethernet te permettera d'avoir une console à distance sur le routeur même si tu plante la configuration du wifi.
  • oui, c'est le point intéréssant d'avoir un port usb :wink:
  • oui, il peut stocker ton site web et toute les ressources qui vont avec

xav01:
Par contre pour que tout ça fonctionne il me faut (enfin il me suffit de :slight_smile: ) :

  • mettre à jour le micrologiciel interne du routeur ;
  • rajouter un concentrateur pour connecter à la fois la clé usb et l'arduino.
  • oui, je te conseille openWRT (configuration simple via un menu, compilation assité, ...) (et d'avoir un "live cd" de linux (ubuntu par exemple))
  • oui

xav01:
1re question: Déjà, est-ce que j'ai tout juste jusque là?

Oui (ça fait beaucoup de oui :grin:)

xav01:
2e question: Comment le routeur va-t-il gérer à quel site on s'adresse: le site d'administration du routeur ou bien le site que j'aurais créé pour piloter le portail ?

Tu auras deux sites : les deux seront sur la même adresse IP mais pas sur le même port.
Avec un peu de configuration tu peut mettre ton site sur le port 80 (port HTTP par défaut) et la page d'admin sur 8080 (port HTTP alternatif)

xav01:
Avec la solution routeur + {arduino avec extension ethernet}, ça me paraissait clair: l'arduino avait une adresse IP fixe, et lorsqu'un téléphone se connectait à cette adresse, il tombait sur le site de pilotage du portail. Là je vois pas trop comment ça va se faire.

Téléphone -wifi-> routeur[serveur web -> script cgi-bin] -port usb-> carte arduino -> portail

xav01:
3e question: la programmation du site web sera-t-elle très différente de celle du projet auquel je faisais allusion (cf: http://arduino.cc/forum/index.php/topic,97750.0.html )?

Tu n'auras pas le site sur l'arduino donc oui ce sera différent (mais uniquement pour la partie ethernet vu qu'il n'y aura pas de shield ethernet).
L'arduino aura juste à "lire" le port série et éxécuter les commandes qu'on lui envoi.
Le site sera stocké sur le routeur sous forme de fichier html + css et de script cgi (langage aux choix, python, c/c++, bash, ...)

xav01:
Bref je bidouille mais je n'avais jamais écrit la moindre ligne de C ou c++ jusqu'à toucher à arduino, et s'il me faut bien comprendre des progs en html, php, css, flash, ... et faire dialoguer ces progs avec un arduino, je crains d'en être bien incapable =( .

Tu verras c'est pas si compliqué :wink:
Tu as :

Bon ça y est, je galère comme prévu.

Pour l'instant, j'ai commandé le routeur TP link, mais en attendant j'essaye de piloter mon arduino avec un site en local sur mon pc, et puis ensuite j'essayerai ce même pilotage depuis mon téléphone qui consultera le site hébergé sur mon pc via ma freebox-routeur .

Donc j'ai suivi le lien pour le tuto sur apache et les scripts CGI, et ça coince sérieusement:

-j'avais déjà xampplite d'installé (avec apache 2.2.14, version d'il y a 2 ans environ, c'était pour créer en local des sites joomla) sur ma partition winXP, donc j'ai tenté de suivre le tutoriel pas à pas, mais je n'y arrive pas : le 1er programme "Hello,world" en perl me renvoie "couldn't create child process: 720005" (j'ai pourtant adapté le chemin pour trouver perl et pour le cgi-bin comme c'est expliqué). Comme conseillé dans le tuto j'ai consulté les journaux , notamment le fichier /apache/log/error.txt pour mieux comprendre mon erreur, sauf que le tuto ne renvoie vers aucune page où le détail de chaque erreur est expliqué pour en comprendre la source. Bref je sais que j'ai 2 messages : "couldn't create child process: 720005" et "couldn't spawn child process: 720005"
mais à part que maintenant je sais que "to spawn" veut dire "frayer, engendrer", je suis pas beaucoup plus avancé.

  • j'ai eu l'impression que le tuto était plutôt destiné à linux, (notamment à cause des allusions au répertoire /usr/...) donc j'ai redémarré sur ma partition ubuntu, j'ai recherché "apache" dans la doc ubuntu et installé tous les paquets conseillés. Mais là c'est carrément autre chose: on dirait que la version apache2 de ubuntu est une évolution beaucoup plus avancée que la version utilisée pour le tuto: dans le tuto la configuration (pour loadmoudule et pour ScriptAlias) se modifie dans le fichier httpd.conf, alors que pour apache2 ce fichier est vide, et considéré comme complètement obsolète : je cite "httpd.conf ...est conservé vide dans Apache2 pour assurer la rétrocompatibilité"

Donc si j'ai bien compris, le tuto proposé par le site de apache est obsolète vis-à-vis de la dernière version de apache conseillée dans ubuntu.

J'ai bien entendu essayé quand même d'exécuter ce script basique en perl, mais au bout de 2 h toujours rien de correct ( je me souviens plus des réponses, mais ça me semblait pire que sous XP)

  • je suis revenu sur XP et j'ai essayé d'installer la dernière version de apache depuis le site de apache, mais pour cette version je n'ai trouvé que les sources pour Unix.

  • dernière tentative en cours: je suis en train d'installer wamp (dernière version) pour voir si ça se passe mieux que xampp . Mais j'avoue que pour l'instant je rame, et que je n'ai toujours pas réussi à exécuter correctement le moindre script CGI que j'aurais écrit moi-même.

Je viendrai raconter demain la suite de mes malheurs, ou ma réussite ( je parle de faire écrire "Bonjour tout le monde..." en perl, je suis très ambitieux :wink: ) parce que là je sature :drooling_face: .

1re victoire: j'ai enfin réussi à afficher "Bonjour, tout le monde...

J'admets , la concurrence était rude, la pression était importante, j'ai eu peur que toute ma longue préparation pour cette épreuve capitale n'ait servi à rien, ça fait tellement longtemps que j'attendais ce moment... Heu faut que j'arrête de regarder les JO de Londres, je dérape.

Bref, dans le script suivant, proposé par le tuto :
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.";

, j'ai redonné le chemin pour trouver perl, en absolu parce que pour l'instant je sais pas faire mieux:
#!C:\xampplite\perl\bin\perl
print "Content-type: text/html\n\n";
print "Bonjour, tout le monde.";

Bon maintenant je m'attaque à la suite du projet, mais avec une journée passée sur ça, je suis en bonne voie, y'a pas de doute...

A bientôt, bravo à ceux qui ont encore le courage de me lire, et merci à ceux qui prennent sur leur temps pour me répondre...

Maintenant que j'ai réussi à exécuter un script en .pl, je me pose la question: quel est le langage le plus approprié pour mon besoin?

J'ai l'impression que dès qu'on pense "script dans une page html", la solution la plus fréquente est d'écrire en Javascript (en tout cas les tuto que j'ai vus ont tous tendance à ne montrer que des script en javascript).

Mais j'ai cru comprendre que le javascript était plus gourmand en ressources.

Quelqu'un a-t-il un conseil sur le langage de script CGI?

Je rappelle qu'il s'agit d'un script qui fait le lien entre un arduino connecté par usb et une page html, pour gérer quelques ordres simples, et qui est exécuté par le routeur TP link WR703N.

Ma chance, c'est que je ne connais aucun langage, une vraie page vierge... :wink: . Donc pas d'a priori sur un langage.

Pour apache+cgi tout les tuto se base sur un systéme de type linux.
Tu as de la chance d'être tombé sur un tuto utilisant perl comme langage de scripts, si tu était tombé sur le tuto "officiel" du module cgi-bin tu aurais eu droit au script en bash linux ... qui ne fonctionne que sous linux (logique).

Tout ce qui est application serveur tourne en général sous linux.
Par contre une fois ton routeur arrivé tu devras faire attention, la RAM n'est pas énorme il faudra donc limiter son utilisation.

Pour le langage de script je te conseille python (simple et documenté : 3.11.3 Documentation ).
Garde aussi en tête que tu devras compiler une image de openWRT pour ton routeur, ça demande 5Go de disque libre, quelques outils de base et beaucoup de temps libre.
Pour cette étape tu pourras avoir de l'aide vu que barbudor et moi même allons devoir passer par cette étape pour notre projet de domotique :wink:

Salut,

Pour l'image de OpenWRT, j'espérais pouvoir utiliser celle proposée directement sur le site openwrt.org.

D'après les conseils de cette page :
http://wiki.openwrt.org/doc/howto/obtain.firmware
utiliser une image déjà faite est préférable.

Donc j'ai téléchargé :
http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin

Visiblement tu es parti avec barbudor sur une solution où vous recompilez l'image. Tu peux m'expliquer pourquoi?

Je vois deux raisons qui m'obligeraient à créer moi-même une image :

  1. L'image fournie sur le site ne permet pas d'exécuter des scripts, et il faut rajouter un interpréteur (pour le perl ou le python) ?
    ou
  2. En créant moi-même l'image, je peux intégrer directement mon site à l'image et donc je peux me passer de clé usb?

En attendant de recevoir mon routeur, je peux travailler sur l'image alors autant avancer là-dessus et sur la création de mon site.

Merci pour tes conseils.

Edit: Je continue mes recherches, et j'ai découvert plusieurs points vraiment intéressants pour mon projet.

Le plus prometteur me semble Ardugate, qui permet d'agir directement sur les entrées de l'arduino ou d'obtenir l'état des sorties.
Je vais essayer de m'inspirer de ça au maximum.

Ce qui me semble très fort, c'est que la page web fonctionne sans apache, elle appelle des scripts javascript sans qu'apache fonctionne. Or je croyais que apache était nécessaire pour exécuter des scripts CGI.
Quelqu'un peut-il m'expliquer?

Bonne soirée.

xav01:
D'après les conseils de cette page :
Obtaining Firmware [Old OpenWrt Wiki]
utiliser une image déjà faite est préférable.

Oui quand on veut faire un routeur :wink:
Si c'est pour faire un projet domotique les client ftp, dns, firewall, etc ne servent à rien donc autant les virer de l'image pour des choses plus utile :wink:

xav01:
Visiblement tu es parti avec barbudor sur une solution où vous recompilez l'image. Tu peux m'expliquer pourquoi?

Pour moi :

  • pour le plaisir d'avoir un truc fait main
  • pour optimiser mon image suivant mes besoin (cf remarque plus haut)
  • pour ajouter des utilitaires non présent par défaut dont j'ai besoin

xav01:
Je vois deux raisons qui m'obligeraient à créer moi-même une image :

  1. L'image fournie sur le site ne permet pas d'exécuter des scripts, et il faut rajouter un interpréteur (pour le perl ou le python) ?
    ou
  2. En créant moi-même l'image, je peux intégrer directement mon site à l'image et donc je peux me passer de clé usb?
  1. oui et non,
    non parce que tu a la console bash et que tu peut faire tes propres utilitaire en C/C++
    oui si tu veut utiliser un langage de script (paquet "ipython" pour le python, "perl" pour le perl, "ruby" pour le ruby, ... (voir section "programmation language" de l'utilitaire buildroot -> menuconfig)).

  2. oui et c'est même déja le cas pour le site web de configuration de base par exemple

xav01:
Ce qui me semble très fort, c'est que la page web fonctionne sans apache, elle appelle des scripts javascript sans qu'apache fonctionne. Or je croyais que apache était nécessaire pour exécuter des scripts CGI.
Quelqu'un peut-il m'expliquer?

Le logiciel PC de Ardugate est un bête serveur web "fait maison" en réalité, il intercepte les requêtes HTTP émis par le javascript et les interprètes.

Il y a aussi une solution très simple et très bête :

  • Prendre un portable obsolète mais qui fonctionne.
  • Mettre dedans une carte SIM prépayée avec son propre numéro.
  • Le configurer en décrochage automatique.
  • Faire un petit circuit intégrateur que l'on branche à la place de l'oreillette.

En logiciel :

  • Ecrire un petit soft qui décode la fréquence des tonalités de touches (ca doit déja exister je pense un soft DTMF).
  • Lui faire exécuter des actions en fonction des touches appuyé.

JLB

jihelbi:

  • Prendre un portable obsolète mais qui fonctionne.
  • Mettre dedans une carte SIM prépayée avec son propre numéro.
  • Le configurer en décrochage automatique.
  • Faire un petit circuit intégrateur que l'on branche à la place de l'oreillette.

C'est un idée, ou alors utiliser une shield GSM :
http://www.seeedstudio.com/depot/gprs-shield-p-779.html?cPath=132_134

Par contre avec ce systéme :

  • pas d'interface web
  • obligation d'avoir un systéme de gestion des touches / tonalité (un automate téléphonique DIY en gros)

Je ne suis pas sûr que ce soit ce que cherche xav01 ?

jihelbi:
En logiciel :

  • Ecrire un petit soft qui décode la fréquence des tonalités de touches (ca doit déja exister je pense un soft DTMF).
  • Lui faire exécuter des actions en fonction des touches appuyé.

Décoder un flux sonore DTMF n'est pas une chose si simple !

En hardware c'est possible de manière trés simple avec des CI tout prêt (CD22204 par exemple).
En software il faut utiliser l'algorithme dit de "Goertzel" (une transformation de fourrier discrète).
Je travail justement dessus en ce moment et je peut te garantir que bien que l'algorithme soit relativement simple, obtenir un résultat fiable est trés compliqué :wink: