Un autre projet de domotique :)

Bonjour,

Je viens pour vous présenter mon projet, déjà bien avancé mais loin d'être terminé.

Pour le moment j'ai un Arduino Mega+ethernet shield qui fait tout : régulation du chauffage, lien avec le serveur web, commandes RF.

Pour la partie entrées j'ai

  • une sonde de température LM35 montée avec un AOP pour augmenter la précision
  • une LDR, qui fonctionne mais je ne l'utilise plus
  • une horloge temps réelle

Les actionneurs

  • Relais 300W
  • Prises commandés par RF 433Mhz, fonctionnant avec le protocole HomeEasy, 2 prises pour les chauffage, 1 pour une lampe comme ça je ne joue pas avec le 220V
  • Une LED, faut bien jouer quand même :stuck_out_tongue:

Pour la partie web

  • Un serveur PHP/MySQL qui stocke les données et gère l'IHM
  • IHM en jQuery mobile (Javascript/Ajax) qui permet d'adapter le site aux PC comme aux téléphones
  • L'Arduino envoie régulièrement les données sur le serveur web
  • Les commandes saisies sur le téléphone sont envoyées à l'Arduino
  • La libraire de Google jflot pour afficher les graphes
  • Envoi d'emails lors du reset de l'Arduino ou d'alarmes de températures

Voilà pour l'instant ça tourne bien depuis 2 semaines, mais ça manque de "dynamisme", je ne peux pas changer les plages horaires via l'IHM par exemple.

Pour le futur je voudrais rajouter :
Une sonde de température dans la chambre
Un capteur téléinfo EDF pour vérifier que le chauffage commute bien quand je lui demande
Allumage automatique des lampes quand je suis présent dans la pièce
Contrôle du système son via IR
Souder ma maquette qui est sur une plaque à trous et la mettre dans une jolie boite
Séparer le serveur web du reste

On s'y prend vite à utiliser l'Arduino pour tout et n'importe quoi dès qu'on a un peu de temps libre :slight_smile:
Voilà voilà, comme je l'ai déjà dit à certains par mails je ne vais pas mettre mon code en ligne tout de suite car c'est assez incompréhensible mais ça viendra. En attendant je peux répondre à vos question, mais en général yen a plus :roll_eyes:

Des captures de l'interface

Et les prises qui vont pas trop mal chez moi

salut,

alors pour la téléinfo je te passe quelque lien utile tu farouilleras:

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1267289555/0

http://bernard.lefrancois.free.fr/del1.htm

bon courrage.

Moi je dois remonter le mien dés que je reçois mes composants
ça donner ça Thermostat+ Téléinformation ERDF - YouTube

Merci pour les liens !

En fait si je ne l'ai pas encore fait c'est que je n'ai pas encore tout reçu et… je manque de temps :slight_smile:

Du coup je vois que sur le site de bernard lefrancois a mis un trigger de schmitt… c'est une bonne idée ça !

Bonjour,

Ton projet domotique m'intéresse particulièrement car il est correspond à ce que j'envisage de faire. Toutefois mon objectif est nettement moins ambitieux que le tien et surtout mes travaux sont nettement moins avancés...
Tu trouveras ci-dessous une description rapide de ce que je compte faire ainsi quelques questions sur la mise en oeuvre.

En quelques lignes, voilà ce que je compte faire :

  • Faire l'acquisition des trames téléinfo de mon compteur EDF par un système Arduino composé de :
  • Module principal Arduino UNO
  • Teleinfo Shield (cartelectronic - Cartelectronic)
  • Ethernet Shield Arduino
  • Transmettre régulièrement ces infos à une base de données MySQL hébergée par un NAS Synology DS411J connecté à mon réseau local
  • Consulter ces données à distance gràce un serveur WEB hébergé sur mon NAS synology. Cette consultation se fera en appelant des pages PHP.

Etat d'avancement :

  • J'ai créée mon site WEB sur le NAS (et je peux y accéder à distance)
  • J'ai créée ma base de données MySQL sur le NAS
  • Je viens juste de commander les 3 modules Arduino décrits ci-dessus !!!

Questions :

  1. Dans ton cas et du côté Arduino, as-tu configuré l'Arduino en "client" ou en "serveur" ?
    Je compte pour ma part le programmer en client, mais je ne trouve pas grand chose sur le WEB.
    Si tu as des liens ou (mieux) des exemples de code, je suis intéressé.
  2. Ton appli qui tourne sur Arduino s'adresse et envoie ses données à la base MySQL directement? ou via PHP ?
    Là encore, si tu as des liens ou des conseils, je suis très intéressé.

Merci de ton aide.

PS : comme tu l'auras remarqué, je ne suis pas un habitué des "Forums" et c'est peu dire.
C'est en effet mon premier "post" de toute ma vie !!!
Alors merci d'être indulgent sur la forme de ce message...

@nocolo : regarde celui là : Liaison téléinfo : le compteur électrique on the web - KubuntuBlog

Oliv4945:
une sonde de température LM35 montée avec un AOP pour augmenter la précision

Le schéma et la partie code .pde m'intéressent... as-tu la possibilité de m'envoyer des docs?

Pour la partie web
Un serveur PHP/MySQL qui stocke les données et gère l'IHM

Je souhaite également sauvegarder mes données de températures pour pouvoir faire des graphiques et les consultées directement en ligne. Aurais tu des exemples commentés pour la partie passage de données depuis un ArduinoUno équipé avec un shield Ethernet vers une base de données mysql?

Je n'arrive pas à comprendre comment on fait pour passer de l'arduino au php puis en mysql?

Merci,
John

@bluemax2001 : je connaissais ce lien mais merci quand même!
Malheureusement et dans ce lien, le module Arduino est configuré en serveur WEB...
Ce n'est pas mon besoin.

Je souhaite que le module Arduino soit configuré en client d'un serveur WEB et/ou MySQL hébergé par un NAS.
C'est en cela que la solution d'Oliv4945 m'intéresse (si je l'ai bien comprise... Ce qui n'est pas sûr!!!).

Il y a bien ce lien http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1292593338/all.
Mais c'est fumeux et ça n'a pas l'air de marcher...

@bluemax2001 : concernant le lien indiqué, ma remarque"le module Arduino est configuré en serveur WEB" est totalement fausse.
En fait dans le lien indiqué, le module Arduino dialogue en USB avec un PC qui est configuré en serveur WEB.
On arrive toutefois à la même conclusion : ce n'est pas mon besoin...

Merci quand même !

@bluemax2001 : j'ai été un peu vite et finalement j'ai dit beaucoup de bétises... Toutes mes excuses.
Je vais le relire attentivement...
Merci.

Ok, sinon il me semble que cela devrait vous aider :
http://www.stantor.com/

Bonjour,

Je n'ai pas beaucoup de temps pour répondre ce soir, mais je donnerais des exemples en début de semaine :wink:

Enfin pour le moment:

Combien coûte ton shield ? Car c'est dommage de le commander alors qu'un optocoupleur et 2 résistances suffisent.

Pour le mode de fonctionnement, l'Arduino est client, appelle une page php en passant les valeurs à enregistrer dans l'adresse. C'est cette page PHP qui enregistre la trame SQL. Une recherche rapide et tu trouves ton bonheur, sinon je te montre lundi :wink:

Tout d'abord, merci pour ta réponse et je vais commencer par regarder les liens pointés par ta proposition de "recherche rapide".

A dire vrai, mon premier soucis est de bien m'assurer que je ne fais pas fausse route. Car les recherches internet donnent souvent beaucoup de pistes possibles et il n'est pas toujours évident de discerner quelle route est la plus simple pour le besoin considéré.
D'où mes questions initiales.
Et si en plus je peux récupérer des bouts de code directement exploitables, ce serait génial !
Comme j'ai l'impression que ton application correspond exactement à ce que je cherche, je me suis dit "Youpi", je vais gagner du temps !

Pour te donner une idée d'où je pars, il faut savoir que je ne connaissais rien à HTML, CSS, PHP, MySQL il y a 15 jours... Avec l'aide du "site du zéro" (un grand bravo au passage pour les qualités pédagogiques de ce site), j'ai pu (un peu) combler mes lacunes abyssales !
Je ne connais pas non plus les modules Arduino (mais je crois deviner assez bien ce qu'on peut faire avec...).

Avec une telle base de départ, je préfère partir sur des exemples correspondant d'assez prêt à mon besoin, plutôt que de me risquer à adapter des exemples qui peuvent apparaître explicites à un expert mais pas triviaux à des "zéros" comme moi...

Après ce bavardage d'hiver qui a dû t'apparaître bien long, voici la réponse à ta question :
Prix du téléinfo Shield = 40€ + 5,60€ frais de transport.
C'est vrai que c'est beaucoup plus cher que la solution avec optocoupleur (que je compte tester aussi avec le kit Workshop).
Mais je suis intéressé par la datation et la sauvegarde SD dans le cadre d'un autre besoin (bâtiment sans accès internet filaire ni WIFI).

Encore merci de l'attention portée à mon cas!
Et bon WE à toi.

Donc, un exemple de connexion à un serveur (appel d’une page PHP en tant que client)

if ( client_OVH.connect() ) {
  client_OVH.print( "GET /adresse_sur_le_serveur/page.php?sensorID=" );
  client_OVH.print( PIN_TEMPERATURE_TEST );
  client_OVH.print( "&value=" );
  client_OVH.print( temperature_test.get() );
  client_OVH.println( " HTTP/1.0" );
  client_OVH.println( "Host: IP_Du_Serveur" );
  client_OVH.println();
  client_OVH.stop();
} else {
  Serial.println( "Not connected - temperature test" );
  client_OVH.stop();
}

Et pour le code de la page PHP que l’on appelle, qui se charge d’enregistrer les valeurs dans la BDD

<?php
	
	// SQL parameters
	$SQL_host = '';
	$SQL_port = '';
	$SQL_db = '';
	$SQL_user = '';
	$SQL_passwd = '';
	
	
	if ( isset($_GET['sensorID']) && isset($_GET['value']) ) {
		
                // Connexion à la BDD
		try {
			$SQL_con = new PDO('mysql:host='.$SQL_host.';port='.$SQL_port.';dbname='.$SQL_db, $SQL_user, $SQL_passwd);
		} catch(Exception $e) {
	        echo 'Erreur : '.$e->getMessage().'
';
	        echo 'N° : '.$e->getCode();
		}
		
                // Construction de la requete
		$SQL_table = 'dom_Temp';
		$request = "INSERT INTO ".$SQL_table." VALUES ( \"".$_GET['sensorID']."\", now(), \"".$_GET['value']."\" );";
		// echo $request;

                // Execution de la requête
		try {
			$SQL_con->exec( $request );
		} catch(Exception $e) {
			echo 'Erreur : '.$e->getMessage().'
';
	        echo 'N° : '.$e->getCode();
		}
	}
	
?>

nocolo:
Et si en plus je peux récupérer des bouts de code directement exploitables, ce serait génial !
Comme j’ai l’impression que ton application correspond exactement à ce que je cherche, je me suis dit “Youpi”, je vais gagner du temps !

Pour te donner une idée d’où je pars, il faut savoir que je ne connaissais rien à HTML, CSS, PHP, MySQL il y a 15 jours… Avec l’aide du “site du zéro” (un grand bravo au passage pour les qualités pédagogiques de ce site), j’ai pu (un peu) combler mes lacunes abyssales !
Je ne connais pas non plus les modules Arduino (mais je crois deviner assez bien ce qu’on peut faire avec…).

C’est vrai que le site du zero est super bien, j’y vais souvent aussi :wink: Par contre ton raisonnement n’est à mon avis pas le bon, assembler des pièces de puzzle ne se fait pas facilement en programmation, il vaut mieux comprendre ces pièces pour les assembler…

john_lenfr:

Oliv4945:
une sonde de température LM35 montée avec un AOP pour augmenter la précision

Le schéma et la partie code .pde m’intéressent… as-tu la possibilité de m’envoyer des docs?

Je n’ai pas de schéma sous la main, mais il s’agit d’un simple ampliop monté en amplificateur non inverseur. Pour le code je divise la valeur lue par le gain apporté par l’ampli

Si je suis pas clair n’hésitez pas :wink:

Oliv4945:
Si je suis pas clair n'hésitez pas :wink:

Cool, merci bien. Je vais potasser ça ce week-end...

@OLIV4945 : Durant le WE, j'ai bien avancé (avec les recherches internet) et bien que n'ayant pas encore mes modules Arduino, j'ai codé la réception des trames Teleinfo et l'envoi des données vers une page PHP. Je ne peux évidemment pas vérifier si ça marche, mais à la lecture des bouts de code que tu m'as envoyés, je me dis que je suis sur la bonne voie !
Je préfère ne rien envoyer pour l'instant, mais lorsque je l'aurai testé et si ça t'intéresse je pourrais t'envoyer ce que j'ai développé pour la réception téléinfo. Encore merci pour ton aide.

Remarque : Je suis trop curieux pour me contenter d'assembler des briques sans en comprendre le contenu. Mais pour commencer à développer une brique, il est plus simple (quand on débute) de partir d'une brique existante et bien aboutie que de partir de zéro. D'où ma démarche.

Bonjour tout le monde :slight_smile:

Vous semblez avoir un sacré gros projet ! Félicitation en tous cas :wink:
Je suis actuellement aussi sur un projet de domotique avec page web et tout ce qui va avec, cependant il me semblait que l'Arduino ne pouvait pas comprendre le PHP ...

Pouvez vous nous donnez un peu plus d'info sur le dialogue html/php/sql pour que les petits nouveaux se lancent un peu dedans aussi :slight_smile:

Amicalement,
Trigger

Je me permet de faire un petit up sur ce sujet qui me semble fort intéressant :=)

Salut Trigger !
Je suis souvent absent le weekend :wink:

Donc pour le php effectivement le code PHP ne tourne pas sur l'Arduino, mais on peut appeler des adresses URL vers un serveur, qui lui peut être compatible PHP/CGI/perl ou qu'importe. La manière la plus simple est de faire passer toutes les infos dans les URL.

Dans mes exemples j'appelle des URL (Serveur vers Arduino) où j'ai volontairement gardé la syntaxe PHP par facilité de compréhesion.
Dans le sens Arduino->Serveur là c'est un serveur PHP donc je suis obligé d'utiliser la syntaxe PHP…

Voilà je ne sais pas si j'ai bien répondu à ta question ? :stuck_out_tongue:

Salut Oliv4945 :=)

Merci pour ta réponse, je connais pas vraiment tout ce qui tourne autour des serveurs :s Du coup je bricole (grand merci au site du zéro !) le html ^^
Comme tu le précises je fais pas passer de même toutes les infos par l'url cependant je ne sais pas du tout par quoi commencer pour ce qui est de la partie serveur ...

Aurais tu une petite piste ou autre pour me lancer dedans car en effet je trouve vraiment vilain mon interface ^^

Amicalement,
trigger

Je ne comprends pas vraiment ce que tu cherches à faire… qu'à tu fais ? Où veux tu aller ?