Pages: [1] 2 3   Go Down
Author Topic: Domotique V1.0 [ début du projet "abouti"]  (Read 3878 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 0
Posts: 451
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjours a tous,

Et bien voila après moulte question posé sur le forum, je vient vous présenter mon premier projet a peut prêt bien ficelé  smiley-grin

Il s'agit donc de gérer l’allumage et l'extinction de 2 LED a partir d'une interface web. L'arduino est relier en USB au PC ou tourne un script python.

Le principe est assez "basique" ! quand j'appuis sur un bouton de mon interface web ça écrit une variable dans un fichier .txt Egalement sur mon FTP. Le script python "observe" en permanence ce fichier.txt et envoi les variables a l'arduino qui les transforme en "allumer éteindre led rouge led bleu" !

C'est pas grand chose pour le moment mais comme je découvre tout juste python ( je doit être a 4H de programmation la dessus a tout casser ), l'arduino ( 2 semaines ), le php (depuis cette après midi que je connais ^^) et compagnie c'est pas facile  smiley-sad-blue

Prochaine étape je vais essayer de récupérer les infos d'un capteur de température sur ma page "FTP" ou alors je commence a faire joujou avec des relais et du 220V smiley

Vidéo (iphone+lampe allumé = pas top dsl ^^ ) :


Logged

Mon Blog sur l'environnement Arduino ... Tutos fait par un débutant pour les débutants ^^

http://chicowebsite.free.fr/

Offline Offline
God Member
*****
Karma: 5
Posts: 690
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bravo chicotore

J'aurai sans doute besoin de tes conseils plus tard ,car pour le moment je ne possede pas d'internet shield ni de wifi shield .

j'espere que tu pourras me venir en aide si besoin est  smiley-wink car ton projet est interressant .

@+ William

P.S: en esperant que tu nous fasse un truc géant dans le meme genre .
Logged

The truth is elsewhere !!

Offline Offline
Sr. Member
****
Karma: 0
Posts: 451
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
car pour le moment je ne possede pas d'internet shield ni de wifi shield

je n'en est pas non plus d'ou l'utilisation d'un PC "serveur" ou est relier l'arduino ^^
Logged

Mon Blog sur l'environnement Arduino ... Tutos fait par un débutant pour les débutants ^^

http://chicowebsite.free.fr/

Offline Offline
Sr. Member
****
Karma: 0
Posts: 451
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code python:

Code:
import feedparser
import serial
import time
import urllib



b = 0
r = 0


def recup():
       
               


 
                b1 = urllib.urlopen("http://modelismebychico.free.fr/bleu.txt") ## Récup des valables; 1 fichier par led
                r1 = urllib.urlopen("http://modelismebychico.free.fr/rouge.txt") ## Récup des valables; 1 fichier par led
               

               
                if b1.readline != "":
                        b = b1.readline()
                        if b == "a":
                                ser.write("a")
                                print b

                        if b == "b":
                                ser.write("b")
                                print b

                        r = r1.readline()
                        if r == "c":
                                ser.write("c")
                                print b

                        if r == "d":
                                ser.write("d")
                                print b
               

                recup()
print "ouverture du port"
ser = serial.Serial()
ser.setPort("COM3")
ser.baudrate = 57600
ser.close()
ser.open()
print "port ouvert"
recup()
if (ser.isOpen()):
        recup()


Code Arduino:

Code:
// led wired + to pin 12, resistor to positive +5v

int rouge = 13; // Output connected to digital pin 12
int bleu = 6; // Output connected to digital pin 12
int val; // Value read from the serial port
void setup()
{
 pinMode(rouge, OUTPUT);
 pinMode(bleu, OUTPUT);
 Serial.begin(9600);
 Serial.flush();

}

void loop()
{
 // Read from serial port
 if (Serial.available())
 {
   val = Serial.read();
   Serial.println(val, BYTE);
    digitalWrite(rouge, LOW);
    digitalWrite(bleu, LOW);
   if (val == 97) //
   {
     digitalWrite(rouge, HIGH);
   }
   if (val == 98) //
   {
     digitalWrite(rouge, LOW);
   }
if (val == 99) //
   {
     digitalWrite(bleu, HIGH);
   }
   else if (val == 100) //
   {
     digitalWrite(bleu, LOW);
   }
 }
}


Logged

Mon Blog sur l'environnement Arduino ... Tutos fait par un débutant pour les débutants ^^

http://chicowebsite.free.fr/

Offline Offline
God Member
*****
Karma: 5
Posts: 690
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut

j'ai quelques questions (certainement idiotes ) mais je les pose ,  quels sont les avantages (hors mis le non investissement d'une carte ethernet shield) et les inconvenients de ton systeme ??

