Go Down

Topic: Domotique V1.0 [ début du projet "abouti"] (Read 4083 times) previous topic - next topic

chicotore

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é  :D

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 :)

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

http://www.youtube.com/watch?v=3fUonrZrxIc
Mon Blog sur l'environnement Arduino ... Tutos fait par un débutant pour les débutants ^^

http://chicowebsite.free.fr/

AlienArea51

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  ;) car ton projet est interressant .

@+ William

P.S: en esperant que tu nous fasse un truc géant dans le meme genre .
The truth is elsewhere !!

chicotore

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 ^^
Mon Blog sur l'environnement Arduino ... Tutos fait par un débutant pour les débutants ^^

http://chicowebsite.free.fr/

chicotore

Code python:

Code: [Select]
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: [Select]
// 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);
   }
}
}



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

http://chicowebsite.free.fr/

AlienArea51

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
The truth is elsewhere !!

chicotore

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é  ;)

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 +++
Mon Blog sur l'environnement Arduino ... Tutos fait par un débutant pour les débutants ^^

http://chicowebsite.free.fr/

AlienArea51

re-salut
C'est moi qui te remercie  ;)

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  :D )

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  =(  .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  ]:D  , etonnant qu'il n'y ai pas eu plus de personne sur ce post ??

@+
William



The truth is elsewhere !!

chicotore

#7
Mar 20, 2011, 08:39 pm Last Edit: Mar 20, 2011, 08:56 pm by chicotore Reason: 1
Re,

Tient voila mon code PHP+HTML pour l'interface Web si tu veut  ;)

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: [Select]
<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: [Select]
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 ++

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

http://chicowebsite.free.fr/

AlienArea51

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  XD

Merci ,sympa.

@+
bonne soirée

William

The truth is elsewhere !!

chicotore

#9
Mar 20, 2011, 08:55 pm Last Edit: Mar 20, 2011, 09:02 pm by chicotore Reason: 1
Il n'y a pas de souci un forum c'est fait pour partager et discuter  :D

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  ;)

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 ;)

Quote
avec quelques CAM en plus


C'est quoi des CAM ? ^^
Mon Blog sur l'environnement Arduino ... Tutos fait par un débutant pour les débutants ^^

http://chicowebsite.free.fr/

AlienArea51

oui absolument.

CAM (cameras )  XD

J'ai eu aussi des réponses sur le Forum INTERNATIONAL
The truth is elsewhere !!

chicotore

Quote
CAM (cameras )


ah oui ok j'y été pas  :D

Je vient d'ailleur de recup une vieille Webcam en plus pour essayer d'avoir un "retour image" sur le ftp  ;)
Mon Blog sur l'environnement Arduino ... Tutos fait par un débutant pour les débutants ^^

http://chicowebsite.free.fr/

Tealcoune

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 ...
Aimez la Vie, mais preferez la Mort, car seulement celle-ci vous liberera des tenebres de la Vie.

chicotore

#13
Mar 21, 2011, 01:21 pm Last Edit: Mar 21, 2011, 01:25 pm by chicotore Reason: 1
Oui bien sur je vais poster un truc qui marche pas ....  :D fait un copier coller et essaye le dans un navigateur et tu me dira si c'est un faux ou pas  ;)

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  ;)

EDIT: tient voila le "faux"

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

Tu peut vérifier le code source c'est bien le même ....
Mon Blog sur l'environnement Arduino ... Tutos fait par un débutant pour les débutants ^^

http://chicowebsite.free.fr/

Epy

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 ;)

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

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

Go Up