Le pilotage (des leds pour le moment) peut-il etre fait à distance (NO AT HOME   smiley-mr-green  d'un PC ou Mac ) ??

et une petite derniere , comment doit-on procéder pour effectuer une page ( ton exemple ) , faut-il des logiciels spécifiques ,un ébergement spéciale par un fournisseur d'accès ??
car PYTHON hors mis le nom ,je ne connais pas du tout , mais je suis curieux . pourquoi ne pas avoir pris Processing ou autre .

@+  et merci
William
Logged

The truth is elsewhere !!

Offline Offline
Sr. Member
****
Karma: 0
Posts: 451
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Quote
quels sont les avantages (hors mis le non investissement d'une carte ethernet shield) et les inconvenients de ton systeme ??

Bah en fait j'ai fait ça car pour le moment je n'est pas vraiment envie d’investir dans un ethernet shield. Mais il faut savoir que même avec un ethernet shield j'ai lu qu'il fallait un PC comme serveur pour stocker les "images" et autres si on fait une interface web un peu poussé car la mémoire de l'ethernet shield est limité  smiley-wink

Quote
Le pilotage (des leds pour le moment) peut-il etre fait à distance (NO AT HOME     d'un PC ou Mac ) ??

Oui c'est bien ça le but ^^ mon interface web est accessible partout dans le monde (waouhh c'est fort internet quand même ^^ ) donc tant que le PC ou est relier l'arduino est allumé je peut gérer mon allumage de partout par le biais de mon netbook, de mon pc fixe, de mon iphone, ipod touch, android mobile .... Tous ce qui se connecte au NET peut gérer les LED a distance !

Quote
et une petite derniere , comment doit-on procéder pour effectuer une page ( ton exemple ) , faut-il des logiciels spécifiques ,un ébergement spéciale par un fournisseur d'accès ??
car PYTHON hors mis le nom ,je ne connais pas du tout , mais je suis curieux . pourquoi ne pas avoir pris Processing ou autre .

Ma page en fait c'est un truc tout moche en HTML et PHP fait a la va vite pour tester le système. Tu peut utiliser Dreamweaver pour créer des pages si tu ne connais pas le HTML, PHP et compagnie ... mais sinon on trouve des exemples un peu partout sur le net. J'ai fait ma page en récupérant des morceaux de code un peu partout, surtout pour la partie PHP pour écrire une variable dans mon fichier.txt

Pour l’hébergement pour le moment j'ai un FTP free. C'est gratuit et ça marche relativement bien mais une fois que j'aurais vraiment commencer le projet je pense heberger mon FTP directement sur le PC serveur ou est relié l'arduino et ou tourne le code PYTHON ! Ça évite d'avoir le .free.fr comme adresse et c'est beaucoup plus flexible pour transférer les fichiers.

A vrai dire PYTHON je vient de découvrir ça il y a même pas 2 semaines. J'avais essayer PROCESSING mais en fait j'ai trouver plus de tuto pour PYTHON sur internet donc je suis resté la dessus mais pour être franc en PYTHON j'y connais quedal ^^

merci +++
Logged

Mon Blog sur l'environnement Arduino ... Tutos fait par un débutant pour les débutants ^^

http://chicowebsite.free.fr/

Offline Offline
God Member
*****
Karma: 5
Posts: 690
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

re-salut
C'est moi qui te remercie  smiley-wink

Car quand j'ai vu ton 1er post (domotique ,Python ) j'ai tilté ,mais j'avoue , quand j'ai vu toutes les lignes de code ,j'ai décroché. ( ce n'est pas un reproche ,mais je me suis dit ,un peu trop complexe pour ma petite tete  smiley-grin )

Pardonne moi ,mais encore quelques questions ( curiosité oblige ) ,
Qu'entends-tu par PC serveur ??

Peut-on faire une petite interface sous Flash (j'ai un peu bossé avec il y a un moment) ,et ensuite prendre la meme procedure ( c'est à dire suivre le cheminement de création de page Web sur le fournisseur d'accès ) ??
Procedure d'ailleur ,que j'ai déjà fait il y a 7-8 ans ,je ne sais meme plus comment faire ,mais pas grave  smiley-cry  .je dis ça car à l'époque c'etait club-internet (très facile ) NOW SFR ,leur interface est trop bordelique (excuse) .

je suppose que la phase la plus délicate est d'envoyer les valeurs et de déclarer les bonnes variables ??

P.S: en tout cas ton projet est génial ,pouvoir déclencher des éléments de chez-soi à distance (internet) c'est géant ,avec quelques CAM en plus  smiley-twist  , etonnant qu'il n'y ai pas eu plus de personne sur ce post ??

@+
William



Logged

The truth is elsewhere !!

Offline Offline
Sr. Member
****
Karma: 0
Posts: 451
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Re,

Tient voila mon code PHP+HTML pour l'interface Web si tu veut  smiley-wink

Elle parait complexe mais en fait si tu regarde bien il y a 4 fois la même chose car il y a 4 bouton ! j'ai mis en rose la partie PHP qui fait que quand tu appuis sur le bouton ça ecrit une variable dans un fichier texte. Ici la variable est "a" dans le fichier "bleu.txt".

Code:
<html>
<body>
<H1 ALIGN=CENTER> Domotique by Chico's </H1>
<br/><H3 ALIGN=CENTER> LED rouge </H3>
[color=pink]<?php
    $fichier
="bleu.txt"// Nom du fichier à modifier

        
if(isset($_POST['boutton1'])) {    
        
//if(is_file($fichier)) unlink($fichier); //si le fichier existe :  suppression du fichier pour le remplacer par le nouveau avec les nouveau éléments
        
$ouverture=fopen("$fichier","w"); // Création du nouveau fichier et ouverture du fichier avec le mode w on ouvre le fichier qu'en écriture et unlink devient inutile car le fichier est vidé automatiquement
        
fwrite($ouverture,"a"); // ecriture
        
fclose($ouverture); // fermeture du fichier
        
echo ' '// Affichage validation
        
}
?>


    <form method="post" action=""> <!-- j'ai modifié action pour qu'il soit compatible peut importe le nom de la page-->
 

    <center><br/><input type="submit" name="boutton1" value="Allumer"><input type="submit" name="boutton2" value="eteindre"></center>
    </form>
<!-- retour au code HTML -->
</body>
</html>[/color]
<html>
<body>
<center><?php
    $fichier
="bleu.txt"// Nom du fichier à modifier

        
if(isset($_POST['boutton2'])) {    
        
//if(is_file($fichier)) unlink($fichier); //si le fichier existe :  suppression du fichier pour le remplacer par le nouveau avec les nouveau éléments
        
$ouverture=fopen("$fichier","w"); // Création du nouveau fichier et ouverture du fichier avec le mode w on ouvre le fichier qu'en écriture et unlink devient inutile car le fichier est vidé automatiquement
        
fwrite($ouverture,"b"); // ecriture
        
fclose($ouverture); // fermeture du fichier
        
echo ' '// Affichage validation
        
}
?>


    <form method="post" action=""> <!-- j'ai modifié action pour qu'il soit compatible peut importe le nom de la page-->
 

    </form>
<!-- retour au code HTML -->
<BODY BGCOLOR="#B5E655">
</body>
</html>
<html>
<body>
<br/><H3 ALIGN=CENTER> LED bleu </H3>
<?php
    $fichier
="rouge.txt"// Nom du fichier à modifier

        
if(isset($_POST['boutton3'])) {    
        
//if(is_file($fichier)) unlink($fichier); //si le fichier existe :  suppression du fichier pour le remplacer par le nouveau avec les nouveau éléments
        
$ouverture=fopen("$fichier","w"); // Création du nouveau fichier et ouverture du fichier avec le mode w on ouvre le fichier qu'en écriture et unlink devient inutile car le fichier est vidé automatiquement
        
fwrite($ouverture,"c"); // ecriture
        
fclose($ouverture); // fermeture du fichier
        
echo ' '// Affichage validation
        
}
?>


    <form method="post" action=""> <!-- j'ai modifié action pour qu'il soit compatible peut importe le nom de la page-->
 

    <center><br/><input type="submit" name="boutton3" value="Allumer"><input type="submit" name="boutton4" value="eteindre"></center>
    </form>
<!-- retour au code HTML -->
</body>
</html>
<html>
<body>
<center><?php
    $fichier
="rouge.txt"// Nom du fichier à modifier

        
if(isset($_POST['boutton4'])) {    
        
//if(is_file($fichier)) unlink($fichier); //si le fichier existe :  suppression du fichier pour le remplacer par le nouveau avec les nouveau éléments
        
$ouverture=fopen("$fichier","w"); // Création du nouveau fichier et ouverture du fichier avec le mode w on ouvre le fichier qu'en écriture et unlink devient inutile car le fichier est vidé automatiquement
        
fwrite($ouverture,"d"); // ecriture
        
fclose($ouverture); // fermeture du fichier
        
echo ' '// Affichage validation
        
}
?>


    <form method="post" action=""> <!-- j'ai modifié action pour qu'il soit compatible peut importe le nom de la page-->
 

    </form>
<!-- retour au code HTML -->
<BODY BGCOLOR="#B5E655">
</body>
</html>

Quote
Qu'entends-tu par PC serveur ??

J'entend par "PC serveur" le PC auquel est connecté en USB la carte arduino et sur lequel tourne le code PYTHON qui analyse les variables . En gros mon "PC serveur" joue le role d'ethernet shield .

Quote
Peut-on faire une petite interface sous Flash (j'ai un peu bossé avec il y a un moment) ,et ensuite prendre la meme procedure ( c'est à dire suivre le cheminement de création de page Web sur le fournisseur d'accès ) ??
Procedure d'ailleur ,que j'ai déjà fait il y a 7-8 ans ,je ne sais meme plus comment faire ,mais pas grave    .je dis ça car à l'époque c'etait club-internet (très facile ) NOW SFR ,leur interface est trop bordelique (excuse) .

En fait je sait pas FLASH je connais pas  smiley-sweat Mais la procédure pour faire une page internet assez rapidement c'est de taper son code dans le bloc note, l'enregistrer en .php et ensuite tu la transfert sur ton FTP . Apres je sait pas si j'ai repondu a ta question car j'ai pas vraiment compris  smiley-roll-blue désolé ^^

Code:
je suppose que la phase la plus délicate est d'envoyer les valeurs et de déclarer les bonnes variables ??
Pour ma part oui car en fait je ne connaissait pas le srcipt PHP pour ecrire des variables dans un fichier.txt mais la je l'est posté donc maintenant c'est bon ^^
Les variables du déclare celle que tu veut. Moi j'ai mis ça
a= allumer led bleu
b= éteindre led bleu
c=allumer led rouge
d= éteindre led rouge

voila merci ++

« Last Edit: March 20, 2011, 02:56:33 pm by chicotore » Logged

Mon Blog sur l'environnement Arduino ... Tutos fait par un débutant pour les débutants ^^

http://chicowebsite.free.fr/

Offline Offline
God Member
*****
Karma: 5
Posts: 690
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ouai pardon , comme ton truc me branche ,j'ai tendance à étaler les questions (tel la mitraillette  smiley-yell )

Ne te prends pas la tete , je vais respirer un grand coup , voir de mon coté ,comment faire pour le FTP , et merci pour tes lignes de code , et si j'ai un gros blème , je te demenderai du secour  smiley-lol

Merci ,sympa.

@+
bonne soirée

William

Logged

The truth is elsewhere !!

Offline Offline
Sr. Member
****
Karma: 0
Posts: 451
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il n'y a pas de souci un forum c'est fait pour partager et discuter  smiley-grin

C'est d’ailleurs nos amis du forum Anglais qui m'ont donné la solution pour le script PYTHON pour infos ^^ Il faut donc pas hésiter a aller voir de leurs coté aussi car ils ont une section bien plus remplis que la notre  smiley-wink

Pour le FTP si tu veut un free comme moi (alors que je suis avec l'IDEO de Bouygues ^^ ) il faut s'inscrire sur leurs site pour l'offre de internet 56K gratuitement ! tu va recevoir un courier avec des identifiant et tu aura un FTP free gratuit smiley-wink

Quote
avec quelques CAM en plus

C'est quoi des CAM ? ^^
« Last Edit: March 20, 2011, 03:02:03 pm by chicotore » Logged

Mon Blog sur l'environnement Arduino ... Tutos fait par un débutant pour les débutants ^^

http://chicowebsite.free.fr/

Offline Offline
God Member
*****
Karma: 5
Posts: 690
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

oui absolument.

CAM (cameras )  smiley-lol

J'ai eu aussi des réponses sur le Forum INTERNATIONAL
Logged

The truth is elsewhere !!

Offline Offline
Sr. Member
****
Karma: 0
Posts: 451
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
CAM (cameras )

ah oui ok j'y été pas  smiley-grin

Je vient d'ailleur de recup une vieille Webcam en plus pour essayer d'avoir un "retour image" sur le ftp  smiley-wink
Logged

Mon Blog sur l'environnement Arduino ... Tutos fait par un débutant pour les débutants ^^

http://chicowebsite.free.fr/

Chulak
Offline Offline
Full Member
***
Karma: 2
Posts: 234
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

chicotore je viens de regarder ton code php .. dit moi c'est pas le fichier réel ?? car niveau html .. disont que c'est un faux ... dans une page afficher tu ne doit avoir qu'un seul <html></html> et body.. pas en avoir 4 ...
Logged

Aimez la Vie, mais preferez la Mort, car seulement celle-ci vous liberera des tenebres de la Vie.

Offline Offline
Sr. Member
****
Karma: 0
Posts: 451
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui bien sur je vais poster un truc qui marche pas ....  smiley-grin fait un copier coller et essaye le dans un navigateur et tu me dira si c'est un faux ou pas  smiley-wink

Non sinon c'est clair que pour le moment il est "crade" avec plein de balise HTML partout mais il fonctionne, si quelqu'un veut le rendre clean il n'y a pas de soucis j'accepte avec plaisir  smiley-wink

EDIT: tient voila le "faux"

http://modelismebychico.free.fr/faux.php

Tu peut vérifier le code source c'est bien le même ....
« Last Edit: March 21, 2011, 07:25:09 am by chicotore » Logged

Mon Blog sur l'environnement Arduino ... Tutos fait par un débutant pour les débutants ^^

http://chicowebsite.free.fr/

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut
Disons que le terme "faux" est mal choisi, en fait il ne respecte pas le langage et ses standards. Le navigateur peut arriver à s'en sortir mais certains pourraient être plus pointilleux et afficher n'importe quoi.
Je vais regarder ton code et te proposer le même résultat avec du code plus propre et plus correct si tu veux smiley-wink

(Ce n'est pas une attaque hein, chacun son domaine de compétences on a tous démarré en faisant des erreurs smiley-wink )

Pour le reste de la discussion, si je peux aider à comprendre un peu le fonctionnement:

Interface web (php + HTML/CSS) ==== modifie ====> Fichiers texte <==== lus par ===== Code python === envoie des ordres à ==> Arduino ===== connectée par USB ====> PC

Il est effectivement possible de faire une chaîne un peu moins compliquée:

L'arduino avec l'Ethernet shield qui va directement lire le fichier texte qui est créé par l'interface Web (PHP ..)

L'interface web peut être hébergée chez un fournisseur (Free ou autre) ou sur le PC où est connectée l'arduino si celle-ci reste en USB
MAIS cela comporte un problème:
Pour que "n'importe quelle machine reliée à internet" puisse y accéder, il faudra ouvrir des ports sur le routeur, donc un accès potentiel à toute la machine s'il y a une faille (et c'est fréquent, notemment quand on débute en code PHP, je débute trop dans ce domaine aussi pour me risquer à cela par exemple)

Sans parler du fait qu'il suffit que l'adresse du PC relié à internet soit connue pour que des gens puissent s'amuser avec tes boutons et faire n'importe quoi (tant que ce sont des leds c'est vraiment pas grave, mais si tu mets autre chose .. ) il faudrait au moins mettre un login/mot de passe, mais ça n'est pas infaillible

Je conseillerais deux solutions:
Un NAS: ils ont souvent un hébergement web intégré disponible, et fait pour héberger des sites (HTML/CSS et PHP), ils sont sécurisés pour que personne n'aille trifouiller autre chose et sont assez simples à mettre en œuvre (il faudra aussi ouvrir l'accès sur le routeur, mais seulement au NAS qui est plus apte à gérer cela)
Ou un hébergeur extérieur, donc rester chez Free ou en prendre un autre
Logged

Pages: [1] 2 3   Go Up
Jump to: