Arduino Forum

International => Français => Topic started by: Skuzmitoo on Nov 27, 2011, 11:05 am

Title: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Nov 27, 2011, 11:05 am
Tout d'abord bonjour a tous. J'ai 27 ans, j'ai fait des études en informatique industrielle mais j'ai changé de voie. J'ai donc de bonne bases en C,C++, HTML, PHP.

Je vous sollicite car je souhaiterais réalisé un projet domotique afin de pouvoir réaliser plusieurs choses au sein d'une pièce de ma maison à savoir :

- Mesure de la température et sauvegarde cyclique des données pour exploitation( par la suite peu être une gestion du chauffage par pièce )
- Mesure de la luminosité de la pièce  et sauvegarde cyclique des données pour exploitation
- Détection de présence dans la pièce
- Allumage commandé de la lumière tout en gardant un contrôle manuel
- Prises électriques commandées tout en gardant un contrôle manuel
- Mesure de la consommation électrique d'une pièce  et sauvegarde cyclique des données pour exploitation ( par la suite la mesure s'effectuera pour toute les pièces )
- Possibilité de créer des scénarios et de simuler une présence en cas d'absence prolongée

Les informations de l'arduino seront échangés avec un serveur web qui permettra de lire les valeurs et d'envoyer les ordres a l'arduino.
Je souhaite que le serveur web ne soit pas programmer dans un langage "exotique" car je veut qu'il soit interpréter par ma freebox révolution afin de pouvoir me servir de ma télé comme centre de contrôle principal ou encore par un téléphone portable avec un accès internet de plus je souhaite que chacun puisse profiter du projet afin de réaliser quelque chose de similaire.

Je vais donc commencer par ma première question de ce projet :

De quoi ais-je besoin ?
    Quel arduino ? ( "arduino ethernet" ou "arduino + un shield ethernet" et pourquoi ?)
    Quel capteur de température ? ( un capteur pas cher, facile a mettre en oeuvre avec une précision de 0,1°C )
    Quel capteur de présence ? ( un capteur pas cher, facile a mettre en oeuvre )
    Quel capteur de luminosité ? ( un capteur pas cher, facile a mettre en oeuvre )
    Quel capteur pour la consommation électrique ? ( un capteur pas cher, facile a mettre en oeuvre )
    Quel type de relais commandé ? ( un module en kit du commerce, un montage électronique)

Merci d'avance pour vos réponses.


Title: Re: Projet - Gestion domotique et webserver
Post by: osaka on Nov 27, 2011, 01:46 pm
Bonjour,
J'avais une fois rassemblé quelques postes concernant la domotique, ça pourra peut être t'aiguiller un peux pour la partie arduino-web et domotique.

http://arduino.cc/forum/index.php/topic,75687.msg571513.html#msg571513

sur mon club-elec

http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.ArduinoInitiationBP
http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.ArduinoInitiationCommandePuissance
http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.ArduinoExpertCan
http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.MaterielInterfaceONOFFSingleRelaisDFRobot
http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.MATERIELCapteurOnOffIRDetecteurMouvementSparkfun
http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.MATERIELCapteurIRGrayScaleSensorDFRobot

.
.
.

Title: Re: Projet - Gestion domotique et webserver
Post by: 68tjs on Nov 27, 2011, 01:50 pm
Répondre à tes questions c'est faisable, répondre efficacement est plus difficile.

Pour commencer as tu commencé a te documenter ? Il y a deux sources à consulter en priorité : ici même le guide Arduino qui renvoie sur des nombreux articles et sites intéressants et le playground Arduino .
Une fois ce travail préalable effectué tu sera en mesure de poser des questions beaucoup moins générales et il sera plus facile de répondre efficacement.

J'ai une remarque sur tes besoins en capteurs : pas chers, facile à mettre en oeuvre et précis. Ma traduction amusée : le beurre, l'argent du beurre et le sourire de la crémière. :smiley-mr-green:

Regardes bien tes besoins par exemple capteur de température  précis à 0,1 °C : est-ce utile ?
Et que veux dire précis ?  
--> valeur exacte en absolu --> à part pour un centre officiel de météorologie quel intérêt ?
--> valeur reproductible on dit aussi "fidèle" --> ce qui veut dire : mis dans les mêmes conditions de température, même à des semaines d'écart, le capteur donnera la même indication, cette indication pouvant par ailleurs être décalée de 0,3 ou 0,5°C en absolu. Cette dernière conception est beaucoup plus utile.
Tiens compte aussi que la mise en oeuvre d'un capteur, quel qu'il soit, est tout aussi importante que ses performances intrinsèques.

Autre point :
Tout à fait d'accord avec toi pour commencer petit avec une seule pièce et étendre à la maison tout entière par la suite.
Néanmoins pour éviter de te retrouver dans une impasse gardes toujours un oeil sur le nombre d'entrées et de sorties nécessaire.
Dès fois un peu de réflexion au départ du projet permet de diminuer le nombre d'E/S nécessaires.
Exemple personnel : j'ai trois afficheurs à commander soit 3*7=21 segments.
solution 1 : utiliser 21 broches --> c'est idiot.
solution 2 : utiliser des décodeur BCD/7 segments ce qui revient à utiliser 12 broches -> c'est mieux mais pas encore optimisé.
solution 3 : utiliser trois registres à décalage (8bits) chaînés ce qui revient à utiliser 2 broches, Horloge et Data, et une troisième facultative pour le latch  -> 3 c'est mieux que 21, cela demande juste un peux plus de complication logicielle.
C'est bien sur un exemple très basique mais c'est ce genre de réflexion à mener au début d'un projet avant de foncer bille en tête.

Gardes aussi un oeil sur les broches utilisées par les extensions ('"shields"). Jouer au Lego en empilant les "shields" c'est pratique mais du coup  c'est souvent mal documenté et il faut lire les bibliothèques associées pour  connaître le nombre et les références des broches utilisées.
Title: Re: Projet - Gestion domotique et webserver
Post by: Skuzmitoo on Nov 27, 2011, 02:04 pm
Je me suis déjà beaucoup documenté sur l'arduino.

Ma première question pour travailler avec l'ethernet : arduino ethernet ou arduino + ethernet shield, il y a t'il une différence importante ?

Pour le capteur cela sera la définition que tu appels "fidèle"
Pour le capteur pas chers, facile à mettre en oeuvre et précis j'entends par la un capteur qui dispose d'une librairie pour arduino (facilité de mise en oeuvre), pas chers (bon rapport qualité prix)

Je veux d'abord bien me focaliser sur une pièce et après pour étendre a la maison : un arduino par pièce (pas très économique) ou multiplexage (plus compliqué a mettre en œuvre et encore mais beaucoup plus rentable)

Donc pour ceux qui ont déjà travaillé avec ces différents types de capteurs lesquels avez vous utilisés et pourquoi ?
Title: Re: Projet - Gestion domotique et webserver
Post by: Artouste on Nov 27, 2011, 02:09 pm

...
Je vais donc commencer par ma première question de ce projet :

De quoi ais-je besoin ?
     Quel arduino ? ( "arduino ethernet" ou "arduino + un shield ethernet" et pourquoi ?)
     Quel capteur de température ? ( un capteur pas cher, facile a mettre en oeuvre avec une précision de 0,1°C )
     Quel capteur de présence ? ( un capteur pas cher, facile a mettre en oeuvre )
     Quel capteur de luminosité ? ( un capteur pas cher, facile a mettre en oeuvre )
     Quel capteur pour la consommation électrique ? ( un capteur pas cher, facile a mettre en oeuvre )
     Quel type de relais commandé ? ( un module en kit du commerce, un montage électronique)

Merci d'avance pour vos réponses.



Bonjour
Il y a pas mal de post sur ce sujet
en ce qui me concerne je vais me limiter pour l'instant aux capteurs

     Quel capteur de température ? ( un capteur pas cher, facile a mettre en oeuvre avec une précision de 0,1°C )
     des capteurs T° pas chers et facile à mettre en œuvre avec une precision de 0.1 °C c'est moins évident qu'il n'y parait  :smiley-mr-green:
     avec une résolution de 0.1°C c'est déjà plus simple (LM35 en ana , ds18B20 en num par exemple)

     Quel capteur de présence ? ( un capteur pas cher, facile a mettre en oeuvre )
     un capteur IR qui sort en contact sec ou en collecteur ouvert (exemples)
http://www.electronique-diffusion.fr/product_info.php?products_id=61490
http://www.selectronic.fr/module-de-detection-de-presence.html

     Quel capteur de luminosité ? ( un capteur pas cher, facile a mettre en oeuvre )
     une bonne vieille LDR à 0,20 €  XD  

     Quel capteur pour la consommation électrique ? ( un capteur pas cher, facile a mettre en oeuvre )
     C'est peut être  le capteur le plus "compliqué" à dimensionner, simple shunt et redressement, ou couplage , a rediscuter plus tard

   
Title: Re: Projet - Gestion domotique et webserver
Post by: Skuzmitoo on Nov 27, 2011, 02:22 pm
Quote
LM35 en ana , ds18B20 en num


Ok, cela sera donc le LM35 pour la facilité de mise en oeuvre (utilisation du can de l'ATM et le prix  XD) je verrais quand tout sera fonctionel pour les ds18B20 en One Wire.
Title: Re: Projet - Gestion domotique et webserver
Post by: osaka on Nov 27, 2011, 02:27 pm
Pour arduino ethernet ou arduino+ ethernet shield c'est kif kif le premier est le deuxième tout intégré, peut être prendre les deux séparé pour commencé tout dépend des tes moyens plutôt.
Pour ma part je suis quand même fortement déçus du shield ethernet, en temps que serveur de sockets ou comme client web ça va mais comme serveur web on est vite fortement limité (4 connexion simultanée, mémoire, ...).
J'ai déployé ma propre solution mais ce n'est toujours pas vraiment satisfaisant à mon gout http://arduino.cc/forum/index.php/topic,72035.0.html, trop de dépendance et surtout les websockets qui n'arrête pas de bouger encore niveau standardisation.
Pour ma part je préconise plutôt serveur web normal genre nas ou plugcomputer ou autre et communication série par exemple avec l'arduino pour les commandes.
Concernant les limite E/S je préconise également pour ma part la multiplication d'arduino, non pas par pièce mais par traitement, capteur (températur, luminosité, gestion de l'énergie (lumière, gradateur, prises, volet, ...), alarme, ...,  chacun sa propre fonction et interconnecté via bus http://fr.wikipedia.org/wiki/Bus_de_terrain avec protocole maison, similaire aux automates programmable.
Title: Re: Projet - Gestion domotique et webserver
Post by: Skuzmitoo on Nov 27, 2011, 02:32 pm
merci pour ce complément d'information, je comptais l'utiliser en client web pour envoyer et recevoir les données car en effet le serveur web est limité d'une part par ce que tu viens de cité et d'autre part par la mémoire disponible. En effet j'envisageais un multiplexage par type de capteur.
Title: Re: Projet - Gestion domotique et webserver
Post by: Oliv4945 on Nov 27, 2011, 03:35 pm
Bonjour, j'ai plus ou moins le même projet, donc je peux essayer de te donner mon point de vue.

Comme le dis 68js, mieux vaut commencer petit et rajouter brique par brique :)

Pour le matériel j'ai pris un 1280 il y a un petit moment comme ça j'ai pas mal d'IO et de place RAM/ROM pour développer mes projets et je les passe sur plus petit si possible une fois terminés. Du coup c'est forcément un shield pour l'ethernet.

Pour la mesure de température j'ai un LM35 avec un AOP pour augmenter la résolution. Mais bon j'ai pris ce que j'avais comme AOP du coup j'ai un gros offset. Si c'était à refaire je pense que je prendrais directement des 18B20 ça ne coute pas forcément plus chère et moins d'aspects CEM.

Comme dit pour la luminosité un LDR ça va très bien, pour la consommation je vais mettre un montage téléinfo sur le compteur EDF, juste pour vérifier que mon chauffage électrique commute bien quand je lui demande. Si tu as besoin de plus précis peut-être regarder du coté des pinces ampèremétriques il y a eu un sujet dessus il n'y a pas bien longtemps

Pour la partie commande j'ai des relais 300W, mais pour tout ce qui est chauffage j'ai utilisé des modules domotique RF avec le protocole HomeEasy qui est connu, marque chacon ou DI-O. ça permet de ne pas jouer avec la puissance et au final un pack 3 prises+télécommande=25€. Pour le moment j'ai soudé l'Arduino sur la télécommande mais je devrais recevoir un émetteur pour pouvoir garder la télécommande en secours.

Pour la partie interface tout est sur un serveur web en PHP/mysql/javascript mais comme le dit Osaka un petit serveur en local avec une connexion série c'est ce qu'il a de mieux, surtout quand la freebox fait des siennes… J'attends les Rasbery PI (http://www.raspberrypi.org/) :)
Title: Re: Projet - Gestion domotique et webserver
Post by: Brisebee on Nov 27, 2011, 07:05 pm
Bonjour,

Je profite de ce sujet de forum pour vous parler de mon projet, qui globalement ressemble à celui projeté par Skuzmitoo.
J'ai conçu et réalisé un système domotique, il y a déjà pas mal de temps (1994), vous trouverez un bref descriptif ici :http://g.sinnig.free.fr/spip.php?article3 (http://g.sinnig.free.fr/spip.php?article3)
J'ai prévu de remplacer ce système par un dispositif à base d'arduino. Ce qui aurait pour avantage de pouvoir, dans un premier temps, pouvoir utiliser n'importe quel PC (ou tablette) connecté sur mon réseau local, comme interface, et donc ne plus utiliser un PC dédié, puis dans un second temps directement depuis le net.
J'ai commandé une Mega 2560, un ethernet shield et un module clock RTC DS1307. Je ne devrai pas tarder à recevoir tout cela.
Je vous donnerai des infos sur l'avancement de mon projet.
Si quelqu'un est intéressé par ce type de projets, ce serait sympa et peut-être plus productif de travailler d'une manière collaborative sur ces projets.
Bien à vous
Title: Re: Projet - Gestion domotique et webserver
Post by: osaka on Nov 27, 2011, 09:12 pm
Impressionnant pour un projet initié en 1994  :smiley-eek:, très en avance sur l'avènement (pas encore) de la domotique.
Pour la collaboration un sujet avait déjà fait débat.
http://arduino.cc/forum/index.php/topic,63983.0.html
Les problèmes le plus souvent rencontré c'est que chacun à ses propres objectifs, besoins,sa propre vision de la manière de procédé.
Par exemple ma vision des choses, c'est plusieurs arduino interconnecté entre eux (bus de terrain, j'ésite encore entre le rs232 simplement et le rs485) et chacun auraient son propre travail, ses propre responsabilités, pas question d'utilisé un seul arduino pour de multiple usages (capteurs, lumières, volets, arosage, ...) , enfin le principe de l'automate genre knx, wago, ... ,mais avec l'arduino.
Pas question non plus d'entendre parlé d'ordinateur allumé 24/24 pour gérer tout ça, la seule chose acceptée ce serait quelque chose d’extrêmement minimaliste (plugcomputer, rasbery, ...) pour l'interfaçage web mais c'est secondaire par rapport au système principal, pas question non plus de multiplier les technologies genre xpl(pc), zibase,zwave, x10, plcbus, ... comme 99% ici (http://www.touteladomotique.com/forum/) (pourtant c'est là que j'ai commencé mes fouilles et découvert l'arduino).
Donc j'ai beaucoup d'impératif et d'exigence c'est pourquoi je n'ai pas accroché à la plupart des projets vus ici, par exemple celui de gromain (http://arduino.cc/forum/index.php/topic,62475.msg452744.html#msg452744) est celui qui me paraissait le plus abouti, mais je n'ai pas du tout aimé la partie xpl (multiplication des technologies) et domogic sur pc (que je ne veux pas).
Faut dire aussi que je suis têtu dans mes idées donc la collabo difficile (même si j'en aurais besoin pour la partie "hardware", mon domaine c'est la programmation) :smiley-mr-green:.
Title: Re: Projet - Gestion domotique et webserver
Post by: Brisebee on Nov 27, 2011, 10:21 pm
Je n'avais pas vu ce sujet, je viens d'arriver sur ce forum.
Mais la plus grande partie de ce que j'ai vu sur ce sujet me semble trop complexe et utilise trop de technologies et de protocoles différents, pour être mis en œuvre de manière fiable par des amateurs, même éclairés.
Je pense que, comme je l'avais déjà fait sur mon ancien (mais toujours actuel) système de domotique, chaque unité de commande doit être autonome, alors que le système de gestion domotique doit « piloter » les différentes unités de commande et échanger des données simples (on/off) avec eux, les données plus complexes étant intrinsèques à chaque unité de commande.
Alors le système de gestion domotique devient un automate qui gère des entrées et des sorties logiques,  les unes en fonction des autres et de plages horaires. On pourrait d'ailleurs utiliser un automate industriel, si ce n'est le prix, et le fait d'avoir un système qui correspond vraiment au besoin.
Si l'étude est bien faite, de sorte à avoir un système modulaire, ce système de gestion domotique doit pouvoir s'adapter à des « besoins standards » de gestion d'une maison : chauffage, volets, arrosage, alarme, …
Les dispositifs plus complexes, ambiances musicales ou lumineuses … ne font pas partie de mon projet s'ils ne peuvent pas être traités par une unité de commande autonome (mais pourquoi ne serait-ce pas le cas ?).
Pour ce qui me concerne, je suis électronicien et je maitrise plus les parties matérielles et les couches les plus proches du matériel.
Je pense qu'un projet collaboratif peut fonctionner, si :
1) Les participants sont peu nombreux, sérieux et complémentaires, l'objectif n'est pas d'en mettre plein la vue aux autres mais avancer et progresser ensemble.
2) Les objectifs sont clairs et partagés dès le départ et tous les participants s'engagent à s'y tenir.
En fait je me sens tout à fait capable de faire à minima ce que je veux faire, mais travailler à plusieurs devrait permettre d'une part d'avancer plus vite et peut-être finalement d'obtenir vers un produit final « meilleur » que ce que je pourrai faire seul.
Title: Re: Projet - Gestion domotique et webserver
Post by: osaka on Nov 27, 2011, 11:39 pm

- trop complexe et utilise trop de technologies et de protocoles différents, pour être mis en œuvre de manière fiable
- chaque unité de commande doit être autonome, alors que le système de gestion domotique doit « piloter » les différentes unités de commande
- Alors le système de gestion domotique devient un automate qui gère des entrées et des sorties logiques
- avoir un système modulaire


C'est exactement ce que je pense, on va dire à 99 ... ,ah be non 100%  :smiley-mr-green:
Mon côté développeur objet me pousse aussi à supprimer au maximum les dépendances, d'où un système modulaires autonome comme tu le précises mais avec un bus et protocole commun.
De plus ça ne ferme pas la porte comme tu le dis aux dispositifs plus complexes, ambiances musicales ou lumineuses, ... , puisque chaque module est autonome et indépendant.
J'avais regardé les automates programmable et c'est l'idéal niveau fiabilité mais bon, prix, dépendance matériel aux constructeur et quelques limites niveau possibilités selon besoins, l'arduino comblerait "facilement" ses quelques lacunes et la gestion d'entrées et sorties logiques c'est le principe de base de celui ci.
Le bus knx aussi est intéressant et similaire au résultat que je souhaiterais, mais faut savoir le financé genre 20-30k € semble banale pour une installation.
Pour le projet collaboratif le mieux il me semble serait d'agir en petits groupes et à chacun ça tache tout en restant complémentaire, communications et protocole (plus ciblé programmation), modules (plus ciblé hardware), ...
Le plus dur ce trouve dans la motivation, la disponibilité, l'entente, ...
Title: Re: Projet - Gestion domotique et webserver
Post by: Skuzmitoo on Nov 28, 2011, 01:00 am
Mon projet vise a faire un système domotique, je ne veux pas non plus commencer a interfacer avec du KNX, XPL, X10, etc... trop compliqué a mon gout et quand on dispose de ces matériels je ne vois pas l'intérêt de passer par un arduino. Je cherche une solution que chacun pourrais intégrer a moindre coût quitte a développer des petits modules électronique pour la commutation de prises et de lampes. Maintenant je veux disposer d'une interface web afin de pouvoir gérer depuis ma télé ou de n'importe quel endroit. Et enfin je veux que le système ne bloque pas la maison en cas de défaillance. Cela fait beaucoup de contrainte je sais mais rien n'est insurmontable.

Maintenant il est tout a fait possible de réaliser un projet commun car chacun a son domaine de prédilection (programmation , électronique , technologie web , etc), l'essentiel est de bien fixer les bases de l'édifice en commençant par une analyse détaillée de l'ensemble ainsi, chacun pourra s'occuper d'un module tout en étant sur que son travail soit compatible avec le reste.

Donc si il y a des volontaires pour ce projet, contactez moi par MP en me donnant vos compétences et l'on pourrais former un petit groupe de travail.
Title: Re: Projet - Gestion domotique et webserver
Post by: Brisebee on Nov 28, 2011, 11:04 pm
Bonsoir,

J'ai commencé par faire un premier descriptif très général, qui est loin d'être abouti, ce n'est qu'un tout premier jet pour servir de base de discussion avec ceux d'entre vous qui sont intéressés par ce projet.
Je vous soumets cette première approche, les différents éléments devront être précisés, des choix sont à faire, et les descriptions fonctionnelles (peut-être avec plusieurs options) arrêtées avant d'aller beaucoup plus loin.

Système domotique avec interface par serveur web :

A Les principes généraux de ce système domotique pourraient être :

1) Le système domotique est composé d'une unité de gestion domotique qui pilote diverses unités de commandes qui devront pouvoir fonctionner de manière autonomes lorsque le système de gestion est défaillant ou absent.
L'unité de gestion domotique est connecté (en permanence ou périodiquement) à un serveur web qui lui fournit les « données consignes » nécessaires aux diverses unités de commande lorsque celles-ci sont en mode automatique et qui recueille à des fins de traitement (affichage, statistiques, stockage, …) les « données comptes rendus » éventuellement renvoyées par ces unités de commande.

2) Les parties opératives, commandes de chauffages électriques, électrovannes d'arrosage, moteurs de volets électriques, lampes d'éclairage, …, sont commandées par diverses unités de commandes. Ces  unités de commandes devront pouvoir fonctionner :
- en mode manuel, c'est-à-dire de manière autonome, sans liaison avec l'unité de gestion
- en mode automatique, le pilotage de l'unité de commande se faisant alors par l'unité de gestion domotique.
Les diverses unités de commandes devront être robustes et fiables. Il s'agira de privilégier les technologies les plus simples, en excluant chaque fois que cela sera possible les systèmes mécaniques et électromécaniques, les relais électromécaniques étant remplacés par des relais statiques  (à bases d'opto-triacs et/ou de triacs).

3) Les liaisons entre les différents éléments devront être fiables et les plus simples possible, en mettant en œuvre des technologies et des protocoles standards adaptés à la nature des données et aux longueurs des liaisons nécessaires. Le nombre de technologies et protocoles mis en œuvre pour les liaisons devra être réduit à un strict minimum.

4) Le serveur web doit être compatible avec divers éléments reliés à l'internet : ordinateurs (PC ou Mac), tablettes, smartphone.


B Exemples d'éléments de commandes :

• Modules chauffage.
Il pourrait y avoir trois types de modules pour commander le chauffage :
1) Commande d'un fil pilote en TOR (Tout Ou Rien) : (*)
Chaque thermostat est équipé d'un fil pilote qui lorsqu'il est alimenté réduit la consigne de température affichée (souvent d'environ 5°C)
2) Commande d'un fil pilote avec les 6 ordres standards :
    o Confort
    o Confort -1°C
    o Confort -2°C
    o Réduit (souvent Confort-5°C)
    o Hors gel
    o Arrêt
Bon nombre de dispositifs de chauffages électriques utilisent actuellement ce type de commande.
3) Commande d'un bruleur de chaudière.

• Module arrosage : (*)
Commande en mode manuel ou automatique d'une électrovanne 24VAC

• Module commande de volet électrique :
Commande d'un moteur de volets électrique dans les deux sens, montée et descente, soit par les boutons de commandes standards soit automatiquement.

•Module commande d'un dispositif en 220VAC (prise commandée, éclairage,  …) :
Commande d'un dispositif en 220VAC (puissance maximale à définir) soit manuellement par un interrupteur standard soit automatiquement.

• Divers modules capteurs pour mesurer des grandeurs physiques utilisées à des fins d'affichage, de traitement, ou conditionnels au fonctionnement d'autres unités de commandes.
  • Module capteur (TOR) : Pour savoir par exemple si une porte est fermée ou non.
  • Module mesure de la température.
  • Module mesure de l'humidité.
  • Module mesure de la pluviométrie.
  • Module mesure d'éclairement.
  • …

• …

(*) Ce dispositif est opérationnel sur mon système actuel (fonctionne donc parfaitement depuis plus de 15 ans).

En attendant vos remarques constructives.

Bien à vous.

Title: Re: Projet - Gestion domotique et webserver
Post by: Skuzmitoo on Nov 29, 2011, 12:31 am
On peut dire que tu ne chaume pas toi. Il pourrais être intéressant de pouvoir agir sur la variation de l'intensité lumineuse pour les ampoules a filament ou les spots, a ma connaissance, cela est impossible avec les ampoules a économie d'énergie. Cela permettrais de créer des ambiances en fonction de l'heure : réveil -> faible luminosité; début de soirée -> plein pot; ambiance film; etc ....

Je pense que pour débuter on pourrait essayer de poser a plat un diagramme UML (petite recherche sur le net pour ceux qui ne connaissent pas) représentant les différents objets avec leurs différentes méthodes que l'on peut avoir dans notre programme ainsi la communauté pourrais nous faire par de ses connaissances acquises afin de faire évoluer le diagramme et orienter le projet dans la bonne direction.

De plus cela permettrais aux néophytes qui programment d'apprendre la démarche a suivre afin d'avoir un code propre et bien structuré (réduisant de beaucoup les erreurs et les bugs dans les programmes)

Qu'en pensez vous?
Title: Re: Projet - Gestion domotique et webserver
Post by: Brisebee on Nov 29, 2011, 07:29 am

pouvoir agir sur la variation de l'intensité lumineuse pour les ampoules a filament ou les spots, a ma connaissance, cela est impossible avec les ampoules a économie d'énergie. Cela permettrais de créer des ambiances en fonction de l'heure : réveil -> faible luminosité; début de soirée -> plein pot; ambiance film; etc ....


Oui, il faut définir un peu mieux le fonctionnement d'un tel module, (est ce que l'intensité lumineuse n'est commandée que par commande externe, la variation est-elle forcément progressive => analogique ou par bonds, ...), pour ce qui est des ampoules cela fonctionnera avec des ampoules halogènes et très probablement avec des ampoules (au moins avec certains types) à LED, je viens d'acheter des ampoules 80 LED avec culot GU10 (donc en 220VAC) et les mêmes en 12V, à l'occasion je ferai un essai de variation d'intensité lumineuse pour voir.


Je pense que pour débuter on pourrait essayer de poser a plat un diagramme UML (petite recherche sur le net pour ceux qui ne connaissent pas) représentant les différents objets avec leurs différentes méthodes que l'on peut avoir dans notre programme ainsi la communauté pourrais nous faire par de ses connaissances acquises afin de faire évoluer le diagramme et orienter le projet dans la bonne direction.


Je n'ai jamais utilisé cette représentation, j'utilise assez souvent les mapminds pour mes projets (qui ne sont en général pas techniques).
Je suis partisan de tout ce qui peut faciliter le partage d'informations,  donc d'obliger à une clarification des concepts, une confrontation des points de vue, et si en plus cela permet à certains (et à moi en premier lieu) d'apprendre à maitriser nos nouvelles techniques, ce ne sera que mieux !
Title: Re: Projet - Gestion domotique et webserver
Post by: osaka on Nov 29, 2011, 11:28 am
Bonne idée la modélisation uml (simplifié, sans que ça corresponde à 100% à la spécification de chaque diagramme )
Sinon pour ce qui concerne les modules il existe des ampoules éco dimmable compatible avec gradateur classique il me semble.
Concernant la partie chauffage contrairement à la France chez nous les mangeurs de moule frittes  :smiley-mr-green:, se chauffer au full électrique est assez rare (on vas démantelé nos centrale nucléaire ici :smiley-mr-green:) .
Enfin pour les modules c'est plutôt au cas par cas ? (le côté "hardware" je ne suis surement pas le mieux placé pour orienté ou conseillé mes compétences étant très limité dans ce domaine  :smiley-sleep: :smiley-red:)
Il faudrait peut être regarder la gestion du système dans sa globalité d'abord (bus de terrain, protocole, ...) ?
En fait dans mes recherches actuel, j'étais parti sur une communication via rs-232/485 half-duplex du type maître-esclaves (voir Multi-processor Communication Mode de la doc atmel que je trouve pas mal) avec gestion des collision type csma(/cd) et protocole simple souvent rencontrer dans les solutions domotique, un peux comme je l'ai fais dans mon autre projet (http://arduino.cc/forum/index.php/topic,72035.0.html) .
J'attend l'arrivée d'un mega et d'un mini commandé en chine pour commencé mes testes  :% .
J'aurais bien voulu connaître des avis, idées et suggestions sur ce point.   :smiley-surprise:
Title: Re: Projet - Gestion domotique et webserver
Post by: Brisebee on Nov 29, 2011, 01:49 pm
Effectivement, il faut définir le système dans sa globalité et choisir des liaisons et le (ou les) protocole(s) de communication, j'avais pensé utiliser le Bus I2C, car il y a de nombreux composants matériels qui utilisent ce bus et Arduino l'interface facilement, avec une interface I2C <=> RS485 pour régler les questions de distance.

Je peux m'occuper des aspects matériels et mettre à votre disposition tous mes schémas, ceux que j'ai déjà fait et ceux à venir ainsi que toutes les explications et les tests liés.
Il va falloir que je refasse tous mes anciens schémas, car depuis 1994, j'ai changé n fois de logiciel de DAO  et les tous premiers schémas ne sont que sur papier. Mais c'est l'occasion de mettre au propre et à jour un certain nombre de choses.

Osaka, j'ai regardé ton projet, je ne comprends pas tout, mais cela me semble très intéressant, bravo ! Je pense qu'en conjuguant nos efforts et en travaillant intelligemment ensemble, en faisant des efforts de pédagogie d'une part et d'adaptation aux problématiques ou préoccupations des uns et des autres d'autre part, le tout dans un esprit d'humilité et de respect mutuel, on devrait arriver à faire quelque chose de fonctionnel.

Il faut se mettre d'accord sur un noyau dur commun, et chacun pourra ensuite développer autour ses propres éléments (matériels et/ou logiciels) en fonction de ses besoins.
C'est pour cela que l'esprit Arduino me plait bien.
Title: Re: Projet - Gestion domotique et webserver
Post by: osaka on Nov 29, 2011, 02:49 pm

j'avais pensé utiliser le Bus I2C, car il y a de nombreux composants matériels qui utilisent ce bus et Arduino l'interface facilement, avec une interface I2C <=> RS485 pour régler les questions de distance.

J'avais pensé également à l'i2c et même spi mais deux problème me contrariais dans ses solutions, le fait que le maître doive interrogé chaque esclave tour à tour pour savoir s'il a quelque chose à dire (token ring ?) et le fait de partager le bus avec d'autres composants matériels (ds1307,...) disponibles pour l'arduino.
Le port série étant vraiment dédié à la communication et la possibilité d'en avoir plusieurs (mega par exemple) au cas ou (je pense au module gsm/gprs, ...), il me paraissait plus adapté, sans compté que atmel à prévu dans ses registres le Multi-processor Communication Mode  :smiley-surprise: .


Je peux m'occuper des aspects matériels et mettre à votre disposition tous mes schémas, ceux que j'ai déjà fait et ceux à venir ainsi que toutes les explications et les tests liés.
Il va falloir que je refasse tous mes anciens schémas, car depuis 1994, j'ai changé n fois de logiciel de DAO  et les tous premiers schémas ne sont que sur papier. Mais c'est l'occasion de mettre au propre et à jour un certain nombre de choses.


C'est clair que tu as de la bouteille dans le domaine, expérience plus que bienvenue  :smiley-mr-green: .


Osaka, j'ai regardé ton projet, je ne comprends pas tout, mais cela me semble très intéressant, bravo ! Je pense qu'en conjuguant nos efforts et en travaillant intelligemment ensemble, en faisant des efforts de pédagogie d'une part et d'adaptation aux problématiques ou préoccupations des uns et des autres d'autre part, le tout dans un esprit d'humilité et de respect mutuel, on devrait arriver à faire quelque chose de fonctionnel.


Je l'avoue que par exemple pour mon autre projet (adaptable à notre besoin), j'ai beaucoup de mal à exprimer et décrire mes idées et pensées, j'écris comme je pense et ça doit pas être facile à décrypter  :smiley-mr-green:.
Je pense également qu'en combinant ses compétence on peux arrivé à un bien meilleur résultat.


Il faut se mettre d'accord sur un noyau dur commun, et chacun pourra ensuite développer autour ses propres éléments (matériels et/ou logiciels) en fonction de ses besoins.
C'est pour cela que l'esprit Arduino me plait bien.


Oui il faudrait d'abord délimité ce qui est commun et ensuite développé ses propres éléments (ou d'autre personnes pourront également y trouvé leurs intérêts commune).
Dans tout les cas je reste ouvert ;)
Title: Re: Projet - Gestion domotique et webserver
Post by: Skuzmitoo on Nov 29, 2011, 06:42 pm
Voila j'ai commencé un petit jet afin de donner une première orientation afin de définir les intéractions et les différents objets que nous allons utiliser. J'invite chacun a reprendre les fichiers que j'ai joint et de les modifier afin de garder le même format. Il faut oppenoffice pour ouvrir les documents. En travaillant de la sorte nous aurons une base commune.

Donc premier pavé, les intéractions :
(https://www.rapidshare.com/files/2847153766/Interactions.jpg)

Deuxième pavé :
(https://www.rapidshare.com/files/118864754/Modelisation.jpg)

Je sais cela est un peu sommaire, mais si chacun participe, cela va s'enrichir très vite.

Enfin, si l'on développe un projet, il va falloir lui trouver un nom,que pensez vous de Smart'Home

Le fichier openoffice pour les intéractions : https://rapidshare.com/files/3440798408/Intérections.ods (https://rapidshare.com/files/3440798408/Intérections.ods)
Le fichier openoffice pour la modélisation :  https://rapidshare.com/files/3568813400/Modélisation.ods (https://rapidshare.com/files/3568813400/Modélisation.ods)
Title: Re: Projet - Gestion domotique et webserver
Post by: Brisebee on Nov 29, 2011, 07:27 pm
Il faut effectivement commencer par les interactions comme tu le propose skumitoo. Merci pour ta proposition.
Je vais "amender" ton schéma dans la soirée, pour le remettre à la discussion.

Pour ce qui concerne le nom du projet :
si tu googelise "smart home" tu tombes sur une quantité impressionnante de réponses, visiblement ce nom est déjà pris et pas qu'une fois.
De même en faisant rapidement une recherche de disponibilité de nom de domaine smart-home est pris avec toutes les extensions courantes.

Moi j'aurai vu quelquechose avec "domo" dans le nom pourquoi pas "domo smart" ou "domo-smart". A discuter

Il faudra aussi penser à "protéger" le projet en le mettant sous licence open source, comme GNU, mais là ce n'est pas dans le monde linux, à voir.
Car ce serai trop bête de se faire attaquer par quelqu'un qui a piqué les idées et qui les a ensuite protégées puis commercialisées.  ]:D
Il suffira de faire comme cela a été fait pour le projet Arduino. A voir de plus près.
Title: Re: Projet - Gestion domotique et webserver
Post by: Skuzmitoo on Nov 29, 2011, 07:36 pm
Pour l'instant il n'y a pas grand chose de concret, on verra pour la "protection" quand cela aura bien avancé, il y a encore du chemin a parcourir et plus c'est long, plus c'est bon  :D

Title: Re: Projet - Gestion domotique et webserver
Post by: Brisebee on Nov 29, 2011, 09:59 pm
Il n'y a effectivement pas grand chose de concret, c'était une remarque au passage, il n'y a aucune urgence de ce point de vue !

J'ai refais un schéma des interactions que je soumet à la discussion :
Quelques remarques :
- Pour moi l'ordinateur ne doit servir qu'à programmer les cartes arduino, ensuite tout doit se passer par le réseau local ou le web.
- Il n'y a besoin d'un arduino esclave que lorsqu'il faut un certain degré de traitement des informations ou des signaux.
- Les parties opératives devraient se trouver à proximité des circuits de commande pour éviter d'avoir des commutations de puissance (qui génèrent des parasites) sur des grandes distances.
- J'ai indiqué des types de liaisons mais là encore c'est à discuter.

Pour l'instant rien n'est arrêté.
Title: Re: Projet - Gestion domotique et webserver
Post by: osaka on Nov 29, 2011, 10:17 pm
Juste une image de ma proposition global et incomplètes vu les possibilités offertes, les différents avis sont très intéressant  :smiley-surprise:.

Title: Re: Projet - Gestion domotique et webserver
Post by: Skuzmitoo on Nov 29, 2011, 10:48 pm
La grosse différence entre le rs232 et le rs485, c'est qu'en rs232 c'est une communication entre seulment 2 appareils, alors qu'en rs485 on peut en adresser plusieurs, de plus, le rs485 est plus approprié, distance max jusqu'à 1,2Km et jusqu'à 32 appareils sur un bus.

Maintenant utilisé le I2C ou le rs485 pour un capteur, c'est pas trop usine a gaz, vous avez des exemples ?

Dans notre cas cela sera soit un signal numérique ou analogique, il y a juste a branché sur la bonne entrée de l'arduino. Le problème reste toujours la distance pour envoyer l'information.

On pourrais imaginer un arduino pour chaque pièce afin de réduire les distance arduino <-> capteurs et il communiquerais entre eux par le bus, mais c'est pas très esthétique a mettre en place dans un foyer.

Je rejoint plus Osaka sur son schéma un peu plus cohérent, et le fait de multiplier les arduinos n'est pas excessivement cher pour les bricoleurs http://www.instructables.com/id/LOG-10-Arduino/ (http://www.instructables.com/id/LOG-10-Arduino/), cela ne sert a rien de multiplier les protocoles cela complique la mise en oeuvre il faut faire simple et fonctionnel.

J'aime bien l'idée des contrôleurs séparés (scénario - serveur web - esclaves), par compte a mon avis il faut se servir de l'arduino en client web vu la faible quantité de mémoire disponible.

Vous en pensez quoi ?
Title: Re: Projet - Gestion domotique et webserver
Post by: Skuzmitoo on Nov 29, 2011, 11:02 pm
Il y a une piste pour la transmission des données vers le capteurs et les actionneurs ici : http://arsene.perez-mas.pagesperso-orange.fr/transmission/lignes/supports.htm (http://arsene.perez-mas.pagesperso-orange.fr/transmission/lignes/supports.htm)

Il y a les paires torsadées (câble de téléphone blindé) ou la transmission de données différentielle qui a l'air intéréssante une porte logique NON et un ampli AOP sa coute rien et en général, et on en a plusieurs sur un Circuit intégré.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Nov 29, 2011, 11:22 pm
La plupart des capteurs mesurent des grandeurs physiques analogiques et fournissent des signaux analogiques. Si on veut transmettre ces signaux sur des grandes distances (> 1 m), à moins d'utiliser des câbles blindés, les signaux vont être perturbés par les parasites. On transforme alors, à proximité des capteurs, les signaux analogiques en signaux numériques à l'aide ce convertisseurs analogiques numériques (CAN ou ADC pour Analog to Digital Converter) puis on les sérialise pour les transmettre, il existe des CAN avec des sorties I2C ce sont des composants très couramment utilisés AD7992, AD799,1 PCF 8591, ...
Mais peut-être ce type de montage n'a pas lieu d'être présent dans un projet domotique ?

Je vais me recentrer sur mes besoins plutôt que d'imaginer les possibles !
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Nov 29, 2011, 11:57 pm
Concernant le rs-232 normalement il n'y a pas de problème pour du multipoint (1 maitre - n esclaves), il y avait une discutions récemment à ce sujet qui m'a conduit vers la doc concernant le multi-processor communication mode (idéal si c'est déjà intégré dans l'amel), je vous invite à regarder le point 19.9 page 193 pour savoir si je suis dans l'erreur ou pas ? http://www.atmel.com/dyn/resources/prod_documents/8271S.pdf .
(un adaptateur rs-232/485 coute grand max 2€ de ce que j'ai pu voir donc pas vraiment un problème à rajouté le résultat niveau code est presque le même)
Pour le "module" serveur web j'avais pensé utilisé quelque chose comme ceci (http://www.friendlyarm.net/products/mini2440), léger, 3 port série donc interfaçable avec le bus, ...
Le fait que le contrôleur soit un maillon esclave du bus permet de supprimer les dépendances , un contrôleur en panne les autres fonctionne (qui a dit fiable ? lol),multiplie également les possibilités d'évolutions et le top c'est que chacun fais comme il veut  :smiley-surprise:.
Pour les capteurs je vous laisse en débattre, c'est hors de mes compétence tout ce que je connais c'est ce qui a déjà été utilisé ici (maxim dallas, lm35, ...) et sans doute d'autre personne ce manifesterons d'ici peux, donc continuer à m'instruire.  :smiley-mr-green:
Enfin tout ceci est toujours à l'étude, rien de définitif on est pas à 1 jours (ans  :*) près  :smiley-mr-green:.

Edit: il y a une autre chose important dont on a pas parlé, c'est l'installation électrique général qui pour la plupart ne se prête pas (enfin moins simple) au type de bus prévu comme ça doit être le cas pour brisebee Skuzmitoo d'où le fait de parler d'arduino par pièce et de distance?
Je veux dire chaque point de commande (interrupteur) doit revenir au bus (instalation en étoile) et non contrôler directement le point à alimenté (comme pour les télérupteur)s et comme il est assé rare pour une question de cout et de longueur de câbles de revenir au coffret pour repartir sur ce point à alimenté (a moins du sans fils)... ?
Je sais pas si je me suis bien expliqué ?

quelque liens pour expliqué tout ce que je n'arrive pas a expliqué lol

http://www.pluc.fr/2011/01/domotique-description/
http://www.forumconstruire.com/construire/topic-111132.php
http://www.sigma-tec.fr/domotique/texte_topologie_architecture_knx.html#tag_11
Tien truc que je n'avais jamais vu en be et proche de ma pensée
http://www.bcdi.be/fr/produits/domotique/domotech.html
http://www.domotech.com/index.php?Page=Technical in het neederlands :smiley-mr-green:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Nov 30, 2011, 08:45 am
Merci osaka pour tous les liens que tu proposes.
Je vais voir cela tranquillement.
Effectivement, il n'a jamais été question dans nos échanges de l'installation électrique et des câblages, en fait pour ce qui me concerne, le système existe déjà, donc toute l'installation de base est faite, et j'ai de nombreuses réservations prévues pour faire évoluer mon installation, je n'ai pas, à priori, de soucis de ce coté ci.
En fait ce qui me pose le plus question, c'est la partie serveur web, c'est la partie que je ne maitrise pas, alors que cela semble ne pas vous poser de problème.
Je viens de recevoir mon nouveau matériel : Arduino Mega 2560, Ethernet shield W5100 avec lecteur SD et horloge DS1307 RTC (le tout pour environ 50€, port compris, sur ebay)
Je vais pouvoir tester tout cela.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Nov 30, 2011, 02:00 pm
arf m'étais tromper de pseudo quand je disais installation électrique moin adapté, c'est certain que la tienne est déjà adapté au type bus domotique, automate, ... (centralisation quoi)  :smiley-sweat: .
Pour la partie web serveur comme l'a dit Skuzmitoo le shield ethernet ne s'y prête pas vraiment du à ses limites et ceux de l'arduino (4 connections max simultanée, limite mémoire, ...), en temps que client (socket simple) ça fonctionne très bien mais bon il faudrait de toute façon un serveur externe, donc le mieux c'est d'utilisé quelque chose de plus adapté tout en restant léger et interfaçable avec le bus, on vois de plus en plus de petite machine pouvant faire office de serveur web plus adapter que l'arduino+shield (on pourait y placer d'autre chose aussi, bdd, client lourd, configuration système, ...) .
Pour les liens c'est surtout pour montrer que je ne fais que m'inspiré de ce qui existe déjà et éprouvé, pas besoin de réinventé la roue, c'est surtout le plaisir de le faire sois même, sans dépendance à un système fermé et question cout.  :smiley-mr-green:
Entre () Je n'ai pas encore de maison ou autre, étude secondaire (BE) en construction mécanique et métallique et graduer (bac +3 ?) en informatique de gestion (changement de domaine du à un accident) et ... sans emplois ... enfin je vais pas m’étaler là dessus, mais la domotique me passionne énormément.  :smiley-mr-green:
Félicitation pour tes nouveaux jouets  :smiley-surprise:

Edit: pour le multi mode j'ai retrouvé le post http://arduino.cc/forum/index.php/topic,78090.msg590284.html#msg590284
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: jeanot1314 on Nov 30, 2011, 02:10 pm
hello,

Je travaille aussi sur une installation domotique en arduino. Ce topic arduino aborde aussi quelques points interressant qui m'ont pas mal aidé pour les actionneurs : http://arduino.cc/forum/index.php/topic,33445.0/topicseen.html

Ma solution est encore loin d'être au point, je posterai dès que j'ai plus de resultats (encore quelques nuits blanches en perspective!!)

Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Nov 30, 2011, 03:06 pm
J'avais suivi le projet de gromain également avec grande attention, surement le plus abouti ici et franchement je lui tire mon chapeau, mais comme je l'ai dis plusieurs point me dérangeais comme l'ethernet pour le bus (qui impique au minimum un switch pour rassembler tout ça ?), le xpl (multiplication des techno, ...), ..., je pars plus sur la même philosophie (modulaire) que Brisebee et Skuzmitoo par exemple .
Tu pourrais nous dire un peux plus vers quels solution tu te diriges ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: moustic on Nov 30, 2011, 04:15 pm
En ce qui concerne le bus a utiliser, le RS485 est super, mais assez complexe car il n'y a aucune couche materielle.
Pour cela, Elektor publie depuis quelque temps des articles concernant un bus R485 assez abouti, mais simple pour de la domotique.
Tout les exemple sont baés sur des atmega168, donc tres simple a porter sur arduino ;-)

si qquun a le temps d'y regarder, ca vaut la peine.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Nov 30, 2011, 05:12 pm
L'article Elektor à l'air très intéressant, c'est bien celui ci (http://www.elektor.fr/magazines/2011/janvier/le-bus-arrive-!-%281%29.1648165.lynkx) ?
J'ai pas d'abo Elektor vu que je suis une buse dans le domaine  :smiley-red:, mais ça pourrait être intéressant pour certaine chose; grand merci.  :smiley-surprise:

Pour interfacer le rs-485 et l'arduino je pensais procéder comme :

http://real2electronics.blogspot.com/2009/09/arduino-and-rs485-english-version.html
http://gdallaire.net/blog/?tag=network
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Oliv4945 on Nov 30, 2011, 08:44 pm

je pars plus sur la même philosophie (modulaire) que Brisebee et Skuzmitoo par exemple .


Juste une image de ma proposition global et incomplètes vu les possibilités offertes, les différents avis sont très intéressant  :smiley-surprise:.



Je suis surpris par la "modularité" de votre découpage, vu que j'ai à peu près le même projet que tout le monde. J'ai l'impression que vous partez sur une solution avec 4/5 arduino minimum. C'est que mon avis mais je trouve ça un peu surdimensionné : Le contrôleur va contrôler quoi ? Lui intégrer le contrôleur permettrai de n'avoir qu'un élément de "contrôle." Pourquoi ne pas s'organiser plutôt en brique logicielles, comme ça les personnes qui veulent avoir un Arduino par fonction peuvent, et ceux qui veulent grouper les fonctions le peuvent aussi.

En ce qui me concerne j'ai prévu 1/2 Arduino par pièce, mais pas 4. Par contre je suis franchement intéressé pour me mettre avec vous si votre solution devient plus souple :)

Sinon niveau communication pourquoi ne pas partir sur du RF ? Un truc qui me trote dans la tête depuis un moment c'est de brancher un module RX/TX en sortie d'une UART pour une liaison série sans fils mais je n'ai pas encore eu le temps de tester..
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Nov 30, 2011, 09:28 pm

Je suis surpris par la "modularité" de votre découpage, vu que j'ai à peu près le même projet que tout le monde. J'ai l'impression que vous partez sur une solution avec 4/5 arduino minimum. C'est que mon avis mais je trouve ça un peu surdimensionné : Le contrôleur va contrôler quoi ? Lui intégrer le contrôleur permettrai de n'avoir qu'un élément de "contrôle." Pourquoi ne pas s'organiser plutôt en brique logicielles, comme ça les personnes qui veulent avoir un Arduino par fonction peuvent, et ceux qui veulent grouper les fonctions le peuvent aussi.


Yop Yop Oliv
Le fait d'avoir une installation modulaire permet grandement les possibilités et surtout le plus grand critère exigé en domotique c'est la fiabilité, il n'est pas question qu'en cas de panne d'un module toute l'installation sois en déroute ...
Donc pour la même raison je suis plutôt contre la brique logiciel pour les raisons invoqués.
Le ou les contrôleurs contrôle tout ce qui est contrôlable tout simplement :smiley-mr-green:, des e/s numérique d'un module, de la variation d'un module, ...
Maintenant ici mon schéma représente juste les possibilités et non comment elle devrait être réellement.
Le "ARDUINO MASTER BUS" ne sert qu'à la gestion de la communication entre modules ce n'est pas un CONTRÔLEUR/ACTIONNEUR, il est là parce que c'est la système de communication du bus (rs232/485) en lui même  qui le veut pour pouvoir faire communiqué les module entre eux.
Pour le côté surdimensionné vu la consommation et le prix des microcontroleur utilisés (hors solution toute faite genre uno, mega, ...), les multiplier ne pose pas vraiment de problème si on compare par exemple la consommation d'un ordinateur, la tv, d'une ampoules  XD ou autres ...
Tes question sont parfaitement légitimes et beaucoup de monde ce les posent parce que ça parait presque illogique et insensé, on est tenté de tout faire avec 1/2 arduino et pourtant je ne fais que me basé sur des solutions existante en domotique comme le knx, l'automate et autre bus divers.


En ce qui me concerne j'ai prévu 1/2 Arduino par pièce, mais pas 4. Par contre je suis franchement intéressé pour me mettre avec vous si votre solution devient plus souple :)

Sinon niveau communication pourquoi ne pas partir sur du RF ? Un truc qui me trote dans la tête depuis un moment c'est de brancher un module RX/TX en sortie d'une UART pour une liaison série sans fils mais je n'ai pas encore eu le temps de tester..


En fait ici il n'est pas question d'arduino par pièces, le système se trouve à 1 seul endroit  c'est ce que j'expliquais précédemment pour le type d'installation électrique général, par exemple tu as ton bouton poussoir dans ton salon, il revient vers le bus et celui ci active la sortie correspondante, tout les points (poussoir, lampes, prise, ...) son connecté au bus ce qui provoque évidement de grande longueur de fils dans ton installation électrique (en étoile), par contre ça réduit la distance entre modules ou controleurs/modules.
Donc dans ce cas si, le sans fils serait utile pour communiqué avec un contrôleur afin d'évité les fils.


pour mieux comprendre :




au final ça pourrait bien ressembler à cela.  :smiley-mr-green:





Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Nov 30, 2011, 09:34 pm

Je suis surpris par la "modularité" de votre découpage, vu que j'ai à peu près le même projet que tout le monde. J'ai l'impression que vous partez sur une solution avec 4/5 arduino minimum. C'est que mon avis mais je trouve ça un peu surdimensionné


Mon idée initiale (et je ne l'ai pas encore complètement abandonnée), est d'avoir un Arduino « central » que j'ai appelé « unité de gestion domotique » c'est cette unité de gestion qui est l'horloge du système et qui communique avec le monde extérieur via le web. Il y a suffisamment d'entrée/sortie disponibles sur cet Arduino, surtout si c'est un Méga pour commander directement un certain nombre d'actionneurs, s'il n'y a pas de problème de distance, (ce qui est mon cas, car j'ai un local technique et tout arrive là), les éléments qui peuvent être commandés directement, (fils pilotes de chauffage électrique, électrovannes d'arrosage, …) ne nécessitent donc pas autre chose que des relais pour passer du 5VDC en 220VAC ou 24VAC (en fait comme je l'ai déjà écrit plus haut, je n'utilise pas de relais électromécaniques, mais des montages avec des opto-triacs et triacs), pour moi c'est la partie la plus importante de mon installation. Après si on veut faire des choses plus sophistiquées on peut toujours mettre en œuvre d'autres Arduino déportés qui communiquent avec l'Arduino « unité de gestion domotique » via RS 485, mais pour moi c'est secondaire, même si cela peut (et probablement doit) être prévu au départ.
Je concentrerai mes efforts dans un premier temps à réaliser cette première partie et à faire une interface avec le web fonctionnelle et commode (et là j'aurai besoin d'aide pour la partie web!).
Mais je suis tout à fait prêt à participer à la conception d'un système plus complet et plus universel, dans la mesure de mes moyens, qui sont celle d'un ingénieur électronicien (qui n'exerce plus dans le domaine technique depuis quelques années). Car je trouve que les échanges sur ce forum sont très intéressants et peuvent permettre à tous d'apporter et confronter des idées et des connaissances et à chacun de gagner en compétence dans un des relativement nombreux domaines techniques (réseau, web, programmation, télécommunications, électrotechnique, électronique, …) que recoupe la domotique actuelle.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Nov 30, 2011, 09:50 pm


Mon idée initiale (et je ne l'ai pas encore complètement abandonnée), est d'avoir un Arduino « central » que j'ai appelé « unité de gestion domotique » c'est cette unité de gestion qui est l'horloge du système et qui communique avec le monde extérieur via le web.


Pourquoi l'abandonné ?
Par exemple dans mon schéma on aurais très bien pu appelé contrôleur/unité de gestion domotique.
Les différent type (web, client lourd, ...) de contrôleur/unité de gestion domotique peuvent être séparé ou intégré c'est aux choix (ce sera là sans doute les plus grosse différences entre chacun).
Enfin j'ai l'impression qu'on confond un peux ce qu'on ce dit les un les autres ?  :smiley-sweat: :smiley-mr-green:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Nov 30, 2011, 10:04 pm

Enfin j'ai l'impression qu'on confond un peux ce qu'on ce dit les un les autres ?  :smiley-sweat: :smiley-mr-green:


Il me semble aussi ! j'ai été confronté plusieurs fois à des situations de ce type dans les dernières annèes de technicien, et notamment de chef de projet, les informaticiens et les électroniciens utilisent les mêmes mots pour désigner des choses différentes (et parfois proches, mais non identiques, ce qui rend la compréhension encore plus difficile), c'est pour cela qu'il faut chaque fois expliciter les concepts pour lever toutes les ambiguités.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Oliv4945 on Nov 30, 2011, 10:38 pm
De mon point de vue vous (Brisebee et Osaka) parlez de 2 solutions différentes:

Mon idée initiale est d'avoir un Arduino « central » que j'ai appelé « unité de gestion domotique » c'est cette unité de gestion qui est l'horloge du système et qui communique avec le monde extérieur via le web. Il y a suffisamment d'entrée/sortie disponibles sur cet Arduino, surtout si c'est un Méga pour commander directement un certain nombre d'actionneurs, s'il n'y a pas de problème de distance, (ce qui est mon cas, car j'ai un local technique et tout arrive là), les éléments qui peuvent être commandés directement, (fils pilotes de chauffage électrique, électrovannes d'arrosage, …)

Si je comprends bien un seul Arduino central  :)

Si je parlais de briques logicielles c'est justement d'avoir un pannel de fonctions que l'on choisit d'inclure ou non pour pouvoir composer notre système comme bon nous semble, un peu dans l'approche composants si certains connaissent

Osaka : Je suis plutôt d'accord avec tes arguments, mais si le maître du réseau tombe, tu n'as plus rien. Alors que si tu as un Arduino régulation (acquisition temp/regulation/action) d'un côté, un serveur web , un gestion des volets (avec boutons de secours), si un élément lâche rien n'est paralisé
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Nov 30, 2011, 11:10 pm

De mon point de vue vous (Brisebee et Osaka) parlez de 2 solutions différentes:
Si je comprends bien un seul Arduino central  :)


Je pense aussi, enfin je sais plus trop maintenant comme on parlais modules j'hésite lol.


Si je parlais de briques logicielles c'est justement d'avoir un pannel de fonctions que l'on choisit d'inclure ou non pour pouvoir composer notre système comme bon nous semble, un peu dans l'approche composants si certains connaissent :smiley-yell:


Tu parle bien du pattern ?


Osaka : Je suis plutôt d'accord avec tes arguments, mais si le maître du réseau tombe, tu n'as plus rien. Alors que si tu as un Arduino régulation (acquisition temp/regulation/action) d'un côté, un serveur web , un gestion des volets (avec boutons de secours), si un élément lâche rien n'est paralisé


Attention on a bien dit que les modules devaient pouvoir être autonome donc oui une régulation dois avoir son composant temp, un module sorties doit avoir ses entrées (je n'ai jamais dit qu'on supprimais les interrupteur local par le contrôleur web par exemple, regarde bien le premier module I/O de mon schéma l’interrupteur poussoir y est ...)  et tout ceci séparé des contrôleurs type web et autres non indispensable au bon fonctionnement de chaque modules.
En fait c'est ce que j'explique depuis le début, supprimer les dépendances dissociable mais pas tout non plus ...  :smiley-sweat:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Nov 30, 2011, 11:15 pm

si le maître du réseau tombe, tu n'as plus rien. Alors que si tu as un Arduino régulation (acquisition temp/regulation/action) d'un côté, un serveur web , un gestion des volets (avec boutons de secours), si un élément lâche rien n'est paralisé


Dans mon système actuel : http://g.sinnig.free.fr/spip.php?article3 (http://g.sinnig.free.fr/spip.php?article3)
Les unités de commandes fonctionnement en mode "dégradé" (manuel) même si l'unité de gestion est HS, simplement il n'y a plus de communication avec le PC (donc avec le web dans le futur) et le fonctionnement sur des plages horaires définies ne se fait plus.
Mais si on le juge utile on peut tout à fait mettre un Arduino dans certaines unités de commandes qui peuvent alors fonctionner de manière autonome, avec des données préchargées (par défaut), qui ne pourront être modifiées par le web que si l'unité de gestion fonctionne à nouveau.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Oliv4945 on Nov 30, 2011, 11:40 pm

Attention on a bien dit que les modules devaient pouvoir être autonome donc oui une régulation dois avoir son composant temp, un module sorties doit avoir ses entrées (je n'ai jamais dit qu'on supprimais les interrupteur local par le contrôleur web par exemple, regarde bien le premier module I/O de mon schéma l'interrupteur poussoir y est ...)  et tout ceci séparé des contrôleurs type web et autres non indispensable au bon fonctionnement de chaque modules.
En fait c'est ce que j'explique depuis le début, supprimer les dépendances dissociable mais pas tout non plus ...  :smiley-sweat:

Ok ce n'est pas ce que j'avais compris dans ton diagramme  ;)
donc sur le principe je suis d'accord avec vous, même si dans les faits, je n'ai qu'un seul uC qui fait tout  :smiley-red:
En fait ce qu'il faut voir c'est aussi la finalité et est-ce dramatique si ça plante :
pb soft => Watchdog, redémarrage, rechargement des paramètres en ligne et envoi de mail pour avertir
pb hard => mince, c'est tout cassé  :) Mais pour le chauffage par exemple (dans mon cas) si le chauffage est resté en Off, je met un pull 1H en rentrant chez moi, si bloqué en on de toute façon les thermostats de mes chauffages sont réglés légèrement au dessus de la consigne de chauffe.

En fait ce que j'essaie de dire en m'embrouillant, c'est que parfois il est plus embêtant de protéger quelquechose qui n'est pas critique plutôt que de corriger un problème tous les ans


Au fait Bisbee : Bravo pour l'installation  :smiley-eek:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Guillaume85 on Dec 01, 2011, 12:24 am
Fascinant, je vous suis dans cette démarche domotique :)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 01, 2011, 12:42 am

Ok ce n'est pas ce que j'avais compris dans ton diagramme  ;)


Même avec un dessin je suis nulle ?  =(  :smiley-sweat: :smiley-mr-green:


donc sur le principe je suis d'accord avec vous, même si dans les faits, je n'ai qu'un seul uC qui fait tout  :smiley-red:
En fait ce qu'il faut voir c'est aussi la finalité et est-ce dramatique si ça plante :
pb soft => Watchdog, redémarrage, rechargement des paramètres en ligne et envoi de mail pour avertir
pb hard => mince, c'est tout cassé  :) Mais pour le chauffage par exemple (dans mon cas) si le chauffage est resté en Off, je met un pull 1H en rentrant chez moi, si bloqué en on de toute façon les thermostats de mes chauffages sont réglés légèrement au dessus de la consigne de chauffe.

En fait ce que j'essaie de dire en m'embrouillant, c'est que parfois il est plus embêtant de protéger quelque chose qui n'est pas critique plutôt que de corriger un problème tous les ans


Watchdog était prévu.  ^_^
Chauffage oki on peux s'en passé, je compte d'ailleurs m'en passé totalement pour mon projet maison passive (un jours ...   $) =() :smiley-mr-green: .
C'est vrai que l'on a pas besoin de protéger à outrance mais si on peux l'évité c'est mieux non ? (1 fois par ans mais la prochaine c'est pour quand ?)
Disons que la fiabilité est un point essentiel pour moi, c'est ma vision personnel (pour un projet actuellement personnel) d'un système qui doit géré une installation domestique et non un sapin de noël.
Ici pour moi c'est aussi un plaisir d’étudier, optimisé et créer tout ça donc je joins l'utile à l'agréable, c'est aussi plus satisfaisant d'avoir fais son propre système plutôt que d'avoir dépensé 5-10k€ dans du tout fais comme pour le knx et autres .  ;)
Et puis de toute façon c'est moi qui ai la plus grosse, c'est pas discutable.  :* :smiley-mr-green:


Au fait Bisbee : Bravo pour l'installation  :smiley-eek:


Aucun mérite il vient du futur.  :smiley-mr-green:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 01, 2011, 08:16 am
Yep!

Je suis un peu surpris lorsque l'on parle de fiabilité qu'on arrive à multiplier les composants. On finit par multipier les probalités de pannes, c'est un non sens !!!
Lors de l'installation de deux composants identiques à un instant t, par exemple, il y a de fortes probabilités qu'ils développent les mêmes maladies au même moment, meurent le même jour.
Pour envisager du meilleur abord cet aspect et sans réellement parler du facteur économique, il reste deux solutions viables pour assurer une maintenabilité de l'installation (on n'echaperra pas à la panne), soit on envisage de doubler l'équipement maitre, soit on s'assure d'avoir un stock de pièce de rechange prés à l'emploi. Généralement, on prend en compte les deux aspects en fait, avec comme prérogative d'assurer une disponibilité maximale et de réduire au mieux les temps de dysfonctionnement.
Je pense que si l'on veut s'assurer du fonctionnement d'un élement, il faut envisager une technologie autre que l'élement de réference : un poste informatique peut contrôler le bon fonctionnement du programme arduino (et des modules intrasèques) grace à une communication relativement simple et fiable. L'arduino peut également vérifier que la communication est effective avec l'informatique et alerter l'usager. C'est un exemple simple !

Je trouve en l'état le projet fort complexe et quelques peu coûteux en définitive. J'ai même l'impression que la souplesse d'installation et d'utilisation s'en retrouvent pénalisées.

Je trouve l'initiative fort interessante et suis avec attention vos développements.
J'acquiesse avec enthousiasme sur le choix d'un bus Rs485 que j'utilise actuellement pour piloter mes cartes relais 8 canaux (8 relais/carte).
Le seul regret relatif à mes cartes et c'est peut être en définitive le fond du problème dans une installation domotique est de ne pas pouvoir interroger de l'état actuel d'un relais.
Je suis persuadé que si nous pouvions connaitre à chaque instant l'état de nos équipements, quelques soient leurs technologies, leurs non 'communicatitivités' initiales, nous balayerons d'une main tout problème, l'arduino, unique, officierait comme maître incontestable. Le système serait 'bouclé'(langage d'automaticien).
La domotique est une technologie communicante de fait, mais son attrait principal est de pouvoir bénéficier d'un meilleur contrôle de son habitation. Et ce 'meilleur contrôle' doit s'appliquer également à l'installation domotique elle-même.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 01, 2011, 10:39 am

pb soft => Watchdog, redémarrage, rechargement des paramètres en ligne et envoi de mail pour avertir
pb hard => mince, c'est tout cassé  :) Mais pour le chauffage par exemple (dans mon cas) si le chauffage est resté en Off, je met un pull 1H en rentrant chez moi, si bloqué en on de toute façon les thermostats de mes chauffages sont réglés légèrement au dessus de la consigne de chauffe.


Comme cela a déjà été écrit par plusieurs d'entre nous, la fiabilité doit être le maître mot de notre projet.
Pour ce qui concerne la question du watchdog :
Je vois trois stratégies possibles (de la plus légère à la plus complexe)
1) Exploiter pleinement les possibilités du watchdog du microcontrôleur ATMEL qui équipe les Arduinos, pour le moment je ne m'y suis pas encore intéressé.
2) Le maître (pour moi l' « unité de gestion domotique ») envoie à intervalles réguliers (toutes les secondes ou moins, car pour un système domotique le temps de réponse n'est pas un vrai problème, quelques dixièmes de secondes voire la seconde est bien suffisant), une séquence simple mais bien identifiable. Si au bout d'un temps égal à 2 ou 3 fois le temps de cycle de l'envoi de la séquence, les différentes unités de commandes n'ont pas reçues cette séquence, elles passent en mode dégradé, en utilisant leurs paramètres internes (par défaut).
3) Un système de watchdog entièrement matériel (j'avais fait cela pour un système d'accès sécurisé, il y a une bonne dizaine d'années) : une horloge envoi une impulsion toutes les quelques dixièmes de secondes sur un fil spécifiquement prévu à cet effet ou sur les fils utilisés pour la communication, mais alors, il faut pouvoir identifier cette impulsion (par exemple une seule impulsion très longue) par rapport aux signaux standards utilisés pour la transmission des informations. Si les unités de commande n'ont pas reçu de signal au bout de là aussi 2 ou 3 cycles d'horloge, les unités de commandes se mettent en mode dégradé, c'est probablement le procédé le plus sécure, mais aussi le plus compliqué à mettre en place car il faut soit un câblage spécial, soit concevoir une partie matérielle spécialement.
A voir, là encore il ne faut pas surdimensionner le système.


Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: 68tjs on Dec 01, 2011, 11:21 am
Je suis avec beaucoup d'intérêt la gestation de votre projet bien que n'ayant pas de connaissances sur les protocoles de communication.
Je me permet de faire une remarque : si vous voulez que votre solution soit mise en oeuvre par le plus grand nombre il ne faut pas perdre de vue le coût financier. Je n'ai pas dis que c'est une priorité, absolument pas, mais il ne faut pas le reléguer à la fin du projet.

Si dans ce qui suit j'ai écrit des c*nn***ies merci de le signaler.

Je pense en particulier à la multiplication des "arduino"  --->  les apostrophes ne sont pas là par hasard.
Sérialiser les fonctions est souvent le moyen le plus sûr d'atteindre le but : facilité de conception et de mise au point séparées, mais 10 "arduino" à 25€ cela fait 250 € !
Remarque préventive : rien ne permet de prévoir les variations de cours $/€/Huan dans les mois qui viennent, donc les arduino à 13€ sur Ebay -> ???????

Proposition :
La faisabilité sur breadbord d'un montage à base ATMega328P n'est plus à démontrer. Un montage propre sur plaquette pastillée ne devrait pas dépasser 5 à 8 €, avec en jocker le choix du micro le mieux adapté dans la gamme de la spec commune aux 48, 88, 168, 328.
Cerise sur le gâteau : faut-il un quartz ? l'oscillateur interne n'est-il pas suffisant ?

Mais cela impose pratiquement l'abandon du bus USB et la programmation en ISP (d'où le grand intérêt pour le sujet de Jean-Marie http://arduino.cc/forum/index.php/topic,78754.0.html). Les micro n'ont plus besoin de bootloader d'où les coût moins élevés.

Conséquences :
Cela restreint le choix des protocoles de communication.
Est-ce acceptable ?
Est-ce trop tôt pour se poser la question?

Je n'en sais rien mais je vous soumet la question.

Bonne continuation et, comme je l'ai lu et que j'ai trouvé très bien, pas bon courage mais beaucoup de plaisir.
Au plaisir de continuer à vous lire.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 01, 2011, 11:38 am

Yep!

Je suis un peu surpris lorsque l'on parle de fiabilité qu'on arrive à multiplier les composants. On finit par multipier les probalités de pannes, c'est un non sens !!!


Pas vraiment d'accord.   :~
Je suis d'accord sur le fait de multiplier les composants multiplie les probabilités de pannes (logique), mais ici nous nous parlons de pannes locale à 1 ou n composants, panne contrôlée et facilement identifiés, le fait qu'un composant (indépendant) sois en panne n’empêche pas les autre de fonctionné.
J'utiliserai comme analogie le développement orienté objet qui a pour but de supprimer aux maximum les dépendances entre objets ,un objet n'entraine pas l'autre dans son erreur, sauf si lié  (voir uml composition-agregation), la raison d'être de ce type de développement est justement la fiabilité , différent paterne on été étudier pour supprimer ses dépendance et c'est ce que j'applique ici.
Dans cette analogie j'en veux pour preuve le langage java (objet strict), langage le plus utilisé en entreprise pour ça fiabilité objet.
Edit: je viens de penser à une autre analogie propre au développement arduino, imagine les lib (Ethernet, spi, stepper, ...) toute dans un seul fichier, un seule classe ...  :smiley-roll-sweat:
Une autre analogie pour le cas contraire serait la voiture par exemple dont tout composants s'articule autour d'un seul composant le bsi (on vas le comparé à la solution 1 arduino), c'est lui seul qui actionne et gère le bon fonctionnement de chaque composants genre interrupteur qui commande une vitre via celui-ci, he be rien que l'autoradio peux mettre toute la voiture en rade (déjà vu).


Lors de l'installation de deux composants identiques à un instant t, par exemple, il y a de fortes probabilités qu'ils développent les mêmes maladies au même moment, meurent le même jour.


Là je suis d'accord, déjà eu le cas par exemple avec deux disque dure identique acheté aux même moment et en panne à 2 jours d’intervalle 2 ans plus tard ... =(


Pour envisager du meilleur abord cet aspect et sans réellement parler du facteur économique, il reste deux solutions viables pour assurer une maintenabilité de l'installation (on n'echaperra pas à la panne), soit on envisage de doubler l'équipement maitre, soit on s'assure d'avoir un stock de pièce de rechange prés à l'emploi. Généralement, on prend en compte les deux aspects en fait, avec comme prérogative d'assurer une disponibilité maximale et de réduire au mieux les temps de dysfonctionnement.


Déjà prévu et pensé également, doubler le composant maître et autres comme un arduino mini par exemple ou contrôleur format dip qu'il suffirait juste d'enfiché sur pcb (du module complet) comme on l'aurais fais avec un fusible dans le coffret divisionnaire.


Je pense que si l'on veut s'assurer du fonctionnement d'un élement, il faut envisager une technologie autre que l'élement de réference : un poste informatique peut contrôler le bon fonctionnement du programme arduino (et des modules intrasèques) grace à une communication relativement simple et fiable. L'arduino peut également vérifier que la communication est effective avec l'informatique et alerter l'usager. C'est un exemple simple !


Possibilité d'avoir un arduino ou autre également comme cerbère du système, c'est tout à fais envisageable.


Je trouve en l'état le projet fort complexe et quelques peu coûteux en définitive. J'ai même l'impression que la souplesse d'installation et d'utilisation s'en retrouvent pénalisées.


Je trouve aux contraire qu'il est fort simple et surement beaucoup plus simple que développé une solution en 1 seul bloc et devoir géré le tout en même temps (debug, collision,..) , je préfères réglé 10 problème 1 par 1,  étape par étape, que d'essayé le tout en 1 fois.
N'oublions pas non plus qu'il sagit d'une installation domestique, pas d'une guirlande de noël, on y trouve pas la même complexité évidement.
Pour le couts lorsque je compare aux solution professionnel qui prévois qu'une installation complète peux aller de 10 à 15%  :smiley-eek: de la valeur du bien, je me dis que la solution évoqué ici est dérisoire ...


J'acquiesse avec enthousiasme sur le choix d'un bus Rs485 que j'utilise actuellement pour piloter mes cartes relais 8 canaux (8 relais/carte).
Le seul regret relatif à mes cartes et c'est peut être en définitive le fond du problème dans une installation domotique est de ne pas pouvoir interroger de l'état actuel d'un relais.
Je suis persuadé que si nous pouvions connaitre à chaque instant l'état de nos équipements, quelques soient leurs technologies, leurs non 'communicatitivités' initiales, nous balayerons d'une main tout problème, l'arduino, unique, officierait comme maître incontestable. Le système serait 'bouclé'(langage d'automaticien).


Oui le rs-485 semble être la solution la plus adapté et utilisé (confiance).
Ici le bus sera communiquant (logique d'un côté  :smiley-mr-green:), donc l'état de chaque modules sera communiqué en temps réel par action à un module contrôleur genre web ou en local au module (donc possibilité de bdd et autres par exemple).


La domotique est une technologie communicante de fait, mais son attrait principal est de pouvoir bénéficier d'un meilleur contrôle de son habitation. Et ce 'meilleur contrôle' doit s'appliquer également à l'installation domotique elle-même.


un meilleur contrôle de chaque composante de son habitation je dirais et quoi de mieux que le fait de pouvoir contrôler facilement chaque composante de l’installation domotique elle-même indépendamment des l'un des autres ?
J'appliquerais le proverbe "chercher une aiguille dans une botte de foin" ici.

Je conçois que cette façon de voir peux paraître déroutante, illogique, usine à gaze, etc, qu'on peux se dire "pourquoi faire simple quand on peux faire compliqué" (j'y vois le contraire), mais comme je l'ai déjà dit je n'ai rien inventé je ne me base que sur de l'existant, solutions testé et éprouvées depuis longtemps, ça fait plusieurs année que je m’intéresse aux sujet et ça a même été le sujet principal de mon travail de fin d'études (développement d'une application modulaire serveur de domotique en java).
Je ne critique pas tes propos et suggestions qui sont interessant, elles permettent le débats et l’évolution du projet.  ;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 01, 2011, 12:07 pm


Proposition :
La faisabilité sur breadbord d'un montage à base ATMega328P n'est plus à démontrer. Un montage propre sur plaquette pastillée ne devrait pas dépasser 5 à 8 €, avec en jocker le choix du micro le mieux adapté dans la gamme de la spec commune aux 48, 88, 168, 328.
Cerise sur le gâteau : faut-il un quartz ? l'oscillateur interne n'est-il pas suffisant ?

Mais cela impose pratiquement l'abandon du bus USB et la programmation en ISP (d'où le grand intérêt pour le sujet de Jean-Marie http://arduino.cc/forum/index.php/topic,78754.0.html). Les micro n'ont plus besoin de bootloader d'où les coût moins élevés.


C'est la solution que j'envisage normalement pour réduire le cout et donner un côté "professionnel" au projet, la communauté arduino est assez grande pour l'envisagé même pour un non initié comme moi. :)
Le côté financier est à prendre en compte évidement, mais quand je vois le nombre de personnes capable de dépensé des k € dans des solutions professionnel comme le knx ou d'autre acheté des modules x10, plc-bus, ... coutant dans les 30-50€ par module rien que pour allumé une lampe et je parles pas du prix des différent contrôleur de ce type de système pouvant grimper dans les 300€ par technologies différente (contrôleur pour énergie électrique+contrôleur pour les sonde+ ...)  :smiley-sweat:
Tout dépend de l'intérêt de la chose également, juste faire joujou ou vraiment y trouvé une utilité ?


Conséquences :
Cela restreint le choix des protocoles de communication.
Est-ce acceptable ?
Est-ce trop tôt pour se poser la question?

Je n'en sais rien mais je vous soumet la question.

Bonne continuation et, comme je l'ai lu et que j'ai trouvé très bien, pas bon courage mais beaucoup de plaisir.
Au plaisir de continuer à vous lire.



Bonne et légitime question, faudra bien y pensé un jours de toute façon, enfin pour le protocole (échange de données entre modules) il ne dépendra pas du moyen de transmission (rs-232<->rs-485 facilement adaptable au différente plateforme normalement ).  :smiley-mr-green:
Plaisir j'en ai déjà, je frétille comme un poisson accroché à un hameçon rien que dans la conception du projet.  :smiley-mr-green:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 01, 2011, 02:06 pm
Yep!

Je comprends parfaitement les avantages d'une topologie que l'on pourrait comparer une architecture neuronale.
L'analogie avec les langages de programmation est bien dite également.

Cependant, outre les problèmes de communications que vous aurez à résoudre (principalement le gestion des erreurs, travail le plus fastidieux), il faut également se positionner en tant que dépanneur éventuel et prendre le partie de l'actionneur.
Imaginons qu'une sonde de luminosité allume à un seuil prédefini une ampoule. Cette ampoule est neuve et ne s'allume pas. Comment remonter facilement à l'élement défectueux si le nombre d'intermédiaire est multiple. On pourrait incriminer l'ampoule, la sonde, l'arduino esclave, l'arduino maître ou encore la communication (double ici), sans parler des fils, le truc dont on pense en dernier...

Si on compare le système envisagé avec un automate industriel, il manque ce que l'on appelle le bouclage des sorties. http://fr.wikipedia.org/wiki/Automatique#Syst.C3.A8me_boucl.C3.A9 (http://fr.wikipedia.org/wiki/Automatique#Syst.C3.A8me_boucl.C3.A9)
Cette fonction renseigne sur le bon fonctionnement de l'actionneur.
On pourrait appuyer le concept de la communication entre arduino, avec des checks réguliers des entrées/sorties.
Mais en définitive en poussant cette reflexion, si on est parfaitement renseigné sur l'état des systèmes distants, une seule voir deux arduino suffisent amplement.

Dans mon exemple précité, il serait simple de mettre un place un élement qui contrôlerait le bon fonctionnement de l'ampoule. Mais on se retrouve du coup avec une entrée en plus à gérer et une probabilité de défaillance supplémentaire. Pas sur que ce soit mieux !
L'avantage des automates dans leur gestion est qu'il est le seul élement qui renseigne sur l'état des entrées/sorties, c'est relativement lisible et rapide.

A mon idée et afin d'être plus performant dans une gestion automate/domotique, le retour d'état est indispensable, fusse-t'elle seulement du point de vue de l'alimentation.
Exemple : L'arduino par le bus envoie un ordre à la partie commande de l'actionneur, celle-ci passe à l'état d'alimentation (genre relais, opto-triac, etc) et renvoie par le biais d'un fil supplémentaire une information digitale (c'est alimenté ou pas) en plus d'une del local.
C'est à mon sens, la gestion la plus simple et la plus rigoureuse du point de vue actionneur. On en revient à une entrée supplémentaire à gérer certe (mais sans technologie supplémentaire ;) ).

Je regrette beaucoup que nombre de solutions ne prenne pas en compte cette aspect, tant il est important. Et in fine, lorsque nous commandons une lampe, un moteur, un radiateur, un volet, c'est toujours à l'aveugle...

@+

Zoroastre.

Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 01, 2011, 04:30 pm

Cependant, outre les problèmes de communications que vous aurez à résoudre (principalement le gestion des erreurs, travail le plus fastidieux), il faut également se positionner en tant que dépanneur éventuel et prendre le partie de l'actionneur.
Imaginons qu'une sonde de luminosité allume à un seuil prédefini une ampoule. Cette ampoule est neuve et ne s'allume pas. Comment remonter facilement à l'élement défectueux si le nombre d'intermédiaire est multiple. On pourrait incriminer l'ampoule, la sonde, l'arduino esclave, l'arduino maître ou encore la communication (double ici), sans parler des fils, le truc dont on pense en dernier...


Pour le cas ici on procèderais assez facilement par élimination et déduction, voir si l'ampoule est valide sur un autre support (un défaut de fabrication par exemple) ça prend 30 sec, si plus rien ne répond peut être l'alim vite diagnostiqué avec une diode d'état par exemple, si les autres esclaves réponde correctement c'est que le maître et bus fonctionne correctement même pas besoin de se déplacé, si le module répond via commande locale par bouton poussoir par exemple pour ce cas ci (n'oublions pas qu'ils doivent être autonome également) c'est qu'il fonctionne donc on peux incriminé la partie sonde ou bus, etc, etc, on continue étape par étape en descendant de niveau.
Dans un système combiné tout en un, la déduction est quand même moins aisée comme un problème peut venir d'un autre composant combiné directement (moins visible) de ce module,  il me semble ?
Enfin on aura beau prendre le maximum de précaution le risque 0 n'existe pas de toute façon et il y aura surement des avantage et inconvénients par rapport à d'autre système.
Ici j'essaie seulement de répondre à un cahier des charges sur des réflexions personnel.


Si on compare le système envisagé avec un automate industriel, il manque ce que l'on appelle le bouclage des sorties. http://fr.wikipedia.org/wiki/Automatique#Syst.C3.A8me_boucl.C3.A9 (http://fr.wikipedia.org/wiki/Automatique#Syst.C3.A8me_boucl.C3.A9)
Cette fonction renseigne sur le bon fonctionnement de l'actionneur.
On pourrait appuyer le concept de la communication entre arduino, avec des checks réguliers des entrées/sorties.
Mais en définitive en poussant cette reflexion, si on est parfaitement renseigné sur l'état des systèmes distants, une seule voir deux arduino suffisent amplement.

Dans mon exemple précité, il serait simple de mettre un place un élement qui contrôlerait le bon fonctionnement de l'ampoule. Mais on se retrouve du coup avec une entrée en plus à gérer et une probabilité de défaillance supplémentaire. Pas sur que ce soit mieux !
L'avantage des automates dans leur gestion est qu'il est le seul élement qui renseigne sur l'état des entrées/sorties, c'est relativement lisible et rapide.

A mon idée et afin d'être plus performant dans une gestion automate/domotique, le retour d'état est indispensable, fusse-t'elle seulement du point de vue de l'alimentation.
Exemple : L'arduino par le bus envoie un ordre à la partie commande de l'actionneur, celle-ci passe à l'état d'alimentation (genre relais, opto-triac, etc) et renvoie par le biais d'un fil supplémentaire une information digitale (c'est alimenté ou pas) en plus d'une del local.
C'est à mon sens, la gestion la plus simple et la plus rigoureuse du point de vue actionneur. On en revient à une entrée supplémentaire à gérer certe (mais sans technologie supplémentaire ;) ).

Je regrette beaucoup que nombre de solutions ne prenne pas en compte cette aspect, tant il est important. Et in fine, lorsque nous commandons une lampe, un moteur, un radiateur, un volet, c'est toujours à l'aveugle...


100 % d'accord le retour d'état est pour moi également quelque chose de primordial et participe à la fiabilité du système, suffisamment primordial pour sacrifié des entrée numérique comme dans ton exemple, c'était la raison principal de l'utilisation des websocket (communication full-duplex me permettant d'avoir un retour d'état en "presque" temps réel) dans mon autre projet avec le shield ethernet.
Concernant l'automate et bouclage de sortie, Brisebee doit surement en savoir plus sur le sujet que moi  :smiley-sweat:, mais ça parait très intéressant  :) .
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 01, 2011, 08:00 pm
La question de la boucle de retour est un sujet primordial en automatisme, mais il faut savoir de quoi on parle et pour quoi faire. Je ne m'étendrai pas sur les systèmes bouclés du type asservissement ou régulation, de vitesse ou de positionnement, il y a de très nombreuses théories et publications sur ce thème, et avec les systèmes numériques ont encore modifié les choses. Mais revenons à notre sujet.
Pour ce qui concerne la domotique, il faut, je pense prendre les différentes situations une à une, et d'une manière tout à fait pragmatique, voir ce qu'il en est.
Par exemple pour l'éclairement si on allume une lampe, le capteur doit le détecter, c'est peut-être suffisant, si on commande une électrovanne d'arrosage, le capteur de pluviométrie, à condition qu'il soit placé au bon endroit, doit le détecter, alors faut-il asservir le système, à savoir fermer l'électrovanne s'il y a assez d'eau avec une relative précision, ou s'il suffit de mettre des seuils, en dessous du seuil bas on ouvre l'électrovanne à l'heure déterminée et pour un certain temps et au dessus on ne l'ouvre pas. Pour les volets roulants (par exemple sur ma porte de garage), il suffit de mettre un capteur du type microswitch ou contact d'alarme, si le capteur est activé, cela signifie que volet est baissé, si le capteur est, désactivé c'est qu'elle est ouverte, je pense que là encore, ce sera bien suffisant.
Ainsi en prenant fonction par fonction, chacun pourra prendre la décision, de mettre un capteur ou pas, pour en tenir compte dans l'automatisation, ou pas. Mais ne faisons pas des choses trop compliquées, qui ne serviront pas à grand-chose !
Dans d'autres situations, il faudra peut-être des boucles de retour plus élaborées.

Avant d'aller beaucoup plus loin dans la discussion des solutions techniques
Je pense qu'il faudrait que chacun de ceux qui sont réellement intéressés par ce projets décrivent les fonctions qu'ils souhaitent, peut-être avec un niveau d'importance.
Ce qui permettrait :
1) de voir les convergences et les divergences en terme de fonctionnalités
2) de définir des fonctionnalités commune (et d'autres optionnelles ou personnelles)
3) de faire des choix technologiques en fonctions des discussions précédentes (et futures)
4) de donner des idées

Je vous ferai très prochainement un descriptif des fonctionnalités que je souhaite.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 01, 2011, 08:49 pm
Oulaaa ! Je n'étais pas là hier, et je vois que de l'encre a coulée depuis, c'est bon signe  :)

Première remarque :
La surveillance du système (watchdog), il ne faut pas faire une usine a gaz non plus, il faut que cela reste relativement simple et pour cela l'idée que j'avais était le capteur de luminosité.

Exemples :
J'ouvre le volet , la luminosité augmente sinon problème
Je ferme le volet, la luminosité diminue  sinon problème
J'allume une lumière ,  la luminosité augmente sinon problème
Je ferme le volet, la luminosité diminue  sinon problème
L'avantage d'ajouter un capteur de luminosité, (fermeture et ouverture automatique des volets et des lumières en fonction de la luminosité possible)
Maintenant le chauffage on compare la valeur de la température actuelle avec la valeur précédente si trop d'écart problème, on définit une plage (0 à 30°) en dehors de cette plage problème
Savoir si une prise c'est allumée, on créer une tension image de la sortie du relais ou triac, si on allume une prise et que pas d'image en retour problème et vice versa
Voila pour moi cela suffit amplement

Deuxièmement :
Le nombre d'arduino a utiliser ne doit pas être figé car il sont sur un bus, ce qu'il faut ces que chacun puisse choisir les modules de sont choix et les mettre sur l'arduino de sont choix (température, éclairage, arrosage, volets, ...) et qu'il puisse les intégrer très facilement, je grossis un peu la chose mais un truc du genre :
void loop (
     GestionTempératures();
     GestionEclairages();
     GestionVolets();
)

Troisièmement :
Le choix des technologies :
- Communication inter arduino - RS425 je pense qu'il a fait l'unanimité
- 1 arduino maître - 1 arduino (accès pc et web) - X arduino pour le reste

Il reste a définir l'acheminement des données pour les capteurs et actionneurs analogiques et numériques qui a mon avis est l'étape la plus importante maintenant avant d'aller plus loin

Quatrièmement :
Je suis content de voir que je ne serais pas tout seul sur le projet



Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 01, 2011, 11:12 pm
Voici les fonctions dont j'ai besoin avec un niveau d'importance :

1) Commande fil pilote chauffage 1 ordre : 0VAC ou 220VAC Selon des plages horaires et si pas EJP
    très important
2) Commande fil pilote chauffage 6 ordres : 0VAC ou 220VAC (ou partie signal ?) Selon des plages horaires et si pas EJP
    important
3) Commande arrosage : 0VAC ou 24VAC Selon des plages horaires et si pas de pluie
    très important
4) Commande volet (porte de garage)   : 0VAC ou 220VAC Montée : 0VAC ou 220VAC Descente si pas d'obstacle
    important
5) Visualisation état porte de garage :   Visualisation sur tablette (ou PC)
    important
6) Commande volets : 0VAC ou 220VAC Montée;  0VAC ou 220VAC Descente; en fonction de l'ensoleillement
    important
7) Mémorisation alarme : Mémorisation heure mise en route ou arrêt alarme (quand et quelle zone ?)
    très important
8 ) Mémorisation jours EJP : Mémorisation pour traitement et affichage
    important
9) Mémorisation coupures secteur : Mémorisation pour traitement et affichage
    important
10) Commande éclairage : 0VAC ou 220VAC Selon des plages horaires et selon éclairement
      peu important
11) Visualisation température : Visualisation sur tablette (ou PC) température d'une pièce
     peu important

c'est mieux sous forme d'un tableau (je joints le doc)
On pourra ainsi voir quelles fonctionalités nous souhaitons avoir, en faisant une synhtèse des différents besoins.
Dites moi si vous êtes OK avec ma démarche, sinon proposez en une autre pour que nous puission avancer.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 01, 2011, 11:15 pm
Oups, j'ai oublié de joindre le tableau

Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 02, 2011, 12:55 am
C'est top, ton tableau donne matière à réfléchir.  :smiley-surprise:
Surtout ce qui concerne la mémorisation de données, le temps et plage horaire, scénarios.
Va falloir faire du cas par cas et qu'on ce triture les méninges.  :smiley-mr-green:
Pour ma liste à moi ça serait que du classique pour commencé sans vraiment de priorité (fonctionnel ça serait déjà bien  :P).

- 220v éclairages/prises
- volet roulant
- alarme
- température, humidité, ensoleillement, ...

tien, tu donnes une grosse priorité à l'arrosage, pelouse, potagé, champs de maïs, marie-jeanne  :smiley-mr-green: ... ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 02, 2011, 06:56 am
Yep!

Considerons que nous n'avons pas tous les mêmes maisons, je commencerais par les ponts communs ;

1) Chauffage            ++
2) Volets roulants    ++
3) Alarme                 +

5) Eclairages.           +

...

4) Eclairages exterieurs          +
6) Garage (porte)                    0
7) Jardin                                   -

Et pourquoi pas,

8) diffusion musique
9) interphonie (J'ai une maison de 62000 m2  $) )

Pour ma part, peu importe le mode de communication, ethernet, tablette, télécommande, il en faut au moins un.
L'ethernet me semble être le choix minimal.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 02, 2011, 08:33 am

tien, tu donnes une grosse priorité à l'arrosage, pelouse, potagé, champs de maïs, marie-jeanne  :smiley-mr-green: ... ?


J'habite en Provence et j'ai un grand terrain dans la colline, si je n'arrose pas d'avril à octobre tout jauni et crève, c'est pour cela que j'ai 10 électrovannes.

Mais techniquement l'arrosage ne pose pas de problème : suivi de plages horaires, éventuellemnt modifiées en fonction des saisons et de la pluviométrie, pas la peine d'arroser les jours de pluie ou d'orage (même s'il ne pleut pas souvent).

Pour le chauffage, il faudrait préciser quelle type de commande(s) et de capteur(s).
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 02, 2011, 09:47 am
Salut, j'ai repris le tableau et j'ai ajouté chacun de vos souhaits.
Le tableau est disponible ici : https://rapidshare.com/files/2580399683/Tableau_des_priorite?s.ods (https://rapidshare.com/files/2580399683/Tableau_des_priorite?s.ods)
Il en ressort que le chauffage est une des priorités.

Je pense qu'il est possible de partir sur la gestion du chauffage et la mesure de température (car pour moi ceux-ci vont de paire). Qu'en pensez vous ?

On utilise quoi comme protocole pour la transmission des données au différents capteurs et actionneurs ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 02, 2011, 10:42 am
Merci pour ton tableau de synthèse, il est super !

Effectivement on peut partir sur le chauffage.
De toute manière on y retrouvera les principales problématiques :
- commandes d'éléments de plus ou moins grande puissance (en fonction du type de chauffage et du type de commande)
- suivi de plages horaires
- mise en oeuvre de capteurs déportés
- accessibilité des interfaces (via le web ou au moins le réseau local dans un premier temps)
- visualisation des états et des données (via le web ou au moins le réseau local dans un premier temps)
- ...

Durant ce WE, je vais refaire le schéma de mon système de commande actuel et vous le transmettre pour avis.

On progresse à pas de géant !
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 02, 2011, 10:54 am

On utilise quoi comme protocole pour la transmission des données au différents capteurs et actionneurs ?


Un certain nombre d'entre nous sommes d'accord pour mettre en oeuvre une liaison RS485 (au moins pour les éléments distants > 1m).
Il faut donc un protocole compatible et simple.
Vous êtes probablement plus compétents que moi pour proposer des solutions.
Dans un post antérieur (assez au début), je crois me souvenir qu'osaka avait présenté ses travaux sur les websocket et avait proposé un protocole qui me parait adapté.
Qu'en pensez-vous ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 02, 2011, 12:41 pm
Donc si j'ai bien compris, on utilise le RS485 pour la liaison inter-arduino mais également pour actionner et lire les capteurs.

Pour moi il faut rester sur le RS485 car pour la domotique on a rarement des distances inférieures a 1 mètre.

Je pense également que l'utilisation de websockets est la plus appropriée.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 02, 2011, 01:02 pm

Donc si j'ai bien compris, on utilise le RS485 pour la liaison inter-arduino mais également pour actionner et lire les capteurs.


Il faut faire des essais, et/ou obtenir des informations de personnes qui ont mis réellement mis en oeuvre des liaisons RS 485.


pour la domotique on a rarement des distances inférieures a 1 mètre.


Pour ce qui me concerne, la distance entre mon automate que j'ai appellé "unité de gestion domotique" et l' "unité de commande" chauffage, est de 1m à peine et celle avec "l'unité de commande" arrosage est de moins de 50cm.
Mais je n'ai pas mis en oeuvre les capteurs de pluviométrie et de température, mon système fonctionne donc plutôt en boucle ouverte (pour faire une analogie avec les systèmes bouclés, même si ici, ce n'est pas tout à fait de cela dont il s'agit).
Il était prévu dès le départ de rajouter les capteurs (au moins celui de pluviométrie), mais je ne l'ai jamais fait, cela fonctionne très bien comme cela, et depuis bien longtemps ! Alors, que cela optimiserai le dispositif en me permettant de moins consommer d'eau inutilement.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 02, 2011, 04:25 pm

Pour moi il faut rester sur le RS485 car pour la domotique on a rarement des distances inférieures a 1 mètre.


En fait c'est ce que j'expliquais par différente installations électrique.

Chez Bribri (je t'ai choisis un petit surnom plus court  :smiley-mr-green:) chaque point actionneur et récepteur (lumineux, prise, ...) reviennent en 1 seul point (étoile) et ne sont pas directement "lié" l'un à la suite de l'autre (actionneur-> automate ->récepteur).


Chez toi ça devrait être comme ceci, un point de départ coffret -> actionneur -> récepteur.


Donc chez Bribri tout les modules devraient être rassemblé en 1 seul point donc faible distance entre eux (pour certaine raison on pourrais avoir un module plus distant comme chaudière, ...), tandis que chez toi (installation classique) chaque module serait plutôt local à chaque pièces d'habitation donc distant.  

Pour moi le mieux serait une installation électrique comme Bribri en étoile (je suppose qu'il l'avait prévu à la construction ou rénovation), mais bon difficile de demandé de modifier son installation existante ... (seignée, cablage, ...  :~)
C'est la principale raison pour beaucoup du choix du x10 (courant porteur) ou du sans fils.


Je pense également que l'utilisation de websockets est la plus appropriée.


Je pense aussi pour le côté full-duplex, j'espère seulement que la normalisation soit bientôt vite définitive, mon autre projet est en pause à cause de cela   :( .

Concerant la partie trame de communication entre modules, je pense à quelque chose comme ça.



Trame globale:
- un octet de début
- un octet de longueur des données de la trame variable (voir la partie DATA).
- Des données dont la taille dépendra du type de donnée (numérique nombre entier, nombre flottant, caractère ou chaine de caractère, ...)   :% :smiley-mr-green:
- un crc de contrôle (16: 2 octet)
- un octet de fin de trame

Détails de la partie DATA:
- un octet de groupe (de 0 à 255) une adresse de groupe pourrais être attribué à un type de groupe par exemple les modules d'entrée/sortie numérique, on pourais spécifié également une adresse de broadcasting genre 255 pour tout les module de ce groupe, ALL UNIT On ou Off.
- un octet d'unité, l'entrée ou sortie spécifique à un module.
- la commande en elle même on/off, demande mesures, ...
- les données de commandes (variable: 1-n, maximum 252 d'après la longueur spécifié en retirant group, unit, command), par exemple 1(on) ou 0(off), pwm (0 à 255), flottant (température, ...), chaine de caractères, ...

La trame ressemblerait à quelque chose comme [0x02-0x04-0xF1-0x05-0x02-0x01-0xC9-0xD3-0x03] , 0x02 start, trame avec 0x04 octet de données, action vers l'unité 0x05 du groupe 0xF1, commande 0x02 (action num) avec pour valeur 0x01 (on), crc de contrôle 0xC9-0xD3, 0x03 end.
Entre () déjà tester http://arduino.cc/forum/index.php/topic,72035.0.html .

Pour la partie RS-485 le maître devra géré les transactions, demande d'envois des modules, ..., gérer le risque de collision (CSMA/DA ?) (collision possible uniquement lors d'une demande de transaction par un esclave puisque les esclaves ne pourront parler ou écouter entre eux que sous ordre du maître ).
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 02, 2011, 07:15 pm
Osaka super travail ce que tu viens de nous faire. Actuellement moi je n'ai aucun système en place mais je souhaite développer une solution "étoile" pour pouvoir l'intégrer dans ma future maison que j'aurais un jour.

Un peu d'aide, je cherche comment lire un capteur ou actionner un capteur en RS485 et je ne trouve rien sur le net. Pour la communication entre arduino ok pas de souci, mais si le capteur est a 100m de l'arduino on fait comment ? Quelqu'un a des sujets qui abordent ce problème ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 02, 2011, 07:40 pm

future maison que j'aurais un jour.


me too, on pourra adapter l'installation suivant le système.  :smiley-mr-green:


Un peu d'aide, je cherche comment lire un capteur ou actionner un capteur en RS485 et je ne trouve rien sur le net. Pour la communication entre arduino ok pas de souci, mais si le capteur est a 100m de l'arduino on fait comment ? Quelqu'un a des sujets qui abordent ce problème ?


J'avais trouvé ceci et d'autre discutions concernant le rs-485 et l'arduino, donc via adaptateur rs-232/485 genre SN75176 ou max-585 qui ne coute pas grand chose.
http://gdallaire.net/blog/?tag=network
http://real2electronics.blogspot.com/2009/09/arduino-and-rs485-english-version.html
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 02, 2011, 07:46 pm

Un peu d'aide, je cherche comment lire un capteur ou actionner un capteur en RS485 et je ne trouve rien sur le net. Pour la communication entre arduino ok pas de souci, mais si le capteur est a 100m de l'arduino on fait comment ? Quelqu'un a des sujets qui abordent ce problème ?


Déjà il y a plusieurs types de capteurs, des capteurs passifs (par exemple LDR, roues codeuses) et d'autres actifs.
Comme je l'ai déjà écrit plus haut la majeure parties des capteurs (non conditionnés) produisent des grandeurs analogiques (microphone pour le son, LDR pour la luminosité, Jauge de contrainte pour la pression, thermistance pour la température, ...).
Une grandeur analogique est une grandeur qui varie de manière continue entre une valeur minimale et une  valeur maximale (la variation n'est pas nécessairement linéaire).
Pour placer ce type de capteur à grande distance, tout dépend des caractéristiques électriques du dit capteur, l'influence du câblage peut-être importante et donc fausser complètement les mesures.
C'est pour cela que l'on conditionne les capteurs et que l'on converti en général les grandeurs analogiques en grandeurs numériques, que l'on va pouvoir transmettre avec beaucoup moins de risques de perturbations.
Ensuite si l'on veut produire la bonne séquence en fonction du protocole choisi, il va falloir la générer.
Pour certains protocoles standards (par exemple I2C), il existe des composants spécialisés, sinon il faut générer les signaux correspondants au protocole et donc autant le faire avec une petite carte Arduino.

Comme certains capteurs conditionnés ont des sorties I2C et qu'il existe des interface matérielles I2C <=> RS 485, il faudra voir dans ces cas là, si cette solution n'est pas plus simple et moins chère  que de mettre une Arduino (même la moins chère) juste pour un capteur.

J'espère avoir répondu clairement à ta question.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: chicotore on Dec 02, 2011, 08:53 pm
Cool encore un projet domotique  ;) bon courage pour ce projet qui prend pas mal de temps ...
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 02, 2011, 09:16 pm
Yep!

Quote
Comme certains capteurs conditionnés ont des sorties I2C et qu'il existe des interface matérielles I2C <=> RS 485, il faudra voir dans ces cas là, si cette solution n'est pas plus simple et moins chère  que de mettre une Arduino (même la moins chère) juste pour un capteur.


Mes cartes relais sont pilotés en Rs485 (cartes achetés toutes faites chez www.sigma-shop.com (http://www.sigma-shop.com) ). Ce qui est interessant est qu'elles sont pilotées en fait par une carte intitulé "RS485 Output Board". Pour rappel, la carte relais possède 8 relais, ce qui sous-entends que la carte controlleur gère 8 canaux. Le controleur est un ATTiny2313/DIP ;)
Il semble être un bon candidat pour accépter 8 sorties, faut voir le datasheet pour l'aspect entrée. Sa limite se situe du côté de la mémoire flash 2Kb. (18 entrées/sorties max, 4 Pwm, 1 full duplex UART). J'ai rien vu côté entrées analogiques par contre...

Les cartes sont pré-adressées et chainables...
(http://imageshack.us/photo/my-images/202/8relayrs48505.jpg/)

Fabriquer un système identique à base d'opto ne doit pas coûter trop cher.

Une question comme çà aux hasard, comment pensez-vous alimenter tout çà ? alimentation unique (ligne 12v/24v + regulateurs), déportée (point par point)  ??

@+

Zoroastre.

PS: 2€74 l'unité chez Farnell, 2€22 chez Digikey
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 02, 2011, 09:20 pm

Ensuite si l’on veut produire la bonne séquence en fonction du protocole choisi, il va falloir la générer.
Pour certains protocoles standards (par exemple I2C), il existe des composants spécialisés, sinon il faut générer les signaux correspondants au protocole et donc autant le faire avec une petite carte Arduino.


N'étant pas spécialisé dans le domaine j'avais pensé aux 1 wire pour les mesures basique tels que température,humidité, ... via ce genre d'interface :
http://www.embeddeddatasystems.com/HA7E--ASCII-1-Wire-Host-Adapter_p_21.html. "1000 feet, 100 devices per CAT-5 twisted net" .
http://www.ibuttonlink.com/linkoem.aspx LinkOEM autonome.
http://www.thermodata.com.au/node/62

J'ai vu ça également
http://www.phanderson.com/arduino/ds2450_1.html
http://code.google.com/p/gfb/source/browse/arduino/DS2450/DS2450.cpp?spec=svn60&r=60

Maintenant je suis sure qu'avec tes compétences il y aurait moyen de faire mieux.  :) :) :)


Cool encore un projet domotique  ;) bon courage pour ce projet qui prend pas mal de temps ...


Tu parles en connaissance de cause ? :smiley-mr-green: .
Tu n'as pas encore testé la dernière solution que je t'avais proposé pour ton shield ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 02, 2011, 10:09 pm

Il semble être un bon candidat pour accépter 8 sorties, faut voir le datasheet pour l'aspect entrée. Sa limite se situe du côté de la mémoire flash 2Kb. (18 entrées/sorties max, 4 Pwm, 1 full duplex UART). J'ai rien vu côté entrées analogiques par contre...


Intéressant ce petit microcontroleur, si je comprend bien c'est de l'atmega light ?
En cherchant un peux j'ai trouvé un chouette tuto ici (http://www.zigobot.ch/fiches-pratiques/45-introduction-aux-microcontroleur/96-premier-schema-a-microcontroleur-avec-un-attiny2313.html) qui explique un peux le microcontroleur (avec justement unATTiny2313) pour les amateurs comme moi.  :smiley-surprise:


Une question comme çà aux hasard, comment pensez-vous alimenter tout çà ? alimentation unique (ligne 12v/24v + regulateurs), déportée (point par point)  ??


Excellente question, je comptais justement sur la communauté pour répondre à ce genre de question qui peux paraitre simple mais compliqué en réalité :smiley-mr-green:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 02, 2011, 10:53 pm

Une question comme çà aux hasard, comment pensez-vous alimenter tout çà ? alimentation unique (ligne 12v/24v + regulateurs), déportée (point par point)  ??

Excellente question, je comptais justement sur la communauté pour répondre à ce genre de question qui peux paraitre simple mais compliqué en réalité :smiley-mr-green:


Je pense qu'il y a deux solutions réalistes :
1) il faut  2x2 fils :  2 fils pour l'alimentation et 2 fils pour la liaison différentielle RS 485.
    A partir du moment où il faut tirer un câble !
2) on refait une petite alimentation (même sans transfo) s'il y a du 230VAC à proximité du point d'arrivée où sera installé le capteur et on ne tire qu'une paire torsadée pour la liaison différentielle.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: chicotore on Dec 03, 2011, 12:44 pm
Quote
Tu parles en connaissance de cause ?  .
Tu n'as pas encore testé la dernière solution que je t'avais proposé pour ton shield ?


Ne t'inquiète pas j'ai bien gardé sous le coude ton dernier code et t'en remercie mais pour le moment je n'est absolument pas le temps de bidouiller mon arduino et même de passer sur le forum ...
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Oliv4945 on Dec 03, 2011, 12:55 pm
Beau projet ! ça ne va pas du tout avec mes besoins donc je vais juste me contenter de suivre sans être actif mais bon courage !!
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 03, 2011, 01:21 pm
Merci pour tes encouragements.

Quels sont tes besoins, cela peut donner des idées si c'est en domotique.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Oliv4945 on Dec 03, 2011, 02:20 pm
Salut,

Je vais faire un sujet tout à l'heure pour présenter mon projet mais en gros mon but est de mettre le moins d'éléments possible par soucis de place, de coût, d'esthétisme et… de câblage, contrairement à vous je suis en location et je n'ai pas de câbles utilisables  ;)
Du coup pour le moment j'ai un Arduino qui fait tout mais je pense que je vais tendre vers un uC par pièce + un qui gèrera l'ethernet, et un autre pour l'acquisition téléinfo EDF pour vérifier les ordres sur le chauffage électrique, le tout sans fils  ;)

Edit : présentation de mon projet (http://arduino.cc/forum/index.php/topic,81304.0.html)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 03, 2011, 04:04 pm
Nos objectifs, et donc nos préoccupations, même si elles ne sont pas identiques ne sont pas si éloignés que cela ;
J'ai jeté un coup d'œil à la présentation de ton projet, pour ce que tu décris comme étant fait, correspond d'un point de vue fonctionnel (et pour une grande partie matérielle) à ce que je veux faire :
A partir d'un Arduino Mega + Ethernet shield + horloge temps réel (DS 1307) commander des sorties en fonction de l'état de capteurs et selon des plages horaires.
Pouvoir visualiser et modifier l'état du système et modifier les plages horaires via le web, ou au minimum par le réseau local.
Si j'en étais là où tu en es, j'aurais réglé une grande part de ce qui me préoccupe !
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Oliv4945 on Dec 03, 2011, 04:32 pm

Nos objectifs, et donc nos préoccupations, même si elles ne sont pas identiques ne sont pas si éloignés que cela ;

Effectivement, mais je pense que les réalisations seront très différente. Enfin selon comment vous orientez tout ça je viendrais me greffer ;)


Pouvoir visualiser et modifier l'état du système et modifier les plages horaires via le web, ou au minimum par le réseau local.

Via le web et en local à très peu de choses près c'est pareil ne t'en fais pas là dessus


Si j'en étais là où tu en es, j'aurais réglé une grande part de ce qui me préoccupe !

Je suis pas loin si vous avez des questions. Mais sur tout ce qui est "web" Osaka à l'air d'avoir des connaissances bien plus grandes que les miennes  :)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 03, 2011, 04:47 pm

Je suis pas loin si vous avez des questions


Merci pour tes réponses et ta proposition.

Je vais avancer tout doucement, et essayer de comprendre ce que je fais et ce que cela produit comme effets.
Je suis un électronicien de la vieille école, j'ai pas mal programmé en assembleur mais très peu sur des langages plus éloignés de la machine.
J'ai du mal à accepter d'utiliser des fonctions que je ne maîtrise pas, comme des boîtes noires, mais cela viendra !
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Gromain59 on Dec 03, 2011, 09:39 pm
Bonjour à tous les férus de domotique,

je découvre seulement ce topic donc j'arrive un peu tard...

J'ai lu que vous faisiez référence à mon projet xPLduino, un ensemble de module compatible arduino interconnectés via Ethernet (protocole UDP pour le transport, protocole XPL pour le formatage des messages). :)

Je confirme que le choix d'un seul arduino gérant une multitude de fonction (volet, éclairage...) est un mauvais choix. C'était mon choix avec xplduino_v1. L'idée était de profiter du grand nombre d'E/S d'une Mega et de limiter les couts car le shield Ethernet Wiznet n'est pas donné.
Le point fort:
- ça marche en production depuis 1 an, sans problème majeur
Les points faibles:
- une maintenabilité du code assez pénible (nombreuses fonctions logicielles empilées)
- une mise à jour impossible sans black-out de la maison (au moins le temps du chargement du soft, plus si loupé dans les modifs)
- une intégration mécanique de l'arduino dans un boitier délicate

Entre temps, j'ai étudié la solution Ethernet à base d'ENC28J60. Elle fut plus complexe à mettre en oeuvre au départ car l'arduino à plus de travail à réaliser: les datagrammes arrivent brutes de décoffrage au contraire du wiznet qui fait le gros du boulot.
Mais finalement ce n'était pas la mer à boire. En a découlé xplduino_v2 qui est bien avancé désormais. Le code de la v1 est porté à 80% en v2, les performances sont satisfaisantes.
La version 2 s'architecture autour d'un µC plus modeste (atmega328p) et d'un ethernet plus basique (débit 10mbps). Tous les composants existent au format DIP, donc je vais pouvoir réaliser une carte 2-en-1 qui s'intégrera parfaitement dans les boitiers sur rail DIN du marché, et qui sera très peu cher. La répartition des fonctions sur plusieurs modules interconnectés mais néanmoins autonomes apporte une plus grande fiabilité et flexibilité. Le code est commun à toutes les modules, mais optimisé pour chaque type de modules (éclairage, volet, E/S). La maintenance est simplifié.

Maintenant, pourquoi le choix de l'ethernet UDP ? je dirais le choix d'une certaine modernité lol. C'est le média universel et moderne par excellence. Alors oui, il nécessite un switch pour faire communiquer plusieurs modules entre eux, mais qui n'a pas de switch chez lui ? Il permet de s'affranchir des distances, et est modulaire (topologie en étoile, pas besoin de faire courir un bus dans toute la maison, on peut étendre le réseau à l'infini).

J'ai bien hésité un moment entre RS485, I2C et CAN, mais je trouve ces technos certes éprouvés, mais soit pas adpatés (I2C) soit d'une autre époque (RS485). Pour le CAN, d'une grand fiabilité, il est malheureusement très mal implémenté dans les arduino/atmega. Pour l'utiliser, autant partir sur l'excellent projet Domocan de BigOnOff, mais c'est du Pic. Toute la documentation est en wallon.

Au début du projet j'avais commencé à écrire mon propre protocole (largement pompé sur domocan d'ailleurs), mais je me suis vite rendu compte que l'ouverture vers le monde extérieur serait vite limitée. Puis j'ai découvert le protocole xPL (à ne pas confondre avec la techno CPL hein !!!). C'est un protocole ouvert, assez bien documenté, et supporté par un nombre croissant d'équipement (Squeezebox par ex) et de solutions logiciel (DOMOGIK étant ma préférée car 100% open-source, avec une IHM web, une appli android fonctionnelle et cerise sur le gateau, française). Son but est justement d'unifier l'incroyable profusion de techno plus ou moins propriétaires du monde de la domotique en faisant abstraction de la techno (plcbus, knx, x10, RF etc.).

Mais bon, libre à vous de créer un n nième protocole domotique  :D

Voilà pour mon modeste point de vue.

@ bientôt

Gromain59

PS1: un début de spécification de xplduino_v2 ici (http://gromain.zapto.org/xplduino/doku.php?id=specifications_v2).
PS2: je suis toujours ouvert à toute collaboration ;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Chajo on Dec 03, 2011, 10:06 pm
Bonsoir,

J'ai découvert ce forum et particulièrement ce post cet après-midi. J'aime la démarche collaborative, d'autant plus que je ne dispose pas de toutes les compétences. Je suis moi-même intéressé par certaines fonctions domotiques et leur implémentation sur des modules arduino.

Tout comme Brisebee je suis un électronicien de la vieille école ayant programmé beaucoup en assembleur sur le 6809 entre autres et en turbopascal (un peu de C également). Depuis quelques années, je suis en retraite et forcément, je dispose de peu de temps...pour moi.

Ceci dit, je réfléchis depuis pas mal de temps sur un système de gestion domotique qui incluerait au minimum les fonctions suivantes :

- commande chauffage électrique (modif consignes, contrôle température donc bouclage des ordres)
- contrôle consommation électrique générale
- contrôle production photovoltaïque (comptabilisation production et pour vérifier que le différentiel n'a pas disjoncté)
- système d'alarme intrusion
- consultation par le web
- envoi de sms sur portable sur évènements prédéfinis (plus performant que la retransmission tph)

Je dispose d'ores et déjà d'un serveur que j'ai construit sous ubuntu sur mon réseau local.

Charles
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 03, 2011, 11:49 pm
Yep!

Je ne suis pas tout à fait d'accord sur la multiplication des arduinos...Je concois naturellement qui'il faut quelque-chose à l'autre bout pour interpréter les messages.
Gromain59, d'ailleurs, nous apporte une solution qui va à contrario, même si au demeurant, j'ai bien entendu son bêmol.
Il faut considérer que dans un système de communication multiple, les appels, traitements et retours d'information feront certainement appel à une gestion des latences rigoureuses. Les trains d'informations devront être entre-coupés d'attentes afin de libérer le bus le temps que se forme la réponse. De plus, Je choisirais plutôt une liaison 4 fils. Deux pour l'émission, deux pour la réception. Dans ce cas ci, les trains seront plus rapides, mais les attentes existeront toujours, l'arduino maître aura sa propre latence et il ne peut se passer des retours.
Si l'idée est de gérer 4 pièces par exemples, en sus du maestro, nous avons 5 arduinos à considérer avec chacunes sa propre vitesse d'execution, sa propre faculté à composer le message et l'envoyer. Vous me direz, qu'est-ce 50 ou 80 ms !!! Cependant, si l'on double les arduinos, je vous laisse deviner...(pas sûr que ce soit proportionnel en plus)

Gromain59 utilise le protocole UDP via une liaison ethernet 10Mbit. Mais que veut dire
Quote
les performances sont satisfaisantes.
et combien d'arduino as-tu sur ta nouvelle topologie ?? UDP = perte possible, qu'en est-il ???

Je suis persuadé que l'on est loin d'utiliser toutes les capacités du langage de programmation. Sans évoquer le multitâche (*qui n'existe pas en fait), je pense qu'il faut cependant s'en inspirer. La principale limitation de la plupart des micro-controleur se situe dans la gestion serie des tâches qui lui incombe, séquentielle, j'ai souvent mesuré les temps d'execution de mes programmes, pour voir, et j'ai été régulièrement surpris de constater que le programme mettait 3 fois plus de temps à dérouler sa boucle dés qu'il y a communication (en moyenne 30-40 ms).

Vous me direz qu'une arduino par tâche est plus rapide qu'une seule qui s'occupe de tout, cependant ce que vous gagnez en vitesse d'execution, vous risquez de le perdre en communication.

Pour en revenir à la programmation, il manque plusieurs chose pour optimiser la gestion des tâches. Premièrement, il faut établir des règles de priorités et des règles de décisions. Je m'entends, si deux informations arrivent en même temps ou à peu d'intervalle, une avec un priorité "0", l'autre "1" (ou 2, ou 3, etc), j'execute d'abord la première.
Secondement, il faut stocker ces tâches, les trier, les executer en utilisant une partie de la mémoire flash (rapide?) et en s'inspirant des règles du premièrement. Ainsi, on se rapprocherait du *préemptif que je suggérais plus haut. J'ai un ordre local et distant simultanément, je donne la priorité à l'ordre local. Le message y, arrivé aprés x, est plus important. Etc.

Pour ma part, je commence à envisager également une évolution de mon projet, je m'oriente plutôt sur une carte à deux microcontroleurs (ATMEGA644), avec règles de décision, priorités et délégations vers le second processeurs au cas par cas. Du simili-clustering ou par analogie avec les automates modernes, une tâche rapide et une seconde pour le reste. J'y vois comme avantage la proximité entre les deux processeurs, donc des temps de communication trés réduit, doublement de la force de calcul (si j'arrive à implémenter du vrai clustering), une  plus grande réactivité face aux événements multiples.
Je commence à me documenter sur différents algos qui pourraient m'aider dans cette tâche. Je ne suis pas encore arrété sur le protocole "ethernet".


@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 04, 2011, 09:24 am

J'ai lu que vous faisiez référence à mon projet xPLduino, un ensemble de module compatible arduino interconnectés via Ethernet (protocole UDP pour le transport, protocole XPL pour le formatage des messages). :)

Entre temps, j'ai étudié la solution Ethernet à base d'ENC28J60. Elle fut plus complexe à mettre en oeuvre au départ car l'arduino à plus de travail à réaliser: les datagrammes arrivent brutes de décoffrage au contraire du wiznet qui fait le gros du boulot.
Mais finalement ce n'était pas la mer à boire. En a découlé xplduino_v2 qui est bien avancé désormais. Le code de la v1 est porté à 80% en v2, les performances sont satisfaisantes.
La version 2 s'architecture autour d'un µC plus modeste (atmega328p) et d'un ethernet plus basique (débit 10mbps). Tous les composants existent au format DIP, donc je vais pouvoir réaliser une carte 2-en-1 qui s'intégrera parfaitement dans les boitiers sur rail DIN du marché, et qui sera très peu cher. La répartition des fonctions sur plusieurs modules interconnectés mais néanmoins autonomes apporte une plus grande fiabilité et flexibilité. Le code est commun à toutes les modules, mais optimisé pour chaque type de modules (éclairage, volet, E/S). La maintenance est simplifié.

Maintenant, pourquoi le choix de l'ethernet UDP ? je dirais le choix d'une certaine modernité lol. C'est le média universel et moderne par excellence. Alors oui, il nécessite un switch pour faire communiquer plusieurs modules entre eux, mais qui n'a pas de switch chez lui ? Il permet de s'affranchir des distances, et est modulaire (topologie en étoile, pas besoin de faire courir un bus dans toute la maison, on peut étendre le réseau à l'infini).


Disons que l'idée d'utilisé l'udp ou tcp/ip est tentant  niveau "facilité" de communication, mais comme tu le dis le Wiznet n'est pas donné et l'enc28j60 rajoute une grosse surcouche niveau programme donc source processeur et mémoire  :~
Le fait d'être limité par le nombre de ports du/des switch me dérange également, sauf à prendre en conséquence ou en les empilant, mais bon consommation et cout serait également de la partie.
J'aime également la pensée de maitrisé la chaine d'un bout à l'autre d'où le choix d'une solution "simple"  :smiley-sweat: à déployé tel que rs-485.
Enfin tout ça est plutôt un avis et une réflexion personnel parce que cette solution est parfaitement sensée et valable et je ne contredirais pas ton choix là dessus .


J'ai bien hésité un moment entre RS485, I2C et CAN, mais je trouve ces technos certes éprouvés, mais soit pas adpatés (I2C) soit d'une autre époque (RS485). Pour le CAN, d'une grand fiabilité, il est malheureusement très mal implémenté dans les arduino/atmega. Pour l'utiliser, autant partir sur l'excellent projet Domocan de BigOnOff, mais c'est du Pic. Toute la documentation est en wallon.


J'avais également pensé au can mais c'est clair mal implémenté et les solutions rencontrée (shield tout aussi couteux que le wiznet) n'apporte rien de plus à comparé avec udp ou tcp/ip par exemple.
L'I2C je préfère le réservé à d'autre chose.
Le rs-485 d'une autre époque d'accord mais toujours maintenue et largement utilisé en entreprise (ce n'est pas pour rien).
Une chose qui a tendance à saouler de nos jours c'est l'utilisation à outrance de nouvelle technologies certe moderne mais surdimensionné pour des chose simple et basique qui n'en on pas besoin.
Je pense par exemple à l'usb qui ne fait que rajouté une complexité (drivers donc dépendance constructeur, os, etc ...) pour certaine tache qui n'en on pas l'utilité, une utilité c'est indéniable il en a mais c'est surtout le fait d'en faire une généralité et l'unique moyen de communiqué.

"Toute la documentation est en wallon" en effet, on distingue quelques mots c'est tout.  :smiley-mr-green:


Au début du projet j'avais commencé à écrire mon propre protocole (largement pompé sur domocan d'ailleurs), mais je me suis vite rendu compte que l'ouverture vers le monde extérieur serait vite limitée. Puis j'ai découvert le protocole xPL (à ne pas confondre avec la techno CPL hein !!!). C'est un protocole ouvert, assez bien documenté, et supporté par un nombre croissant d'équipement (Squeezebox par ex) et de solutions logiciel (DOMOGIK étant ma préférée car 100% open-source, avec une IHM web, une appli android fonctionnelle et cerise sur le gateau, française). Son but est justement d'unifier l'incroyable profusion de techno plus ou moins propriétaires du monde de la domotique en faisant abstraction de la techno (plcbus, knx, x10, RF etc.).


xpl est bien pour ceux qui veulent profité d'équipements existant, sans trop se prendre le choux ou avoir besoin de maitrisé tel ou tel technologie, mais bon une nouvelle fois personnellement je n'aime pas justement ce côté dispersion/profusion de technologies.
Par contre je peux parfaitement comprendre que ce système est intéressant pour ceux qui n'ont pas la patience, connaissances ou motivation dans ce genre de projet et qu'il est certainement plus utile à la communauté que le notre.
Ça peux paraitre égoïste mais ici ce projet je le fais d'abord pour moi, je ne fais que le partagé et je vais surement avoir plus besoin d'aide de votre part que le contraire.  ;)


Mais bon, libre à vous de créer un n nième protocole domotique  :D


Pas vraiment créer, par exemple ici je ne fais que m'inspiré de ce qui existe déjà et assez commun (simple) entre tout ce que j'ai déjà vu dans le domaine.


Voilà pour mon modeste point de vue.

@ bientôt

Gromain59

PS1: un début de spécification de xplduino_v2 ici (http://gromain.zapto.org/xplduino/doku.php?id=specifications_v2).
PS2: je suis toujours ouvert à toute collaboration ;)


Tout les points de vue sont bon à prendre, même si je peux paraitre têtu et en désaccord je les respectes et comprends parfaitement.
Ton projet risque d'intéressé beaucoup de monde surtout http://www.touteladomotique.com  :smiley-mr-green:
Pour la collaboration pourquoi pas un module xpl justement, c'est tout à fais envisageable sur le bus prévu (surtout pour ce qui est du genre Squeezebox justement  :smiley-mr-green:)
;)

Ps: Vous m'entendez et m'entendrez souvent parlé de "dépendance", développeur objet oblige, le plus gros des différents point de vue avec les "électroniciens" viennent probablement de là.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 04, 2011, 09:24 am

Je ne suis pas tout à fait d'accord sur la multiplication des arduinos...

Il faut considérer que dans un système de communication multiple, les appels, traitements et retours d'information feront certainement appel à une gestion des latences rigoureuses. Les trains d'informations devront être entre-coupés d'attentes afin de libérer le bus le temps que se forme la réponse. De plus, Je choisirais plutôt une liaison 4 fils. Deux pour l'émission, deux pour la réception. Dans ce cas ci, les trains seront plus rapides, mais les attentes existeront toujours, l'arduino maître aura sa propre latence et il ne peut se passer des retours.
Si l'idée est de gérer 4 pièces par exemples, en sus du maestro, nous avons 5 arduinos à considérer avec chacunes sa propre vitesse d'execution, sa propre faculté à composer le message et l'envoyer. Vous me direz, qu'est-ce 50 ou 80 ms !!! Cependant, si l'on double les arduinos, je vous laisse deviner...(pas sûr que ce soit proportionnel en plus)

Gromain59 utilise le protocole UDP via une liaison ethernet 10Mbit. Mais que veut dire
Quote
les performances sont satisfaisantes.
et combien d'arduino as-tu sur ta nouvelle topologie ?? UDP = perte possible, qu'en est-il ???

Je suis persuadé que l'on est loin d'utiliser toutes les capacités du langage de programmation. Sans évoquer le multitâche (*qui n'existe pas en fait), je pense qu'il faut cependant s'en inspirer. La principale limitation de la plupart des micro-controleur se situe dans la gestion serie des tâches qui lui incombe, séquentielle, j'ai souvent mesuré les temps d'execution de mes programmes, pour voir, et j'ai été régulièrement surpris de constater que le programme mettait 3 fois plus de temps à dérouler sa boucle dés qu'il y a communication (en moyenne 30-40 ms).

Vous me direz qu'une arduino par tâche est plus rapide qu'une seule qui s'occupe de tout, cependant ce que vous gagnez en vitesse d'execution, vous risquez de le perdre en communication.


Là dessus il s'agit plus du choix entre dépendances et performances, disons qu'il faut chercher le meilleurs compromis mais que l'un n’empêche pas l'autre.
La seule solution c'est de testé et comparé, mais je me doute que les choses ne seront pas simple à mettre en œuvre (mais le plaisir dans tous ça est peut être justement là  :) ).


Pour en revenir à la programmation, il manque plusieurs chose pour optimiser la gestion des tâches. Premièrement, il faut établir des règles de priorités et des règles de décisions. Je m'entends, si deux informations arrivent en même temps ou à peu d'intervalle, une avec un priorité "0", l'autre "1" (ou 2, ou 3, etc), j'execute d'abord la première.
Secondement, il faut stocker ces tâches, les trier, les executer en utilisant une partie de la mémoire flash (rapide?) et en s'inspirant des règles du premièrement. Ainsi, on se rapprocherait du *préemptif que je suggérais plus haut. J'ai un ordre local et distant simultanément, je donne la priorité à l'ordre local. Le message y, arrivé aprés x, est plus important. Etc.


Pour cela j'avais pensé à la méthode/protocole CSMA (CA/DA ...) similaire à ta description.


Pour ma part, je commence à envisager également une évolution de mon projet, je m'oriente plutôt sur une carte à deux microcontroleurs (ATMEGA644), avec règles de décision, priorités et délégations vers le second processeurs au cas par cas. Du simili-clustering ou par analogie avec les automates modernes, une tâche rapide et une seconde pour le reste. J'y vois comme avantage la proximité entre les deux processeurs, donc des temps de communication trés réduit, doublement de la force de calcul (si j'arrive à implémenter du vrai clustering), une  plus grande réactivité face aux événements multiples.
Je commence à me documenter sur différents algos qui pourraient m'aider dans cette tâche. Je ne suis pas encore arrété sur le protocole "ethernet".


J'ai également pensé au 644p que j'ai vu sur le projet sanguino, enfin ce qui m'avais intéressé ce sont les deux uart pour justement faire du full-duplex rs-485 4 fils.
Faudra absolument que tu nous tiennes aux courant de tes évolutions très intéressante.  ;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 04, 2011, 10:16 am

Je confirme que le choix d'un seul arduino gérant une multitude de fonction (volet, éclairage...) est un mauvais choix. C'était mon choix avec xplduino_v1. L'idée était de profiter du grand nombre d'E/S d'une Mega et de limiter les couts car le shield Ethernet Wiznet n'est pas donné.
Le point fort:
- ça marche en production depuis 1 an, sans problème majeur
Les points faibles:
- une maintenabilité du code assez pénible (nombreuses fonctions logicielles empilées)
- une mise à jour impossible sans black-out de la maison (au moins le temps du chargement du soft, plus si loupé dans les modifs)
- une intégration mécanique de l'arduino dans un boitier délicate


Mon idée est d'avoir un Arduino maître qui « gère » des unités de commandes autonomes, qui selon le cas peuvent être :

1) simplement des éléments matériels avec les parties puissance par exemple pour la commande des fils pilote d'une installation de chauffage électrique où chaque pièce est équipée d'un thermostat avec un fil pilote, cette unité de commande (dont je joins le schéma pour une voie) est autonome puisqu'elle peut fonctionner en mode manuel (avec l'interrupteur) ou en mode automatique, alors l'automate (arduino) lui envoie :
- 0V : mode normal => la température de consigne est celle affichée sur le thermostat,
- 5V : mode réduit => la température de consigne est celle affichée sur le thermostat - 5°C
En fonction de plages horaires et ou de commandes (forçage dans un mode ou l'autre) par le web.

2) des dispositifs plus complexes qui peuvent nécessiter d'avoir leur propre processeur pour être autonomes, et ne recevoir que des commandes simples ou avec passage de paramètres de l'unité « maitre » et renvoyer des comptes rendus et des données là aussi limités. Je pense que dans un premier temps je n'aurai pas besoin de tels dispositifs.

Pour ce qui est de la maintenabilité du code, tu as raison. Même si on essaye de faire les choses très proprement, de documenter un maximum et de programmer d'une façon modulaire, c'est tout de même problématique.

Pour la question de la mise à jour et du black-out, si toutes les unités de commande sont autonomes, cela ne devrait pas poser de problème.

Pour ce qui est du boitier, je n'ai pas ce problème, j'ai un local technique, où j'ai mes tableaux électriques, alarmes, répartiteur téléphonie, système domotique actuel, switch Ethernet et NAS.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Artouste on Dec 04, 2011, 02:13 pm
bonjour
je lis ce topic depuis quelques jours.

ma petite expérience sur la "domotisation" qui vaut ce qu'elle vaut :
il y a quelques années j'ai voulu un peu "domotiser ma "petite campagne"   :smiley-mr-green: que j'occupe très épisodiquement.

l'écueil principal est AMHA le vecteur du transfert fiable de l'info.
Si sur de la construction neuve, il est facile de réfléchir et d'intégrer du câble, ce n'est pas évident sur de l'ancien.

j'avais donc regardé du coté du X10 (à l'époque le CPL du pauvre  :smiley-mr-green: ) et j'avais implémenté ça sur de la base PIC.
pour mémoire, je me souviens avoir bien galéré sur de l'implémentation issue de schéma/code  US , jusqu'à ce que je me rappelle qu'il y a une grande différence pour le X10 entre réseaux 50 et 60 Hz   8) )

mais j'ai assez vite abandonné l'évolution , mon "cahier des charges" se limitant à
être prévenu d'une ouverture d'accès, d'une baisse de t°, de pouvoir à distance mettre hors gel , mettre en route chauffage/eau chaude
quelques heures avant que j'arrive.

je fais ça "à l'ancienne" depuis pas mal d'année avec un bon vieux modem RTC  à 4800 devant un PIC   8)  (mais ça pourrait maintenant être arduino based )

La RS485 dont la fiabilité n'est plus à démontrer (différentiel) avec des compo dispos éprouvés à "pas trop cher" est une bonne solution, mais il faut quand même et toujours d'abord "tirer du câble"






Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 04, 2011, 05:36 pm

l'écueil principal est AMHA le vecteur du transfert fiable de l'info.
Si sur de la construction neuve, il est facile de réfléchir et d'intégrer du câble, ce n'est pas évident sur de l'ancien.

j'avais donc regardé du coté du X10 (à l'époque le CPL du pauvre  :smiley-mr-green: )


Ça rejoint tout à fais ma remarque précédente.

Quote

Pour moi le mieux serait une installation électrique comme Bribri en étoile (je suppose qu'il l'avait prévu à la construction ou rénovation), mais bon difficile de demandé de modifier son installation existante ... (seignée, cablage, ...  :~)
C'est la principale raison pour beaucoup du choix du x10 (courant porteur) ou du sans fils.



La RS485 dont la fiabilité n'est plus à démontrer (différentiel) avec des compo dispos éprouvés à "pas trop cher" est une bonne solution, mais il faut quand même et toujours d'abord "tirer du câble"


Ça nous conforte dans notre choix.  :)


Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 04, 2011, 08:29 pm
Ce que je peu retenir, c'est que dans l'idéal,il faut :

- un arduino + ethernet pour les commandes depuis l'extérieur qui jouerait le rôle de maître
- un arduino par pièce pour gérer les différents capteurs et actionneurs (plus de problème pour la distance entre capteurs et arduino)(pourquoi pas intégrer le tout dans un plafonnier a voir)
- un bus RS485 pour faire communiquer les arduinos entre eux
- le protocole Xpl pour le transmission des consignes et des valeurs des capteurs

Maintenant il y a des câbles a tirer et encore pas trop, mais dans n'importe quel cas il faudra tirer des câbles.

Vous êtes d'accord avec moi ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: 68tjs on Dec 04, 2011, 09:11 pm
Je ne peux pas vous servir à grand chose mais je sais où aller chercher les normes.
Ci joint deux documents provenant de l'ITU (ex CCITT) sur les normes RS-485.
Pour info :
IUT = en français : UIT = union internationale des télécommunication
CCITT = comité consultatif international téléphonique télégraphique
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 04, 2011, 09:27 pm

Ce que je peu retenir, c'est que dans l'idéal,il faut :

- un arduino + ethernet pour les commandes depuis l'extérieur qui jouerait le rôle de maître
- un arduino par pièce pour gérer les différents capteurs et actionneurs (plus de problème pour la distance entre capteurs et arduino)(pourquoi pas intégrer le tout dans un plafonnier a voir)
- un bus RS485 pour faire communiquer les arduinos entre eux
- le protocole Xpl pour le transmission des consignes et des valeurs des capteurs

Maintenant il y a des câbles a tirer et encore pas trop, mais dans n'importe quel cas il faudra tirer des câbles.

Vous êtes d'accord avec moi ?


Oulàlà il y a comme une grosse méprise ou confusion dans ta description de mon (notre ?) idéal  :*.

-  Moi je pars plutôt sur un micro serveur (web) avec quelque chose genre http://www.friendlyarm.net/products/micro2440 (non arduino) connecté au bus via son rs-232.
Un arduino+ethernet en client donc serveur en complément obligatoire, l'arduino+eth ne serais qu'un intermédiaire entre le serveur et le système, si le serveur peux se connecté aux système directement pas besoin d'arduino+eth.

- Pas un arduino par pièces mais plutôt par "fonctions" et tous réunis au même endroit (coffret) sauf pour certains préférable comme un module dédié à la chaudière par exemple. (d'où le fait que j'ai parlé de l’installation électrique général en étoile) .
Maintenant l'arduino par pièces est possible, dans le premier cas grande longueur de câbles électrique (vob 1,5²/2,5² ...) et dans ce l'autre grande distance du cablage de bus.
Pour la partie capteurs divers on avais parlé de conversion analogique/numérique pour palier le problème de distance.
- rs-485 à l'unanimité.  :smiley-mr-green:
- Xpl c'est la solution de gromain pour l’interconnexion avec d'autre système hors arduino.


J'essaierais une fois de refaire des dessins/schémas/diagrammes des différentes solution envisagée.  ;)
;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 04, 2011, 09:29 pm

- un arduino + ethernet pour les commandes depuis l'extérieur qui jouerait le rôle de maître

Ce sera aussi l'horloge du système.


- un arduino par pièce pour gérer les différents capteurs et actionneurs (plus de problème pour la distance entre capteurs et arduino)(pourquoi pas intégrer le tout dans un plafonnier a voir)


Il faudra voir en fonction des configurations et des fonctionnalités recherchées par chacun, s'il est utile de mettre un Arduino par pièce. Pour ce qui me concerne j'ai une maison avec une cave ou vide sanitaire accessible => tout le Rez de Chaussée peut-être accessible par là, et par ailleurs j'ai des combles accessibles => tout l'étage peut-être accessible par les combles, et des réservations faites à la construction permettent de tirer des câbles entre le local technique qui se trouve à la cave et les combles. Tout cela pour dire qu'à priori, avec deux ou trois Arduino, dont le maître, je devrais pouvoir tout faire. Mais sur le principe, cela ne change rien, à partir du moment où il y a plusieurs Arduino, il faudra les faire communiquer.


- un bus RS485 pour faire communiquer les arduinos entre eux
- le protocole Xpl pour le transmission des consignes et des valeurs des capteurs


Je ne connais pas le protocole Xpl, mais je ne demande qu'à apprendre !

J'ai commencé à faire quelques essais sur mon nouveau matériel : Arduino Mega 2560 + Ethernet shield + Horloge DS1307 :
Tout fonctionne avec des bouts de programme trouvés à droite et à gauche et surtout sur l'excellent site très pédagogique : mon-club-elec.fr
Je vais bientôt pouvoir commencer à travailler concrètement sur le projet.

Pour l'instant il faut que je trouve le moyen de passer les paramètres de plages horaires, depuis le serveur web vers l'Arduino, si quelqu'un sait faire, je suis preneur, si possible avec des explications.
Je sais, je suis exigeant, mais j'aimerais bien comprendre ce que je fais.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 04, 2011, 09:45 pm

Je ne peux pas vous servir à grand chose mais je sais où aller chercher les normes.
Ci joint deux documents provenant de l'ITU (ex CCITT) sur les normes RS-485.
Pour info :
IUT = en français : UIT = union internationale des télécommunication
CCITT = comité consultatif international téléphonique télégraphique


Génial pour ma compréhension de celui-ci.  :)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 04, 2011, 09:52 pm

Pour l'instant il faut que je trouve le moyen de passer les paramètres de plages horaires, depuis le serveur web vers l'Arduino, si quelqu'un sait faire, je suis preneur, si possible avec des explications.
Je sais, je suis exigeant, mais j'aimerais bien comprendre ce que je fais.


Peut être ouvrir un post dédié à celui-ci pour avoir plus d'aide ?
Quel sont tes connaissances niveau langage web (html, php, javascript, ...)?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 04, 2011, 10:06 pm

Peut être ouvrir un post dédié à celui-ci pour avoir plus d'aide ?
Quel sont tes connaissances niveau langage web (html, php, javascript, ...)?


Tu as raison, c'est ce que je ferai le moment venu, pour l'instant il faut d'abord que je comprenne les programmes qui tournent :
- Affichage de l'horloge sur LCD
- Serveur web avec commande d'un LED depuis le serveur
Cela me prendra sûrement du temps.

Mes connaissance des langages web sont très faibles, mais je compte bien là aussi progresser.
J'avance tout doucement sur le site du zéro.
Cela fait beaucoup de choses à la fois !
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 04, 2011, 10:33 pm

J'avance tout doucement sur le site du zéro.
Cela fait beaucoup de choses à la fois !


Très bonne idée le site du zéro, n'hésite pas à demandé si besoin.  ;)
J'ai voulu commencé la partie communication mais un souci http://arduino.cc/forum/index.php/topic,81484.0.html m'a coupé dans mon élan.  :smiley-mr-green:
Entre () l'arduino mini est très très intéressant je trouve et pour mini il est vraiment mini je dirais même micro, 6x (2x en longueur et 3X en largeur) plus petit en comparaison avec ma duemilanove :smiley-eek: et pour un prix entre 7/10 € pièce en chine je crois que je vais m'en commandé quelques un  :smiley-mr-green:.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Oliv4945 on Dec 04, 2011, 10:44 pm
Quote

Pour l'instant il faut que je trouve le moyen de passer les paramètres de plages horaires, depuis le serveur web vers l'Arduino, si quelqu'un sait faire, je suis preneur, si possible avec des explications.
Je sais, je suis exigeant, mais j'aimerais bien comprendre ce que je fais.

Je suis sur un telephone mais je te montre demain un exemple. Sinon tu peux aussi regarder du cote du protocole ntp (Network Time Protocole) qui doit etre inclus dans la librairie ethernet
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 04, 2011, 10:49 pm
Pour ma part j'ai des connaissances plutôt bonne en html, php,css et sql donc je peut essayer de gérer l'interface web pour le moment car je n'ai pas encore mon arduino, c'est prévu pour noël XD.

Maintenant il va falloir que je regarde comment marche les websockets car je ne maîtrise pas trop.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 04, 2011, 11:04 pm

Maintenant il va falloir que je regarde comment marche les websockets car je ne maîtrise pas trop.


De ce côté là les websocket fonctionne comme les socket normal, la seule différence ce situe aux niveau du handshake (contrôle) à l'initialisation entre le client et le serveur.
C'est d'ailleurs à cause de ce hanshake que ce situe mon problème avec la normalisation toujours pas définitive  :( .

Le fonctionnement de base entre le(s) client(s) et le serveur avec JavaScript est assez simple.

Code: [Select]

function init(host)
{
  try
  {
    if(window.MozWebSocket)
    {
      socket = new window.MozWebSocket(host, 'DDuino');  //initialisation avec le serveur (version Mozilla)
    }
    if(window.WebSocket)
    {
      socket = new window.WebSocket(host, 'DDuino'); // (autres navigateurs)
    }
   
    socket.onopen    = function(msg){ log("Welcome - status "+this.readyState); }; //événement sur ouverture.
    socket.onmessage = function(msg){ log(msg.data);parseJSon(msg.data); }; //événement sur réception message.
    socket.onclose   = function(msg){ log("Disconnected - status "+this.readyState); }; // événement sur fermeture de connexion.
   
  }
  catch(ex)
  {
    log(ex);
  }
}

function send(textejson)
{
  try{ socket.send(JSON.stringify(textejson));  } catch(ex){ log(ex); } //socket.send méthode d’envois au serveur.
}

Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 04, 2011, 11:08 pm
Très instructif merci, mais je n'utilise pas trop le javascript aurait tu un exemple avec le code de l'arduino en client et le code sur le serveur ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 04, 2011, 11:29 pm
Sans JavaScript pas possible pour l'instant d'utilisé les websocket côté clients (navigateurs), comme le websocket et le code javascript s'exécute côté client (ton navigateur).  :~ .
Pour la communication entre le serveur (software) et le socket simple de l'arduino,  j'ai utilisé un serveur de websocket en php que j'ai du remanier pour en faire un système hybride socket/websocket.
Donc il accepte les clients websocket (navigateurs) et socket simple (pour l'arduino).
Mes sources se trouvent ici http://arduino.cc/forum/index.php/topic,72035.0.html

J'ai bien tenté d'implémenté les websocket sur l'arduino, mais bugger et trop lourd pour celui-ci apparemment.
Peut être que je retenterais plus tard mais comme je ne compte pas utiliser le shield ethernet de mon côté (serveur directement sur le bus via rs-232) pour le projet comme expliqué dans mon post précédent en haut de la page .
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 05, 2011, 08:06 pm
Yep!

Pour la partie web évoquée, je serais plutôt tenté de faire appel à quelques prodiges du php pour nous pondre un jolie cms dédié à l'architecture multiple et modulable qui se profile dans nos esprits.
Un peu dans la lignée de phpnuke (the most famous  :smiley-eek-blue: ) où l'administrateur aurait la jouissance d'ajouter ou de retirer autant de module qu'il veut en fonction de son installation propre.
Par contre, je ne peux pas trop parler du javascript, je n'ai que des notions trés basiques, mais ne serait-il pas préferable dans la lignée que j'ai évoqué plus haut de parler cgi, script python, php, perl ???
Je n'ai rien contre le javascript, mais il y a tant de réussite avec d'autres langages que j'ai du mal à comprendre cette perséverence...

Pour revenir aux prémices du projet et comme tout le monde semble être d'accord sur la partie gestion du chauffage. Je propose mon script sur pastebin, il pourra ainsi servir de base documentaire et permettra d'éviter certaines erreurs auquelles on ne pense pas toujours.

furnace.pde : http://pastebin.com/u/zoroastre74 (http://pastebin.com/u/zoroastre74)
(Escusez l'aspect trés brouillon du script, j'écrit mes librairies en ce moment pour clarifier l'ensemble.)

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Oliv4945 on Dec 05, 2011, 08:22 pm
Quote

Par contre, je ne peux pas trop parler du javascript, je n'ai que des notions trés basiques, mais ne serait-il pas préferable dans la lignée que j'ai évoqué plus haut de parler cgi, script python, php, perl ???
Je n'ai rien contre le javascript, mais il y a tant de réussite avec d'autres langages que j'ai du mal à comprendre cette perséverence...

Salut,
En fait tous les langages que tu cites sont "équivalents" car exécutés sur le serveur, mais si tu veux du dynamisme côté client tu n'as pas le choix, et il faudra forcément passer par du javascript
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 05, 2011, 08:57 pm


Par contre, je ne peux pas trop parler du javascript, je n'ai que des notions trés basiques, mais ne serait-il pas préferable dans la lignée que j'ai évoqué plus haut de parler cgi, script python, php, perl ???
Je n'ai rien contre le javascript, mais il y a tant de réussite avec d'autres langages que j'ai du mal à comprendre cette perséverence...


Le problème ici concerne les websockets, c'est la seul façon de maintenir une connexion client/serveur et d'avoir une interaction temps réel entre ton navigateur(socket client) et le serveur de websocket (non serveur de contenu qui lui par contre peut être écrit dans le langage que tu veux, php, python, perl, java, ...) (le serveur de websocket peux également être écrit dans le langage que tu veux, je l'ai d'ailleurs fais en php).
Ici comme javascript est interprété par le navigateur l'api du w3c dans ce langage semble évident puisque celui ci est le seul langage que les différents navigateurs sont capable d'interprété, (hormis html, css, ... non dynamique).
Maintenant comme précisé le contenus (global même le code javascript interprété par le navigateur) peux être gérer dynamiquement dans le langage que tu désires, javascript et les websocket ne seront utilisé que pour changer en temps réels certaine données de ce contenu (on pourrais gérer le contenu entier via javascript et websocket mais bon le but n'est pas là) .
En gros c'est de l'Ajax temps réel.  ;)

Edit: grillé par Oliv  :smiley-mr-green:
ReEdit:

Concernant la partie chauffage, je vois que tu es déjà bien avancé sur la manière de gérer celui-ci, Bribri sera fortement intéressé.
Je ne compte pas utilisé le même type de chauffage (d'un autre côté je n'en ai pas encore  :smiley-mr-green:), mais une grosse partie serait similaire.
(pour un début et pour un brouillon je trouve ça très propre  :) )
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Oliv4945 on Dec 05, 2011, 09:37 pm

Edit: grillé par Oliv  :smiley-mr-green:

Oui mais bon, tu expliques mieux !!!


Je ne compte pas utilisé le même type de chauffage (d'un autre côté je n'en ai pas encore  :smiley-mr-green:)

Dis donc sans chauffage par les temps qui courent… Tu dois te peller non?  :)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 05, 2011, 10:05 pm

Oui mais bon, tu expliques mieux !!!


Pourtant j'ai beaucoup de mal par moment à me faire comprendre, enfin il y a toujours de la confusion entre certain mots comme par exemple si je parle de "serveur", est ce que je parle de serveur matériel, d'application serveur , serveur de contenus, de fichiers, de websocket ??? (tout dépend du service rendu)   :smiley-sweat:


Dis donc sans chauffage par les temps qui courent… Tu dois te peller non?  :)


Disons que ce n'est pas le mien  :*, en même temps je reste souvent fenêtre ouverte, même maintenant ça raffermis les bonbons.  :smiley-mr-green:  
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 06, 2011, 10:42 am
Quote
Oulàlà il y a comme une grosse méprise ou confusion dans ta description de mon (notre ?) idéal  smiley-kiss.

-  Moi je pars plutôt sur un micro serveur (web) avec quelque chose genre http://www.friendlyarm.net/products/micro2440 (non arduino) connecté au bus via son rs-232.
Un arduino+ethernet en client donc serveur en complément obligatoire, l'arduino+eth ne serais qu'un intermédiaire entre le serveur et le système, si le serveur peux se connecté aux système directement pas besoin d'arduino+eth.


Que le serveur soit en ligne ou en local il n'y a pas de différence il faudra un arduino + ethernet

Quote
- Pas un arduino par pièces mais plutôt par "fonctions" et tous réunis au même endroit (coffret) sauf pour certains préférable comme un module dédié à la chaudière par exemple. (d'où le fait que j'ai parlé de l'installation électrique général en étoile) .

Une fois que les fonctions pour chaque capteurs et actionneurs seront écrite, chacun pourra faire a sa sauce en mettant ce qu'il veut sur l'arduino

Quote
Maintenant l'arduino par pièces est possible, dans le premier cas grande longueur de câbles électrique (vob 1,5²/2,5² ...) et dans ce l'autre grande distance du cablage de bus.
Pour la partie capteurs divers on avais parlé de conversion analogique/numérique pour palier le problème de distance.

Exact, nous pouvons nous pencher sur la partie électronique pour interfacer un capteur analogique en I2C cela peut servir a plein de personne

Quote
- rs-485 à l'unanimité.  smiley-mr-green

Ok

Quote
Xpl c'est la solution de gromain pour l'interconnexion avec d'autre système hors arduino.

Le protocole avait l'air assez simple et correspondait a notre usage, est ce bien la peine d'en développer un nouveau ?


Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 06, 2011, 12:21 pm
Quote
Pour revenir aux prémices du projet et comme tout le monde semble être d'accord sur la partie gestion du chauffage. Je propose mon script sur pastebin, il pourra ainsi servir de base documentaire et permettra d'éviter certaines erreurs auquelles on ne pense pas toujours.


C'est clair que pour du brouillon, c'est plutôt propre.

Par contre une petite remarque j'ai parcouru ton code dans les grandes lignes et j'ai remarqué que tu gérais ton chauffage en mode "scénario" on va dire. J'entends par la que tu n'utilise pas le fil pilote a 100%. Il serait bien de pouvoir utilisiser les 6 ordres qui sont possibles et de gérer le chauffage en mode "ambiance" également:


Certe un petit montage électronique s'impose mais nos amis électronicien ne devrait pas avoir trop de mal a nous faire un truc de bien. J'ai trouver un début de piste, mais celui-ci ne gère que 4 ordres, il faudrait rajouter un petit oscillateur pour gérer les 2 autres ordres. Voici un début de piste que j'ai trouver sur le net :

Il faut rajouter des résistances pour que les optotriacs commutent apparement mais de quelle valeur ? Cela dépasse mon domaine de compétence. L'idéal serait de pouvoir adapter ce montage électronique afin de le faire marcher en OneWire.

Ainsi, il serait possible de commander son chauffage par "ambiance" en choisissant "Confort - Confort -1°C - Confort -2°C - Eco - Hors gel - Arrêt" ou bien par scénario que l'utilisateur pourrait créer comme par exemple : "Départ Vacance - Départ Travail - Absence Courte - Couché". Ces scénarios pourront également intéragir avec d'autres éléments tel que les volets, les lumières, ... etc.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 06, 2011, 05:09 pm

Que le serveur soit en ligne ou en local il n'y a pas de différence il faudra un arduino + ethernet

Me suis mal expliqué  :smiley-sweat:, quand j'ai dit serveur (web) j'aurais pas du le mettre entre parenthèse et plutôt parlé de "serveur de contenu" (contenu: html, javascript, php, autres et local ici).  :smiley-mr-green:
En fait comme l'arduino+eth est limite (nb connexion, ram, langage de script, ...) pour en faire un serveur complet, on ne peux l'utilisé que comme client (passerelle entre le véritable "serveur de contenu" et le système) donc dans tous les cas on a besoin d'un serveur de contenu (local ou pas).
Maintenant si on peux relier le "serveur de contenu" (non limité comme le shield eth) directement au système via son port rs-232/485 comme on l'aurais fais avec l'arduino+eth on n'a plus besoin de celui-ci comme intermédiaire, il en devient donc inutile non ?

[web -> Serveur de contenu -> ethernet ->arduino+eth -> rs232/485 -> bus système]
[web -> Serveur de contenu (http://www.friendlyarm.net/products/micro2440) -> rs232/485 -> bus système]

Enfin ici c'est plutôt mon choix.  ;)


Quote
Xpl c'est la solution de gromain pour l’interconnexion avec d'autre système hors arduino.

Le protocole avait l'air assez simple et correspondait a notre usage, est ce bien la peine d'en développer un nouveau ?



Xpl on en a jamais vraiment discuté, mais vu les performances d'ont on a besoin sur le bus il serait beaucoup plus lourd.
Un exemple du protocole, rien qu'en taille une simple commande ferait 102 (+-) octet pour une commande simple, rajoutons que l'analyse de chaîne de caractère est très lourd également en mémoire et process (recherche de la chaine correspondante pour chaque partie, comparaison, conversion de valeurs,... ) c'est énorme  :~
Xpl est prévu à la base pour de l'interaction entre différents système complètement différents (plus performant que le notre) et qui n'ont parfois aucun rapport avec ce que l'ont veux faire ici (squeezbox, ... ), pour ça je serais parti sur des solutions x10, plcbus, ..., +domogic ou homeseer(pc+software, ...) alors  $).

Code: [Select]

xpl-cmnd
{
    hop=1
    source=xpl-xplhal.myhouse
    target=acme-cm12.server
}
x10.basic
{
    command=dim
    device=a1
    level=75
}


Mon protocole basé sur de l'existant, assez simple.




Ici l'emplacement des donnéees dans la trame sont parfaitement connu, il n'y a aucune recherche à faire que de la comparaison entre valeurs numériques et une seule trame fais minimum 10 octet pour des commandes simple comme celle de l'exemple xpl.
;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 06, 2011, 06:17 pm
Yep!

Pour répondre à Skuzmitoo, mon installation est, disons d'un temps ancien. Losque j'ai acheté la maison, il existait un thermostat mécanique, avec un précision douteuse, dont l'unique fonction, tel un interrupteur, est de démarrer ou éteindre le circulateur. L'électronique, "électronique" entre guillemets, de la chaudière s'occupant de la vanne et des brûleurs. Il faut comprendre que ces deux derniers élements sont assujetis au circulateur. Il n'y a pas à proprement parler de fils pilote chez moi.
L'idée m'est venue d'utiliser un microcontrolleur le jour où le thermostat, suite à des travaux, m'a laché.
Le temps d'évaluer les solutions et d'investir dans le matériel, nous utilisions un simple interrupteur pour commander le chauffage à la demande. Ce n'était naturellement pas pratique et la nuit, lors de grand froid, j'habite Dunkerque, au confin du nord polaire ;) , la temperature descendait allégrement sous les 15 degrés. Lorsque nous partions en week-end, la maison était glaçiale. J'ai de plus deux enfants en bas ages (3 et 5 ans).
J'ai donc avant tout terminé mes travaux d'isolation, la cléf de la réussite en fait, et je me suis ensuite concentré sur le thermostat à base d'arduino.

Il me reste un certains nombres de finitions à apporter et des évolutions dont je commence à étoffer les prémices.
LES POURS:
  - Je suis assez satisfait de la régulation actuelle.
  - Le pilotage par mon logiciel python est fonctionnel. (Un pc serveur + hub font la liaison)
LES CONTRES:
  - Le pilotage local est un peu décevant. en ce sens, que l'utilisation d'une dalle tactile ralentie fortement           l'applicatif et pénalise l'ergonomie génerale. Je pense que pour un pilotage local, un afficheur + quelques boutons sont plus adaptés.
  - Actuellement, je démarre la chauffe à la température actuelle + 0.8 °C (température actuelle correspondant au seuil bas, +0.8 pour le seuil haut). Je suis contre toute tentative de temporisation de la chauffe, ou alors une tempo doit exister uniquement pour alarmer en cas de débordement.
En fait, il ne s'agit aucunement d'une régulation et c'est actuellement sur ce problème que je penche. Une courbe de chauffe ne peut être facilement représentée mathématiquement, l'élevation de température est rapide, l'inertie perdure un moment puis la baisse de température s'accentue au fur et à mesure. L'inertie du batiment est difficilement mesurable (à moins d'être un expert), et la température exterieure sont des données essentielles si l'on désire se rapprocher du meilleur rendement possible.
Avec l'aide du forum, j'ai ouvert les yeux sur la régulation PI ou PID. Cependant, elles semblent convenir pour maintenir une charge entre deux valeurs.
Je dois donc trouver autre chose. Je planche donc sur la logique floue et les algorithmes génetiques. Ce qui me permettrait de construire des scenarios logiques et rendre ma courbe auto-adaptative. Bref vaste sujet !!!
Le but serait en fait, pour un temps de chauffe quasi identique, à mode constant, en fonction de la température exterieure, d'obtenir le même écart temps entre deux chauffes. Le rendement serait optimisé en fonction naturellement des préferences de confort de l'utilisateur.

J'ai donc encore pas mal de taff en perspective. Mais aprés trois semaines de fonctionnement, je n'ai pas noté de dysfonctionnement majeur. C'est encouragant ;)

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 06, 2011, 06:57 pm
Quote
[web -> Serveur de contenu -> ethernet ->arduino+eth -> rs232/485 -> bus système]
[web -> Serveur de contenu -> rs232/485 -> bus système]


Je me suis mal expliqué peu être mais c'est cela que j'avais compris

Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 06, 2011, 06:59 pm
Quote
Pour répondre à Skuzmitoo, mon installation est, disons d'un temps ancien. Losque j'ai acheté la maison, il existait un thermostat mécanique, avec un précision douteuse, dont l'unique fonction, tel un interrupteur, est de démarrer ou éteindre le circulateur. L'électronique, "électronique" entre guillemets, de la chaudière s'occupant de la vanne et des brûleurs. Il faut comprendre que ces deux derniers élements sont assujetis au circulateur. Il n'y a pas à proprement parler de fils pilote chez moi.


Ok je comprend mieux, je vais donc regarder ton code pour essayer de créer une librairie compatible chauffage On/Off - Fil pilote 4 ordres - Fil pilote 6 ordres
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 06, 2011, 07:56 pm

Que le serveur soit en ligne ou en local il n'y a pas de différence il faudra un arduino + ethernet



Quote
[web -> Serveur de contenu -> ethernet ->arduino+eth -> rs232/485 -> bus système]
[web -> Serveur de contenu -> rs232/485 -> bus système]


Je me suis mal expliqué peu être mais c'est cela que j'avais compris


Moi j'avais compris que tu pensais à la première solution, celle avec arduino+eth comme la deuxième en est dépourvu.  :smiley-sweat:
Va vraiment falloir que je fasse un/des schémas/dessins pour être sure qu'on vois tous bien la même chose.  :% :smiley-mr-green:


j'habite Dunkerque, au confin du nord polaire ;)


On est pas si éloigné que ça 200km +-, on dois profité des même précipitations.  :smiley-mr-green:


Une courbe de chauffe ne peut être facilement représentée mathématiquement.


J'avais remarqué ça chez mes parents, lors de l'installation d'une nouvelles chaudière il a fallut attendre qu'une personne presque uniquement dédié au réglage de celle-ci vienne.  :~


L'inertie du batiment est difficilement mesurable (à moins d'être un expert), et la température exterieure sont des données essentielles si l'on désire se rapprocher du meilleur rendement possible.


Concernant l'inertie thermique du bâtiment il faut surtout jouer sur les prévisions météo et prévoir le différentiel intérieur/extérieure pour accumulations, pas facile c'est clair.  :~

Tien personnes n'est intéressé par la gestion d'une vmc double flux avec échangeur et couplé à un puis canadien + système d'appuis genre poils à pellet  ? (enfin pour ça j'ai le temps  :smiley-sleep: :smiley-sweat:) :)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Oliv4945 on Dec 06, 2011, 08:29 pm

Concernant l'inertie thermique du bâtiment il faut surtout jouer sur les prévisions météo et prévoir le différentiel intérieur/extérieure pour accumulations, pas facile c'est clair.


En fait quand on trace les courbes ça se voit assez vite, surtout en ce moment qu'il y a des gros delta de température



@Brisbee : J'avais oublié de mettre un message sur l'heure hier

Donc la méthode que je fais n'est surement pas la meilleure mais ça m'a servi pour les tests. Un bouton sur l'IHM appelle une fonction javascript qui appelle une page de l'Arduino avec l'heure dedans et la "décode"
Code: ("Arduino") [Select]

if (strncmp( pageAsked, "/id=Set_Date", 21 ) == 0 ) {
                timeToSet.Year = pageAsked[30]-'0+10';
                timeToSet.Month = (pageAsked[31]-'0')*10+pageAsked[32]-'0';
                timeToSet.DayOfMonth = (pageAsked[33]-'0')*10+pageAsked[34]-'0';
                timeToSet.DayOfWeek = pageAsked[35]-'0';
                timeToSet.Hour = (pageAsked[36]-'0')*10+pageAsked[37]-'0';
                timeToSet.Min = (pageAsked[38]-'0')*10+pageAsked[39]-'0';
                timeToSet.Sec = (pageAsked[40]-'0')*10+pageAsked[41]-'0';


Code: ("javascript") [Select]

function sendDate() {
var date = new Date();
date.setTime( date.getTime() );
var dateformatee;
dateFormatee = String( date.getFullYear() );
if ( date.getMonth() < 10 ) dateFormatee +='0';
dateFormatee += String( date.getMonth() );
if ( date.getDate() < 10 ) dateFormatee += '0';
if ( date.getDate() == 0 ) { dateFormatee += '7' }
else { dateFormatee += date.getDate(); }
dateFormatee += date.getDay();
if ( date.getHours() < 10 ) dateFormatee +='0';
dateFormatee += date.getHours();
if ( date.getMinutes() < 10 ) dateFormatee +='0';
dateFormatee += date.getMinutes();
if ( date.getSeconds() < 10 ) dateFormatee +='0';
dateFormatee += date.getSeconds();
$.getJSON( 'http://IP_SERVEUR:PORT/id=Set_Date&date='+dateFormatee, function(output) {});
// alert( dateFormatee );
}

C'est pas ce qu'il y a de plus efficace mais ça fonctionne, je pense que je ferais le même concept mais avec l'arduino qui appelle de lui même une page PHP pour régler l'heure tout seul au démarrage, mais comme il y a une batterie dans le RTC une fois que c'est à l'heure il y rarement besoin de recommencer ;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 06, 2011, 08:40 pm

mais celui-ci ne gère que 4 ordres,

Il faut rajouter des résistances pour que les optotriacs commutent apparement mais de quelle valeur ?


Pour ce qui concerne la commande du fil pilote 6 ordres, le montage proposé est suffisant pour les 6 ordres.
Il faut effectivement rajouter une résistance de 180 Ohms en série sur chaque entrée.
Pourquoi 180 Ohms (en fait de 150 à 330) :
La  tension maximale de la sortie est de 5V, et il faut environ 1,25V aux bornes de la diode de l'opto triac MOC 3041(tension typique selon les données constructeur) pour que le triac conduise. Le courant direct typique de la diode est d'environ 20mA.
Donc R = U/I => (5V-1,25V)/20mA = 187,5 Ohms on choisira donc 180 ou 220 Ohms (valeurs normalisées)

Explication du fonctionnement du montage :

- Confort : les deux entrées (Pic1 et Pic2) sont à 0 => les deux opto sont bloqués => pas de signal.

- Confort - 1°C : les deux entrées sont à 0 pendant 4min57=> les deux opto sont bloqués => pas de signal , puis les deux entrées sont à 1 pendant 3 sec => les deux opto conduisent => les deux alternances sont reconstituées. Et cela cycliquement.

- Confort - 2°C : les deux entrées sont à 0 pendant 4min53=> les deux opto sont bloqués => pas de signal , puis les deux entrées sont à 1 pendant 7 sec => les deux opto conduisent => les deux alternances sont reconstituées. Et cela cycliquement.

- Eco : les deux entrées sont à 1 => les deux opto conduisent => les deux alternances sont reconstituées

- Hors gel : l'entrée Pic1 est à 0 et l'opto MO-1 est bloqué => l'alternance positive est bloquée. L'entrée Pic2 est à 1 et l'opto MO-2 conduit  => l'alternance est transmise sur le fil pilote.

- Arrêt : l'entrée Pic1 est à 1 et l'opto MO-1 conduit => l'alternance positive est transmise sur le fil pilote. L'entrée Pic2 est à 0 et l'opto MO-2 conduit  => l'alternance est transmise sur le fil pilote.

J'espère avoir été suffisamment clair pour tout le monde, n'hésitez pas à me demander d'autres explications si besoin.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 06, 2011, 09:09 pm
Merci beaucoup Brisbee pour tes lumières sur la commande du pilote, maintenant, cela ne vas pas être très facile d'intégrer les 4'53 et 4'57 dans l'arduino car les temps de calcul peuvent être variables ou bien je me trompe.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 06, 2011, 09:21 pm

cela ne vas pas être très facile d'intégrer les 4'53 et 4'57 dans l'arduino car les temps de calcul peuvent être variables ou bien je me trompe.


Je pense que cela ne devrait pas poser de gros problèmes, enfin je n'ai pas suffisament d'expérience sur l'Arduino.
Mais si je devais le faire en assembleur avec un microcontrôleur, il suffirait de faire une routine qui génère une interruption toutes les secondes (ou sous-multiple), en utilisant un timer du microcontrôleur, on compte les interruptions et le tour est joué. On peut probablement faire quelque chose de similaire en C. Mais, je ne suis (pas encore ?) suffisament avancé pour l'affirmer.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 07, 2011, 03:08 pm
Normalement ça devrait aller avec millis(), maintenant tout dépendra surement du code dans le chemin de la boucle loop().
Difficile à dire sans tester, parfois j'ai du mal à visualisé les performances de l'atmega ,comme aujourd'hui ce n'est plus vraiment la préoccupation majeur du développeur vu nos machine actuels.
Enfin je pense pas que ce soit un problème pour de la "seconde", juste vérifié qu'on ne fais pas de boucle trop conséquente (on peux palier à ce problème en fessant un semblant de multitâche).
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 07, 2011, 05:18 pm
Yep!

J'ai retrouvé l'article concernant l'application de la logique floue pour la régulation d'un système de chauffage. L'aspect adaptatif de l'application pourrait rendre la régulation universelle.

Bonne lecture : http://docinsa.insa-lyon.fr/these/1997/fraisse/fraisse.pdf (http://docinsa.insa-lyon.fr/these/1997/fraisse/fraisse.pdf)

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 07, 2011, 06:51 pm
Franchement très intéressant quels que soit le système de chauffe utilisé.   :smiley-surprise:
J'ai pas tout lu, j'ai eu un peux peur en voyant "Grade de docteur" au début mais ça a l'air bien expliqué, je le ferais une fois à mon aise.   ;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 08, 2011, 09:59 am
Oui, c'est très intéréssant ton fichier, je ne l'ai pas encore lu faute de temps mais je l'ai parcouru et cela a l'air très bien détaillé mais cela a l'air très compliqué  XD
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: tochinet on Dec 08, 2011, 02:03 pm
Comme déjà signalé dans d'autres parties du forum (en anglais), je suis également en cours de développement d'un système basé Arduino pour le contrôle de mon installation de chauffage et éventuellement par la suite intégration domotique/piscine/ventilation.

La grosse différence (un peu comme Brisebee) est que je pars d'un système existant (Econo), qui contient des sondes de température, des circulateurs, des panneaux solaires, etc. et même si la régulation fonctionne mal, elle fonctionne. Donc, je marche sur des oeufs.

Au sujet du post original, je conseillerais des sondes temp dallas sur onewire : les 18B20 je crois. L'avantage : pas de tensions analogiques sur les cables, bon marché, extensible, etc.

Ma configuration actuelle : un MEGA (1280) + ITDB02 sur shield + proto shield (mis en dessous du méga, j'ai changé les connecteurs), j'attends un mini pour mettre à demeure dans  l'armoire électrique.
Une carte 16 relais 220V (bobines 24V pour mon alim existante, mais commande 5V avec optocoupleurs). Pas encore branché.

J'envisage aussi la connection au net, ainsi que l'usage éventuel d'autres CPU (32 bits) et de réseau sans fil (Wifi or Ciseco ou HopeRF)

Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 08, 2011, 02:39 pm
Quelques petits schémas assez basique  :% pour mieux comprendre les différentes possibilités exposée ici.
Schémas de principe donc incomplets non exhaustif, c'est juste pour montrer le concept globalement.

Ici installation électrique général liaison en étoile, chaque point lumineux, inter, capteur, ... reviens vers le coffret, local technique ou autre en un seul endroit.
les modules, contrôleurs, etc son mis côte à côte ou très proche tout du moins, rassemblé dans un coffret ou autres, donc longueur du bus très court.
Remarque: Il est possible de faire un mixte, exemple avec la chaudière.
Avantages :
- bus de données court.
- modules, contrôleurs, etc facilement intégrable et interconnectable.
- plus facile de gérer l'ensemble du système d'un même point.
- En cas de problème il est facile de retrouvé une installation électrique générale classique.

Inconvénients :
- installation électrique général plus couteuse du au grande longueur de câblage.
- rarement prévu en cas d'installation électrique existante donc difficile à faire, gros travaux, saignées, ...





Ici installation électrique générale classique, chaque pièces est géré par son propre module, reliés ensemble via le maîtres du bus (maître de la liaison rs-485 et non contrôleur maître du système relier à ce bus) .

Avantages :
- installation électrique général moins couteuse du au faible longueur de câblage.
- Maitrise de chaque pièce indépendamment.

Inconvénients :
- Câblage (paire torsadé) du bus plus long.
- Configuration plus difficile à gérer que en un seul point.




Détails du système

Détails du bus et modules général, différente possibilité au choix.





Détails des différente possibilités contrôleur (web).
Ici nous avons 1 maître du bus qui gère l'échange de données entre modules, 1 contrôleurs web serveur de contenus directement lié au bus.
Avantage :
- Système contrôleur directement lié au bus, pas besoin d'intermédiaire.
Inconvénient :
- Dépend du contrôleur serveur niveau hardware (obligation du rs232 devenu rare ?)+integré la liaison entre l'application serveur et le rs-232.


Solution avec 1 contrôleurs web serveur de contenus, lié au bus via une passerelle arduino+EthShield (en mode client) .
Avantage :
- Liaison simple via Ethernet.
Inconvénient :
- besoin d'un intermédiaire (arduino+EthShield) .


Solution avec 1 contrôleurs web serveur de contenus arduino+EthShield (en mode serveur) directement lié au bus .
Avantage :
- On reste sur la plateforme arduino.
Inconvénient :
- Limite de l'arduino+EthShield (ram, nb connexions simultanées, ...) pour en faire un système complet et performant.


Solution avec 1 contrôleurs web serveur de contenus avec hébergement distant , lié au bus via une passerelle arduino+EthShield (en mode client) .
Avantages :
- pas de pc qui tourne tout le temps et qui s'arrête en cas de panne de courant.
Inconvénients :
- serveur pas toujours joignable

J'espère que ça aidera à mieux comprendre et éliminé certaine confusions.   :smiley-sweat: ;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 08, 2011, 05:59 pm
Il y a également le cas ou le web controller est héberger sur internet.

Avantages :
pas de pc qui tourne tout le temps et qui s'arrête en cas de panne de courant.

Inconvénients :
serveur pas toujours joignable

En tout cas très bonne analyse qui dégrossit bien le sujet.

Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 08, 2011, 07:18 pm
J'avais oublier cette possibilité, je l'ai rajouté.  ;)
Edit: si vous voyez des incohérences ou d'autres avantages et inconvénients n'hésitez pas.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 08, 2011, 07:34 pm
Merci osaka pour ces schémas qui permettent de faire une bonne synthèse de différents échanges.

Pour ce qui me concerne, c'est le premier schéma avec le câblage en étoile, et dans un premier temps une Ethernet shield avec SD comme serveur web, le nombre d'accès n'étant pas un problème à priori.

D'un point de vue matériel j'aurai :

Dans mon local technique :
1 Arduino Mega 2560
1 Ethernet shield
1 RTC DS 1307 (Horloge temps réel I2C)
1 afficheur LCD 2x16 caractères
1 DHT 11 (capteur température et humidité) déporté d'environ 10m : en commande
1 shield RS 485 : en commande
1 unité de commande chauffage 5 zones fil pilote 1 ordre (existant : voir schéma joint)
1 unité de commande chauffage 1 zone fil pilote 6 ordres (à créer)
1 unité de commande arrosage 10 électrovannes (existant : voir schéma joint)

puis à distance
1 Arduino Uno
1 DHT 11 (capteur température et humidité) : en commande
1 shield RS 485 : en commande
1 unité de commande chauffage 1 zone fil pilote 6 ordres (à créer)

Il ne reste plus qu'à faire !

Je suis en train de tester les différentes fonctions.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 08, 2011, 07:57 pm

1 shield RS 485 : en commande


Je viens justement de commander des http://www.ti.com/product/sn75176b .
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 08, 2011, 08:18 pm
Je viens de commander cela :

Arduino I/O Expansion Shield V5 Xbee Sensor Shield RS485
SKU 00100-033
This Arduino Xbee Sensor Shield IO Expansion Board is evolving. It is now supporting Xbee. It combines our Xbee shield with IO expansion shield(V4). It not only supports RS485, APC220, Bluetooth communication, servo control but also supports SD card which provides the ultimate functional expansion for Arduino so far.
* Support Xbee (Xbee pro)
* Support RS485
* Support APC220
* Support Bluetooth
* Support SD card read/write

1. extension of 14 digital IO ports (12 servo interface) and power;

2.6 analog IO ports and power;

3.1 digital external power port terminal;

4. Digital-port external power supply and an onboard power supply automatic switching;

5.1 External power input terminal and an input pin;

6.RS485 interface;

7. reset button;

8.xbee/Bluetooh Bee Bluetooth wireless data transmission interface;

9.APC220/Bluetooh V3 Bluetooth wireless data transmission interface;

10.IIC/I2C/TWI interface;

11.3.3V output port;

12.SD card module interface
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: tochinet on Dec 09, 2011, 09:24 am
Bonjour Brisebee,

Une petite question au sujet des électrovannes : je vois sur le schéma une commande en 24V. Chez moi, le système de chauffage sol est en 220V, avec parfois des commandes 0-10V. Hélas, je n'ai que deux "circuits" d'eau (chacun avec circulateur) et le réglage entre pièce est fait sur la "colonne" de distribution.

Connaissez-vous des "petites" électrovannes qui pourraient me permettre de régler plus finement mes circuits ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 09, 2011, 01:19 pm
Bon n'ayant pas encore mon arduino j'ai commencer le squelette de l'interface qui sera hébergé sur le serveur web (local ou distant) (pas sur l'arduino).

Vous pouvez voir ce que cela donne ICI (http://jeromebarbel.free.fr/)

Et vous pouvez télécharger les sources ici https://rapidshare.com/files/3887773976/squelette-de-l-interface.zip (https://rapidshare.com/files/3887773976/squelette-de-l-interface.zip)
PS: pour que cela marche il faut un serveur php, très facile a installer en local et sur internet tous les hébergeur fonctionnent avec php

Je vais maintenant m'attaquer a la base de données, j'aimerais que les pages ce mettent a jour en fonction des modules utilisés (j'entends par module une prise, un volet,etc...), j'ai déja ma petite idée sur le sujet.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 09, 2011, 01:56 pm

Connaissez-vous des "petites" électrovannes qui pourraient me permettre de régler plus finement mes circuits ?


Il existe différents types de vannes commandées électriquement.
Les électrovannes qui correspondent à mon schéma sont des électrovannes "de jardin" utilisées pour l'arrosage, il s'agit d'électrovannes à membrane, qui ne peuvent pas être utilisées pour le chauffage.
Il y a des vannes à boisseaux commandées électriquement (produits industriels) : http://www.directindustry.fr/prod/burkert-fluid-control-systems/vannes-a-boisseau-spherique-2-voies-a-commande-electrique-404-504152.html (http://www.directindustry.fr/prod/burkert-fluid-control-systems/vannes-a-boisseau-spherique-2-voies-a-commande-electrique-404-504152.html)
J'en ai mis en oeuvre pour différents projets : nettoyage automatique du filtre de mon forage, les électrovannes à membrane ne pouvant être utilisées lorsque l'eau n'est pas propre (exempte de particules de sable). Mais aussi chauffage solaire de l'eau de ma piscine.
Ces vannes sont assez chères, il m'est arrivé d'en trouver sur eBay pas chère du tout (alors, il ne faut pas être pressé).
Les mêmes vannes existent avec des commandes en 230VAC ou 24VAC.
Sinon il y a aussi les électrovannes utilisées en électroménager, pour les lave-linge et lave-vaisselle. Là, il y a différents modèles : eau froide, eau chaude, pompe d'évacuation des eaux "sales", en général elles fonctionnent en 230VAC.

Remarque : sur mon schéma les triacs de sortie supportent parfaitement du 230VAC (il faut alors probablement remplacer la résistance du triac (100 Ohms) en augmentant sa puissance : passer à 1W ou 1/2W au moins au lieu de 1/4W)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Artouste on Dec 09, 2011, 02:06 pm
Bonjour
pas tout lu (je vais le faire)
mais c'est mon coté "déjà vieux ingé securité" qui ressort  :smiley-mr-green:

même si ce n'est que de la domotique, il faut gérer les conditions dégradées et retour en condition stabilisées.

Qu'est il prévu des actions en cas de perte totale d'alimentation et de retour d'alimentation, comment sont gérés les (sous)ensembles .

parce qu'entre : (OFF complet) rien ne fonctionnera sans intervention et tout va s'allumer (ON complet) comme un sapin de noël  (comprendre tout = chauffage,éclairage,cuisson, etc ... )

la solution simple : dernier état connu (avant OFF) = etat restitué (au retour ON) est d'expérience une bonne très mauvaise solution !   :smiley-mr-green:



Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 09, 2011, 02:29 pm
Pourquoi ne pas fixer une valeur a une variable "emergency" qui sera la valeur que prendra le module en cas de coupure
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 09, 2011, 02:54 pm
Super Brisbee tes shémas. Par contre tu pourrais expliquer un peu le principe de la commande de chauffage

Comment agit l'entrée EJP ?
Et comment agisses les signaux normal - réduit et auto. Merci d'avance
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 09, 2011, 03:01 pm

même si ce n'est que de la domotique, il faut gérer les conditions dégradées et retour en condition stabilisées.


Il faut effectivement le prévoir.

Sur mon système actuel http://g.sinnig.free.fr/spip.php?article3 (http://g.sinnig.free.fr/spip.php?article3), il est prévu un mode dégradé, dans lequel les "paramètres par défaut" sont inscrits en dur.
Lorsque le système n'arrive pas à se connecter il utilise ces paramètres par défaut, jusqu'à ce qu'il puisse avoir accès aux données du jour sur le PC.
De même après une coupure secteur le système se met en mode dégradé, met en marche le PC et cherche à se connecter pour récupérer les données du jour.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 09, 2011, 03:30 pm

Par contre tu pourrais expliquer un peu le principe de la commande de chauffage


J'ai un chauffage électrique rayonnant dans le plafond, les films dans le plafond sont répartis sur 5 zones.
Chaque zone est équipée d'un thermostat qui a un fil pilote 2 ordres (dans des posts précédents je l'ai appelé 1 ordre par erreur) normal et réduit (ou encore pour utiliser les terminologies actuelles confort et éco).
Fonctionnement :
- pas de signal sur le fil pilote => mode normal => température de consigne = température affichée sur le thermostat
- 230VAC sur le fil pilote => mode réduit => température de consigne = température affichée sur le thermostat - 5°C


Comment agit l'entrée EJP ?


Je bénéficie encore de la tarification EJP (cette tarification n'est plus proposée depuis pas mal de temps).
Elle permet d'être toute l'année au tarif EDF le plus bas sauf pendant 22 jours dans l'année (de nov à mars) où le tarif est le plus élevé.
Il y a alors un signal EJP (contact sec d'un relais sur lequel je ramène 5V) qui force le chauffage en mode réduit. J'utilise alors ma cheminée, qui lorsqu'elle fonctionne, chauffe toute la maison.
Actuellement il y a une autre tarification (bleu, blanc, rouge) je ne sais pas exactement comment cela fonctionne, mais il est tout à fait envisageable d'adapter le schéma.


Et comment agisses les signaux normal - réduit et auto. Merci d'avance


Il s'agit d'un interrupteur 3 positions qui permet de forcer le fonctionnement de chaque zone en normal, réduit ou en automatique => piloté par l'automate.

Je viens de construire un atelier pour mon épouse qui sera équipé de radiateurs électriques à inertie avec un fil pilote 6 ordres, je vais donc développer prochainement un dispositif pour commander ce fil pilote, je pense que je n'utiliserai que 4 des 6 ordres, car je ne vois pas bien l'intérêt de demander -1°C et même -2°C par rapport à la consigne.

J'espère avoir répondu à tes questions.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 09, 2011, 03:32 pm
Jolie interface Skuzmitoo,  :) tu as un meilleur sens artistique que moi  :smiley-mr-green: .



même si ce n'est que de la domotique, il faut gérer les conditions dégradées et retour en condition stabilisées.

Sur mon système actuel http://g.sinnig.free.fr/spip.php?article3 (http://g.sinnig.free.fr/spip.php?article3), il est prévu un mode dégradé, dans lequel les "paramètres par défaut" sont inscrits en dur.
Lorsque le système n'arrive pas à se connecter il utilise ces paramètres par défaut, jusqu'à ce qu'il puisse avoir accès aux données du jour sur le PC.
De même après une coupure secteur le système se met en mode dégradé, met en marche le PC et cherche à se connecter pour récupérer les données du jour.


En effet faut prévoir.  :smiley-sweat: :smiley-mr-green:
Je pense par exemple pour un module gérant l'éclairage ou autre utilisant le 220v qu'en cas de pépins et retour à la normale, tout laissé à off avant d'avoir réglé l'éventuel soucis et surtout par sécurité.
Par contre pour un module de gestion de chaudière par exemple une configuration par défaut en dur comme tu le spécifies Bribri, enfin faire un peux du cas par cas ça dépand des différente pannes "prévisibles".

Pour tes schémas Bribri va falloir que j'étudie (décrypté  :smiley-mr-green:) ça comme ce n'est pas vraiment mon domaine (c'est la partie la plus chaude pour moi)  :~  XD.

Edit: Pour tout ce qui est chauffage électrique je peux pas vraiment dire ou aider comme ici l'électricité est trois fois plus chère que le gaze ou mazout ...
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 09, 2011, 03:35 pm
Tout a fais tu as bien répondu a ma question, j'étais justement en train de regarder comment mixer ton schéma avec celui que j'avais trouver pour gérer les 6 ordres. Tu utilise quel logiciel pour modéliser tes schéma car j'ai ISIS et ARES mais je suis plus souvent sur le mac et je cherche une solution  gratuite.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 09, 2011, 03:40 pm
Merci osaka pour le compliment sur l'interface, j'essaie de rendre l'utile a l'agréable  XD
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 09, 2011, 03:49 pm

j'étais justement en train de regarder comment mixer ton schéma avec celui que j'avais trouver pour gérer les 6 ordres.


Cela ne devrait pas être très compliqué, il y aura forcément deux entrées par zone, je vais y réfléchir et proposer quelque chose d'ici peu.


Tu utilise quel logiciel pour modéliser tes schéma car j'ai ISIS et ARES mais je suis plus souvent sur le mac et je cherche une solution  gratuite.


J'utilise depuis très peu de temps Kicad, qui est pas mal et gratuit.


Je pense par exemple pour un module gérant l'éclairage ou autre utilisant le 220v qu'en cas de pépins et retour à la normale, tout laissé à off avant d'avoir réglé l'éventuel soucis et surtout par sécurité.


Il faut aussi faire en sorte que l'on puisse commander l'éclairage lorsque le système est planté ou absent.
Il n'est pas possible de rester dans le noir parce que la domotique dysfonctionne !

Skuzmitoo : super ton projet d'interface, bravo !

On commence à voir tout l'intérêt de nos collaborations.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 09, 2011, 04:07 pm
Pour l'autonomie en cas de plantage par exemple pour une lumière il est possible d'utiliser une porte logique OU
Soit d'arduino commande OU l'interrupteur commande
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 09, 2011, 04:21 pm



Je pense par exemple pour un module gérant l'éclairage ou autre utilisant le 220v qu'en cas de pépins et retour à la normale, tout laissé à off avant d'avoir réglé l'éventuel soucis et surtout par sécurité.


Il faut aussi faire en sorte que l'on puisse commander l'éclairage lorsque le système est planté ou absent.
Il n'est pas possible de rester dans le noir parce que la domotique dysfonctionne !


Vivi c'est ça que je veux dire par "cas par cas", si c'est juste le système qui a un soucis le module étant autonome on peux toujours commander l'éclairage manuellement.
Maintenant si c'est l'alim de toute façons soit ça ne redémarre pas du tout, soit ça redémarre mais dans tout les cas (même en cas de maintenance) mieux vaut ne pas remettre à On pour évité les mauvaise surprise ?
Enfin ici il s'agit du cas module 220v.
Pour le cas d'un module chaudière par exemple je pense pas que ce soit un problème d'y mettre des paramètres par défaut.


On commence à voir tout l'intérêt de nos collaborations.


C'est vrai.  :) ;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 09, 2011, 04:26 pm

Pour l'autonomie en cas de plantage par exemple pour une lumière il est possible d'utiliser une porte logique OU
Soit d'arduino commande OU l'interrupteur commande


Oui, ou plus simplement deux diodes, après il faut y regarder de plus près :
1) s'il s'agit d'un interrupteur du type interrupteur électrique d'éclairage classique : je pense que ces appareillages sont prévus pour être utilisés avec un courant minimal, la qualité de contact n'est probablement pas adaptée aux très faibles courants => quelqu'un a-t-il une expérience à ce sujet ?
2) si l'interrupteur est branché sur une des entrées de la porte "ou" que ce soit une porte logique ou un montage à diodes, la sortie est activée en permanence et la deuxième entrée (arduino) n'a pas d'effet, il faut donc prévoir un système différent. Je n'y ai jamais vraiment réfléchi.
Là encore si quelqu'un y a réfléchi, cela fera gagner du temps.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 09, 2011, 04:33 pm
Je me réponds à moi même !

En fait il faut considérer l'interrupteur comme un capteur qui sera traité par l'automate comme tel.
Et lorsqu'il y a un problème, il faut forcer l'entrée "capteur interrupteur" sur la sortie "commande éclairage".

Cela ne répond pas à la question 1) qualité de contact de l'interrupteur prévu en 230VAC et fonctionnant en 5VDC.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 09, 2011, 04:34 pm

Là encore si quelqu'un y a réfléchi, cela fera gagner du temps.


Alors là je ne peux pas aider.  =( :~
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 09, 2011, 05:20 pm
Petite dérive pour en revenir a la gestion d'un chauffage en TOR (tout ou rien). Je suis tombé sur ce site :
http://smart.house.house.domotique.eib.over-blog.com/categorie-11331374.html (http://smart.house.house.domotique.eib.over-blog.com/categorie-11331374.html)

Le chapitre intéressant est la Régulation PI en modulation de largeur d'impulsion, cela pourrait-il être une bonne alternative entre économie et confort ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 09, 2011, 05:27 pm
Quote
Cela ne répond pas à la question 1) qualité de contact de l'interrupteur prévu en 230VAC et fonctionnant en 5VDC.

Il me semble que sur un interrupteur de ce type, il est nécessaire d'y adjoindre une bascule anti-rebond de mémoire sinon aucun problème a ma connaissance
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: thetool on Dec 10, 2011, 12:37 pm
Salut a tous, sympa ce projet ;) j'attend avec impatiences chaque jours les avancées ^^.

Je ne suis absolument pas un pro arduino (pour tout dire je n'en possede pas encore) mais l'idée de réaliser un système domotique plus ou moins complet m'interresse très fortement,

En ce qui concerne l'utilisation de ces inters, je ne pense pas qu'il y ai de soucis particulier, et pour l'utilisation de la bascule anti-rebond, il y a la possibilité de le faire de maniere logiciel comme décrit ici : http://www.arduino.cc/en/Tutorial/Debounce (http://www.arduino.cc/en/Tutorial/Debounce)

J'ai par contre une question, pourquoi ne pas mettre a disposition un arduino pour controler les lumieres, le chauffage et les prises pour chaque pièces ? cela permettrait de ne pas etre privée par exemple de lumiere dans toutes la maison en raison d'une panne sur la carte (ba voui je prefere avoir une pièce sans lumière plutot que toute la maison ).

Ludo
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 10, 2011, 12:41 pm
Cela a été traiter avant, cela dépendera de la topologie de chacun, mais l'idée d'un arduino par fonction est pour moi de plus en plus pertinente pour deux raison :
- Suivant la taille du code, on risque d'être assez vite limité
- En cas de problème, il est plus facile d'en trouver la source

Dans l'immédiat nous allons nous efforcer de développer une "librairie pour chaque capteur et actionneur et après libre a chacun de faire ce qu'il désir.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: thetool on Dec 10, 2011, 01:11 pm

2) si l'interrupteur est branché sur une des entrées de la porte "ou" que ce soit une porte logique ou un montage à diodes, la sortie est activée en permanence et la deuxième entrée (arduino) n'a pas d'effet, il faut donc prévoir un système différent. Je n'y ai jamais vraiment réfléchi.
Là encore si quelqu'un y a réfléchi, cela fera gagner du temps.


Apres réflexion et moyennant quelques compo supplémentaire et l'utilisation d'interrupteur de type poussoirs, on peux utiliser une bascule D montée en télérupteur, on peut ainsi allumé/eteindre en creant une impulsion sur l'entrée de la bascule. Cela inclu également l'utilisation d'une entrée de l'arduino pour chaque lampe commandée par ce montage afin de connaitre l'etat de la bascule et par conséquant celle de l'ampoule et ceci afin d'actualiser l'interface en temps réel.

Qu'en dites vous ?

Ludo
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 10, 2011, 01:47 pm

Apres réflexion et moyennant quelques compo supplémentaire et l'utilisation d'interrupteur de type poussoirs, on peux utiliser une bascule D montée en télérupteur, on peut ainsi allumé/eteindre en creant une impulsion sur l'entrée de la bascule


Oui c'est une bonne idée.

Il y a quelques temps, parce que j'en avais marre de changer les télérupteurs électromécaniques qui lachaient, j'ai fabriqué un télérupteur statique, vous trouverez ci-joint le schéma, il suffit de l'adapter pour rajouter une entrée arduino.


Cela inclu également l'utilisation d'une entrée de l'arduino pour chaque lampe commandée par ce montage afin de connaitre l'etat de la bascule et par conséquant celle de l'ampoule et ceci afin d'actualiser l'interface en temps réel.


Je pense de plus en plus à reboucler les sorties de mes unités de commande sur une entrée arduino, ce qui permet effectivement de connaitre l'état de la sortie, y compris lorsqu'elle est activée manuellement.
Nous avions déjà une discussion sur le sujet du "bouclage" dans nos premiers post de ce sujet.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 10, 2011, 01:55 pm
Quote
Il y a quelques temps, parce que j'en avais marre de changer les télérupteurs électromécaniques qui lachaient, j'ai fabriqué un télérupteur statique, vous trouverez ci-joint le schéma, il suffit de l'adapter pour rajouter une entrée arduino.

6A sous 220V -> 1300W ? largement suffisant

il n'y a pas de problème de chauffe avec les télérupteur statique ?

Je compte sur toi pour nous proposer la solution pour faire un bouclage sur l'arduino car j'ai beaucoup de mal a comprendre ton montage bien que je ne doute aucunement de son fonctionnement lol
Mais avant cela si tu pouvais nous fournir la modif de la commande de chauffage pour s'adapter a la commande de chauffage 6 ordres

Pour le bouclage je suis pour a 200% je n'aime pas commander a l'aveugle.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 10, 2011, 02:07 pm

6A sous 220V -> 1300W ? largement suffisant
il n'y a pas de problème de chauffe avec les télérupteur statique ?


Cela dépend du triac de sortie et surtout du refroidisseur (radiateur).
Moi je ne les utilise que pour les circuits d'éclairage, et mes télérupteurs sont placés dans les combles (chaud en été et froid en hiver) dans des boites de raccordement étanches.


Mais avant cela si tu pouvais nous fournir la modif de la commande de chauffage pour s'adapter a la commande de chauffage 6 ordres


Je vais essayer le le faire dans le WE.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Artouste on Dec 10, 2011, 02:28 pm


Il y a quelques temps, parce que j'en avais marre de changer les télérupteurs électromécaniques qui lachaient, j'ai fabriqué un télérupteur statique, vous trouverez ci-joint le schéma, il suffit de l'adapter pour rajouter une entrée arduino.


bonjour
Le schéma est intéressant, mais sauf à l'avoir mal lu, ce n'est pas un vrai équivalent télérupteur meca, en cas de disparition et retour d'alim, il ne reste(revient)  pas toujours à son état d'avant coupure ?
comme compo un peu fiable en statique tension secteur, j'aime bien les celduc
http://www.celduc-relais.com/fr/tablogamme.asp?lettre1=g4 (http://www.celduc-relais.com/fr/tablogamme.asp?lettre1=g4)
Pour être franc, j'ai quand même pas mal de ça dans mes "boites à grouilles"  :) et c'est facile d'intégration avec les µC.

NB : que personne ne demande quel est le board qui est au dessus !  :smiley-mr-green:



Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 10, 2011, 04:11 pm
Bon je me suis un peu creusé les méninges et j'ai établi l'ébauche de l'algorithme de chauffage tel que je le conçoit :

Petite erreur - A la fin le passage en confort est relié sur la régulation de température

Chacun pour l'adapter a son usage. Maintenant il faut trouver le moyen de réguler la température, je pensais le faire en tenant compte de la température et du fait de savoir si l'on profite de l'inertie du chauffage. Quelqu'un a une solution fonctionnelle car en regardant la régulation PID j'ai un peu de mal a tout comprendre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 10, 2011, 04:17 pm
Je viens de m'apercevoir que le schéma transmis ne comportait pas la valeur des composants. Je joins une nouvelle version du schéma.


Le schéma est intéressant, mais sauf à l'avoir mal lu, ce n'est pas un vrai équivalent télérupteur meca, en cas de disparition et retour d'alim, il ne reste(revient)  pas toujours à son état d'avant coupure ?


Effectivement au retour du secteur le condensateur de 1µF associé à la résistance de 100K sur l'entrée R de la bascule D force celle-ci à zéro.

A ma connaissance les celducs sont des relais statiques et non des télérupteurs statiques, mais il existe peut-être une version télérupteur.
De plus ces composants sont en général assez chers.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 10, 2011, 08:47 pm

Bon je me suis un peu creusé les méninges et j'ai établi l'ébauche de l'algorithme de chauffage tel que je le conçoit :


Merci pour ton algorithme.

Comme cela a déjà été dit plusieurs fois, il s'agit de développer des modules autonomes et documentés, aussi bien matériels que logiciels, en donnant le maximum d'explications pour que les non spécialistes puissent comprendre à minima et que les amateurs puissent bien comprendre et devenir petit à petit de vrais spécialistes.
Ainsi chacun devrait pouvoir en adaptant et en assemblant les différents modules construire son propre système adapté à son besoin et son idée.

C'est dans cet esprit que j'ai développé un module matériel pour un chauffage électrique avec fil pilote 6 ordres.
Vous trouverez le schéma structurel et le tableau de fonctionnement ci-joints.

Je l'ai fait un peu rapidement et je ne l'ai pas testé, si quelqu'un veut bien vérifier qu'il n'y a pas d'erreur ou d'incohérence.
N'hésitez pas à me faire un retour, ou à me demander des explications.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 11, 2011, 11:30 am
Super Brisbee ton schéma, je vais le simuler sous ares ou isis a chaque fois je confond entre les deux et si sa marche bien je ferais le typon pour le mettre a disposition et je m'en sortirais un.

Quelqu'un connais un site ou l'on envoie le plan et il vous sorte le typon ?


Sinon une petite question me turlupine  XD XD XD

Est-il possible de programmer l'arduino sur la carte pour ensuite l'enlever et le placer sur une carte fabrication maison avec juste une alimentation 5V, un bouton reset et deux trois fioritures car dans ce cas je sortirais également plusieurs typon et une fois l'ATM programmé, je le mettrais sur cette carte, cela me permettrais de pouvoir multiplier les modules arduino a moindre coût.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 11, 2011, 03:36 pm
Quote
Je l'ai fait un peu rapidement et je ne l'ai pas testé, si quelqu'un veut bien vérifier qu'il n'y a pas d'erreur ou d'incohérence.
N'hésitez pas à me faire un retour, ou à me demander des explications.


Alors j'ai simuler ton montage, il y a plusieurs remarques :

Premièrement : tu as une erreur avec tes pont de diodes sur l'alimentation
Deuxièmement : pourquoi ne pas alimenter le MOC3041 en 5V (il est TTL d'après ce que j'ai pu voir donc gain d'un régulateur et tranformateur moins cher)
Troisièmement : les leds marche bien mais j'ai toujours du 230 VAC en sortie pas de négatif ni de positif (il n'y a pas besoin de triac en sortie?)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: joelectronic on Dec 11, 2011, 05:10 pm
Bonjour,

Effectivement au niveau du pont de diodes, il faut supprimer la connexion qui part des cathodes de D7 et D9 au pôle négatif de C1 et ajouter une connexion entre l'anode de D8 et le pôle négatif de C1.
Par contre pour les alternances positives et négatives en fait j'inverserais bien le point 220V Phase et le point 220V Pilote.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 11, 2011, 05:58 pm
Bon j'ai fait des recherche sur le net et je suis un peu embêter.
La consommation du pilote est de 30mA en moyenne
- Trop peu pour utiliser un triac a cause du courant de maintien d'après ce que j'ai compris
- Suffisant pour être piloté directement par un MOC3041

Mais voila, si l'on regroupe plusieurs pilotes, la consommation augmente et le MOC3041 ne suffit plus.
30mA c'est une moyenne des fois cela est 5mA des fois 50mA, l'utilisation du triac ne sera peu être pas efficace dans tout les cas dans le cas d'un groupement de pilote

Ne vaudrait t'il pas mieux utiliser un relais bien que je sais que Brisbee est contre
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 11, 2011, 06:39 pm

Alors j'ai simuler ton montage, il y a plusieurs remarques :
Premièrement : tu as une erreur avec tes pont de diodes sur l'alimentation
Deuxièmement : pourquoi ne pas alimenter le MOC3041 en 5V (il est TTL d'après ce que j'ai pu voir donc gain d'un régulateur et tranformateur moins cher)
Troisièmement : les leds marche bien mais j'ai toujours du 230 VAC en sortie pas de négatif ni de positif (il n'y a pas besoin de triac en sortie?)


Il y a effectivement une erreur au niveau du pont de diodes.
Tu as raison on peut parfaitement alimenter les anodes des MOC3041 en 5V, c'est probablement parce que j'avais un petit transfo 24VAC et 12VAC (avec un 12VAC un peu faible pour alimenter les 5 opto-triacs en plus des LED)  sous la main lorsque j'ai fabriqué mon module 5 zones , et là j'ai recopié rapidement sans trop réfléchir, mais alors il faut changer la valeur des résistances R5 et R11 en série avec les cathodes du MOC3041, il faut mettre quelque chose comme 180 Ohms.


Par contre pour les alternances positives et négatives en fait j'inverserais bien le point 220V Phase et le point 220V Pilote.


Je ne pense pas que cela change quelque chose, mais il suffit d'essayer, en simulation c'est facile.


Bon j'ai fait des recherche sur le net et je suis un peu embêter.
La consommation du pilote est de 30mA en moyenne
- Trop peu pour utiliser un triac a cause du courant de maintien d'après ce que j'ai compris
- Suffisant pour être piloté directement par un MOC3041

Mais voila, si l'on regroupe plusieurs pilotes, la consommation augmente et le MOC3041 ne suffit plus.
30mA c'est une moyenne des fois cela est 5mA des fois 50mA, l'utilisation du triac ne sera peu être pas efficace dans tout les cas dans le cas d'un groupement de pilote

Ne vaudrait t'il pas mieux utiliser un relais bien que je sais que Brisbee est contre


Actuellement j'ai jusqu'à 4 thermostats branchés sur le même fil pilote, sans que cela ne pose de problème, et si je me souviens bien je suis très largement en dessous du maximum. Il y a effectivement la possibilité de mettre un relais, mais le relais va battre toutes les 5mn dans la configuration confort -1°C ou -2°C.
Une solution plus luxueuse, si cela s'avère nécessaire, consisterait à multiplier les circuits de sortie en fonction du nombre de pilotes à commander.
Il faut vraiment voir au cas par cas en fonction des radiateurs.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 11, 2011, 08:50 pm
Bonjour (bonsoir plutôt   :smiley-sleep: :smiley-mr-green:),
Ça a beaucoup parler matériel et c'est très intéressant.
Je suis quand même limite niveau connaissance pour vous aider ou conseillé de ce coter là  :P.


Sinon une petite question me turlupine  XD XD XD

Est-il possible de programmer l'arduino sur la carte pour ensuite l'enlever et le placer sur une carte fabrication maison avec juste une alimentation 5V, un bouton reset et deux trois fioritures car dans ce cas je sortirais également plusieurs typon et une fois l'ATM programmé, je le mettrais sur cette carte, cela me permettrais de pouvoir multiplier les modules arduino a moindre coût.


C'est tout à fais possible, moi je pense utiliser que des arduino mini (micro  :smiley-surprise:) qui s'enficherait comme on l'aurais fais avec le microcontroleur.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 11, 2011, 09:05 pm

Ça a beaucoup parler matériel et c'est très intéressant.


Effectivement on a beaucoup parlé matériel, mais c'est probablement par là qu'il faut commencer.
Une fois que les choix matériels sont faits, on peut vraiment commencer à programmer.
Enfin c'est ma façon de voir les choses.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 11, 2011, 09:21 pm

Effectivement on a beaucoup parlé matériel, mais c'est probablement par là qu'il faut commencer.
Une fois que les choix matériels sont faits, on peut vraiment commencer à programmer.
Enfin c'est ma façon de voir les choses.


Disons que ce sont les points commun entre chaque modules différents que je regarde pour l'instant bus rs485, protocoles, ...
Enfin comme pour l'instant je peux pas vraiment vous aidez côté matériels des différents modules au temps que je face ce que je sais déjà faire.
Pour le moment je suis penché sur la communication, j'ai du supprimer la gestion du port série (HarwareSerial.h et .cpp) du core arduino pour la réécrire et l'adapté, j'avance tout doucement  :%.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 11, 2011, 09:50 pm

J'ai repris ton schéma Brisbee mais j'ai du mal a comprendre tout tes transistors, j'ai donc essayé de faire plus simple, cela marche dans la simulation, bien que je n'arrive pas a voir les alternances en sorti des MOC3041.

1) Pourrais tu me dire ce qui va pas dans mon schéma car je le trouve beaucoup plus léger que le tiens.

2) Pourquoi un diviseur de tension en entrée des transistors alors qu'une résistance de 10K suffit

3) Pourquoi réutiliser un transistor pour allumer LED la au lieu de réutiliser celui qui commande le MOC3041

Pour le MOC3041 en 5v je trouve 330Ohms. Il lui faut 15mA donc : R = 5 / 0.015 =330Ohms

Désolé, je n'ai pas intégré la commande EJP pour le moment, je cherche a comprendre
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 11, 2011, 10:35 pm

1) Pourrais tu me dire ce qui va pas dans mon schéma car je le trouve beaucoup plus léger que le tiens.

2) Pourquoi un diviseur de tension en entrée des transistors alors qu'une résistance de 10K suffit

3) Pourquoi réutiliser un transistor pour allumer LED la au lieu de réutiliser celui qui commande le MOC3041


En fait le transistor qui commande la LED fonctionne en inverseur, parce que je veux que la LED soit allumée lorsque le chauffage est en mode normal (confort), si tu acceptes que la LED soit allumée en mode réduit (eco) pas de Pb.
Les résistances R6 et R7 sont des résistances qui évitent que lorsque le switch est en position médiane (normal) la base du transistor soit en l'air et risque de faire "antenne".  Ce n'est pas un disiseur de tension.


Pour le MOC3041 en 5v je trouve 330Ohms. Il lui faut 15mA donc : R = 5 / 0.015 =330Ohms


pour le MOC3041 la tension VF aux bornes de la diode doit être d'environ 1,25V et le doit être courant d'environ 20mA, donc aux bornes de la résistance en série il y aura 5V-1,25V = 3,75V => R = U/I = 3,75V/20mA = 187,5 Ohms on choisira donc 180 Ohms.
Il fonctonnera aussi avec 15mA => R=220 Ohms
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 11, 2011, 10:43 pm
ok je comprend mieux, donc je vais remettre les résistance sur les transistors, mettre la bonne résistance pour le MOC, maintenant le problème de la led pour connaître l'état ne m'importe peu en fait, ce que je voulais c'était pouvoir lire la valeur présente avec l'arduino ( l'histoire de la boucle fermée  XD XD XD...).

As tu une idée de pourquoi je ne visualise pas la sortie des MOC3041 sur le logiciel de simulation ? (ex: pas de charge ou je ne sais quoi)

Merci pour tes lumières
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 11, 2011, 10:49 pm

As tu une idée de pourquoi je ne visualise pas la sortie des MOC3041 sur le logiciel de simulation ? (ex: pas de charge ou je ne sais quoi)


Oui bien sûr il faut mettre une charge, il faut la calculer : R = 230/30mA = environ 8k , entre la sortie et le neutre
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 11, 2011, 11:05 pm
Ce coup-ci je visualise la sortie des MOC3041 par contre c'est bizzare

1 - J'ai rien en sortie quand rien en entrée - Normal
2 - J'ai du 230VAC quand tout en entrée - Normal
3 - Quand j'active une seule entrée, j'ai bien la forme du front positif ou négatif, mais il fait 230V d'amplitude et il descend a -70V pour monter a +160V et le rapport cyclique est bien de 50%

Là je ne pige pas
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 11, 2011, 11:11 pm
C'est effectivement bizzare.
Tu utilises quoi comme simulateur ?
Les sorties de ton simulateur sont des signaux du type "oscillogrammes" ou des valeurs numériques ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 11, 2011, 11:15 pm
J'ai trouvé, je suis un gros boulet.
L'oscilloscope était en AC au lieu d'être en DC, du coup c'est bon.

Merci beaucoup pour ton aide, je suis pas très douer en électronique. Mes cours sont loin derrière moi et je ne pratique pas alors cela s'oublie très vite

Je reviens sur tes LED pour visualiser, si j'ai bien compris quand tu est en réduit, les deux led sont éteintes, et en normal, les deux sont allumées.

Pourquoi en mettre deux, une seule aurait suffit?

Voici donc le nouveau schéma sans la commande EJP je la rajouterais demain

Si il y a des remarques, il ne faut pas hésiter
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Oliv4945 on Dec 11, 2011, 11:45 pm
Bonjour

Pourquoi vouloir gérer les 6 ordres des fils pilotes ? J'avais lu que 4 était bien plus facile a faire que 6. Est ce nécessaire ?

Mais surtout pourquoi ne pas gérer que on/off. Car avec les autres ordres on est dépendant de la température relevée par la thermistance du chauffage qui n'est pas forcement bien ajustée, et bien sur que l'on choisit entre 1 et 6 et pas en degrés. alors que vous parliez d'un capteur de température relié a l'arduino ;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 11, 2011, 11:52 pm
c'est exact, mais qui peut le plus peut le moins, ce module est 6 ordres mais il est possible de n'en gérer que 4, les deux autres ordres sont basés sur des tempo.

Après comme on dit il faut envisager les possibles, maintenant pour ma part le fonctionnement sera en marche arret avec une température gérée par l'arduino, mais quelqu'un est peu être intéressé pour piloter les 4 ordres comme Brisbee par exemple. Maintenant sur la carte précédente il sera possible de venir lire l'état de la carte grâce aux broches "arduino in 1 et 2 ".

Maintenant libre a chacun de les utiliser sa rajoute juste une piste alors autant en profiter. La carte a beau pouvoir gérer 6 ordres, elle peut aussi faire fonctionner un radiateur en marche arrêt (2 ordres)

Maintenant chacun pourra l'utiliser comme il l'entend, elle peu tout faire  :D

Quote
Les résistances R6 et R7 sont des résistances qui évitent que lorsque le switch est en position médiane (normal) la base du transistor soit en l'air et risque de faire "antenne".  Ce n'est pas un diviseur de tension.

Dans ce cas je peu les enlever et mettre la position normal a la masse ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 12, 2011, 09:46 am

Pourquoi vouloir gérer les 6 ordres des fils pilotes ? J'avais lu que 4 était bien plus facile a faire que 6. Est ce nécessaire ?


Pour gérer les 4 ordres confort, eco, hors gel et arrêt : le schéma sera identique à celui nécessaire pour gérer les 6 ordres, puisque pour les deux ordres confort-1°C et confort -2°C, comme le dit Skuzmitoo, on agit sur des temporisations logicielles.


Mais surtout pourquoi ne pas gérer que on/off. Car avec les autres ordres on est dépendant de la température relevée par la thermistance du chauffage qui n'est pas forcement bien ajustée, et bien sur que l'on choisit entre 1 et 6 et pas en degrés. alors que vous parliez d'un capteur de température relié a l'arduino ;)


Si on veut gérer un radiateur électrique en on/off s'il n'est pas équipé d'un fil pilote il faut commuter de la puissance, et là c'est plus compliqué, car on ne commute plus des mA (de 1 à 50mA selon les modèles de commande par fil pilote) mais des A voire 10A environ pour un chauffage de 2000W.
Si le radiateur est équipé d'un fil pilote, c'est beaucoup plus facile de gérer les deux ordres "confort" et "arrêt" (ou pourquoi pas "confort" et "hors gel" ou encore "confort" et "eco"). Il faut alors un montage avec au moins un opto-triac, de là en rajouter un deuxième et avoir la possibilité de piloter en 6 ordres !
On peut parfaitement à partir de la mesure de la température faite avec un capteur relié à l'arduino, piloter le radiateur en demandant on = confort ou off = hors gel (par exemple), en fonction de différentes situations : présence ou non, plages horaires, vacances ...


Quote
Les résistances R6 et R7 sont des résistances qui évitent que lorsque le switch est en position médiane (normal) la base du transistor soit en l'air et risque de faire "antenne".  Ce n'est pas un diviseur de tension.

Dans ce cas je peu les enlever et mettre la position normal a la masse ?


Le switch que je propose est du type on/off/on, il ne comporte que trois broches : une broche "commun" et une broche pour chaque contact : sur le schéma le "commun" est relié à la base du transistor à travers une résistance de 10k en série, l'un des contact est relié au +5V (réduit) et l'autre contact est relié à l'arduino. La position intermédiaire (normal) n'est qu'une position où aucun des contacts n'est fermé. Tu ne peux donc pas relier le OV dans cette position.
Il existe des commutateurs à galettes qui permettent de faire ce que tu proposes, mais ils sont plus gros, plus chers et moins communs.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Artouste on Dec 12, 2011, 03:05 pm

Je viens de m'apercevoir que le schéma transmis ne comportait pas la valeur des composants. Je joins une nouvelle version du schéma.


Le schéma est intéressant, mais sauf à l'avoir mal lu, ce n'est pas un vrai équivalent télérupteur meca, en cas de disparition et retour d'alim, il ne reste(revient)  pas toujours à son état d'avant coupure ?


Effectivement au retour du secteur le condensateur de 1µF associé à la résistance de 100K sur l'entrée R de la bascule D force celle-ci à zéro.

A ma connaissance les celducs sont des relais statiques et non des télérupteurs statiques, mais il existe peut-être une version télérupteur.
De plus ces composants sont en général assez chers.


bonjour
pas de problemes, j'évoquais les "celduc" pour la facilité d'intégration , ce ne sont là pas plus des vrais télérupteurs comme les meca (maintient de l'état connu  sur perte et recouvrement d'alim  ) que ton schéma.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 12, 2011, 06:33 pm
Bon j'ai rajouter une petite partie logique afin de voir l'état du chauffage au final cela rajoute deux circuits intégrés - 5 LED's et 5 résistances. cela reste raisonnable pour le confort apporté (un simple coup d'œil pour contrôler l'état de la carte).

Bon il me reste un dernier soucis Brisbee, il s'agit de ta commande EJP, lorsque je fais la simulation sans les diodes 1N4148 cela fonctionne a merveille, maintenant dès que je rajoute la commande EJP avec les DIODES, le programme ne marche plus ?

Si j'ai bien compris elles servent a éviter un courant de retour et permettent de forcer les sorties de l'arduino sans l'endommager, mais sa ne marche pas, vraiment bizarre.

Deuxièmement, comment récupère tu ton signal EJP, et de combien de Volts est-il ?

Voici le nouveau schéma :
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 12, 2011, 06:57 pm

Bon j'ai rajouter une petite partie logique afin de voir l'état du chauffage au final cela rajoute deux circuits intégrés - 5 LED's et 5 résistances. cela reste raisonnable pour le confort apporté (un simple coup d'œil pour contrôler l'état de la carte).


C'est effectivement intéressant de pouvoir lire directement l'état du pilote, mais du coup les deux LED initiales ne servent plus à rien, et les informations des entrées visu pourraient être prises au niveau des transistors (en fait cela revient à remplacer les 2 LED d'origine par une logique combinatoire qui donne l'état du pilote sur 4 LED, confort, réduit, hors gel et arrêt.

Je ne sais pas si j'ai été clair.


Bon il me reste un dernier soucis Brisbee, il s'agit de ta commande EJP, lorsque je fais la simulation sans les diodes 1N4148 cela fonctionne a merveille, maintenant dès que je rajoute la commande EJP avec les DIODES, le programme ne marche plus ?

Si j'ai bien compris elles servent a éviter un courant de retour et permettent de forcer les sorties de l'arduino sans l'endommager, mais sa ne marche pas, vraiment bizarre.

Deuxièmement, comment récupère tu ton signal EJP, et de combien de Volts est-il ?


Le signal EJP est un 5V ramené à travers le contact sec d'un relais fourni par EDF.

Mais ne t'embête pas pas la commande EJP, si cela ne concerne que moi, je vais bien me débrouiller pour le faire fonctionner.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Oliv4945 on Dec 12, 2011, 07:42 pm


Pourquoi vouloir gérer les 6 ordres des fils pilotes ? J'avais lu que 4 était bien plus facile a faire que 6. Est ce nécessaire ?


Pour gérer les 4 ordres confort, eco, hors gel et arrêt : le schéma sera identique à celui nécessaire pour gérer les 6 ordres, puisque pour les deux ordres confort-1°C et confort -2°C, comme le dit Skuzmitoo, on agit sur des temporisations logicielles.

OK :)



Mais surtout pourquoi ne pas gérer que on/off. Car avec les autres ordres on est dépendant de la température relevée par la thermistance du chauffage qui n'est pas forcement bien ajustée, et bien sur que l'on choisit entre 1 et 6 et pas en degrés. alors que vous parliez d'un capteur de température relié a l'arduino ;)


Si on veut gérer un radiateur électrique en on/off s'il n'est pas équipé d'un fil pilote il faut commuter de la puissance, et là c'est plus compliqué, car on ne commute plus des mA (de 1 à 50mA selon les modèles de commande par fil pilote) mais des A voire 10A environ pour un chauffage de 2000W.

Oui c'est le problème que j'ai eu :(


Si le radiateur est équipé d'un fil pilote, c'est beaucoup plus facile de gérer les deux ordres "confort" et "arrêt" (ou pourquoi pas "confort" et "hors gel" ou encore "confort" et "eco"). Il faut alors un montage avec au moins un opto-triac, de là en rajouter un deuxième et avoir la possibilité de piloter en 6 ordres !
On peut parfaitement à partir de la mesure de la température faite avec un capteur relié à l'arduino, piloter le radiateur en demandant on = confort ou off = hors gel (par exemple), en fonction de différentes situations : présence ou non, plages horaires, vacances ...

Rah c'était à ça que je pensais, mais effectivement on est plus à un MOC près  :smiley-mr-green:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 12, 2011, 07:44 pm
Oui c'est vrai j'ai oublié de supprimer les deux autres LED de visualisation qui ne servent plus a rien.

Je laisse tombé l'EJP alors (maintenant tu peux le lire sur l'arduino et actionner en fonction de l'EJP)

Une dernière question concernant ce montage avant que je fasse le typon, tu peux mettre un lien sur le type d'interrupteur que tu utilises s'il te plait.
Pour les condensateurs du régulateur, ce sont des chimiques ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 12, 2011, 08:17 pm

Une dernière question concernant ce montage avant que je fasse le typon, tu peux mettre un lien sur le type d'interrupteur que tu utilises s'il te plait.


Pour le switch c'est le modèle DPDT On-Off-On  1MD3T1B5M1QE
sur la page http://fr.farnell.com/jsp/level5/module.jsp?moduleId=fr/311897.xml (http://fr.farnell.com/jsp/level5/module.jsp?moduleId=fr/311897.xml)


Pour les condensateurs du régulateur, ce sont des chimiques ?


Le condensateur avant le régulateur est un chimique et celui après un tantale goutte.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 13, 2011, 10:33 am
Bon, maintenant que nous  avons bien avancé sur l'aspect matériel du pilotage d'un chauffage électrique, nous pouvons passer à autre chose !

Pour moi, se posent des tas de questions, je vais essayer de les ordonner et de ne pas toutes les poser en même temps, je commence par les deux qui me préoccupent le plus et qui conditionnent la suite.

1) Je veux pouvoir faire fonctionner mon chauffage (mais, c'est aussi vrai pour d'autres fonctions : arrosage, éclairage ?, …) selon des plages horaires déterminées, par exemple.
a) pour les zones 1,2 et 4 :
- les lundi, mardi, mercredi, jeudi et vendredi selon : de HH1:MM1 à  HH2:MM2 et de HH3:MM3 à HH4:MM4
- les samedi et dimanche selon : HH5 :MM5 à   HH6:MM6 et de HH7:MM7 à HH8:MM8
b) pour les zones 3 et 5 :
les lundi, mardi, jeudi et vendredi selon : de HH9:MM9 à  HH10:MM10 et de HH11:MM11 à HH12:MM12
- les mercredi, samedi et dimanche selon : HH13 :MM13 à   HH14:MM14 et de HH15:MM15 à HH16:MM16

C'est vraiment un exemple, il faut que cela soit le plus souple et malgré tout le plus simple possible !

J'ai une horloge temps réel DS1307 connectée sur mon arduino.

Ma question : Où est-il le plus pratique de stocker les différentes données des plages horaires ?
Dans l'arduino, en mémoire flash ? Toutes ou celles de la journée en cours ?
Si c'est uniquement celles de la journée en cours => les autres données sont stockées sur le serveur web.

2) Ma deuxième question concerne le serveur web : il en a déjà été question dans des contributions  précédentes de ce même sujet, des avis ont été donnés mais il n'y a pas d'option choisie.
- J'ai une carte Ethernet shield W5100 avec lecteur SD, mais j'ai aussi une carte Ethernet shield ENC28J60.
- J'ai également un disque dur NAS (Iomega Home Media) qui tourne en permanence et est branché le réseau local, avec lequel je crois pouvoir faire un serveur web.
- J'ai également un (petit) espace hébergé avec un nom de domaine.

J'ai donc plusieurs possibilités :
1) utiliser uniquement l'arduino Mega 2560 avec Ethernet Shield, s'il est possible de stocker une partie des données et des images sur la carte SD.
- Avantage : l'accès aux données est facile (si ce n'est que je n'ai pas trouvé comment stocker et lire sur la carte SD).
- Inconvénients : espace de stockage limité (sauf si SD fonctionnelle), accès par le web ?
2) essayer d'utiliser le serveur du disque dur NAS (je ne sais pas si cela est possible).
- Avantage : accès facile depuis réseau local ?
- Inconvénient : pb si NAS HS
3) utiliser un espace hébergé.
- Avantage : accès facile depuis le web
- Inconvénient : ne marche pas si pas de connexion ADSL ou si hébergeur inaccessible (rare).

Vers quelle solution me conseilleriez-vous de m'orienter, en sachant que je ne suis pas du tout un spécialiste des réseaux et de la programmation web ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Artouste on Dec 13, 2011, 12:56 pm



J'ai une horloge temps réel DS1307 connectée sur mon arduino.

Ma question : Où est-il le plus pratique de stocker les différentes données des plages horaires ?
Dans l'arduino, en mémoire flash ? Toutes ou celles de la journée en cours ?
Si c'est uniquement celles de la journée en cours => les autres données sont stockées sur le serveur web.

reflexion rapide
data en demi dur pour un scenario de "reveil" de l'arduino  en eeprom,
je prévoirais au moins 2 jours J et J+1 de sequençage, en pratique (mais voir occupation de l'eeprom) un certain idéal serait d'avoir une semaine (7 jours) de sequençage, en cas de gros probleme de MAJ , ça permet de tourner sur le cycle des 7 jours precedant la derniere MAJ
Accessoirement en regardant un produit évoqué sur une autre topic, je suis tombé sur ça shield RS485 (en half)
http://www.robotshop.com/eu/rs485-shield-arduino-3.html (http://www.robotshop.com/eu/rs485-shield-arduino-3.html)



Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 13, 2011, 01:50 pm

data en demi dur pour un scenario de "reveil" de l'arduino  en eeprom,
je prévoirais au moins 2 jours J et J+1 de sequençage, en pratique (mais voir occupation de l'eeprom) un certain idéal serait d'avoir une semaine (7 jours) de sequençage, en cas de gros probleme de MAJ , ça permet de tourner sur le cycle des 7 jours precedant la derniere MAJ


C'est vrai qu'il faut voir ce que cela donne : une plage horaire de HH1:MM1 à HH2:MM2 peut être stockée sur 4 octets,
je vais avoir au maximum : 7 zones de chauffage + 10 zones d'arrosage + 10 zones d'éclairage + 5 zones pour les volets (je ne sais pas encore si les volets suivront des plages horaires) mais mettons !
soit 32 zones avec au maximum 3 plages horaires => 96 plages horaires de 4 octets
=> 384 octets/jour ce qui fait au total 2688 octets ce qui est jouable sur une Mega 2560 (si je n'ai pas fait d'erreur !)


Accessoirement en regardant un produit évoqué sur une autre topic, je suis tombé sur ça shield RS485 (en half)
http://www.robotshop.com/eu/rs485-shield-arduino-3.html (http://www.robotshop.com/eu/rs485-shield-arduino-3.html)


C'est pas mal, mais j'ai ça http://www.goodluckbuy.com/arduino-io-expansion-shield-v5-xbee-sensor-shield-rs485.html (http://www.goodluckbuy.com/arduino-io-expansion-shield-v5-xbee-sensor-shield-rs485.html) en commande.
Je pense que c'est pareil avec des choses en plus.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 13, 2011, 01:51 pm
Yop Artouste,
j'avais déjà vu ce shield et je me posais la question de savoir à quoi servait le bss123 (q1) que je vois dans son schéma, sélection "automatique" entre transmission/réception, enfin surtout pour la transmission ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 13, 2011, 06:23 pm
Quote
2) essayer d'utiliser le serveur du disque dur NAS (je ne sais pas si cela est possible).
- Avantage : accès facile depuis réseau local ?
- Inconvénient : pb si NAS HS


Moi j'opterais bien pour cette solution avec un produit de ce type : Synology Disk Station DS110j 500 Go, si vous connaissez moins cher je suis preneur du tuyaux, car je le trouve un peu cher quand même.

Maintenant pour le problème du NAS HS, c'est vrai cela peu arriver, mais bien protéger avec un onduleur, je trouve que cela est la solution la plus fiable. Le serveur web ne sera pas toujours joignable (j'ai de gros problème avec celui de mon fournisseur), l'espace de stockage de l'arduino est trop limitée et il ne gère ni le PHP, ni le sql (moins pratique pour le stockage et l'utilisation des données).

Donc pour commencer mes essais, je vais commencer par le serveur web sur internet pour migrer par la suite vers une solution de ce type si je ne suis pas satisfait de l'hébergement en ligne.


Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 13, 2011, 07:03 pm
Comme je l'ai déjà spécifié moi je compte sur un arduino contrôleur uniquement dédié au scénario, plage horaire, ...
Il enverrait la/les trame(s) trame correspondante préfixé selon horaire ou autre conditions.
Maintenant la solution web est pas plus mal, pour cette solution je verrais bien la proposition du nas ou plutôt encore plus minime mais largement suffisant, quelque chose comme ça, simple, pas chère (entre 60-70€ sur baybay, 20-30€ sans l'écran tactil) http://www.pobot.org/Rapide-presentation-de-la-carte.html avec openWrt d'installer.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 13, 2011, 07:49 pm
Yep!

Je rejoins osaka dans sa reflexion, je préfère que ce soit l'arduino qui s'occupe de la gestion des plages horaires.
Utiliser un serveur ou une mini-board revient en définitive à déporter le cerveau sur un équipement de ce genre. Donc, à priori, l'arduino maître est mort ?

Une autre option qui me plairait plus serait de séparer l'applicatif du contexte hardware, l'applicatif dans mon sens ne doit pas piloter les cartes, il sert à ajuster les paramètres et prendre compte des anomalies. Un historique des manipulations diverses peut être sauvegardé sur celui-ci, ce n'est pas vraiment un problème. Mais le cerveau doit être le plus embarqué possible dans la partie hardware et ne doit pas souffrir d'une multitude d'applicatif ou de contexte trop différent. Openwrt ou consors, reviendrait à ajouter une tâche supplémentaire à un projet en plein essors. Linux est un monde à lui seul.
Ce que l'on recherche en définitive est que l'installation soit la plus autonome possible. Naturellement, un sîte web est bien jolie. Mais ce n'est qu'une option possible.

Pour évoluer en terme d'espace de stockage, la solution la plus simple est d'ajouter une eeprom. Il existe des eeprom de 512K bus I2C à des tarifs raisonnables.


@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 13, 2011, 07:54 pm
@osaka, elle a l'air sympa cette carte !

Est ce qu'on peut imaginer dupliquer le site automatiquement avec rafraichissement régulier (toutes les x heures), par exemple chez un hébergeur et sur le NAS (ou carte serveur web) et faire en sorte que l'arduino se connecte sur l'un et s'il n'arrive pas à se connecter, il va chercher les infos sur l'autre site ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 13, 2011, 08:05 pm

Une autre option qui me plairait plus serait de séparer l'applicatif du contexte hardware, l'applicatif dans mon sens ne doit pas piloter les cartes, il sert à ajuster les paramètres et prendre compte des anomalies. Un historique des manipulations diverses peut être sauvegardé sur celui-ci, ce n'est pas vraiment un problème. Mais le cerveau doit être le plus embarqué possible dans la partie hardware et ne doit pas souffrir d'une multitude d'applicatif ou de contexte trop différent. Openwrt ou consors, reviendrait à ajouter une tâche supplémentaire à un projet en plein essors. Linux est un monde à lui seul.


Je ne comprends pas tout ce que tu écris là, comme je l'ai déjà expliqué, je ne suis pas familier des technologies réseau.
Pourrais-tu stp développer un peu ?
Merci
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 13, 2011, 08:12 pm
Quote
Donc, à priori, l'arduino maître est mort ?


Non pas du tout bien au contraire, il est le coeur du système.

Pour moi le serveur servira a recueillir et stocker les données de l'arduino, températures, consommation, etc... et a activer les modules en fonction d'ambiances par exemple. L'interface web me permettra aussi de programmer les plages horaires des différents modules, maintenant en aucun cas elles seront stocker sur le web le serveur les enverra sur l'arduino et ira chercher les valeurs sur l'arduino, maintenant si il y a une panne sur le serveur l'arduino sera complètement autonome et c'est cela qu'il faut.

Maintenant pour le stockage des données horaires etc j'avais envisager l'emploi de la SD card en y créant des fichers txt. L'arduino est tout a fait capable de gérer un fichier texte en faisant du parsing. Il y aurait un fichier texte pour le chauffage, un pour l'arrosage etc... et dans le fichiers texte il y aurait par exemple :
$[LUNDI][MARCHE][08:00][ARRET][10:00]
$[LUNDI][MARCHE][20:00][ARRET][22:00]
$[MARDI][.......]
$[MERCREDI]....
.....
et cela serait ces données qui seront écrites par le serveur web et c'est également ces données que le serveur irait lire.


Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 13, 2011, 08:17 pm
Yep!

Quote
Est ce qu'on peut imaginer dupliquer le site automatiquement avec rafraichissement régulier (toutes les x heures), par exemple chez un hébergeur et sur le NAS (ou carte serveur web) et faire en sorte que l'arduino se connecte sur l'un et s'il n'arrive pas à se connecter, il va chercher les infos sur l'autre site ?


Je réponds à la place d'osaka, car j'ai déjà réalisé ce type d'opération. Et je répondrais "oui".
La seule réserve que l'on peut apporter se trouve au niveau des données à synchroniser, si elles sont importantes en terme de taille, il y risque que le site en cours de synchro soit inactif ou difficilement joignable. Mais bon, si on programme la synchro à 2 heure du mat, c'est quasi-transparent. (rsync fait çà trés bien, par exemple.)
Le second petit bémôl est que les hebergeurs utilisent le protocole ftp pour nourrir l'espace d'hebergement. C'est pas trés "secure".

Quote
...
Pourrais-tu stp développer un peu ?


Je voulais simplement appuyer le fait que le développement logiciel était une chose, mais que l'objectif principal est de proposer une solution hardware AUTONOME. En définitive, dés le moment où la carte arduino a la faculté de communiquer avec l'exterieur, nous ne devrions pas nous occuper de se qui se passe à l'autre bout. Dés le moment où la carte est programmée, il n'y plus d'intervention humaine ou trés peu.

EDIT1: La carte Sd me plait bien aussi, mais dans mes précedents essais, j'ai eu des résultats peu concluants. En plus, les librairies sont lourdes.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 13, 2011, 08:51 pm
Merci pour vos réponses.
Les choses se mettent petit à petit en place.
Il y a encore beaucoup de travail, mais c'est super interessant.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 13, 2011, 09:22 pm

Ce que l'on recherche en définitive est que l'installation soit la plus autonome possible. Naturellement, un sîte web est bien jolie. Mais ce n'est qu'une option possible.


Tu résumes parfaitement le côté le plus intéressant du projet, autonomie, optionnel.  :)
Quelque soit la solution choisie par chacun, pas de problème pour donner un coup de main en tout cas. (chacun a ses propre compétences)  ;)  

Pour la synchro comme le dit zoroastre en choisissant le bon moment ça devrait pas posé de problème.
Pour l'eeprom ou sd je peux pas vraiment conseillé comme jamais testé, mais comme le dit zoroaste  j'ai souvent constaté sur le forum des problèmes (carte hs, perte de données, ...) avec la sd ainsi qu'une lib plutôt lourde (apparemment il y en a une plus performante que l'officiel dont je sais plus le nom) :smiley-zipper: .
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Oliv4945 on Dec 13, 2011, 11:05 pm
J'arrive un peu après la bataille mais bon  :P
Pour le stockage des paramètres je pense qu'ils doivent être initialisés à des valeurs logique (par exemple chauffage de 6 à 8h et 16 à 23h) au démarrage du programme.
Reglage via le web au démarrage si possible, et dès qu'un paramètre est changé dans l'interface web il est envoyé à l'Arduino.
J'envisage le stockage en EEPROM mais pas eu le temps  :)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 14, 2011, 10:33 am
Si je résume ce qui est proposé pour le stockage des données, et particulièrement celles de type "plages horaires" :
- On fixe des plages horaires par défaut, en dur => EEPROM ou flash (à voir en fonction de la carte arduino), ce qui permet d'avoir un système qui fonctionne en autonomie, même sans connexion au web.
- On vient modifier les plages horaires  sur un serveur web externe (plusieurs possibilités : hébergement, NAS, petit serveur autonome, ...) ces plages modifiées deviennent les nouvelles plages par défaut (donc remplace les anciennes ?).
Comment identifier les plages horaires qui ont été modifiées par le web pour pouvoir les changer en mémoire EEPROM ou Flash de l'arduino ?
J'ai pensé :
- le serveur web vient récupérer toutes les données pour les afficher, on les regroupe par paquets (par jour, ou par zone, ou ...) on fait un checksum par paquet,
- on vérifie les checksum des paquets en mémoire dans l'arduino et ceux des données affichées,
- si les checksum ne sont pas identiques, on transmet le paquet.
Qu'en pensez-vous ?
Ou avez vous d'autres solutions plus opérationnelles.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Artouste on Dec 14, 2011, 01:46 pm

Si je résume ce qui est proposé pour le stockage des données, et particulièrement celles de type "plages horaires" :
- On fixe des plages horaires par défaut, en dur => EEPROM ou flash (à voir en fonction de la carte arduino), ce qui permet d'avoir un système qui fonctionne en autonomie, même sans connexion au web.
- On vient modifier les plages horaires  sur un serveur web externe (plusieurs possibilités : hébergement, NAS, petit serveur autonome, ...) ces plages modifiées deviennent les nouvelles plages par défaut (donc remplace les anciennes ?).
Comment identifier les plages horaires qui ont été modifiées par le web pour pouvoir les changer en mémoire EEPROM ou Flash de l'arduino ?
J'ai pensé :
- le serveur web vient récupérer toutes les données pour les afficher, on les regroupe par paquets (par jour, ou par zone, ou ...) on fait un checksum par paquet,
- on vérifie les checksum des paquets en mémoire dans l'arduino et ceux des données affichées,
- si les checksum ne sont pas identiques, on transmet le paquet.
Qu'en pensez-vous ?
Ou avez vous d'autres solutions plus opérationnelles.

réflexion
L'index simple est aussi utilisée dans certains domaine pour verifier si une nouvelle MAJ distante doit être faite en local.
L'index 0 faisant office de RAZ
L'interrogation du distant par le local ne faisant que vérifier périodiquement  si le dernier index distant est supérieur au dernier index local récupéré/enregistré (l'écrasement de l'index local par celui distant  étant la dernière opération à effectuer) pour enregistrer en EEP (ou autre demi dur) la dernière version dispo.
un index de type word sur une MAJ possible de 12 fois par jour (c'est déjà luxe)  permet déjà sans débordement de frôler les 15 ans ..
et dans 15 ans .... 8)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Chajo on Dec 14, 2011, 02:58 pm
Bonjour,

Ayant lu l'ensemble des participations à ce fil très intéressant et compte tenu du besoin que j'avais exprimé il y a quelques jours, il me semble important de définir la structure du système. Je viens donc vous faire part de cette réflexion.

Voici comment je vois la structure d'un tel système :

1) Un réseau temps réel constitué d'une carte arduino maître et de cartes esclaves spécialisées en terme de fonctions.
Pour respecter l'aspect temps réel, les modules dialoguent à l'aide d'un bus terrain sur RS 485 par exemple.  J'imagine que les librairies existent déjà pour l'arduino.
Ce sous-système gère les capteurs et actionneurs ; il doit être totalement autonome en terme de process, les paramètres de fonctionnement étant stockés dans l'arduino maître, avec des paramètres par défaut et des paramètres "courants" issus de la dernière modification par l'utilisateur, les valeurs par défaut permettant un démarrage initial.
Par ailleurs, chaque carte de fonction, en plus de faire tourner ses algorithmes (régulation, autosurveillance...) renvoie des infos de valeurs et d'états à la carte maître.
Ce sous-système est relié au reste du monde par une liaison Ethernet sur le réseau local de la maison.

2) Un sous-système de supervision chargé d'assurer l'interface homme-machine.
Il est inutile que la supervision soit "temps réel", un bus informatique lui convient ce qui autorise de la même manière, les actions locales et distantes à travers le web.
La supervision consisterait donc en un site web installé sur un serveur (NAS ou autre) implanté sur le réseau local de la maison.
Quelques pages web devraient suffire pour permettre de modifier les paramètres "courants" contenus dans la carte maître du sous-sytème 1 et donc son comportement.
La supervision rapatrierait également les infos d'état du sous-sytème 1 ainsi que des données des capteurs…à définir.

3) Une fonction d'alerte
La fonction d'alerte est nécessaire pour signaler spontanément des informations de dysfonctionnement du sous-système 1 ou encore des alarmes d'intrusion si la fonction de système d'alarme est utilisée.
Sur occurrence d'un tel évènement, la carte maître pourrait faire émettre un sms circonstancié par le web vers un téléphone programmé.

En conclusion, la structure définie ci-dessus est autonome sur le process, consultable et modifiable en local ou à distance grâce à la supervision ; elle génère "également des messages spontanés (alarme, dysfonctionnement…).

Qu'en pensez-vous ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 14, 2011, 08:13 pm
C'est en gros ma vision des choses et celle des autres participants de ce fil. Je vois en tout cas que beaucoup de personnes suivent celui-ci et toutes les contributions sont intérréssantes.

Une question mais venue a l'esprit ce soir, le contrôle d'une ampoule peu facilement s'effectuer a l'aide d'un MOC + TRIAC mais qu'en est t'il de ces fameuses ampoules a économies d'énergie, sont t-elles toutes des charges inductives cas dans lequel il faudra adapter le dispositif de commande a la puissance de l'ampoule si j'ai bien compris, c'est un peu galère cela. De plus en faisant des recherches a ce sujet j'ai appris deux choses concernant ces ampoules elle rayonnent beaucoup et de plus celui-ci change en fonction de la polarité de l'ampoule (position de la phase et du neutre).
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Chajo on Dec 14, 2011, 11:43 pm
Bonsoir,

Les ampoules à économie d'énergie peuvent être commandées par un triac mais uniquement en tout ou rien, elles sont généralement spécifiées "non dimmable" ce qui signifie qu'elle ne peuvent être modulées par un variateur équipé d'un triac qui fait varier l'angle de passage du courant pour diminuer la valeur efficace.
Seules les lampes halogènes (encore autorisées...) permettent de les connecter à un variateur.

Que les lampes à économie d'énergie rayonnent un champ électromagnétique, c'est normal puisqu'elles contiennent un convertisseur haute fréquence. Par contre, je ne vois pas pourquoi ce champ serait dépendant du sens de connexion à la phase et au neutre...
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 15, 2011, 01:04 am
Je me posais également cette question sur les lampe à économie d'énergie et la variation, il semble y en avoir de plus en plus avec cette possibilité.
exemples :
http://www.produits-economiques.com/produkt.php?lang=fr&pm_id=1495
http://www.produits-economiques.com/products/stufenlos_dimmbare_esl.php?lang=fr

Ca devrait passé non ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: tochinet on Dec 15, 2011, 10:42 am
Post précédent apparemment pas envoyé ce W-E.

En ce qui concerne le stockage des données du programme pour les plages horaires, pour un MEGA je recommande vraiment l'EEPROM : facile à utiliser, largement assez grand (4K), fiable, et surtout, limite les dépendances (tant des librairies que de "l'environnement").

La carte SD, c'est peut--être plus pratique, mais il faut alors aussi inclure dans le sketch toute une série de "précautions" : que faire si elle est absente lors d'un reset, comment détecter le changement, quid des erreurs de format dans le fichier, etc.

Evidemmmnt, on peut rajouter un système de commande déporté avec site web, mais il faut plus voir çà comme de l'OAM (gestion des opérations), çà doit pouvoir "foirer".
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: tochinet on Dec 15, 2011, 03:33 pm
A noter au sujet des ampoules économiques et dimmer : j'ai expérimenté à ce sujet, et si les halogènes sont bien dimmables, ce n'est pas à recommander : J'ai une suspension avec 6 lampes 220V G9, dimmée, et deux appliques assorties (une ampoule) non dimmées. La durée de vie des ampoules dimmées est bien inférieure aux autres. J'ai lu quelque part qu'il fallait faire tourner les ampoules halogènes à 100% régulièrement pour redéposer les particules gazeuses sur le filament, ou quelque chose comme çà. Pour en terminer sur les halogènes : le rendement des 12V est supérieur à celui des ampoules 220V, même en tenant compte des pertes du transfo.

Pour les TL dimmables, pas trop recommandé non plus : plus de scintillement visible, et perte sensible d'efficacité, car la lampe à 80% de puissance a probablement perdu 50% de lumière émise.

En plus, les dimmers coûtent cher, et chauffent, donc durée de vie limitée aussi.

Au sujet des LED, méfiance : toujours se rappeler que la LED n'est _que_ 10x plus efficace que l'incandescence. Donc une 'super LED' 3W ne brille _que_ comme une ampoule 30W.

Conclusion : mieux vaut éviter les dimmers, et choisir la source de lumière adaptée (luminaire, ampoules) pour la faire fonctionner à 100%.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 15, 2011, 05:46 pm
Bonsoir tochinet,


J'ai lu quelque part qu'il fallait faire tourner les ampoules halogènes à 100% régulièrement pour redéposer les particules gazeuses sur le filament, ou quelque chose comme çà.


J'ai lu ça également, maintenant on ne demande de la gradation que pour quelques postes genre salon et pas toute la maison, pour par exemple quand on visionne un film ou faire un gros câlin :* donc dimmé que rarement finalement (ça dépend du nombre de gros câlins :smiley-mr-green:) le reste du temps éclairé à 100%.
Par contre si c'est pour économisé de l'énergie ou autre constamment, là en effet c'est pas conseillé, enfin c'est plus du luxe quoi.
;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 18, 2011, 12:50 pm
Yep!

Pour revenir un peu sur une régulation tor du chauffage central, voici 1 semaine que je 'monitore' mon installation et je tenais à vous faire part de mes conclusions.

Le principe de mon programme original était de déterminer les moments d'inertie de l'air ambiant et de poursuivre, à l'aide de la moyenne de 5 températures, la courbe de température. Les temperatures étaient initialement stocké dans un tableau à une frequence de 4 minutes, soit 4x5 = 20 minutes, puis la moyenne était effectué. Ce délai de 20 minutes m'a confronté à une incohérence et je me suis retrouvé avec 2 enclenchements conséqutifs de mon chauffage central. En effet, l'information d'état inertiel demeura en perdition d'un cycle à un autre, ce qui me permetta de conclure que la frequence de 4 minutes était trop importante et ne permettait pas la réactivité requise, 35 minutes de chauffe sur 40.

La solution la plus simple serait de réduire la frequence de remplissage du tableau, cependant, une trop grande réactivité ne permet pas de réagir face aux variations multiples. C'est pourtant la methode que j'utilise actuellement avec une légère pondération afin d'éviter de trop grande fluctuation.

Une idée du code :
Code: [Select]
if (temperature1 != DEVICE_DISCONNECTED) {
                    total = total - comparateur[index];
                    comparateur[index] = temperature1*100;
                    total = total + comparateur[index];
                    index++;
                    if (index >= ROW) {
                      index = 0;
                      average = total/ROW;
                      if ((average - prev_average) >= 5) { inertie = 1; }                              // DISTRIBUTION
                      else if ((average - prev_average) <= -5) { inertie = -1; }                       // PERDITION
                      else if (((average - prev_average) < 5) && ((average - prev_average) > -5)) { inertie = 0; } // STABLE
                      prev_average = average;
                    }
                  }


Mes différentes simulations me démontrent que les valeurs actuelles suivent correctement la courbe de chauffe, elles sont, par contre, plus d'ordre impulsionnelles et considèrent assez peu dans certain cas une distribution inertielle passive.
Afin d'optimiser ma régulation, je suis donc obligé de considérer une autre stratégie. L'idée de suivre la courbe de chauffe au plus prés est plutôt bonne, mais pas suffisante. Les impulsions doivent être filtrées.

J'ouvre donc une reflexion dans ce sens :
Code: [Select]
/*
REGULATION
- determiner sommetCourbe
- tableau 5 temperatures, freq = 1/mn
- moyenne 5 temperatures = pulse 1, 0, -1
- pulse -1 --> calcul differenciel sommet/temperature
*/

#define HYSTERESIS 0.2

void setup() { }

void loop() {
if (temperature1 != DEVICE_DISCONNECTED) {
total = total - comparateur[index];
comparateur[index] = temperature*100;
total = total + comparateur[index];

sommetCourbe = max(sommetCourbe, temperature);

index++;

if (index >= ROW) {
index = 0;
average = total/ROW;
if ((average - prev_average) > 0) {
pulse = 1;
}
else if ((average - prev_average) < 0) {
pulse = -1;
}
else if (average - prev_average) == 0) {
pulse = 0;
}
prev_average = average;
}
}

if (pulse == 1) {
}

if (pulse == -1) {

ecart = (sommetCourbe - temperature);

if (ecart >= HYSTERESIS) {
amplitude = (sommetCourbe - seuil);
pourcentage = (int)((ecart*100)/amplitude);

if (pourcentage >= 90) && (exterieure = "TRES FROID") {
anticipation = true;
}

perdition = true;
}
else {
perdition = false;
}
}

if (pulse == 0) {
}

if (((temperature < seuil) && (perdition == true)) || (anticipation = true)) {
chauffage = "on";
if (chauffage =! chauffage) { flipon = true; }
}

if (temperature > (temperature + regulation)) {
chauffage = "off";
if (chauffage =! chauffage) { flipoff = true; }
}

if (flipon == true)  {
//gain = consigne - sommetCourbe;              // bascule mode ???
sommetCourbe = 0.0;
flipon = false;
}

if (flipoff == true) {
flipoff = false;
}

}


Une fois que l'on a déterminer le sommet de la courbe, de nombreuse choses sont possibles.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Artouste on Dec 18, 2011, 01:27 pm


La solution la plus simple serait de réduire la frequence de remplissage du tableau, cependant, une trop grande réactivité ne permet pas de réagir face aux variations multiples. C'est pourtant la methode que j'utilise actuellement avec une légère pondération afin d'éviter de trop grande fluctuation.

bonjour
il te faut peutre faire du pseudo filtrage num
les solutions les plus simples avec un "arduino" :
moyenne sur n-2 échantillons après éjection des 2 valeurs extrêmes des échantillons, une profondeur de 5 est couramment utilisée.
là ça ejecte bien les pics en aberration
ou le plus utilisé en lissage simple
T° lissée =0.85 de n +(0.15 de la moyenne des n prédécesseurs=  n-1,n-2,...n-x)

Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 18, 2011, 02:27 pm
Yep!

Merci Artouste pour ces pistes.

La première solution ejectant les extremums ne me plait guère. Elle consiste en définitive à supprimer une population représentative ou pas.
J'avais envisagé la seconde solution avec un rapport 2/3 1/3, elle me semble beaucoup plus cohérente car la dernière valeur mesurée infléchie avec plus de force la moyenne. Cela positionne un bec en bout de courbe pondéré par les 4 valeurs précedentes. Interessant certes !, cependant ce bec peut également être considéré comme une anomalie que rien ne pourra distinguer.
L'idée générale est de comparer la moyenne en cours à la précedente pour obtenir une tendance. Le lissage de la moyenne sur des valeurs en définitive aléatoires (ou presque) n'apporte pas grand chose.
Pour ma part, une fois une tendance évaluée, il faut confirmer, filtrer, convertir en données exploitables. Sachant que les seules tendances à évaluer sont les déperditions in fine.

Définir le sommet de la courbe de chauffe, permet, je pense, d'envisager des mesures plus précises.
  - un écart si au dessus du seuil.
  - une amplitude si au dessus du seuil.
  - un gain si la consigne n'est pas ou peu atteinte.

Des règles de décisions peuvent découler des éléments pré-cités. Il est d'ailleurs tout à fait possible d'envisager cette hypothèse pour une régulation PI/PID.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 18, 2011, 04:19 pm
Merci beaucoup pour cette contribution.

Serait t'il possible d'avoir des courbes pour que l'on voit comment telle méthode réagit sur le chauffage en fonction de la température ambiante ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 19, 2011, 10:44 am
Yep!

Cher Skuzmitoo, j'ai mis en pièce jointe un condensé des anomalies que j'ai repertoriées.
Le format n'est pas trop adapté et j'espère que vous m'en escuserais. Les graphiques ont été réalisé sous Openoffice et exporté en pdf.
Je compte exploité GnuPlot pour réaliser mes graphiques plus tard et les intégrer dans une interface web. Je priviligie des solutions aisées pour l'instant.

Je peaufine encore un peu mes hypothèses et passerais à une nouvelle régulation prochainement.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: tochinet on Dec 19, 2011, 01:41 pm
@zoroastre,

Quelques petits problèmes pour comprendre ton code et tes courbes : tu n'as pas défini tes variables (p.ex. "regulation" ou "seuil" ?)

En fait, je suis un trajet un peu parallèle et je te recommande d' éjecter les lectures extrêmes de tes capteurs. Perso, j'ai constaté un nombre important de lectures fausses, mais çà dépend évidemment de ton installation.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 19, 2011, 03:18 pm
Yep!

Quote
tu n'as pas défini tes variables


Il s'agit plus de verbaliser des idées que de donner un code complet et précis.

Les variables 'regulation' et 'seuil' sont respectivement, une valeur fixe déterminant la température de chauffe maximale à T°+regulation ou T°+0.8 par exemple, et une consigne minimale d'enclenchement de la  chauffe, valeur évoluant au rythme des changements de mode de fonctionnement (confort, eco, ...).

Le problème de suivre la courbe est que l'on ne peut éviter des erreurs de lecture de la sonde. Déterminer la tendance en énumérant et comparant des moyennes, fussent-elles lissées ou non, conduit indubitablement à accepter une proportion d'erreurs.
La méthode de rejeter les extremums, comme je l'ai déjà dit, conduit à refuser une population qui peut être viable ou pas, et impacte directement sur la réactivité du processus de décision.

J'ai pour ma part rejeté le principe de suivre la courbe avec une comparaison de moyenne et m'oriente plutôt sur une methode se basant sur l'écartement entre le sommet de la courbe et la température mesurée. L'avantage principale est que l'on se rapproche du temps réel et, de plus, cette solution me semble universelle.

EDIT1:
Mon raisonnement :
Une moyenne incluera forcément des erreurs de lecture, qu'elles soient uniques ou multiples, la tendance sera faussée ou véritable. Il faut nécessairement la confirmer avant de dire au système, je suis en distribution ou en perdition de calories.
La principale composante est la sonde de température, j'utilise une DS18B20 qui, à une résolution de 12 bits, variera de +/- 0.06 (arrondi).
Si mon besoin est davoir au moins deux confirmations, cela me permet de dire qu'il me faut 2x0.06 °C de variation, soit 0.12 °C, pour conclure de l'état de ma courbe.
Cette variation doit être comparée à une valeur fixe ou déterminée. Le sommet de la courbe s'impose d'elle même dans cette optique.
L'interêt de déterminer le sommet de la courbe est qu'elle prendra de facto aussi bien la distribution active (en cours de chauffe) que la distribution passive (chauffage à l'arrêt).
Une fois que la coube commencera à s'infléchir, l'ecart grandira, il sera soit nul soit strictement positif.

Il faut que je reflechisse désormais à voir comment articuler cette méthode avec différents mode de fonctionnement et déterminer les seuils de décision, dont :
 - Si la température est sous la consigne : il faut être plus réactif = ecart plus faible.
 - Comment interpréter les apports calorifiques dû à l'ensoleillement par exemple.
 - Determiner un gain en mode confort uniquement ?

Tres simplement :
Code: [Select]

float HYSTERESIS = 0.2;
float sommetCourbe, ecart;

if (temperature != DEVICE_DISCONNECTED) {

sommetCourbe = max(sommetCourbe, temperature);
ecart = (sommetCourbe - temperature);

if (ecart >= HYSTERESIS) { perdition = true; }
else { perdition = false; }
}
if ((temperature < consigne_courante) && (perdition == true)) {
chauffage = "on";
if (chauffage =! chauffage) { sommetCourbe = 0.0; }
}



@+

Zoroastre.

Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 19, 2011, 05:40 pm
Il y a une librairie pour faire de la régulation PID. As-tu déjà regardé de ce coté (toi ou quelqu'un d'autre)?
En tout cas super pour les courbes c'est plus parlant comme cela.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 19, 2011, 06:11 pm
Yep!

Une régulation PID n'est pas adapté à une régulation de chauffage Tout Ou Rien. Ce type de régulation est idéal pour maintenir une charge, par example contrôler l'ampérage d'une résistance chauffante pour accrocher une température précise. Si on est en dessous de la température, on augmente l'ampérage et inversement.
Il faudrait pour que je puisse utiliser ce type de régulation avoir une vanne 3 voies proportionnelles et ainsi contrôler la température du fluide. C'est le principe de l'aquastat.
Mon système de chauffage est contrôlé par un relais simple, on ferme le contact, le circulateur et les brûleurs s'activent, on ouvre le contact, tout s'arrête.
Pour qu'une régulation PID puisse être efficace, il faut une cible constante, les fonctions intégration et dérivé servant à réduire l'hysteresis entre l'appareil de puissance et la lecture de la sonde.

Il est vrai que le terme régulation est peut être mal adapté à ma situation et à tout ceux qui ont un système de chauffage 'archaïque'. Les thermostats modernes d'ailleurs utilisent allégrement les mots régulation PI/PID/RST, auto-adaptation, logique floue, etc...et j'aurais été heureux d'apporter une modèste pierre à cet édifice, tant il y a peu de ressources dans ce domaine.

Je ne vois pas comment apporter une régulation de ce type à mon projet, mais je peux me tromper ;)

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 21, 2011, 12:26 am
Yep!

Pour revenir une dernière fois sur la régulation, cela fait quelques temps que je lorgne sur la logique floue. L'énorme avantage est qu'il n'est pas nécessaire de construire de savants algorithmes pour avoir quelque chose qui marche. Il suffit de dire ce que l'on attend du système pour ensuite traduire le verbe en données exploitables par celui-ci.
Suivre la courbe n'est pas satisfaisants et s'assujetir uniquement aux consignes revient à négliger l'hysteresis entre la commande et l'apport réel de calories (disribution active + passive).
L'hypothèse de départ est d'associer ces élements et de leur apposer un poids. Ainsi chaque élément pouvant influancer le rythme de chauffe a sa propre mesure et son importance. La consigne conserve son importance, mais elle sera quelque peu nuancée en fonction de la température exterieure et du flechissement de la courbe de chauffe.
Le régulation d'un chauffage central n'est pas une chose aisée, je vous présente déjà ma 3eme version.

Principe :
J'ai 3 élements : la consigne, la température exterieure, l'ecart par rapport au sommet de la courbe.
Pour chacun des élements, j'ai dréssé un tableau, par exemple pour la consigne, la température est LOIN de la consigne, MODERE ou PROCHE, la température exterieure, FREEZE pour en dessous de zero, COLD, WINTER,etc, pour l'ecart, j'ai une approche plus probabilistique, ecart +1, +2, +3, +4, plus l'ecart monte plus je m'apprioche de la certitude que la courbe flechit.
Grosso modo, si je suis PROCHE de la consigne et que la température exterieure est FREEZE et que j'ai une ou deux confirmation que la courbe à bien flechis à un instant indéterminé, ALORS je chauffe.

Cette methode à l'avantage d'être réactive et de pouvoir émettre des règles d'anticipation si besoin.

La partie le plus compliqué est de rendre des valeurs à la pensée. C'est pourquoi, j'ai utilisé un poids, respectivement 0.7, 0.15 et 0.1 pour la consigne, la temperature exterieure et l'ecart. Bon çà fait pas 100%, mais mon tableau (en pièce jointe) respecte mes attentes.

J'ajoute également un petit code c++ qui fera office d'illustration. Il est possible de modifier la consigne et la température exterieure en fonctionnement, il suffit pour cela d'envoyer *e;#! ou *c;#! en remplacant le # par une valeur intégrale ou flottante. La sonde de temperature et le chauffage sont simulés.

La régulation n'est pas une mince affaire !!! Perso je galère grave docteur !
Et j'attends avec plaisir vos remarques, recommendations, villipendages ;)

@+

Zoroastre.

Code: [Select]
/*
REGULATION
*/

#define STARTBIT '*'
#define STOPBIT '!'
#define BUFFERSIZE 96
char buffer[BUFFERSIZE + 1];
char* TRAME[4];

const float POIDS1 = 0.7; /* CONSIGNE */
const float POIDS2 = 0.1; /* PROBABILITE DEPERDITION CALORIFIQUE */
const float POIDS3 = 0.15; /* TEMPERATURE EXTERIEURE */

float CIBLE[5][3] = {
{ -127.0, 0.0, POIDS1*100 }, /* UNDER */
{ 0.0, 0.1, POIDS1*100 }, /* TOUCH */
{ 0.1, 0.2, POIDS1*86 }, /* NEAR */
{ 0.2, 0.3, POIDS1*80 }, /* MEDIUM */
{ 0.3, 127.0, POIDS1*0 } /* FAR */
};

float PROBABILITY[5][3] = {
       { -127.0, 0.0, POIDS2*0 },
{ 0.0, 0.1, POIDS2*10 }, /* ECART P1 */
{ 0.1, 0.15, POIDS2*30 }, /* ECART P2 */
{ 0.15, 0.2, POIDS2*80 }, /* ECART P3 */
{ 0.2, 127.0, POIDS2*100 } /* ECART P4 */
};

float EXTERIEUR[6][3] = {
{ -127.0, -2.0, POIDS3*100 }, /* FREEZE */
{ -2.0, 2.0, POIDS3*80 }, /* COLD */
{ 2.0, 6.0, POIDS3*60 }, /* WINTER */
{ 6.0, 10.0, POIDS3*40 }, /* AUTOMN */
{ 10.0, 16.0, POIDS3*20 }, /* SPRING */
{ 16.0, 127.0, POIDS3*0 } /* SUMMER */
};

const int longueurTable1 = sizeof(EXTERIEUR)/sizeof(EXTERIEUR[0]);
const int longueurTable2 = sizeof(CIBLE)/sizeof(CIBLE[0]);
const int longueurTable3 = sizeof(PROBABILITY)/sizeof(PROBABILITY[0]);

float sommetCourbe, ecart, temperature = 19.0, temperature_ext = 4.0, consigne = 18.4;

boolean regulation;
int chauffage, compteur;
int value1, value2, value3;

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

regulation = true;
chauffage = -1;
compteur = 0;
 }

void loop() {
 
 checkMsg();

 sommetCourbe = max(sommetCourbe, temperature);
 
 if (regulation) {
   
   ecart = (sommetCourbe - temperature);

   for (int i = 0; i < longueurTable1; i++) {
if ((temperature_ext > EXTERIEUR[i][0]) && (temperature_ext <= EXTERIEUR[i][1])) { value1 = EXTERIEUR[i][2]; }
   }

   for (int i = 0; i < longueurTable2; i++) {
if (((temperature - consigne) > CIBLE[i][0]) && ((temperature - consigne) <= CIBLE[i][1])) { value2 = CIBLE[i][2]; }
   }

   for (int i = 0; i < longueurTable3; i++) {
 if ((ecart > PROBABILITY[i][0]) && (ecart <= PROBABILITY[i][1])) { value3 = PROBABILITY[i][2]; }
   }

   if ((value1+value2+value3) >= 80) { chauffage = 1; }
   else { chauffage = -1; };
 }
 
 Serial.println("################################");  
 Serial.print("value1 = "); Serial.println(value1);
 Serial.print("value2 = "); Serial.println(value2);
 Serial.print("value3 = "); Serial.println(value3);
 Serial.print("total = "); Serial.println((value1+value2+value3));
 Serial.print("temperature is "); Serial.println(temperature);
 Serial.print("chauffage is "); Serial.println(chauffage);
 Serial.println("################################");
 
 delay(5000);
 
 if (chauffage == -1) { temperature = temperature - 0.06; }
 if (chauffage == 1) {
   sommetCourbe = 0.0; regulation = false;
   temperature = temperature + 0.2;
   compteur++;
   if (compteur >= 5) { chauffage == -1; compteur = 0; regulation = true;}
 }

}

void checkMsg() {
 if (getSerialString()) {                                                  // On verifie que la trame soit complete
   filldata(buffer);                                                       // On remplit la structure des donnees
   checkdata();                                                            // On renseigne les variables modifiees
 }
}

boolean getSerialString() {
 int dataBufferIndex = 0;
 boolean storebuffer = false;
 delay(20);
 if(Serial.available() > 1){
       char incoming = Serial.read();
       if(incoming==STARTBIT){
           dataBufferIndex = 0;                                            //Initialize our dataBufferIndex variable
           storebuffer = true;
       }
       if(storebuffer){
         while(Serial.available()){
           char incoming = Serial.read();
           delay(50);
           if(dataBufferIndex == BUFFERSIZE){dataBufferIndex = 0; break; }
           if(incoming == STOPBIT) {buffer[dataBufferIndex] = 0; dataBufferIndex = 0; storebuffer = false; return true; }
           else { buffer[dataBufferIndex++] = incoming; }
         }
       }
 }
 return false;
}

void filldata(char *buffer) {
 char *p = buffer;
 char *str;
 int i = 0;
 while ((str = strtok_r(p, ";", &p)) != NULL) {                             // delimiter is the semicolon
   char *q = str;
   TRAME[i] = q;
   i++;
 }
}

void checkdata() {
 if (strcmp(TRAME[0], "c") == 0) {
   if (strcmp(TRAME[1], "#") != 0) { consigne = string2float(TRAME[1]); Serial.print("RECU c: "); Serial.println(consigne); }                        // Auto update Time
 }
 if (strcmp(TRAME[0], "e") == 0) {
   if (strcmp(TRAME[1], "#") != 0) { temperature_ext = string2float(TRAME[1]); Serial.print("RECU e: "); Serial.println(temperature_ext); }                        // Auto update Time
 }
}

float string2float(char* data) { return atof(data); }
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 21, 2011, 11:07 pm
Bonjour,

Je reviens vers vous, après avoir fait pas mal d'essais sur les différents éléments : Ethernet shield, NAS, serveur web, ... (il me manque encore les capteurs DHT11, que je n'ai pas encore reçu).
J'ai pratiquement pu valider toutes mes orientations générales.
Voici en pièce jointe un schéma global qui décrit l'architecture fonctionnelle que je vais très probablement adopter.
Je suis à l'écoute de vos remarques et suggestions.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 22, 2011, 09:28 am
Yep!

Brisebee, pourquoi les dht11 et le pluviomètre ne sont pas reliés directement à leur unité de commande ???

Il serait également interessant de descendre le shema d'un niveau supplémentaire, avec les pièces de ta maison et la totalité des équipements, cela permettrait de vérifier la concordance de l'ensemble (ULN2803) et d'estimer les longueurs de cable.

Ton shema est semblable à une topologie réseau, pourtant je ne vois pas le bus qui permet de communiquer entre les arduino ?

Le circuit d'interfaçage va requerir également un peu plus de détails techniques (nombre d'uln, ampage de pilotage, en parallèle ???).
Les opto sont là pour quoi ? Pour l'isolation ou pour transmettre (et quelle genre d'information ?).

Voilà un petit panel de question qui me trotte, là, tout de suite, dans la tête ;) Et ce doit être certainement les élements sur lesquels tu doit travailler en ce moment.

En tout cas, bravo et bon courage ;)

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Dec 22, 2011, 10:48 am
Merci zoroastre pour tes remarques.


pourquoi les dht11 et le pluviomètre ne sont pas reliés directement à leur unité de commande ???


Pour ce qui concerne les DHT11 ils servent uniquement à donner une information, à l'écran, sur la température générale et l'hygrométrie de la maison d'une part, et de l'atelier d'autre part, ils n'interviennent pas dans la "gestion automatique" du chauffage, puisque les thermostats et les radiateurs existants sont équipés de leurs systèmes de "régulation" propres. Les deux DHT11 devraient être implantés à moins de 20m de l'unité de gestion, donc selon les données constructeur cela ne devrait pas poser de problème.
Pour ce qui concerne le pluviomètre, je ne l'ai pas encore acheté, (je ne sais donc pas comment il fonctionne réellement). L'unité de commande arrosage existe, telle qu'elle est elle n'est pas prévue pour recevoir les informations d'un pluviomètre. Ce n'est qu'en mode automatique, donc en étant piloté par l'Unité de gestion, que les informations du pluviomètre seront prises en compte. Mon système d'arrosage fonctionne depuis plus de quinze ans sans pluviomètre, c'est vrai que ce n'est pas optimum, mais ce n'est pas dramatique, puisque je puise l'eau sur un forage.


Ton shema est semblable à une topologie réseau, pourtant je ne vois pas le bus qui permet de communiquer entre les arduino ?

Pour l'instant, et dans l'état actuel de mon projet, je n'ai besoin que d'un seul arduino Mega qui correspond à l'unité de gestion.
Mais je me laisse la possibilité d'utiliser un second arduino pour une unité de commande déportée, ou nécessitant un processeur, mais ce sera une évolution non prévue encore (dans ce cas la liaison se fera en RS485).
En attendant, je mets de coté car j'ai suffisamment à faire.


Le circuit d'interfaçage va requerir également un peu plus de détails techniques (nombre d'uln, ampage de pilotage, en parallèle ???).
Les opto sont là pour quoi ? Pour l'isolation ou pour transmettre (et quelle genre d'information ?).

Effectivement je n'ai pas encore fait le point exact des E/S nécessaires, je ne sais pas encore si je vais systématiquement reboucler les sorties sur des entrées pour pouvoir lire l'état des sorties même en cas de forçage manuel ou pas. Je ne sais pas encore comment relier les DHT11, ni le pluviomètre.
Les opto-coupleurs sont existants sur mon système actuel, et je me pose la question de réutiliser la carte existante ou si je vais en refaire une, en fait cela dépendra beaucoup des décisions prisent par rapport aux questions précédentes, ils servent effectivement à isoler les entrées et à protéger l'unité de gestion. Chaque unité de commande a son alimentation propre, seul le 0V est commun, ce qui réduit la sensibilité des entrées par rapport aux diverses perturbations transmises par les câblages.

Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 22, 2011, 04:56 pm
Yop Yop,
zoroastre on vois que tu connais bien ton sujet concernant la régulation, si je comprend bien c'est basé sur la probabilité et prévision ?
BriBri vivement les détails de chaque unité  :) .
Pour ma part je travailles sur le bus rs485 et j'ai déjà quelques résultat intéressant (half 2 fils et full duplex 4 fils), également de bon résultat sur le multi-processor Communication Mode des atmega sur un mega et 3 mini.
Un seul frein à la bonne continuation de mes testes c'est le temps d'attente du matériel commandé sur le web :(.
(si quelqu'un sait où je peux trouvé une boutique (physique) qui vende des sn75176 en BE du côté du brabant wallon  :smiley-mr-green:).
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Artouste on Dec 22, 2011, 05:47 pm


(si quelqu'un sait où je peux trouvé une boutique (physique) qui vende des sn75176 en BE du côté du brabant wallon  :smiley-mr-green:).

au plus pres chez Elecdif Chnord ?  :smiley-mr-green:
http://www.electronique-diffusion.fr/advanced_search_result.php?keywords=sn75176&x=8&y=8
Dunkerque
- Wervicq (pas sur qu'il y ai une boutique)
- Villeneuve d'Ascq
- Lens

téléphoner avant pour s'assurer de la dispo (reserver) et si c'est comme pour Paris(Malakoff) si pas dispo en boutique, "ils" commandent et c'est dispo sur site qq jour après. (pour Paris c'est le mercredi pour commande jusqu'au samedi precedent )
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 22, 2011, 06:06 pm
Yep!

Tiens "brabant wallon" c'est du côté de Dunkerque ???

Mes sn75176, je les aies acheté chez electronique diffusion sans réservation ni coup de téléphone, ni rien, ils ont à priori un stock, que je pensais juste réservé pour moi seul  XD

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 22, 2011, 07:08 pm

Tiens "brabant wallon" c'est du côté de Dunkerque ???


Juste un poil moins de 200Km  :smiley-mr-green: , merci quand même Artouste  ;) .
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Artouste on Dec 22, 2011, 08:47 pm


Tiens "brabant wallon" c'est du côté de Dunkerque ???


Juste un poil moins de 200Km  :smiley-mr-green: , merci quand même Artouste  ;) .



:smiley-mr-green: :smiley-mr-green:
J'ai mis ce qu'il y avait au nord ... de la seine  8)
Et puis Nivelles Lille (villeneuve d'ascq) ça fait à vol de coq moins de 100km  :)
Bon d'accord,  ce n''est pas ce qu'il y a de plus ecolo et économe comme solution pour recuperer qq SN75176  :smiley-red:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 22, 2011, 08:47 pm
Yep!

Pour répondre à ta question Osaka,

Quote
...si je comprend bien c'est basé sur la probabilité et prévision ?


La régulation s'effectue en 3 étapes.

Tout d'abord, on situe la temperature par rapport à la consigne grace à des bornes.
 - Si la temperature est entre la consigne et la consigne+0,1, on est TRES PROCHE.
 - Si la temperature est entre la consigne+0,1 et la consigne+0,2, on est PROCHE
 - et ainsi de suite...

On fait de même avec la temperature exterieure.
 - Si la temperature exterieure est en dessous de zero, on est GELE.
 - Si la temperature exterieure est entre 0 et +5, on a FROID.
 - et ainsi de suite.

Pour l'inertie, l'approche par la moyenne ne me satisfaisant pas, j'emets d'autres hypothèses dont, le sommet de la courbe et l'ecart entre celui-ci et la temperature.
Les sondes DS18B20, à une résolution de 12 bits, ont, arrondi, une variance de +/-0.06 °C.
Ainsi :
 - Si l'ecart est de 0.06, la certitude est PLUTOT FAIBLE.
 - Si l'ecart est de 0.12, la certitude est PROBABLE.
 - Si l'ecart est de 0.18, la certitude est PROPAGEE.
 - Si l'ecart est de 0.24, la certitude est PLUS QUE PROBABLE.
Cette solution a le merite de partir de données certifiées, c-a-d, le sommet de la courbe et l'ecart. De plus, ces valeurs ne sont pas trop compliquées à déterminer. Contrairement à la moyenne, lissée ou non.
J'ai une autre idée en tête, determiner la valeur max de l'ecart, normalement toujours constant en déperdition, et placer d'autres bornes servant à repérer les hypothétiques distributions calorifiques dû au soleil par exemple.
Importer les conditions météorologiques est une autre solutions, sachant qu'elles sont plutôt favorable l'aprés midi en cas d'ensoleillement.

L'étape suivante est de donner un poids à chacun de ces éléments de par leur importance. Ainsi, la consigne est essentielle et se voit attribuée une note élevée. La temperature exterieure et l'inertie ont une note plus faible, mais qui peut avoir son importance dans des situations précises.

En mélangeant tout çà, on arrive à obtenir un tableau correspondant au fonctionnement du chauffage dans différentes circonstances. Si des valeurs sont erronnées, on ajuste certaine note jusqu'à arriver au fonctionnement voulu. C'est un peu la soupe, car empirique, mais une fois que les règles sont établies et les notes attribuées, ben çà marche.

Il y a ensuite deux méthodes d'ecritures possibles pour le code, soit on repertorie les règles qui marchent et on les écrit une à une, soit comme dans mon exemple, on ecrit les tableaux, les bornes et leurs notes et on prend en compte tous les cas.
Cette seconde méthode me plait plus, car il sera possible à l'utilisateur de choisir si il désire prendre en compte ou pas la temperature exterieure par exemple et ainsi donner plus de poids à la consigne et se soustraire des anticipations de chauffe lors de grand froid. Il sera possible de définir des réglages avancés sans trop rentrer dans le détail, du genre MODE 1 { CONSIGNE SEUL }, MODE 2 { ANTICIPATION FORT }, etc...

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Artouste on Dec 22, 2011, 09:17 pm


Pour l'inertie, l'approche par la moyenne ne me satisfaisant pas, j'emets d'autres hypothèses dont, le sommet de la courbe et l'ecart entre celui-ci et la temperature.
Les sondes DS18B20, à une résolution de 12 bits, ont, arrondi, une variance de 0.06 °C.
Ainsi :
 - Si l'ecart est de 0.06, la certitude est PLUTOT FAIBLE.
 - Si l'ecart est de 0.12, la certitude est PROBABLE.
 - Si l'ecart est de 0.18, la certitude est PROPAGEE.
 - Si l'ecart est de 0.24, la certitude est PLUS QUE PROBABLE.


juste sur ce point , attention avec les DS18B20 (et d'ailleurs les capteurs T° courants surtout ceux emportant de l'AD)
Si la résolution est de 0.0625° la precision elle n'est au mieux que de +/- 0.5° sur la gamme "courante -10 +85 °" et +/- 2° sur les bords extrêmes de la gamme.
J'ai fait il y a déjà quelques temps des tests "de pure curiosité" en enceinte climatique de deverminage, la variation rendue n'est pas toujours dans le sens de la variation effective ou en régime stabilisé, il faut tenir compte de certaines aberrations due à la conversion A/D.
Jouer là sur les 2 bits de poids faibles (résolution de 4 * 0.6xx) me semble "illusoire" .
mais ceci n'est là à ce stade que mon approche de la méthode fuzzy logic envisagée !   8)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Dec 22, 2011, 10:06 pm
Yep!

Trés bonne remarque Artouste ;)

C'est d'ailleurs une des raisons pour laquelle mon approche est plutôt probabiliste sur cet aspect.
Les DS18B20 sont assez capricieuses par moment et elles subissent, en plus de leur précision relative, des variations importantes. Elles sont fortement impactées par l'environnement : un courant d'air et la température baisse de 0.2°, l'éclairage ambiant également semble avoir une influence, j'ai remarqué lorsque j'allumais la lumière du salon, un léger gain !!!, elles montent trés vite en temperatures et sont donc en définitives trés sensibles. Bien plus que mon thermomètre Lacross situé tout à côté. Par contre, une fois la sonde stabilisée, il y a souvent peu d'ecart avec mon thermomètre Lacross justement. Elles ont effectivement besoin de temps pour se stabiliser, mais elles y arrivent et d'autant plus lorsque la temperature descend pas aprés pas. (Petite précision, ma sonde est à nu, sans boitier ni rien)

Quote
Jouer là sur les 2 bits de poids faibles (résolution de 4 * 0.6xx) me semble "illusoire".

Pas tant que çà en définitive, si au demeurant 4x0.06 semble peu crédible, si on compare cette valeur au sommet de la courbe, on constate effectivement un flechissement de celle-ci. La marge d'erreur n'excedant que trés rarement 0.12° d'aprés mes courbes, cette donnée peut être dite "probable".

Effectivement, cette solution ne me plait pas plus que çà, je te rassure, mais dans certain cas, le système de chauffage necessitera une réactivité plus véloce, principalement dans des situations de relevage élevées suite à une consigne trés basse. Et redescendre de 0.5° est un peu trop fort à mon goût.

Si je reprends ton raisonnement, la moyenne que nous avions évoqués plus haut n'est pas plus valable.

Je suis passé par cette phase de reflexion et j'ai choisi pour l'instant la moins pire il me semble. Comme je l'ai dit, basé sa régulation sur le sommet de la courbe me semble être plus judicieux, une valeur "sûre", comparativement à la moyenne trop sujette à caution. Une fois qu'on a atteint le sommet, on ne peut aller plus haut, on va forcement redescendre et dans prés de 92% l'ecart correspondra à l'amplitude entre le sommet de la courbe et la consigne, ecart d'environ 1 à 1.5° généralement. Dans ce cas, 4x0.06° me suffit amplement.

La logique floue peut, je pense, résoudre ce problème également et j'avais évoqué la possibilité de positionner des bornes soit aux environs de l'ecart, pour évaluer ses variations, soit au sommet de la courbe, pour évaluer les tendances à venir. Je ne suis pas encore décidé, certains cas sont problématiques. Je préciserais mon raisonnement plus tard (sommet moyen, ecart type, marge d'erreur, gain, etc.)

Je précise derechef que j'ai apposé un poids plutôt faible à l'inertie dans mon raisonnement à base de logique floue.

Le problème dans l'évaluation de la tendance de la courbe de chauffe se situe sur l'echelle trés faible sur laquelle il faut travailler. En effet, si mon chauffage et mes radiateurs sont capables de relever la température de 1°C pour un temps de chauffe constant, 0.2° correspond déjà à 20% de chutte, 0.5° à 50%. Il faut profiter au maximum des échanges thermique en roue libre et maitriser la relance.
Il y a en définitive deux cas litigieux, celui où la temperature est sous la consigne et celui, où suite à une relance, la temperature est juste au dessus de la consigne (genre +0.2). La temperature ambiante va arriver à son point d'équilibre, une certaine forme de stabilité, toute relative certes, et dont il faut "sentir" le flechissement.

Il n'y a pas de methode de calcul simple pouvant déterminer la tendance d'une courbe, elle sera approximative, peut être vérifiée deux fois ou necessitant deux methodes concourantes.

Je pense que ma méthode est tout à fait convenable, et sans remettre en cause mon choix materiel, elle le serait assurement plus avec des sondes de grandes précisions.

En tout cas, merci pour tes remarques. Je suis plongé sur ce sujet depuis quelques semaines et à chaque fois que je pense toucher quelques choses, je me heurte à de nouvelles difficultés, et en vérité, j'adore çà ;)

@+

Zoroastre.

EDIT1 : Un petit cours interessant sur la regul : http://btscira.perso.sfr.fr/page1/page64/page64.html (http://btscira.perso.sfr.fr/page1/page64/page64.html), où l'on s'aperçoit qu'en tout ou rien, "La mesure ne peut pas être constante dans ce type de régulation, le système est en régime d'instabilité entretenue."
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Artouste on Dec 23, 2011, 12:20 pm



Je pense que ma méthode est tout à fait convenable, et sans remettre en cause mon choix materiel, elle le serait assurement plus avec des sondes de grandes précisions.

En tout cas, merci pour tes remarques. Je suis plongé sur ce sujet depuis quelques semaines et à chaque fois que je pense toucher quelques choses, je me heurte à de nouvelles difficultés, et en vérité, j'adore çà ;)


Bonjour
Loin de moi de dénigrer ta méthode de régulation.
moi aussi j'adore çà, la confrontation des idées  !
L'intelligence c'est de creuser les difficultés lorsqu'elles apparaissent et pas de les ignorer comme beaucoup, In fine la satisfaction en  est d'autant plus grande.  :smiley-mr-green:

Sur ce : je vais m'occuper de la regul de ma cheminée dans ma campagne, j'ai une méthode imparable :
Etat =Si ça fume en haut de cheminée lorsque je vais arriver, c'est que quelqu'un aura fait la corvée de buches à ma place  :)
Action = Rien à faire sinon se servir un petit apéritif.
Etat = Si ça ne fume pas
Action = Attraper le 1er neveu qui passe, l'envoyé chercher des buches, lui faire allumer le feu ET servir un petit apéritif (l'ordre n'est pas là imperatif)  :smiley-mr-green:

Bonnes fêtes de Noël à tous
Plus de son, plus d'image ici me concernant jusqu'au 26 8)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Dec 26, 2011, 08:12 pm
Et bien je vois que cela ne chaume pas. Noël est passé, je vais donc pouvoir commander mon arduino et contribuer plus activement avec vous.
Malheureusement je ne vais pas être très présent prochainement car ma femme va accouché d'ici peu et je part en stage de mi-janvier a mi-février, mais je ne manquerais pas de vous suivre.

En tout cas je vous souhaite de bonne fête a tous
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Dec 27, 2011, 04:17 pm

Malheureusement je ne vais pas être très présent prochainement car ma femme va accouché d'ici peu


Félicitation  :), tu vas pouvoir contribué lors de tes nombreuse nuits blanche.  :smiley-mr-green:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: tochinet on Jan 03, 2012, 03:57 pm
Salut zoroastre et tous, je vous souhaite une très bonne année 2012, pleine de joies arduinesques et autre régulations.

Au sujet des SN75176, ils n'ont pas çà chez Cotubex (Bruxelles) ?

Pour les moyennes, j'ai du mal à comprendre pourquoi elles sont si "compliquées" ou "peu fiables" : la température d'une maison varie très peu ! Donc si on la mesure toute les x secondes, on peut encore faire une moyenne géométrique très large sans risque,, genre       valeur_moyenne = 0.99 * valeur_moyenne + 0.01 * nouvelle _mesure

Dans le code, j'ai du mal à comprendre les ajustements de température   "-0.06" ou "+0.2", pourquoi n'y-a-t'il pas plutôt un analogRead ou OneWire::read  ?


De mon côté,j'en suis encore à l' "espionnage" de mon système de régulation existant (Sauter EY3600 avec des sondes NI1000 pulsées...), donc pas de trucs très probants à l'heure actuelle, mais même si ma commande est une pompe à chaleur (donc fonctionnement d'une heure sans arrêt recommandé), et j'ai une (vieille) expérience de fuzzy logic, j'envisage quand même plutôt le PID avec des moyennes mobiles ...  Ma valeur de sortie principale n'est pas "brûleur ON/OFF", mais bien "minutes de chauffe/24h", à raffiner par la suite (p.ex. pour tenir compte de l'inertie thermique de la maison).

Je compte aussi installer certains DS18B20 pour raffiner les circuits de chauffe, tenir compte des heures où la cassette/les panneaux solaires fonctionnent, etc. mais c'est pour _encore_ plus tard. Avant çà, j'ai d'autres chats à fouetter avec une alarme pour quand la PAC se met en sécurité, étalonner les sondes/évaluer les variations journalières, ...  Ma priorité #1 est de ne pas "casser" ce qui marche (à moitié).

A bientôt.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Jan 07, 2012, 09:29 am
Yep tochinet !

Désolé de te répondre à rebours.

J'ai proposé quelques courbes caractéristiques en page 14, dernier message.

Ce qui faut savoir avant tout est que les sondes DS18B20 ont une précision de +/-0.5° dans les plages de température courante. Pour une résolution de 12 bits, elles ont un pas d'environ 0.06°.
Les valeurs de 0.06 et 0.2 sont donc des réferents à ces remarques, respectivement le pas et 4 fois le pas. (4x0.06=0.24°, donc supérieur à 0.2°)

Je possède des radiateurs en fonte et acier, mon chauffage central a un fonctionnement tout ou rien, et toute la problématique est de béneficier au maximum de l'inertie des radiateurs.
Les moyennes et leur comparaison n'est pas une mauvaise methode en soi, cependant, dans certaines circonstances, suite à un relevage, par exemple le passage d'un mode éco à un mode confort, la moyenne ne fournit pas une information précise et sûr. La conséquence principale est un doublement consécutif du cycle de chauffe.
Si les moyennes sont trop éloignées les unes des autres, il arrive que l'inertie dont on veut connaitre son image soit occulté, la perdition estimée du cycle précedent se répercute sur le cycle suivant. Le système manque de réactivité.
Si, au contraire, les moyennes sont rapprochées, le système est trop réactif, outre les erreurs de lecture dûes à l'inhérence du materiel, l'image inertielle en retour est d'ordre impulsionnelle. donnons les valeurs -1, 0, 1 aux tendances de la courbe, nous aurons ainsi beaucoup de 0 et de temps en temps -1 (perdition), +1 (distribution).
Dans ce cas, nous sommes obligés de pondérer les moyennes.

La régulation PID n'est pas possible dans mon cas, et ton experience et tes remarques interesserons certainement les maitres d'oeuvre de ce projet.

Pour ma part, je comptais travailler avec une seule sonde de temperature dans un premier temps. Que ce soit par la méthode des moyennes, de la logique floue, sommet de la courbe, je n'entrevois pas vraiment de solution logicielle parfaite. Finalement, je me dis que positionner une seconde sonde à proximité d'un radiateur "temoin" serait la methode la plus simple pour garantir une distribution passive réussie.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jan 27, 2012, 03:24 am
Yop Yop,

Bribri disparut, Skusmi pouponne  :smiley-mr-green: ?
Jute pour dire que j'ai bien avancé sur le bus rs-485, mpcm, mode 4 fils et sans maître et plein plein de testes différents, une mega de grillé et debug de mini(s) à la diode  :smiley-mr-green:, problèmes de cas, etc, etc, mais j'arrive au bout  :smiley-mr-green:.
Plus personne d'interessé ?  =(
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Jan 27, 2012, 05:28 pm
Yep!

Quote
Plus personne d'interessé ?


Si si toujours interessé ;)

Les maitres d'oeuvre sont effectivement absents depuis un moment déjà. J'espère qu'on les reverra bientôt, aprés leur période d'hibernation  XD

Tes experimentations sur le bus Rs485 peuvent interessées du monde et moi le premier.
Le rs485 comme bus de terrain, l'idée me plait et je l'utilise au quotidien ;)

Tu peux détailler tes experimentations ici, dans un autre topic et remettre un lien ici ou nous donner une url.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: tochinet on Jan 28, 2012, 06:22 pm
De mon côté, urgence : la PAC refuse tout service pour cause de ... fuite ? Impossible de savoir où, mais impossible aussi de garder la pression dans le système. Donc la régulation est passée en priorité 2, on chauffe avec des radiateurs en direct. Heureusement que c'est une ossature bois ... et que l'hiver n'est pas (encore) rude.

Allez, j'y retourne. :-(
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Jan 28, 2012, 07:37 pm
Bonjour à tous,

Non je n'ai pas disparu, j'ai fait marcher les différents éléments séparément, puis j'ai tout intégré, ça marche aussi.
Même si je n'ai pas tout bien compris (programmation), je vais donc reprendre tous les programmes un à un en mettant un maximum de commentaires pour à la fois mieux maitriser et pouvoir optimiser.
Ensuite seulement je ferai les adaptations par rapport à mes besoins, et là j'aurai certainement plein de questions à vous soumettre !

J'ai également monté un serveur (vieux PC), pour l'instant html, mais j'ai commencé à apprendre le php.

Cela fait beaucoup de choses à la fois !

Mais je continue à suivre avec grand intérêt vos échanges, je n'en suis pas encore à la liaison RS485, mais cela viendra en son temps.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jan 30, 2012, 08:02 pm

Tu peux détailler tes experimentations ici, dans un autre topic et remettre un lien ici ou nous donner une url.


Yop,
Je peux décrire brièvement mes expérimentations, je découvre, je teste,  ...
D'abord le bus rs-485 niveau hard rien de bien nouveau, mode 2 fils (half duplex) ou 4 fils (full duplex) dans les deux cas on dois toujours activé une sortie de l'arduino pour sélectionné (RE/DE) le mode de transmission ou réception  .
Pour le mode 4 fils (full duplex) c'est simple on utilise 2 transceivers par module ou contrôleur, un pour rx l'autre pour tx pour lequel il faut toujours activé RE/DE et pas simultanément sinon ça capote (expérience inside  :smiley-mr-green:) .
Pour lier la ligne réception à la ligne transmission une paire est mis en début ou fin de ligne ou autre. (rx/tx lié directement pour tester le bus sans maître)
Exemple rapide de mon montage actuel.


Niveau programmation utilisation du Multi-processor Communication Mode (mpcm) de l'atmega, le principe est assez simple il se base sur une transmission 9 bit, selon l'état de ce 9 ieme bit il s'agit soit d'un adressage si il est à 1, soit de simple données s'il est à 0 (pour celà il faut avoir été sélectionné au préalable via adressage).

Code: [Select]

ISR(USART_RX_vect) //vecteur d'interruption sur sur rx
{
 if((UCSR0B & (1<<RXB80))) //on lit l'état de ce 9ème bit (RXB8) dans le registre UCSRB
 {
   listener = UDR0; //s'il est à 1 on lit l'adresse dans le registre UDR et on l'enregistre

   if(listener == ADDRESS) //si il s'agit de ça propre adresse
   {
     UCSR0A &= ~(1<<MPCM0); //on met le bit MPCM du registre UCSR0A à 0 ce qui aura pour
                                            //  effet de laisser entrer toute données transmise
   }
   else
   {
     UCSR0A |= (1<<MPCM0); //dans le cas contraire toute transmission avec le 9 ème bit à 0 seront totalement ignoré, aucune interruption rien de rien jusqu'au prochain adressage.
   }
 }
 else
 {
   unsigned char c = UDR0; //lecture normale des données avec le 9ième bit à 0 si MPCM à 0.
   store_char(c, &rx_buffer); // mise en buffer lol ...
 }
}

Une remarque, j'ai dus retiré hardwareSerial du core arduino afin d'adapter son code, conflits entre les fonctions d'interruption comme elles sont pré instancié par défaut.

Pour l'adressage ou la transmission de données pas grand chose de différent hormis TXB8 à 1 pour signifié une adresse.
Entre () ,j'ai du également ajouté un delay (_wait) de 7.2 millis sec (valeur trouvé sur le net) entre chaque transmission et fermeture du signal ( PORTD &= ~(4); ) , apparemment pour permettre le temps au donnée de circulé sur le bus, c'est là qu'on vois la différence de traitement entre une écriture directe et le traitement effectuer via print et println.

Code: [Select]

uint8_t writeAddress(uint8_t address)
{
 while (!((UCSR0A) & (1 << UDRE0)))
;
 PORTD |= 4;
 UCSR0B |= (1<<TXB80); //adressage
 UDR0 = address;
 _wait
 PORTD &= ~(4);
}

uint8_t writeData(uint8_t c)
{
 uint8_t i = (tx_buffer.head + 1) % SERIAL_BUFFER_SIZE;

 while (i == tx_buffer.tail)
   ;

 tx_buffer.buffer[tx_buffer.head] = c;
 tx_buffer.head = i;

 sbi(UCSR0B, UDRIE0);
 
 return 1;
}

ISR(USART_UDRE_vect)
{
 if (tx_buffer.head == tx_buffer.tail)
 {
cbi(UCSR0B, UDRIE0);
 }
 else
 {
   unsigned char c = tx_buffer.buffer[tx_buffer.tail];
   tx_buffer.tail = (tx_buffer.tail + 1) % SERIAL_BUFFER_SIZE;

   PORTD |= 4;
   UCSR0B &= ~(1<<TXB80);
   UDR0 = c;
   _wait
   PORTD &= ~(4);
 }
}


Maintenant concernant la gestion entre modules sur le bus, je suis parti sur une formule simple, si la dernière adresse reçue est 0 c'est que le bus est libre, sinon on attend.
Le principe globalement:
- si listener = 0, le bus est libre.
- On active l'écouteur (listener) de destination en mettant le 9ième bit à 1 ( UCSR0B |= (1<<TXB80); ) et on spécifie son adresse, il sera le seul à écouter.
- L'écouteur retourne son adresse avec son 8ième bit (msb) à 1 pour signifier qu'il écoute bien (ce qui limette les adresse à 7 bit donc de 1 à 127, 0 libère, 128 pour broadcast) .
- On envoie les données à transmettre.
- en fin de transmission on libère le bus en envoyant l'adresse 0.

Le protocole en lui même c'est le plus simple, pas besoin de s'y attarder.  :P
Il faut ajouter à tout ça quelques sécurités comme mettre listener à 0 automatiquement après un délais max (un peux comme un watchdog sur le bus lui même) en cas de problème lors de la transmission ou l'émetteur n'aurait pus libéré le bus, etc, tec, ...
Donc après divers testes , bizarreries, plantage, ... , je pense être tout proche d'une solution satisfaisante ou du moin intéressante  :smiley-mr-green:.


j'ai fait marcher les différents éléments séparément

Mais je continue à suivre avec grand intérêt vos échanges, je n'en suis pas encore à la liaison RS485, mais cela viendra en son temps.


Ollé Bribri, quelques détails de tes différents montages ?  XD
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Jan 30, 2012, 08:59 pm
Yep!

Osaka, J'éspère que tu n'as pas suivi ton schema à la lettre ;)

Il y a deux fils rouge mal positionnés...

Heu !!! Petite question concernant les resistances de ligne, 120 ohms au plus proche des tranceivers, elles sont où ???
Pour de longue distance, faudra peut être prévoir les lignes de pull up avec resistances de 570 ohms (5v sur A & Gnd sur B)

Pour un fonctionnement par maitre, pas besoin de 2 tranceivers/arduino, non ???

Sinon ton schema est super pour une compréhension du full-duplex en rs485 et effectivement le passage à l'etat haut de RE/DE met le tranceiver en mode Tx, à l'etat bas en mode Rx.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jan 30, 2012, 09:59 pm

Osaka, J'éspère que tu n'as pas suivi ton schema à la lettre ;)

Il y a deux fils rouge mal positionnés...


Non non évidement  :smiley-sweat:, c'était juste du vite fais pour présenté rapidement, c'est corrigé.  :smiley-mr-green:


Heu !!! Petite question concernant les resistances de ligne, 120 ohms au plus proche des tranceivers, elles sont où ???
Pour de longue distance, faudra peut être prévoir les lignes de pull up avec resistances de 570 ohms (5v sur A & Gnd sur B)


Je pas mis les 120 ohms sur le schéma mais elles y sont bien, pour le moment comme c'est là c'est juste pour tester donc petite distance  :..


Pour un fonctionnement par maitre, pas besoin de 2 tranceivers/arduino, non ???


Non pas obligatoire le fonctionnement par paire c'est juste pour le côté full duplex avec ou sans maître et vu le prix des sn75176 à 4,5€ les 5 j'en ai pris 10 (pieces pas 10 de 5)  :smiley-mr-green:.
(commandé sur ebay chez un français -> pseudo: andr8400 , ça boutique: Rimtron_Destock vous la trouverez directement dans google)
En fait dans mes premier testes j'utilisais un maître en half ou full duplex histoire de tester un peux de tout, j'utilisais une mega comme maître pour le debug grâce à ses 4 ports series.
Mais un mauvais branchement et du 15v ont eu raison de lui apparemment (j'en ai un nouveau en commande made in china qui devrait pas tarder) et c'est là que je me suis dit qu'il suffisait de relier rx/tx directement à ça place pour que les autres puissent continué à communiqué, d'où mes essais sans maître  :smiley-surprise:.
Un avantage d'une solution sans maître c'est en cas de pépins sur un modules le bus est toujours fonctionnel pour les autres, tandis que si le maître défaille ...
Je suis pas arrêté sur cette solution 4 fils full duplex c'est juste que c'était déjà branché lol, parce que le plus compliqué c'est bien le code: risque de collisions, une fois libre qui qui parle en premier , prévoir tout les éventualités, etc, etc, ...   =( XD


Sinon ton schema est super pour une compréhension du full-duplex en rs485


C'est toujours plus facile à expliqué avec un schéma.  :smiley-mr-green:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Feb 10, 2012, 04:42 pm
Rebonjour a tous, mon stage d'un mois est fini et je retrouve ma petite famille. Je viens de jeter un œil sur vos derniers commentaires je vois que vous n'avez pas abandonner c'est cool.

Pendant mon stage je me suis familiariser avec l'arduino sur une guirlande de 25 leds adressables avec la librairies FastSPI . Je termine la semaine prochaine car j'ai reçu mes darlingtons pour mes dioders ikea, je vais donc souder tout cela et je reprend le projet domotique avec vous. En attendant si vous pouvez publiez vos codes et le sujet sur lequel il porte cela serait cool, certains on déjà posté du code très intéressant. Merci a tous et content d'être de retour parmi vous.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Feb 12, 2012, 09:36 pm
Yop Skuz,
J'ai raté ton passage, content de te revoir.
Pour mon code dès que j'aurais abouti et nettoyé je posterais.
Moi c'est le travail de Bribri que j'aimerais voir.  :smiley-mr-green:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 02, 2012, 06:33 pm
Bonjour à tous,

Je viens de remettre le nez dans ce projet, après quasiment deux mois de standby : ce n'était pas de l'hibernation, j'ai travaillé sur d'autres projets (sans arduino, si si ça existe !).

En fait comme je l'avais prévu, j'ai testé les différents éléments matériels, j'ai réussi à tout mettre en œuvre.
Je récapitule :
Arduino Méga 2560 avec :
- Horloge temps réel DS1307 => OK,  reste à voir le recalage de l'heure sur Internet : j'ai vu que Jean-François a posté un tuto à ce sujet, lorsque j'aurai réglé la question de la communication de l'Arduino avec le serveur web, je reverrai cette question.
- Afficheur LCD 4x16 => OK
- Capteur de température et d'humidité DHT11 => OK (j'en utiliserai à priori 3)
- Capteur de température DS1820 => OK (j'en utiliserai au moins un à l'extérieur car le DHT11 est limité de 0 à 50°C => il ne mesure donc pas les températures négatives)
- Ethernet shield W5100 => OK , mais je n'arrive pas encore à travailler de manière satisfaisante dans les deux sens, il faut que je m'intéresse très sérieusement à deux projets l'un d'Osaka sur les websockets et celui de Stantor, mais les deux ne sont pas encore à ma portée, il faut que j'en apprenne encore un peu plus sur les technologies web, (j'ai déjà un peu progressé !).

Voilà, ce que j'ai prévu de faire maintenant c'est :
- Réécrire mon cahier des charges en détaillant les différentes fonctionnalités attendues et en mettant en face les solutions techniques retenues.
- Réécrire tous les bouts de sketchs que j'ai glanés et utilisés pour mes essais pour en faire des éléments modulaires, que je pourrai facilement assembler dans mon application finale.
- Puis viendra la grande question de la communication avec le serveur web et le stockage de données (plages horaires, historiques …), j'aurai certainement besoin de votre aide.

Je vous soumettrai les éléments au fur et à mesure pour que vous puissiez réagir et éventuellement prendre ce qui vous intéresse (si cela présente un intérêt pour vous !).
Bon, aller au boulot !!!
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 03, 2012, 01:58 am
Yop Bribri content d'avoir de tes nouvelles.  :smiley-surprise:
Je vois que tu progresses bien , si tu as besoin d'un coup de main niveau web n'hésite pas.  ;)
J'attend également tes résultats et solutions niveau hard et gestion du 220, volets, etc .  :smiley-mr-green:
Je posterais bientôt le gros brouillons de mes résultat avec le bus rs-485.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 03, 2012, 10:34 am
Merci Osaka pour ta proposition d'aide pour le web, pour le moment je n'en suis pas encore là. Mais je ne manquerai pas d'appeler au secours lorsque je serai coincé, et probablement même avant pour demander des conseils pour le choix de solutions à mettre en oeuvre.

Je suis entrain de rédiger un cahier des charges très détaillé, dans lequel je vais décrire les fonctionnements attendus et les solutions techniques matérielles retenus avec schémas (testés et fonctionnels). Si au cours de ma rédaction (qui va prendre plusieurs jours, car je le fais à temps perdu) j'ai des questions (faisabilité, choix de solutions, …) je posterai sur le forum, sinon je vous livrerai mon cahier des charges une fois terminé.

Ensuite je câblerai mon système complet avant de passer à la programmation à proprement parler.
Pour la première version je n'aurai probablement pas besoin de la liaison RS 485, mais dans une version ultérieure et notamment pour gérer mes volets électriques (j'en ai 16 en plus du volet de garage) je vais surement utiliser un Arduino par étage, il va donc falloir les faire communiquer, mais ça ce sera beaucoup plus tard.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 04, 2012, 09:48 pm
Voilà, j'ai fini la première version du cahier des charges détaillé, je vous le soumets pour critiques, si vous avez le courage de le lire.
Je ne l'ai relu que très rapidement, si vous trouvez des incongruités, des incohérences ou des erreurs n'hésitez pas, c'est ainsi que j'avance.
La prochaine étape :
Câbler l'unité de gestion, puis la tester.
Je vous enverrai des schémas, des photos et les résultats de mes essais.
@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 05, 2012, 01:12 am
Même si je pars sur une base 1 arduino par fonctions (contrôleur, I/O 220v, chauffage, volets, alarme, ...) ça me semble parfait et dans la même optique que moi.
Étant très amateur dans le domaine de l'électronique, concernant triac ou optotriac et 220v j'allais partir sur cette base http://www.sonelec-musique.com/electronique_realisations_interfaces_230v_001.html.
Qu'en penses-tu (vous) ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 05, 2012, 08:06 am
J'ai rapidement regardé le lien concernant le montage de commande par triac, c'est un montage de base qui doit très bien fonctionner.
Après il faut voir au cas par cas en fonction de la puissance à commander et du type de commande TOR ou progressif.
Mais n'hésiste pas Osaka (on se tutoie) à me solliciter pour toute question liée au hard.
@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Mar 05, 2012, 08:33 am
Yep!

Ok pour les triacs, mais ce serait plus mieux de dimensionner le circuit de puissance en fonction des disjoncteurs, 10 A et 16 A pour les plus courants. En cas de pépin ou de surchauffe, on risque de griller le recepteur et le triac sans que les appareils de sécurité aient réagis...L'autre option est de claquer un fusible 8 A sur chaque organe de commande.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: jplaville on Mar 05, 2012, 10:36 am
Salut à tous.
Pour ceux qui veulent faire de la domotique sans ce prendre le choux, il existe DomoticHome.
C'est un projet simple qui permet de piloter avec une application via sont téléphone Androïd une platine Arduino.
Il génère même le code C pour la platine pour vous.
Les étapes :
- Préparer votre platine avec une carte ethernet et connectés les sorties dont vous avez besoin.
- Allez sur http://www.domotichome.net (http://www.domotichome.net) et ce créer un compte.
- Remplier les champs.
- Mettre le code généré dans la platine Arduino.
- Installer l'application du Market https://market.android.com/details?id=nerdydog.domoHome (https://market.android.com/details?id=nerdydog.domoHome), la lancer, la configurer.
Et hop, vous avez en quelques minutes fait une application domotique sans soucis.
Il y a même la possibilité de savoir la température.

J'ai pas pus encore essayer vus que j'attends mon module ethernet.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 05, 2012, 01:21 pm

J'ai rapidement regardé le lien concernant le montage de commande par triac, c'est un montage de base qui doit très bien fonctionner.
Après il faut voir au cas par cas en fonction de la puissance à commander et du type de commande TOR ou progressif.
Mais n'hésiste pas Osaka (on se tutoie) à me solliciter pour toute question liée au hard.


Merci Bribri  :), vu ton expérience dans le domaine je sais que je peux te faire confiance à 100% .
J'attend avec impatience la suite de tes solutions.  $)


L'autre option est de claquer un fusible 8 A sur chaque organe de commande.


Je pense que c'est le mieux, fusible dédié et au plus près du "risque" d'échauffement sans trop perturbé le reste ?
N'hésite pas à donner tes idées et solutions également.


Pour ceux qui veulent faire de la domotique sans ce prendre le choux, il existe DomoticHome.


Solution intéressante pour ne pas se prendre le choux effectivement  :smiley-mr-green:, mais bon ici le but est (de ce prendre le choux  :P) d'avoir une solution 100% personnalisée (différente solutions ici donc plus une entre aide) sans dépendre d'un système ou application limité à une technologie (androïd,tel capteurs, ...).
(Et j'aime mettre mes mains dans le cambouis  :D)
Par contre une fois que tu l'auras testé, je te recommande d'ouvrir un post dédié car ça doit surement intéressé du monde.  ;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: jplaville on Mar 05, 2012, 06:52 pm

Solution intéressante pour ne pas se prendre le choux effectivement  :smiley-mr-green:, mais bon ici le but est (de ce prendre le choux  :P) d'avoir une solution 100% personnalisée (différente solutions ici donc plus une entre aide) sans dépendre d'un système ou application limité à une technologie (androïd,tel capteurs, ...).
(Et j'aime mettre mes mains dans le cambouis  :D)
Par contre une fois que tu l'auras testé, je te recommande d'ouvrir un post dédié car ça doit surement intéressé du monde.  ;)


Je comprends, moi aussi je suis pour mettre les mains dans le cambouis, mais ça peut être approche intéressante pour débuter et arriver rapidement à quelque chose.
De plus, je débute sur Arduino mais c'est nettement plus facile de programmer une platine Arduino que de programmer un mobile Androïd.
Je suis actuellement des cours de développement Java Androïd et je sais te quoi je parle, je te souhaite bonne chance si tu veux te lancer là dedans et faire un programme (potable) pour piloter ta platine.
Surtout si t'as jamais fait de Java.
De plus, le code Arduino est généré automatiquement mais rien ne t'empêche de le modifier ensuite.
Mais tu as raison, c'est limité à certains périphériques.
Pour la température par exemple, c'est un certain MCP9700A qui est utilisé et rien d'autre.
Pour les sorties par contre tu peux piloter ce que tu veux, tu mets à HIGH ou LOW quelque soit le type de sortie.
Mais ça vas ce développer surement.
A suivre donc... je vais dès que j'aurais testé ouvrir un nouveau sujet.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 05, 2012, 07:27 pm

mais c'est nettement plus facile de programmer une platine Arduino que de programmer un mobile Androïd.


Si on ce contente du core arduino je dirais moui,par contre si on veux quelque chose d'optimal c'est genre registre et c only.


Je suis actuellement des cours de développement Java Androïd et je sais te quoi je parle, je te souhaite bonne chance si tu veux te lancer là dedans et faire un programme (potable) pour piloter ta platine.


Je suis dev "java" inactif pour le moment (longue histoire).  :smiley-mr-green:
Niveau portabilité je suis plutôt pour un client léger (web plus simple) surtout en ce qui concerne l'interface, ici on est quand même dépendant du sdk androïd.
Pour l'interface justement je compte plutôt continuer sur ma solution http://arduino.cc/forum/index.php/topic,72035.0.html .


Surtout si t'as jamais fait de Java.


Le titre de mon projet de fin d'études (graduat) était "Application modulaire serveur de domotique en Java". (j'avais déjà la domo en tête  :smiley-mr-green:)  :smiley-surprise:
Donc c'est un peux pour tout ça que je peux me "permettre" de mettre les mains dans le cambouis, mon études sur le sujet (domotique) date et est suivis d'une longue réflexion, recherche, ... 


De plus, le code Arduino est généré automatiquement mais rien ne t'empêche de le modifier ensuite.


Le code des autres et généré automatique est souvent difficile à comprendre et à reprendre.  :~


Mais tu as raison, c'est limité à certains périphériques.
Pour la température par exemple, c'est un certain MCP9700A qui est utilisé et rien d'autre.
Pour les sorties par contre tu peux piloter ce que tu veux, tu mets à HIGH ou LOW quelque soit le type de sortie.
Mais ça vas ce développer surement.


Le plus gros défaut  =(


A suivre donc... je vais dès que j'aurais testé ouvrir un nouveau sujet.


Je suis certain que ça intéressera du monde.  ;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 09, 2012, 05:52 pm
Code: [Select]

#include <util/crc16.h>
#include <util/delay.h>
#include <avr/wdt.h>

#define DATA_LENGTH 6
#define ADDRESS 0x10
#define RECEIVER 0x11
#define RE_DE_ON PORTD|=4
#define RE_DE_OFF PORTD&=~(4)
#define RE_DE_REG DDRD |= 4
#define BAUD 115200

#define _WAIT(_pres) _delay_us(_pres)
#define SERIAL_BUFFER_SIZE 16

struct ring_buffer
{
 uint8_t buffer[SERIAL_BUFFER_SIZE];
 volatile uint8_t head;
 volatile uint8_t tail;
};

volatile uint8_t listener = 0;
volatile uint32_t delayWD = 0;
ring_buffer rx_buffer  =  { { 0 }, 0, 0 };

uint8_t bufferBusTx[DATA_LENGTH] = {0};

uint32_t delayS = 0;
uint32_t _micros = 0;

volatile uint8_t ack = 0;
uint8_t err = 0;

const uint32_t pres = 69120000/BAUD; //temps de maintien RE_DE
const uint32_t maxRec = 14000000/BAUD; //temps max en reception
const uint32_t maxTrans = (32640000/(BAUD/100))+((ADDRESS*(pres*2))); //temps max de transaction+ temps different entre module selon l'adresse

volatile uint8_t* registreR[3] = {&PINB, &PINC, &PIND}; //tableau pour la gestion semi dynamique des registres (&DDR = &PIN+1, &P0RT= &PIN+2)

uint8_t stateB = 0;
uint32_t delayB = 0;

inline void store_char(uint8_t c, struct ring_buffer *buffer) //gestion des donnees entrantent dans le buffer (circulaire)
{
 uint8_t i = (uint8_t)(buffer->head + 1) % SERIAL_BUFFER_SIZE;

 if (i != buffer->tail) {
   buffer->buffer[buffer->head] = c;
   buffer->head = i;
 }
}

ISR(USART_RX_vect)
{
 if((UCSR0B & (1<<RXB80))) // si bit9 à 1 = adresse
 {
   listener = UDR0;
   if(listener == ADDRESS || listener == 0x80 || (ack && listener == 0x81)) //s'il sagit de son adresse ou adresse controleur = 0x80 ou si une transaction en cours&& adresse de ack = 0x81  on active l'ecoute
   {
     UCSR0A &= ~(1<<MPCM0);
   }
   else //sinon toute donnees transitant sur le bus seront ignore
   {
     UCSR0A |= (1<<MPCM0);
   }
   
   delayWD = micros()+maxTrans; //on active un delay max d'occupation du bus quelque soit l'emeteur ou ecouteur
 }
 else
 {
   store_char(UDR0, &rx_buffer); //si mode écoute entrante, on enregistre les donnees
 }
}

////////////////////////////////////////////////////////////////////////////

void setup()
{
 RE_DE_REG; //pin RE_DE en sortie
 DDRB |= 56; //debug
 
 DDRD &= ~(64); // button de test en entree
 DDRD |= 56; //debug
 
 begin(BAUD); //init
 PORTB |= 56;
 _delay_ms(100);
 PORTB &= ~(56); //debug reset
 wdt_enable(WDTO_2S); //activation watch dog, temps max 2 sec
}

void loop()
{
 _micros = micros();
 wdt_reset();// watch remise a 0 a chaque passage
 
 if(available()) //si donnees entrente
 {
   readData();
 }
 else //sinon on verifie s'il y a des donnee a transmettre dans le buffer
 {
   sendData();
 }
 
 if(PIND&64 && _micros >= delayB) // code de teste en temps que contrôleur distant, remplissage du buffer
 {
     if(!stateB)
     {
       bufferBusTx[0] = 0x05; //taille des donnees
       bufferBusTx[1] = RECEIVER; //destinataire
       bufferBusTx[2] = ADDRESS; //emeteur
       bufferBusTx[3] = 0x01; //cmd
       bufferBusTx[4] = 0x02;  //param: registre
       bufferBusTx[5] = 0x20; // param: bit

     }
     else
     {
       bufferBusTx[0] = 0x05;
       bufferBusTx[1] = RECEIVER;
       bufferBusTx[2] = ADDRESS;
       bufferBusTx[3] = 0x00;
       bufferBusTx[4] = 0x02;
       bufferBusTx[5] = 0x20;
     }
     delayB = _micros+250000;
 }
 
 if(listener != 0) //debug
 {
   PORTD |= 8;
 }
 else
 {
   PORTD &= ~(8);
 }
 PORTB &= ~(56);// debug
 PORTD &= ~(31);//debug
}

uint8_t sendData()
{
 if(bufferBusTx[2] && !listener) // si données à transmettre et que le bus est libre (=0)
 {
   PORTB |= 8; //debug
   _WAIT(pres); //petite pause de sécurité car même en cas de liberation '0', RE_DE peux encore être maintenu de l'autre côté
   writeData(bufferBusTx); //on envois les données
   ack = 1; //
 }
 
 if(listener && _micros >= delayWD) // si delay de transaction max est dépasse donc erreur, collision, etc
 {
   listener = 0x00;
   ack = 0;
 }
}

void readData() // reception
{
   if(read() == 0x02) //debut de trame
   {
     delayS = _micros+(maxRec*2); //definition d'un delay max pour la lecture
     while(!available()) //temps qu'il n'y a pas de suite ...
     {
       if(micros() >= delayS) // si delay depasse on arrête et on retourne une erreur
       {
         PORTD |= 16;
         ackError(0x01);
         break;
       }
     }

     uint8_t sizeD = read(); // recuperation de la taille des donnees
     uint8_t data[sizeD+4];
     data[0] = sizeD;
     delayS = _micros+(maxRec*(sizeD+4)); //definition d'un delay max pour la lecture
     
     uint8_t i = 1;
     while(i < data[0]+4) //temps qu'on a pas reçu toute la trame
     {
       if(micros() >= delayS) // si delay depasse on arrête et on retourne une erreur
       {
         PORTD |= 16;
         ackError(0x01);
         break;
       }
       
       if(available()) // si donnée(s)
       {
         data[i] = read();
         ++i;
       }
     }

     if(data[data[0]+3] == 0x03) //fin de trame
     {
       if(checkData(data)) //crc ok, on envoie la commande
       {
         action(data, 0);
       }
       else //sinon on retourne directement un message d'erreur crc à l'envoyeur
       {
         ackError(0x02);
       }
     }
     else //sinon on retourne directement un message d'erreur general de reception
     {
       (0x01);
     }
   }
   RXflush();  
}

void action(uint8_t* data, uint8_t local)
{
 if(data[3] < 0xFE) //s'il sagit d'une cmd
 {
   if(data[3]==0x00) // test off
   {
     *(registreR[data[4]]+2) &= ~(data[5]); //PORT &= ~(bit)
   }
   else if(data[3]==0x01) //test on
   {
     *(registreR[data[4]]+2) |= data[5];
   }
   
   data[5] = ((*registreR[data[4]])&(data[5])); // pour ack : PIN&BIT
   
   if(local) //s'il sagit d'une commande local on rempli le buffer de transmition
   {
     bufferBusTx[0] = 0x05;
     bufferBusTx[1] = 0x80;
     bufferBusTx[2] = ADDRESS;
     bufferBusTx[3] = 0xFD;
     bufferBusTx[4] = data[4];
     bufferBusTx[5] = data[5];
   }
   else //sinon on retourne directement un ack de confirmation
   {
     data[1] = 0x80;
     data[2] = ADDRESS;
     data[3] = 0xFF;
     _WAIT(pres);
     writeData(data);
   }
 }
 
 if(ack && data[3] >= 0xFE && (bufferBusTx[1] == data[2])) //si transaction en cours et cmd >= FE
 {
   if(data[3] == 0xFF || err == 2) // ack positif ou plus de 3 échec, on libère le bus
   {
     bufferBusTx[2] = 0;
     _WAIT(pres);
     RE_DE_ON;
     write(0x00, 1);
     _WAIT(pres);
     RE_DE_OFF;
     ack = 0;
     err = 0;
     if(data[3] == 0xFF) //s'il sagit d'un ack positif on enregistre le resultat
     {
       stateB = data[5];
     }
   }    
   else //si un ack d'erreur on retante directement
   {
     ++err;
     _WAIT(pres);
     writeData(bufferBusTx);
   }
 }
}

void writeData(uint8_t* data)
{
 //calcul du crc en premier
 uint16_t crc = 0xFFFF;
 
 for(uint8_t i=0; i <= data[0]; i++)
 {
   crc = _crc16_update(crc, data[i]);
 }
 
 //active le mode transmition
 RE_DE_ON;
 
 write(data[1], 1); //adressage
 write(0x02, 0); //debut de trame
 for(uint8_t i=0; i <= data[0]; i++) //donnees (suivant la taille specifiée)
 {
   write(data[i], 0);
 }
 
 write(((crc & 0xFF00) >> 8), 0); //crc MSB
 write((crc & 0x00FF), 0); //crc LSB
 write(0x03, 0); //fin de trame
 _WAIT(pres); //delay de maintien
 RE_DE_OFF; // on desacive le mode de transmition
}

uint8_t checkData(uint8_t* data) //controle crc
{
 uint16_t crc = 0xFFFF;
 uint16_t _crc = (data[data[0]+1]<<8);
 _crc += data[data[0]+2];
 for(uint8_t i=0; i <= data[0]; i++)
 {
   crc = _crc16_update(crc, data[i]);
 }
 
 if(crc == _crc)
 {
   return 1;
 }
 
 return 0;
}

void ackError(uint8_t ErrorNo)
{
 uint8_t data[5] = {0};
 data[0] = 0x04;
 data[1] = 0x81;
 data[2] = ADDRESS;
 data[3] = 0xFE;
 data[4] = ErrorNo;
 _WAIT(pres);
 writeData(data);
}
//////////////////////////////////////////////////////////////////////////////////////////////////

void write(uint8_t data, uint8_t txb8)
{
 while (!((UCSR0A) & (1 << UDRE0)))
   ;
 if(txb8)
 {
   UCSR0B |= (1<<TXB80);
 }
 else
 {  
   UCSR0B &= ~(1<<TXB80);
 }
 UDR0 = data;
}

uint8_t available(void)
{
 return (uint8_t)(SERIAL_BUFFER_SIZE + rx_buffer.head - rx_buffer.tail) % SERIAL_BUFFER_SIZE;
}

uint8_t read(void)
{
 if (rx_buffer.head == rx_buffer.tail)
 {
   return -1;
 }
 else
 {
   uint8_t c = rx_buffer.buffer[rx_buffer.tail];
   rx_buffer.tail = (uint8_t)(rx_buffer.tail + 1) % SERIAL_BUFFER_SIZE;
   return c;
 }
}

void RXflush()
{
 rx_buffer.head = rx_buffer.tail;
}

void begin(unsigned long baud)
{
 uint16_t baud_setting;

 UCSR0A = 0;
 baud_setting = (F_CPU / 8 / baud - 1) / 2;

 UBRR0H = baud_setting >> 8;
 UBRR0L = baud_setting;
   
 UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0)|(1<<UCSZ02);
 UCSR0C = (3<<UCSZ00);
 
 UCSR0A |= (1<<MPCM0);
}


Com poste suivant:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 09, 2012, 05:52 pm
Suite:
Histoire de montré où j'en suis dans mes tests je met mon code brouillons actuel avec quelque commentaires.
Comme c'est là chaque module est contrôleur et récepteur en même temps (pour le brouillons), il n'y a pas de maître du bus, la gestion des collision , erreurs, etc se fait par des délais.
Les délais doivent encore être mieux réglé et défini d'après la longeur max d'une trame (je pense mettre à 32 max).
Tout fonctionne correctement avec trois arduino mini contrôleur et récepteur en même temps, tout les trois tester dans les deux modes simultanément  :smiley-eek: (au final ça sera pas ainsi mais là c'est le stress test  :smiley-mr-green:),  avec des transactions de plus ou moin 50ms à 9600baut et 4ms à 115200baut pour une trame de 10 octet (commande simple sur registre I/O).

Il y a encore du boulot mais le plus gros est fait je pense, si quelqu'un a des idées, suggestions ou questions ?  :smiley-sweat: :*
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Mar 09, 2012, 06:23 pm
Yep!

Super, j'ai commencé à regarder ton code  XD
Je pense partir sur quelque chose de plus épuré dans un premier temps, on voit que tu as bien appronfondi le sujet ;)

J'ai pourtant deux questions qui me passe là :

First, quelle est la taille (utilisation mem) de la bibliothèque crc16 ???
Second, pourquoi avoir utilisé un watchdog ? On risque pas le reset complet du programme ?? Alternative : timer, interruption ???

J'ai reçu il y a peu mes SN75176 et quelques tiny2313, si l'on part sur des commandes simples avec retour vers le maitre par echo, je pense qu'il faudra parier sur un uC plus simpliste que le 328 ou 644 (dip')

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 09, 2012, 06:58 pm

J'ai pourtant deux questions qui me passe là :

First, quelle est la taille (utilisation mem) de la bibliothèque crc16 ???
Second, pourquoi avoir utilisé un watchdog ? On risque pas le reset complet du programme ?? Alternative : timer, interruption ???


pour la taille de la biblio crc16 (de la lib avr) je sais pas trop mais je ferais le teste une fois , pour l'instant le tout pèse +- 2,5ko en mémoire programme (donc avec les 450octet rajouter pas le core arduino et les divers chose utile pour debug, etc ).
Le watchdog pour l'instant c'est juste dans mes testes brouillons, je découvre.  :smiley-mr-green:, mais j'ai fais au maximum pour ne pas avoir de code bloquant comme pour la partie envoi "sendData();" juste au passage dans loop ou le timer "delayS" (boucle sécurisée) à la réception par ex.


J'ai reçu il y a peu mes SN75176 et quelques tiny2313, si l'on part sur des commandes simples avec retour vers le maitre par echo, je pense qu'il faudra parier sur un uC plus simpliste que le 328 ou 644 (dip')


J'utilise les mini (168) pour l'instant comme c'était le plus minimaliste et simple pour moi qui suis amateur dans le domaine des uC et l'électronique en général  :smiley-sweat:, mais les ATtiny m'intéresse donc s'il y a moyen de faire encore plus minimaliste (conso, taille, etc) je reste ouvert à toute propositions (et surtout aide  :smiley-mr-green:)  :smiley-surprise:
Enfin pour l'instant ça reste du prototypage.   ;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 10, 2012, 05:49 pm
Yop yop,
Ai fais le test pour la fonction de la lib crc16 et elle pèse 52octet en mémoire programme.

J'ai également testé et adapté le code pour un module version tiny et j'obtiens 1388 octet, pas testé mais fonctionnel sur mini (1684octet) .

Code: [Select]

#include <util/crc16.h>
#include <util/delay.h>
#include <avr/wdt.h>

#define DATA_LENGTH 6
#define ADDRESS 0x11
#define RECEIVER 0x12
#define RE_DE_ON PORTD|=4
#define RE_DE_OFF PORTD&=~(4)
#define RE_DE_REG DDRD |= 4
#define BAUD 115200

#define _WAIT(_pres) _delay_us(_pres)

#define SERIAL_BUFFER_SIZE 10
volatile uint8_t pos = 0;
volatile uint8_t bufferBusRx[SERIAL_BUFFER_SIZE];

volatile uint8_t listener = 0;
volatile uint32_t delayWD = 0;

uint8_t bufferBusTx[DATA_LENGTH] = {0};

volatile uint8_t ack = 0;
uint8_t err = 0;

const uint32_t pres = 69120000/BAUD; //temps de maintien RE_DE
const uint32_t maxRec = 14000000/BAUD; //temps max en reception
const uint32_t maxTrans = (32640000/(BAUD/100))+((ADDRESS*(pres*2))); //temps max de transaction+ temps different entre module selon l'adresse

volatile uint8_t* registreR[3] = {&PINA, &PINB, &PIND}; //tableau pour la gestion semi dynamique des registres (&DDR = &PIN+1, &P0RT= &PIN+2)

uint8_t stateB = 0;
uint32_t delayB = 0;

ISR(USART_RX_vect)
{
  if((UCSRB & (1<<RXB8))) // si bit9 à 1 = adresse
  {
    listener = UDR;
    if(listener == ADDRESS) //s'il sagit de son adresse ou adresse controleur = 0x80 ou si une transaction en cours&& adresse de ack = 0x81  on active l'ecoute
    {
      UCSRA &= ~(1<<MPCM);
      pos = 0;
    }
    else //sinon toute donnees transitant sur le bus seront ignore
    {
      UCSRA |= (1<<MPCM);
    }
   
    delayWD = micros()+maxTrans; //on active un delay max d'occupation du bus quelque soit l'emeteur ou ecouteur
  }
  else //si mode écoute entrante, on enregistre les donnees
  {
    if(pos <= 9)
    {
      bufferBusRx[pos] = UDR;
      ++pos;
    }
    else
    {
      pos = 0;
    }
  }
}


////////////////////////////////////////////////////////////////////////////

void setup()
{
  RE_DE_REG; //pin RE_DE en sortie
  DDRD |= 63;
  begin(BAUD); //init
}

void loop()
{
  if(pos == 9) //si donnees entrente
  {
    readData();
    pos = 0;
  }
  else //sinon on verifie s'il y a des donnee a transmettre dans le buffer
  {
    sendData();
  }
 

  PORTD &= ~(31);
}

uint8_t sendData()
{
  if(bufferBusTx[2] && !listener) // si données à transmettre et que le bus est libre (=0)
  {
    _WAIT(pres); //petite pause de sécurité car même en cas de liberation '0', RE_DE peux encore être maintenu de l'autre côté
    writeData(bufferBusTx); //on envois les données
    ack = 1; //
  }
 
  if(listener && micros() >= delayWD) // si delay de transaction max est dépasse donc erreur, collision, etc
  {
    listener = 0x00;
    ack = 0;
  }
}

void readData() // reception
{
    if(bufferBusRx[0] == 0x02 && bufferBusRx[9] == 0x03) //debut de trame
    {
        if(checkData()) //crc ok, on envoie la commande
        {
          action(0);
        }
        else //sinon on retourne directement un message d'erreur crc à l'envoyeur
        {
         
          ackError(0x02);
        }
    }
    else //sinon on retourne directement un message d'erreur general de reception
    {
      ackError(0x01);
    }
     
}

void action(uint8_t local)
{
    if(bufferBusRx[4]==0x00) // test off
    {
      *(registreR[bufferBusRx[5]]+2) &= ~(bufferBusRx[6]); //PORT &= ~(bit)
    }
    else if(bufferBusRx[4]==0x01) //test on
    {
      *(registreR[bufferBusRx[5]]+2) |= bufferBusRx[6];
    }
   
    uint8_t val = ((*registreR[bufferBusRx[5]])&(bufferBusRx[6])); // pour ack : PIN&BIT
   
    if(local) //s'il sagit d'une commande local on rempli le buffer de transmition
    {
      bufferBusTx[0] = 0x05;
      bufferBusTx[1] = 0x80;
      bufferBusTx[2] = ADDRESS;
      bufferBusTx[3] = 0xFD;
      bufferBusTx[4] = bufferBusRx[5];
      bufferBusTx[5] = val;
    }
    else //sinon on retourne directement un ack de confirmation
    {
      uint8_t data[6];
     
      data[0] = 0x05;
      data[1] = 0x80;
      data[2] = ADDRESS;
      data[3] = 0xFF;
      data[4] = bufferBusRx[5];
      data[5] = val;
      _WAIT(pres);
      writeData(data);
    }
}

void writeData(uint8_t* data)
{
  //calcul du crc en premier
  uint16_t crc = 0xFFFF;
 
  for(uint8_t i=0; i <= data[0]; i++)
  {
    crc = _crc16_update(crc, data[i]);
  }
 
  //active le mode transmition
  RE_DE_ON;
 
  write(data[1], 1); //adressage
  write(0x02, 0); //debut de trame
  for(uint8_t i=0; i <= data[0]; i++) //donnees (suivant la taille specifiée)
  {
    write(data[i], 0);
  }
 
  write(((crc & 0xFF00) >> 8), 0); //crc MSB
  write((crc & 0x00FF), 0); //crc LSB
  write(0x03, 0); //fin de trame
  _WAIT(pres); //delay de maintien
  RE_DE_OFF; // on desacive le mode de transmition
}

uint8_t checkData() //controle crc
{
  uint16_t crc = 0xFFFF;
 
  uint16_t _crc = (bufferBusRx[7]<<8);
  _crc += bufferBusRx[8];
 
  for(uint8_t i=1; i <= bufferBusRx[1]+1; i++)
  {
    crc = _crc16_update(crc, bufferBusRx[i]);   
  }

  if(crc == _crc)
  {
    return 1;
  }
 
  return 0;
}

void ackError(uint8_t ErrorNo)
{
  uint8_t data[5] = {0};
  data[0] = 0x04;
  data[1] = 0x81;
  data[2] = ADDRESS;
  data[3] = 0xFE;
  data[4] = ErrorNo;
  _WAIT(pres);
  writeData(data);
}


void write(uint8_t data, uint8_t txb8)
{
  while (!((UCSRA) & (1 << UDRE)))
    ;
  if(txb8)
  {
    UCSRB |= (1<<TXB8);
  }
  else
  {   
    UCSRB &= ~(1<<TXB8);
  }
  UDR = data;
}

void begin(unsigned long baud)
{
  uint16_t baud_setting;

  UCSRA = 0;
  baud_setting = (F_CPU / 8 / baud - 1) / 2;

  UBRRH = baud_setting >> 8;
  UBRRL = baud_setting;
   
  UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<UCSZ2);
  UCSRC = (3<<UCSZ0);
 
  UCSRA |= (1<<MPCM);
}



Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Mar 10, 2012, 06:29 pm
Yep!

1418 octets pour un tiny2313 (8Mhz). Le transfert Isp se déroule correctement ;)

Par contre, je ne peux pas tester plus avant le code, mon uC est sur un proto de 5x3 cm pour effectuer des tests Pwm pour le taff.
Je suis en train de dessiner sur kicad un autre proto avec 1 Atmega644, 1 ou 2 Attiny2313, des SN75176, I2C et SPI. J'ai besoin d'experimenter les conversations sur plusieurs protocoles, principalement sur l'I2C car je compte m'inspirer des automates modernes (1 tache rapide + 1 tache lente) pour créer un carte biproc à base d'ATmega644.

Merci pour ton code trés bien écrit, il me sera certainement utile ;)

Tu en es où de tes experimentations du Rs485 sur le terrain ?

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 11, 2012, 07:32 pm
Yop yop, sorry pour la réponse tardive je me choppe une petite grippe depuis hier.  =(


J'ai besoin d'experimenter les conversations sur plusieurs protocoles, principalement sur l'I2C car je compte m'inspirer des automates modernes (1 tache rapide + 1 tache lente) pour créer un carte biproc à base d'ATmega644.


J'aimerai connaître le résultat de tes expérimentations :smiley-surprise:, compte rendu obligatoire  :smiley-mr-green:. 


Merci pour ton code trés bien écrit, il me sera certainement utile ;)


C'est encore un peux brouillon mais je m'approche de la solution final.


Tu en es où de tes experimentations du Rs485 sur le terrain ?


Je suis retourné en half duplex classique, comme ici la communication ne peut être simultanée de toute façons.
Par contre toujours en breadboard et bout de fils pendents :*, pas encore testé sur longue distance ou autre, il serait temps que je m'offre un petit fer et composants standard tel que trans, condo, diode, moc, etc, pour aller plus loin.

Par contre tu pourras peut être me renseigné sur la réel différence entre les tiny et atmega, avantage, inconvénient ?
Par exemple ici j'aimerais des module simple e/s, 8 entrées (commande locale par bp ou autre) et 8 sorties correspondante (1 en + pour le bus ce qui fait 17 e/s) donc théoriquement avec mes mini 168 (23 I/O - (2 pour l'uart) - (2 crystal)) ça devrait aller ?
En fait dans les descriptions première des µc je vois 20 I/O (attiny 2313) par exemple (youpie), sauf que 2 pour l'uart, 2 pour le chrystal, etc ... et donc je n'arrive pas à faire au plus juste (ni trop, ni trop peux) ?

J'ai modifier l'image histoire de voir la correspondance registre et non arduino, il n'y a que le bit7 du registre C (pc7 ?) que je ne trouve pas dans le sommaire de la doc.


Entre () je comprend un peux mieux la team arduino d'avoir fais des tableaux de correspondance afin d'avoir un ordre plus "naturel" et instinctif de correspondance pin/registre vu que certain ne comprennent pas automatiquement 8 bit ou utilisé par l'orloge, l'uart, etc,  ...
Pour cette dernière raison je vais abandonné la trame cmd/registre/bit mais plutôt dcmd/sortie_n° .
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Mar 11, 2012, 10:35 pm
Yep!

Quote from: osaka
Par contre tu pourras peut être me renseigné sur la réel différence entre les tiny et atmega, avantage, inconvénient ?


ATtiny2313, 2048 bytes, DIP20
ATtiny4313, 4096 bytes, DIP20
ATTiny25/45/85 2048, 4096, 8168 bytes, DIP8

Cà c'est pour ceux que je connais. Il y a aussi des modèles CAN bus.

Naturellement, on ne retrouvera pas toutes les fonctionnalités des mega, principalement du côté des ports analogiques, sur les tiny, je n'en connais pas. L'I2C est aussi sacrifié, mais il demeure le TWI, avec donc, des possibilité quand même.
Pour le tiny2313, 18 i/o brutes dont Rx/Tx, 4 Pwm, l'horloge, etc. Quand on fait les comptes, il demeure grosso modo 10/12 i/o. C'est déjà pas mal.

Le principal inconvénient, c'est bien entendu l'absence de port analogique. Pour inclure des capteurs de cette famille, pas le choix faut serialiser à travers un chip ou bidouillé sur les temps de charge/decharge d'une capa.

En ce qui concerne les tiny25/45/85, peut de i/o à la base mais on peut compenser avec des shifts register.

Quote from: osaka
J'aimerai connaître le résultat de tes expérimentations , compte rendu obligatoire

Pas de souci, par contre faudra être patient, j'ai un truc sur le feu pour l'instant XD

Pour détailler un peu, je compte mettre un afficheur tactile et l'ethernet sur un chip mega644 (taches lentes), quant au second 644, les tâches courantes, gestion des évenements capteurs et envoie des commandes asservies. Le tout en intercommunication.
J'espère avec cette configuration obtenir plus de réactivité sur les interfaces IHM.
Le protocole I2C est utilisé dans des projets tels que core2duino ou core3duino.

Je n'ai pas encore fixé mon choix sur le chip des modules de commandes, l'attiny2313 a ma préference pour l'instant, mais il va falloir que je m'affranchisse de l'analogique et que je palie ce problème.

Je suis plutôt satisfait de ma solution actuelle à base de mega1280 + afficheur tactile + ds18b20 + relais piloté en rs485.
Je crains pourtant en ajoutant l'ethernet et des sondes supplémentaires d'être rapidement saturé en i/o et en vitesse de calcul.
Les avantages que j'entrevois dans ma solution est d'obtenir théoriquement deux fois plus d'entrée/sortie avec la même taille mémoire. (robotique ???)
Le plus chaud sera de partager les tâches équitablement. (l'option du clustering n'est pas loin!)

L'idée de déporter les modules de commandes me plait de plus en plus ;)

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 11, 2012, 11:27 pm
Merci, je vois mieux la différence entre les deux maintenant.


Quote from: osaka
J'aimerai connaître le résultat de tes expérimentations , compte rendu obligatoire

Pas de souci, par contre faudra être patient, j'ai un truc sur le feu pour l'instant XD

Pour détailler un peu, je compte mettre un afficheur tactile et l'ethernet sur un chip mega644 (taches lentes), quant au second 644, les tâches courantes, gestion des évenements capteurs et envoie des commandes asservies. Le tout en intercommunication.
J'espère avec cette configuration obtenir plus de réactivité sur les interfaces IHM.


figure toi que si j'ai bien compris, c'est exactement ce à quoi je pense, séparé contrôleur IHM (affichage, eth, ...) et contrôleur événementiel (temp, lum, horaire, ...)
(C'est pour celà que j'ai une adresse spécifique contrôleurs" 0x80" pour les retour et ack des modules, si cette adresse spécifiée, tout les contrôleur écoute c'est qu'il s'agit d'un retour d'état que la commande soit distante ou locale au module).


Je n'ai pas encore fixé mon choix sur le chip des modules de commandes, l'attiny2313 a ma préference pour l'instant, mais il va falloir que je m'affranchisse de l'analogique et que je palie ce problème.

Je suis plutôt satisfait de ma solution actuelle à base de mega1280 + afficheur tactile + ds18b20 + relais piloté en rs485.
Je crains pourtant en ajoutant l'ethernet et des sondes supplémentaires d'être rapidement saturé en i/o et en vitesse de calcul.
Les avantages que j'entrevois dans ma solution est d'obtenir théoriquement deux fois plus d'entrée/sortie avec la même taille mémoire. (robotique ???)
Le plus chaud sera de partager les tâches équitablement. (l'option du clustering n'est pas loin!)

L'idée de déporter les modules de commandes me plait de plus en plus ;)


La conception modulaire me conforte dans l'idée de n'avoir presque aucune limites.  :smiley-surprise:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Mar 12, 2012, 12:02 am
Yep!

Quote from: osaka
figure toi que si j'ai bien compris, c'est exactement ce à quoi je pense, séparé contrôleur IHM (affichage, eth, ...) et contrôleur événementiel (temp, lum, horaire, ...)


Ouép, on travaille dans la même direction.
C'est aussi une des raisons pour lesquels, je m'interesse beaucoup à tes dernières experimentations ;)

Le protocole I2C est donné pour être plus rapide (100 à 400 khz) que le rs485, certes sur une distance beaucoup beaucoup moins importante. Mais l'essentiel est que ce sont tout deux des protocoles solides avec chacun une mission, celle au voisinage, celle au lointain.

Le proto que je dessine en ce moment réunit la puissance de 2 atmega644 afin de résoudre la séquentialisation des données.
En effet, comment donner la priorité à tel ou tel tâche si le cerveau est unique, l'algorithme devient complexe.
Si on décuple les cerveaux et on leur attribuent des tâches spécifiques mais conjointent, on commence à parler buffer de process, pipe et on aboutit à un système neuronal proche du clustering, avec un algorithme plus simple, un algorithme de fourmie travailleuse. ;)

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 12, 2012, 01:54 pm
Yop yop,
J'avais pensé à l'I2C (même au spi, can, ...), mais quelque chose me dérangeais c'est la communication maitre esclaves, pour laisser la parole à chaque esclave il est obligé de les interrogé l'un à la suite de l'autre, c'est un peux faire du "token ring" ?
J'ai vu qu'il y avait moyen de faire du multi-maître et d'entamé une conversation et transaction à la libération de la ligne sur sdl et sca  ?
Enfin finalement je me suis dit que j'allais le réservé pour d'autre choses (par ex: le module rtc 1307, ...), que le rs485 permettait la longue distance, le "Multi-processor Communication Mode" que j'avais envie de testouiller, etc , donc j'ai pas approfondi le bus i2c. (et donc ça tombe bien que tu t'y intéresses  :smiley-mr-green:).
Concernant la vitesse tout dépend également de ses exigences (à 4ms la transaction ça me donne quand même 250 transaction par sec ) et du code qui traine derrière , comme j'ai eu le cas avec l'ethernet (pourtant à 10Mbps théorique) et les sockets,  on pourrais ce dire que ça rox, be finalement les différents chipotages,traitements (byte->json, etc) et intermédiaires (php qui clôture la transaction à la simple vue d'un 0  ]:) ) donnent un résultat catastrophique comparé à ce que j'espérais pour une tel vitesse. (enfin ici c'est les différents chipotage pour rendre le tout compatible qui fout le boxon, faudrait que je remette mon shield, j'ai quelques idée pour pallier ça qui me trotte en tête).  =(
Dans tout les cas la seule façon d'avoir le meilleur choix c'est de testé et comparé (je compte sur toi  :smiley-mr-green:).
Ca me fait pensé qu'il faudrait testé ma solution sans la gestion du crc voir si ça en vaut la peine ?


Le proto que je dessine en ce moment réunit la puissance de 2 atmega644 afin de résoudre la séquentialisation des données.
En effet, comment donner la priorité à tel ou tel tâche si le cerveau est unique, l'algorithme devient complexe.
Si on décuple les cerveaux et on leur attribuent des tâches spécifiques mais conjointent, on commence à parler buffer de process, pipe et on aboutit à un système neuronal proche du clustering, avec un algorithme plus simple, un algorithme de fourmie travailleuse. ;)


On peux ajouter que la mort ou destruction d'un neurone n'empêche pas le cerveau de fonctionné (Je n'y vois que des avantages quand je lis ta description).   :smiley-surprise:


un algorithme de fourmie travailleuse


Tien ça me donne idée de nom (s'il faut le nommé  :P)  au système, "antsDomo" la fourmilière au service de votre maison.  XD
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Levaillant on Mar 12, 2012, 06:00 pm
Premier post pour vous dire...
...
..
.
que vous êtes de grands malades!  XD

Continuez, personnellement je suis vos avancées avec attention!  ;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Mar 12, 2012, 06:10 pm
Yep!

Quote from: osaka
J'avais pensé à l'I2C (même au spi, can, ...), ...
J'ai vu qu'il y avait moyen de faire du multi-maître et d'entamé une conversation et transaction à la libération de la ligne sur sdl et sca  ?


Je suis passé par ces étapes de reflexion également, et effectivement le mode multi-maitre fait partie du protocole I2C. Lors de mes recherches, j'ai entrevus quelques solutions arduino et je pense sincèrement que cela est possible.
Les ressources ne sont pourtant pas trés nombreuses et plutôt légères. Il n'y aura, bien sûr, que la pratique qui pourra valider ou pas mes hypothèses. L'experience me tente fortement.

Quote from: osaka
Ca me fait pensé qu'il faudrait testé ma solution sans la gestion du crc voir si ça en vaut la peine ?

Je m'attendais à ce que le crc soit plus lourd en fait. J'avais regardé les differents algo de contrôle et certain me semblait fort alambiqué. Il faut effectivement voir ce qu'il apporte réellement.

Quote from: osaka
"antsDomo"

:smiley-mr-green:

Pour le proto, la mise en place des composants ne sera pas trop compliqué, j'ai surtout des problèmes d'esthétique en fait, je  travaille sur une seule couche (compo dips uniquement) et j'essaie d'eviter autant que possible les straps.
Je suis déjà à mon second shema, le premier sur un seul plan, le second sur deux (principe du shield).
Je vais encore tatillonner quelques jours/semaines avant de choisir une solution. J'ai déjà l'essentiel des composants, et j'aimerais autant que possible que le proto soit plus qu'un proto, donc une plateforme pre et/ou définitive.
Le processeur IHM sera donc pourvu de l'ethernet de facto (ENC28J), d'un bus rs232 et rs485. Le processeur evenementiel sera doté de deux bus rs485. Une liaison I2C liera les deux processeurs, une eeprom au milieu.

Je travaille depuis peu avec les registres, cette méthode me parle plus en fait, je suis technicien de maintenance et l'automatisme est mon dada. J'ai par contre tout à apprendre du c++, mais je voyage depuis quelques années d'un language à un autre au grés de mes besoins.

Quote from: Levaillant
vous êtes de grands malades!

Et c'est que le début  XD

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 12, 2012, 10:38 pm

Quote from: osaka
Ca me fait pensé qu'il faudrait testé ma solution sans la gestion du crc voir si ça en vaut la peine ?

Je m'attendais à ce que le crc soit plus lourd en fait. J'avais regardé les differents algo de contrôle et certain me semblait fort alambiqué. Il faut effectivement voir ce qu'il apporte réellement.


Je m'attendais également à une certaine lourdeur, jusqu'a ce que je tombe lors d'une de mes explorations sur le crc16.h de la lib avr.

Code: [Select]

static __inline__ uint16_t
_crc16_update(uint16_t __crc, uint8_t __data)
{
uint8_t __tmp;
uint16_t __ret;

__asm__ __volatile__ (
"eor %A0,%2" "\n\t"
"mov %1,%A0" "\n\t"
"swap %1" "\n\t"
"eor %1,%A0" "\n\t"
"mov __tmp_reg__,%1" "\n\t"
"lsr %1" "\n\t"
"lsr %1" "\n\t"
"eor %1,__tmp_reg__" "\n\t"
"mov __tmp_reg__,%1" "\n\t"
"lsr %1" "\n\t"
"eor %1,__tmp_reg__" "\n\t"
"andi %1,0x07" "\n\t"
"mov __tmp_reg__,%A0" "\n\t"
"mov %A0,%B0" "\n\t"
"lsr %1" "\n\t"
"ror __tmp_reg__" "\n\t"
"ror %1" "\n\t"
"mov %B0,__tmp_reg__" "\n\t"
"eor %A0,%1" "\n\t"
"lsr __tmp_reg__" "\n\t"
"ror %1" "\n\t"
"eor %B0,__tmp_reg__" "\n\t"
"eor %A0,%1"
: "=r" (__ret), "=d" (__tmp)
: "r" (__data), "0" (__crc)
: "r0"
);
return __ret;
}


Ca m'étonne d'ailleurs que ce code ne soit pas plus utilisé, pour le 1wire par exemple ... alors que ...
Code: [Select]

_crc_ibutton_update(uint8_t __crc, uint8_t __data)



Pour le proto, la mise en place des composants ne sera pas trop compliqué, j'ai surtout des problèmes d'esthétique en fait, je  travaille sur une seule couche (compo dips uniquement) et j'essaie d'eviter autant que possible les straps.
Je suis déjà à mon second shema, le premier sur un seul plan, le second sur deux (principe du shield).


Pour le module I/O (8/8) je partais sur le principe du 2 couche (shield mais avec mini qui vient ce "broché" par dessus) vu ça taille (30X17) , sinon pour les autre où le mini ne serait pas adapté ça sera comme toi simple couche et dip ,pas question de uno, mega, ... ou la place est loin d'être optimisé à l'utilisation qu'on en ferais (je suppose que c'est également ton but, d'ailleurs il y a des chance que je te copie  :smiley-mr-green:) .


Je travaille depuis peu avec les registres, cette méthode me parle plus en fait, je suis technicien de maintenance et l'automatisme est mon dada. J'ai par contre tout à apprendre du c++, mais je voyage depuis quelques années d'un language à un autre au grés de mes besoins.

En effet la logique semble plus intuitive pour quelqu'un ayant l'habitude de l'automatisme, l'electropneumatique, hydrau, etc,  industrielle.
Mes premières études (secondaire = college/lycees) étaient dans l'électromécanique (tout du moin avant que je me fasse mettre à la porte de l'école  :.), puis la construction mécanique et métallique et mon meilleur amis qui étais avec moi au cours est technicien de maintenance maintenant (kraft be).
Finalement je regrette d'avoir choisie la voie de l'informatique (dev)  ...
Enfin cette voie je l'ai pas vraiment choisie , c'est suite à une reconversion (graduat= bac+3) après une accident de tuture qui ma foutu les bras en l'air.
Maintenant j'hésite à faire une "petite" formation d'automaticien ou électromécanicien pour quitté le monde des fauteuils de bureau qui ne veulent pas de moi de toute façons.  :smiley-mr-green:
Pour l'instant je me réfugie sur les µc et la domo des fourmis.

Quote from: Levaillant
vous êtes de grands malades!


C'est pas le début de la fin, c'est la fin du commencement (vers la follie).  :smiley-mr-green:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 12, 2012, 10:59 pm
Je suis également vos échanges que je trouve très intéressants, mais pour le moment mes préoccupations sont bien plus basiques.

J'espère seulement être en mesure de suivre et contribuer à vos échanges un de ces jours (même lointain).

L'idée d'utiliser plusieurs processeurs pour diverses tâches, peut-être très intéressante, et peut apporter un niveau de sécurité supplémentaire, car un processeur peut de temps en temps surveiller l'autre et réagir en cas de dysfonctionnement.

Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 13, 2012, 04:09 pm
Yop bribri,


J'espère seulement être en mesure de suivre et contribuer à vos échanges un de ces jours (même lointain).


Be tu contribues déjà pas mal, rien qu'avec ton doc très détaillés sur ton cahier des charges et schématisation que j'ai relus plusieurs fois (dans mon fauteuil au coin du feu avec un cigare et un vieux whisky  XD) car je le trouve intéressant.
Il y a des chose que je ne connais pas,schémas, etc.
;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 14, 2012, 10:11 pm
J'ai câblé au propre et testé la plus grande partie de la carte unité de gestion UC.
Elle comporte :
- La carte Arduino Mega 2560
- La carte Ethenet Shield W5100
- La petite carte RTC-DS 1307
- Un afficheur LCD 4x16 caractères
- La connectique pour raccorder la carte d'interfaçage et les interfaces des unités de gestion (chauffage et arrosage)
- Un watchdog (pas encore câblé au propre)

Tous les tests de fonctionnement du matériel sont OK.

J'ai rajouté un watchdog matériel qui se déclenche et remet à zéro la carte Arduino Mega 2560 au bout d'une seconde environ, s'il n'est pas lui-même remis à zéro par le programme.

Je ne sais pas si c'est bien utile, je n'ai pas encore regardé de près le watchdog interne du microcontrôleur (qui doit avoir la même fonction) mais je me suis dit que ce sera une sécurité supplémentaire (et comme j'ai de la place sur la carte et que cela met en œuvre des composants standards que j'avais en stock !)

Que pensez-vous de cette option ?

Je vous joins le schéma de ma carte unité de gestion UC.

J'ai baptisé mon système DOMOWEB 2012

J'attends vos critiques.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Mar 14, 2012, 10:46 pm
Yep!

First, tu es sur de ne pas avoir besoin de pwm, parce que là tu les a tous mangé  XD
L'afficheur peut être piloté avec un shift register ??? (tu ne gagnerais pas grand chose, c'est une question pour la forme)

Le 4060 est bienvenu, en effet le watchdog interne se contente de faire uniquement un reset software, il reprend au setup() si il ne reçoit pas le signal life à temps.
Un watchdog hardware te permettra un reboot complet de la carte en cas de défaillance, c'est une bien meilleur option et tout le monde apportera son crédit à cette solution ;)

(En aparté, Il faut juste faire gaffe à certain péripherique qui ont une option reset propre, mon afficheur tactile par exemple freeze si je lance un reset de l'arduino, un second reset et tout est ok...il faut être prudent avec le timing de certain peripherique.)

EDIT 1 : J'envisage également un watchdog hardware à base de 555.
Je ne connais pas trop le 4060, alors avantages/inconvénients, gestion arduino ???

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 14, 2012, 11:00 pm


tu es sur de ne pas avoir besoin de pwm, parce que là tu les a tous mangé


Non à priori je n'en ai pas besoin => j'en ai gardé une (la 9).

De toute manière j'ai fait mon câblage en wrapping, je pourrais donc modifier si je suis coincé.

Je vais avoir besoin de pas mal d'entrées sorties digitales, car j'ai décidé de reboucler les sorties (signaux directement prélévé sur les actionneurs et adaptés donc 230 VAC en 5 VDC et 24 VAC en 5 VDC) pour pouvoir contrôler l'état des actionneurs même en mode manuel.


Un watchdog hardware te permettra un reboot complet de la carte en cas de défaillance, c'est une bien meilleur option et tout le monde apportera son crédit à cette solution ;)


Cela conforte mon idée, je vais donc le câbler au propre.

Merci
@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Mar 14, 2012, 11:39 pm
Yep!

Quote
Je vais avoir besoin de pas mal d'entrées sorties digitales


Si tu as besoin de pas mal de sorties digitales, les registres à décalage sont interessants, le 74HC595 (le plus documenté) ou les TPIC595 (TPIC6B595, etc) sont des chip série vers parallèle/série.
Uniquement 3 sorties arduino sont nécesaires pour piloter ces composants (8 sorties) par communication SPI, tu peux, qui plus est, chainer les chip les uns derrière les autres jusqu'à "je ne sais plus combien  :smiley-mr-green: ".

http://www.arduino.cc/en/Tutorial/ShiftOut (http://www.arduino.cc/en/Tutorial/ShiftOut)

Tu réduis ainsi ton nombre de sortie digital tout en gagnant en nombre d'entré ;)

Le 74HC595 tolère max 70mA, (1x25 + 7x35 mA) par sortie.
Le TPIC6B596 tolère max 0.5A/50v, 150 mA par sortie (au nombre de 8). Une option interessante pour piloter de nombreux relais par exemple.
Le TPIC6595 tolère max 1.5A/45v, 250 mA par sortie.

Pour réduire le nombre d'entrée, je n'ai pas de solution qui me vienne en tête à par les ADC, CD4021...dans ce cas là, il faut être à l'ecoute des données entrantes, ce peut être interessant dans certain type de montage/programme...

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 15, 2012, 09:52 am
Merci zoroastre pour ces infos.

J'ai prévu de mettre en oeuvre la configuration décrite dans le fichier joint : (je n'arrive pas à mettre des images directement dans le post)

Ainsi j'étends le nombre d'E/S avec des PCF 8574 (I2C I/O expander) ce qui me permet de me "rapprocher", en simplifiant le câblage des liaisons avec mes unités de commande :
- l'unité de commande arrosage ( 10 E, 10 S) se trouve à environ 50cm de mon unité de gestion;
- l'unité de commande chauffage 5 zones ( 5 E, 5 S) se trouve à environ 1m de mon unité de gestion.

J'ai lu par ci, par là, que le bus I2C permettait de créer sans problème des liaisons jusqu'à quelques mètres.

Je vais câbler cela dans les prochains jours et faire des essais en ce sens.

Je vous tiendrai au courant.

Si vous avez des expériences et/ou des infos sur le sujet n'hésitez pas à m'en faire part pour que je puisse en tenir compte.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 15, 2012, 02:36 pm
Yop Bribri,
C'est une véritable machine de guerre que tu nous fais là. :smiley-mr-green:
Sur l'utilité du watchdog pour moi il est surtout justifié  dans le cas de code à risque et surtout au niveau des boucles que je sécurise via délais maximum d'exécution par exemple, mais au temps que possible j'évite d'en avoir dans mon code (j'utilise le fait que loop soit déjà bouclé en permanence).
Tiens sur le fait que Bribri n'utilise pas le pwm me fait pensé qu'on peux désactivé pas mal de fonctionnalité de l'avr, faudrait que je reregarde (Power Management and Sleep Modes) une fois à ça vu que pour mon module I/O par exemple il y a pas mal de chose dont je n'ai pas besoin, pwm, timer, i2c, ...
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: cedric2 on Mar 15, 2012, 02:52 pm
Bonjour,

Bravo pour ton projet, cela m'intéresse, je commence à me documenter pour faire à peu près la même chose, dans un premier temps surtout pour gérer mes chauffages électrique.
Je débute, je vais peut-être poser des questions bête...

As-tu finis et testé ton module 6 ordres ? Il fonctionne bien ? Il te revient à combien ? il tient dans l'emplacement cassette du chauffage ?

Sinon, pour un simple module 2 ordres (qui permettrait déjà le Normal / Confort), As-tu réfléchi/testé la solution de prendre un interrupteur commercial RF 220v/433mhz, comme décrit dans le projet
http://code.google.com/p/rc-switch/
(Il n'y a pas de fils pilote entre mes différents chauffages, il me faudra un module par chauffage)

Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Mar 15, 2012, 05:46 pm
Yep!

Quote
J'ai lu par ci, par là, que le bus I2C permettait de créer sans problème des liaisons jusqu'à quelques mètres.


A la base, l'i2c est prévu pour quelques dizaines de centimètre.
Il est effectivement possible d'aller au delà en utilisant des répetiteurs, mais faut pas espérer aller au delà de 3 mètres.
Déjà, 1 mètre je trouve que cela fait beaucoup !!!

Il faut voir si ton 8574 fera un tampon correcte.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 15, 2012, 06:48 pm

Bravo pour ton projet, cela m'intéresse,


Merci, n'hésite pas à poser des questions. Nous sommes plusieurs sur ce forum à travailler dans le même esprit, sur des projets similaires.


As-tu finis et testé ton module 6 ordres ? Il fonctionne bien ? Il te revient à combien ? il tient dans l'emplacement cassette du chauffage ?


Non je n'ai pas testé ce module, je n'ai pas encore décidé si je vaiment mettre en oeuvre les 6 ordres.
Je crois que Skuzmitoo l'a simulé et peut-être même testé en vrai, tu trouveras des infos à ce sujet dans ce sujet vers les pages 9 ou 10, pour ce qui concerne le coût il suffit de voir sur un site comme sélectronic, conrad ou autre mais cela ne va pas chercher bien loin, le plus cher et aussi le plus encombrant sera le transfo.


As-tu réfléchi/testé la solution de prendre un interrupteur commercial RF 220v/433mhz


Non, je n'utilise pas de liason RF, mais il me semble que d'autres ont publié à ce sujet.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 15, 2012, 06:53 pm

A la base, l'i2c est prévu pour quelques dizaines de centimètre.
Il est effectivement possible d'aller au delà en utilisant des répetiteurs, mais faut pas espérer aller au delà de 3 mètres.
Déjà, 1 mètre je trouve que cela fait beaucoup !!!


Merci pour ton avis.
Je vais faire des essais (peut-être ce weeck-end), en augmentant la longueur de la liaison et en tentant de simuler un milieu relativement perturbé.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 15, 2012, 07:08 pm

C'est une véritable machine de guerre que tu nous fais là.


Je vais essayer de faire un sorte que le système soit le plus fiable possible, même si ce ne sera pas le plus économique => je ne compte pas en faire des séries : je vais en faire 2 un qui sera fonctionnel et un second pour faire des essais et qui servira pour dépannage en cas de panne.

Je joins un autre schéma de principe des laisons entre les différentes unités : gestion / interface / commande

(je n'ai toujours pas trouvé comment insérer directement une image dans le message)

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 15, 2012, 07:16 pm
Yop yop,


(je n'ai toujours pas trouvé comment insérer directement une image dans le message)


2 ème icone à partir de la gauche au dessus des smileys : [img ] url [/img ] (sans l'espace avant ']' )
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 15, 2012, 07:36 pm

2 ème icone à partir de la gauche au dessus des smileys : [img ] url [/img ] (sans l'espace avant ']' )


Merci pour ta réponse

Ce qui signifie qu'il faut avant de poster, déposer l'image sur un autre site. Je pensai qu'il était possible de la déposer sur le forum (comme pour une pièce jointe).

Connais-tu un site simple et pratique pour déposer les images, sans être noyé de spam et messages publicitaires ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 15, 2012, 08:25 pm


2 ème icone à partir de la gauche au dessus des smileys : [img ] url [/img ] (sans l'espace avant ']' )


Merci pour ta réponse

Ce qui signifie qu'il faut avant de poster, déposer l'image sur un autre site. Je pensai qu'il était possible de la déposer sur le forum (comme pour une pièce jointe).

Connais-tu un site simple et pratique pour déposer les images, sans être noyé de spam et messages publicitaires ?


Vi il te faut héberger tes images, moi ici j'utilise le petit espace que me fournit mon provider avec mon abonnement adsl (normalement ils fournissent tous un petit espace ?).
Sinon il y a http://imageshack.us/ .

;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 15, 2012, 08:39 pm
Merci osaka

Bon je vais voir, c'est peut-être aussi simple de les mettre en pièce jointe.

Je vais arrêter de polluer ce forum avec cette question.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: cedric2 on Mar 15, 2012, 08:39 pm

Non je n'ai pas testé ce module, je n'ai pas encore décidé si je vaiment mettre en oeuvre les 6 ordres.
Je crois que Skuzmitoo l'a simulé et peut-être même testé en vrai, tu trouveras des infos à ce sujet dans ce sujet vers les pages 9 ou 10, pour ce qui concerne le coût il suffit de voir sur un site comme sélectronic, conrad ou autre mais cela ne va pas chercher bien loin, le plus cher et aussi le plus encombrant sera le transfo.

Merci pour les infos, je posais la question du cout si tu avais déjà fait le truc en plusieurs exemplaire. Comme il m'en fait 14, cela peut vite chiffrer... C'est pour cela que je regarde les module de télécommande de prise RF (20 euros les 4) qui vont surement être moins chère, et plus fiable (je ne veux pas "jouer" avec le 220)
Je continue mes recherches et je vous tiendrais au courant.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 15, 2012, 11:13 pm
L'idée de prendre un système RF existant, est certainement intéressante, surtout pour éviter de tirer des câbles. Il reste à voir la faisabilité en terme de portée des liaisons RF, très probablement que tes radiateurs sont dans des pièces différentes, il faut alors voir comment placer l'Arduino qui va commander les différents canaux des  télécommandes. Peut-être en position centrale ?
Ce sera effectivement avec grand intérêt que je suivrai tes essais.
@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: cedric2 on Mar 15, 2012, 11:54 pm
Je viens de commander un "Idk Kit Silver / 1 télécommande + 4 prises 1000 Watts"
C'est 20 euros chez auchan pour 4 prises.

Je pensais prendre un kit 12 prises comme celui ci
http://www.nasasafe.com/12ch-ac110240v-31543mhz-wireless-remote-control-switch-1-transmitter-to-12-receivers-4-control-modes_p117.html
C'est plus chère, et c'est pas garantis que cela fonctionne avec le librairie rc-switch... par contre il y a 12 modules de la bonne taille.

alors que le kid ldk, j'ai vu qu'une personne l'avait déjà testé avec le rc-swicth. Par contre, il va falloir que je démonte les prises pour les rentrer dans la cassette des chauffages.

Pour les tests, J'ai plus qu'a attendre que tout arrive... l'arduino vient de france, mais le module RF vient de Chine...

Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 16, 2012, 04:10 pm
Yop yop,

Je viens de faire le teste sans crc et apparemment celui-ci prend entre 400 et 500µs pour 5octet c'est fort raisonnable je trouve.

Dernière version de mon code de teste pour un module 8 I/O avec commande locale.

Code: [Select]

#include <util/crc16.h>
#include <util/delay.h>
#include <avr/wdt.h>

#define DATA_LENGTH 6
#define ADDRESS 0x10
#define RE_DE_ON PORTC|=8
#define RE_DE_OFF PORTC&=~(8)
#define RE_DE_REG DDRC |= 8
#define BAUD 115200

#define _WAIT(_pres) _delay_us(_pres)

#define SERIAL_BUFFER_SIZE 10
volatile uint8_t pos = 0;
volatile uint8_t bufferBusRx[SERIAL_BUFFER_SIZE];


volatile uint8_t listener = 0;
volatile uint32_t delayWD = 0;

uint8_t bufferBusTx[DATA_LENGTH] = {0};


const uint32_t pres = 69120000/BAUD; //temps de maintien RE_DE
const uint32_t maxRec = 14000000/BAUD; //temps max en reception
const uint32_t maxTrans = (32640000/(BAUD/100))+((ADDRESS*(pres*2))); //temps max de transaction+ temps different entre module selon l'adresse ( donc priorité ascendante en cas de colision, etc)

volatile uint8_t* sortieReg[8] = {&PIND, &PIND, &PIND, &PIND, &PIND, &PIND, &PINB, &PINB}; //correspondance registre/sorie n° (préféré à une structure conditionnel)
uint8_t sortieBit[8] = {4, 8, 16, 32, 64, 128, 1, 2}; //correspondance bit/registre/sortie n°

uint32_t delayB = 0;

ISR(USART_RX_vect)
{
 if((UCSR0B & (1<<RXB80))) // si bit9 à 1 = adresse
 {
   listener = UDR0;
   if(listener == ADDRESS) //s'il sagit de son adresse
   {
     UCSR0A &= ~(1<<MPCM0);
     pos = 0;
   }
   else //sinon toute donnees transitant sur le bus seront ignore
   {
     UCSR0A |= (1<<MPCM0);
   }
   
   delayWD = micros()+maxTrans; //on active un delay max d'occupation du bus quelque soit l'emeteur ou ecouteur
 }
 else //si mode écoute entrante, on enregistre les donnees
 {
   if(pos <= 8) // temps que les 8 octet n'on pas été reçu (t'aille constante spécifique à la trame module I/O 8)
   {
     bufferBusRx[pos] = UDR0;
     ++pos;
   }
   else
   {
     pos = 0;
   }  
 }
}


////////////////////////////////////////////////////////////////////////////

void setup()
{
 RE_DE_REG; //pin RE_DE en sortie
 
 DDRD |= 252; //reg D 11111100 en sortie
 DDRB |= 3;   // reg B 00000011 en sortie
 
 DDRB &= ~(60); // reg B 00111100 en entrée
 DDRC &= ~(15); // reg C 00001111 en entree
 begin(BAUD); //init
 
 PORTD|=252;
 PORTB|=3;
 _delay_ms(1000);
 PORTD&=~(252);
 PORTB&=~(3);
}

void loop()
{
 if(pos == 8) //si donnees entrente
 {
   readData();
   pos = 0;
 }
 else //sinon on verifie s'il y a des donnee a transmettre dans le buffer
 {
   sendData();
 }
 
 uint8_t bIO = ((PINB&60)>>2)+((PINC&15)<<4); //registre pour commande en entrée (locale)
 if(bIO&255 && micros() >= delayB)
 {
   for(byte i=0; i < 8; i++)
   {
     if(bIO&(1<<i))
     {
       if(*(sortieReg[i])&(sortieBit[i]))
       {
         bufferBusRx[4] = 0x00;
       }
       else
       {
         bufferBusRx[4] = 0x01;
       }
     
       bufferBusRx[5] = i;
       action(1);  
     }
   }
   delayB = micros()+250000;
 }
}

uint8_t sendData()
{
 if(bufferBusTx[2] && !listener) // si données à transmettre bufferBusTx[2] (! 0) et que le bus est libre (0)
 {
   _WAIT(pres); //petite pause de sécurité car même en cas de liberation '0', RE_DE peux encore être maintenu de l'autre côté
   writeData(1); //on envois les données
 }
 
 if(listener && micros() >= delayWD) // si delay de transaction max est dépasse donc erreur, collision, etc
 {                                   //  delayWD aura une valeur différente pour chaque adresses
   listener = 0x00;
 }
}

void readData() // reception
{
   if(bufferBusRx[0] == 0x02 && bufferBusRx[8] == 0x03) //debut de trame
   {
       if(checkData()) //crc ok
       {
         action(0);

       }
       else //sinon on retourne directement un message d'erreur crc à l'envoyeur
       {
         
         ackError(0x02);
       }
   }
   else //sinon on retourne directement un message d'erreur general de reception
   {
     ackError(0x01);
   }
   
}

void action(uint8_t local)
{
   if(bufferBusRx[4]==0x00) // out on
   {
     *(sortieReg[bufferBusRx[5]]+2) &= ~(sortieBit[bufferBusRx[5]]); //PORTX &= ~(bit)
   }
   else if(bufferBusRx[4]==0x01) //out off
   {
     *(sortieReg[bufferBusRx[5]]+2) |= sortieBit[bufferBusRx[5]];
   }
   
   bufferBusTx[0] = 0x05;
   bufferBusTx[1] = 0x80;
   bufferBusTx[2] = ADDRESS;
   bufferBusTx[3] = 0xFF;
   bufferBusTx[4] = bufferBusRx[5];
   bufferBusTx[5] = ((PIND >> 2)+(PINB << 6)); //retour d'etat des 8 sorties
   
   if(!local)
   {
     _WAIT(pres); //petite pause de sécurité car même en cas de liberation '0', RE_DE peux encore être maintenu de l'autre côté
     writeData(0);
   }    
}

void writeData(uint8_t local)
{
 //calcul du crc en premier
 uint16_t crc = 0xFFFF;
 
 for(uint8_t i=0; i <= bufferBusTx[0]; i++)
 {
   crc = _crc16_update(crc, bufferBusTx[i]);
 }
 
 //active le mode transmition
 RE_DE_ON;
 
 write(bufferBusTx[1], 1); //adressage
 write(0x02, 0); //debut de trame
 for(uint8_t i=0; i <= bufferBusTx[0]; i++) //donnees (suivant la taille specifiée)
 {
   write(bufferBusTx[i], 0);
 }
 
 write(((crc & 0xFF00) >> 8), 0); //crc MSB
 write((crc & 0x00FF), 0); //crc LSB
 write(0x03, 0); //fin de trame
 if(local)
 {
   write(0x00, 1);
 }
 _WAIT(pres); //delay de maintien
 RE_DE_OFF; // on desacive le mode de transmition
 bufferBusTx[2] = 0;
}

uint8_t checkData() //controle crc
{
 uint16_t crc = 0xFFFF;
 
 uint16_t _crc = (bufferBusRx[6]<<8);
 _crc += bufferBusRx[7];
 
 for(uint8_t i=1; i <= bufferBusRx[1]+1; i++)
 {
   crc = _crc16_update(crc, bufferBusRx[i]);    
 }

 if(crc == _crc)
 {
   return 1;
 }
 
 return 0;
}

void ackError(uint8_t ErrorNo)
{
 bufferBusTx[0] = 0x04;
 bufferBusTx[1] = 0x81;
 bufferBusTx[2] = ADDRESS;
 bufferBusTx[3] = 0xFE;
 bufferBusTx[4] = ErrorNo;
 _WAIT(pres);
 writeData(0);
}

//////////////////////////////////////////////////////////////////////////////////////////////////

void write(uint8_t data, uint8_t txb8)
{
 while (!((UCSR0A) & (1 << UDRE0)))
   ;
 if(txb8)
 {
   UCSR0B |= (1<<TXB80);
 }
 else
 {  
   UCSR0B &= ~(1<<TXB80);
 }
 UDR0 = data;
}

void begin(unsigned long baud)
{
 uint16_t baud_setting;

 UCSR0A = 0;
 baud_setting = (F_CPU / 8 / baud - 1) / 2;

 UBRR0H = baud_setting >> 8;
 UBRR0L = baud_setting;
   
 UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0)|(1<<UCSZ02);
 UCSR0C = (3<<UCSZ00);
 
 UCSR0A |= (1<<MPCM0);
}
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Mar 18, 2012, 03:59 pm
Yep!

Je suis tombé sur çà en faisant un petit peu de lèche vitrine chez mes sites marchands habituels :


(http://www.sigma-shop.com/product/73/web-internet-ethernet-controlled-relay-board-arduino-compatible-rs485-usb-boxed-for-din-mount-rail.html)

Cà donne des idées  $)

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 18, 2012, 04:45 pm
Oui Zoroastre, c'est effectivement très sympa, bon 4 Entrées et 4 sorties c'est un peu limité, mais comme le microcontrôleur en a bien plus, il doit y avoir moyen de faire quelque chose pour y accéder.
Pour un module à distance cela peut-être très intéressant. Je pense à un autre projet que celui qui nous réuni sur ce sujet du forum.

J'ai commencé mes essais du bus I2C avec 2 PCF8574, l'un en entrée l'autre en sortie, ça marche nickel avec un câble de plus de 4 mètres, c'est-à-dire presque trois fois ce qu'il me  faut (j'ai sous estimé la distance de mon unité de commande de chauffage, elle est à environ 1,50m).
Ce soir, je vais voir pour faire quelques essais en milieu perturbé; je vous tiens au courant.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 18, 2012, 11:13 pm
J'ai fait des essais avec le câble de 4m sur le bus I2C en créant des perturbations :
- avec un vieux moteur électrique qui crache des étincelles => pas de Pb
- en enclenchant un gros contacteur => l'afficheur LCD du système affiche n'importe quoi, alors que le bus I2C fonctionne bien.

conclusion : je pense que pour ma liaison I2C à 1,5m cela devrait bien fonctionner => je vais utiliser un câble blindé pour plus de sécurité.

Qu'en pensez-vous ?

Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 19, 2012, 12:20 am




Au final c'est le rendu (version close) que j'aimerais obtenir (rail DIN) par module.  :smiley-surprise:




Qu'en pensez-vous ?


De ce que j'ai vu, entendu ça ne devrait pas posé de problème ?
Zoro y répondra mieux que moi je pense.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 19, 2012, 06:55 am

Au final c'est le rendu (version close) que j'aimerais obtenir (rail DIN) par module.  :smiley-surprise:





J'ai déja utilisé ce type de boîtier : mon unité de commande chauffage est monté dans un tel boîtier et je viens d'en commander d'autres chez Conrad pour les unités d'interfaçage chauffage et arrosage.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: cedric2 on Mar 19, 2012, 11:20 am

J'ai déja utilisé ce type de boîtier : mon unité de commande chauffage est monté dans un tel boîtier et je viens d'en commander d'autres chez Conrad pour les unités d'interfaçage chauffage et arrosage.

J'ai pas vu de module arduino chez conrad. Tu parles juste de la boite ?

Sinon, vous savez, cela existe une jolie boite bien propre, pouvant contenir un arduino, un afficheur LCD , quelques boutons. (et si possible avec de la place pour une sheild "radio" radio RF ou wifi ou autres pour la liaison avec les autres modules)
Pour faire une interface de commande chauffage pour mettre dans le salon ?
Il faudrait que cela ressemble à un truc comme cela, par exemple
http://www.conrad.fr/thermostat_avec_programmation_hebdomadaire_24_230v_p_52080_59631_836555_648169_FAS
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 19, 2012, 01:16 pm

J'ai pas vu de module arduino chez conrad. Tu parles juste de la boite ?


Oui je parle du boîtier. Effectivement Conrad ne fait pas de modules Arduino.

Je posterai des photos au fur et à mesure. Pour l'instant je ne peux faire que celles des unités de commandes (puisqu'elles existent et fonctionnent avec mon ancien système).


Sinon, vous savez, si cela existe une jolie boite bien propre, pour faire une interface de commande chauffage pour mettre dans le salon ?


Je n'ai jamais vu, mais je n'ai pas cherché.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: albertrand on Mar 20, 2012, 09:15 am

Bonjour a tous et toutes, moi j'ai utilise ce genre de boitier.

et d'autre boitier pour Rail DIN
http://www.tme.eu/fr/katalog/?art=Z-104#id_category%3D100625%26cleanParameters%3D1%26%26page%3D5%2C20 (http://www.tme.eu/fr/katalog/?art=Z-104#id_category%3D100625%26cleanParameters%3D1%26%26page%3D5%2C20)
Site en pologne mais prix des boitier OK.
A plus.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: cedric2 on Mar 20, 2012, 09:45 am
Cela a l'air pas mal et pas cher. (j'ai pas vu les frais de livraison)
Il faut que je recherche encore un peu, et que je valide les taille, mais
http://www.tme.eu/fr/details/abs-33a/boitiers-pour-appareils-a-ecran/# (http://www.tme.eu/fr/details/abs-33a/boitiers-pour-appareils-a-ecran/#)
me semble pas mal adapté si je trouve un afficheur adaptable
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Mar 20, 2012, 10:22 am
Merci pour l'info, ces boîtiers ont l'air d'être bien adaptés pour la domotique, autant ceux pour rails DIN, qui sont à priori pas trop chers, que les autres. Il faut effectivement voir pour les frais de port, si quelqu'un a l'info ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: albertrand on Mar 20, 2012, 12:51 pm
Les frais de livraison sont de 7,90€, livraison par UPS.
Mes commandes on été reçu 3-4 jours après payement par paypal.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: albertrand on Mar 20, 2012, 01:05 pm
J'ai commander ce boitier et je suis satisfait de cellui-ci.




je l'utilise pour 32 entrées et un autre pour 16 sortie avec relais.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 20, 2012, 05:28 pm
Yop yop,
Vive les boiboites bien propre histoire de cacher un montage dégueulasse (les miens).  :smiley-mr-green:
Sinon pour changer un peux j'ai remis mon shield eth sur ma mega, pour la partie couplage contrôleur web/bus, j'arrive à envoyer une commande avec retour de statut assé rapidement (une 20 ène de millis sec, avec bus à 112500baud).
Par contre je suis moyennement satisfait au niveau de la réactivité en ce qui concerne les commande local et statut je suis obligé de scruter tout les x ms si il y à eu un changement c'est loin d'être optimal.
Je met mon code d'expérimentation.

Code arduino (brouillon pas propre et non optimisé) :
Code: [Select]

#include <SPI.h>
#include <Ethernet.h>
#include <util/crc16.h>
#include <util/delay.h>
#include <avr/wdt.h>

#define DATA_LENGTH 6
#define ADDRESS 0x12
#define RECEIVER 0x10

#define RE_DE_ON PORTK|=128
#define RE_DE_OFF PORTK&=~(128)
#define RE_DE_REG DDRK |= 128
#define BAUD 115200

#define _WAIT(_pres) _delay_us(_pres)
#define SERIAL_BUFFER_SIZE 16

byte mac[] = {  0x90, 0xA2, 0xDA, 0x00, 0x6D, 0x86 };
byte ip[] = { 192,168,1,109 };

Server server(9390);
Client client = 0;

volatile uint8_t listener = 0;
volatile uint32_t delayWD = 0;

uint8_t bufferBusTx[DATA_LENGTH] = {0};
volatile uint8_t bufferBusRx[SERIAL_BUFFER_SIZE] = {0};
volatile uint8_t bufferTmp[32] = {0};
volatile uint8_t pos = 0;
volatile uint8_t available = 0;

uint32_t delayB = 0;
volatile uint8_t ack = 0;
uint8_t err = 0;

const uint32_t pres = 69120000/BAUD;
const uint32_t maxRec = 14000000/BAUD;
const uint32_t maxTrans = (32640000/(BAUD/100))+((ADDRESS*(pres*2)));


ISR(USART1_RX_vect)
{
 if((UCSR1B & (1<<RXB81)))
 {
   listener = UDR1;
   if(listener == ADDRESS || listener == 0x80 || (ack && listener == 0x81))
   {
     UCSR1A &= ~(1<<MPCM1);
     pos = 0;
     available = 0;
   }
   else
   {
     UCSR1A |= (1<<MPCM1);
   }
   
   delayWD = micros()+maxTrans;
 }
 else
 {
   bufferBusRx[pos] = UDR1;
   
   if(pos == bufferBusRx[1]+4)
   {
     available = pos;
     pos = 0;
   }
   else
   {
     ++pos;
   }
 }
}

////////////////////////////////////////////////////////////////////////////

void setup()
{
 Ethernet.begin(mac,ip);
 server.begin();
 delay(1000);
 
 RE_DE_REG;
 DDRK &= ~(64);
 
 begin(BAUD);
}

////////////////////////////////////////////////////////////////////////

void loop()
{
 client = server.available();
 if(client.available())
 {
   int i = 0;
   while(client.available() > 0)
   {
     bufferBusTx[i] = client.read();
     i+=1;
   }
   
   if(bufferBusTx[1] == 0x12 && bufferBusTx[2] == 0x12)
   {
     if(bufferTmp[2])
     {
       writeAjax(client, bufferTmp);
         
       bufferBusTx[2] = 0;
       bufferTmp[2] = 0;
     }
   }
   else
   {
     while(client.connected())
     {
       if(available)
       {
         readData();
         available = 0;
       }
       else
       {
         sendData();
       }  
     }
   }
   client.flush();
   client.stop();
 }
 
 if(available)
 {
   readData();  
   available = 0;
 }
 else
 {
   sendData();
 }
 
}

uint8_t sendData()
{
 if(bufferBusTx[2] && !listener)
 {
   _WAIT(pres);
   writeData(bufferBusTx);
   ack = 1;
 }
 
 if(listener && micros() >= delayWD)
 {
   listener = 0x00;
   ack = 0;
 }
}

void readData()
{
   if(bufferBusRx[0] == 0x02 && bufferBusRx[bufferBusRx[1]+4] == 0x03) //debut de trame
   {
       if(checkData()) //crc ok
       {
         action();
       }
       else //sinon on retourne directement un message d'erreur crc à l'envoyeur
       {
         
         ackError(0x02);
       }
   }
   else //sinon on retourne directement un message d'erreur general de reception
   {
     ackError(0x01);
   }
     
}

void action()
{
   if(bufferBusRx[4] == 0xFF || err == 2)
   {
     bufferBusTx[2] = 0;
     _WAIT(pres);
     RE_DE_ON;
     write(0x00, 1);
     _WAIT(pres);
     RE_DE_OFF;
     ack = 0;
     err = 0;
     if(bufferBusRx[4] == 0xFF)
     {
       if(client.connected())
       {
         writeAjax(client, bufferBusRx);
       }
       else
       {
         for(int i = 0; i <= bufferBusRx[1]+1; i++)
         {
           bufferTmp[i] = bufferBusRx[i];
         }
       }
     }
   }    
   else
   {
     ++err;
     _WAIT(pres);
     writeData(bufferBusTx);
   }
}

void writeAjax(Client cli, volatile uint8_t* buf)
{
   client.print("{");

   for(int i = 0; i <= buf[1]; i++)
   {
     client.print("\"i");
     client.print(i);
     client.print("\":");
     client.print((int)buf[i+1]);
     if(i < buf[1])
     {
       client.print(",");
     }
   }
   client.print("}");
   
   client.flush();
   client.stop();
}

void writeData(uint8_t* data)
{
 uint16_t crc = 0xFFFF;
 
 for(uint8_t i=0; i <= data[0]; i++)
 {
   crc = _crc16_update(crc, data[i]);
 }
 
 RE_DE_ON;
 
 write(data[1], 1);
 write(0x02, 0);
 for(uint8_t i=0; i <= data[0]; i++)
 {
   write(data[i], 0);
 }
 
 write(((crc & 0xFF00) >> 8), 0);
 write((crc & 0x00FF), 0);
 write(0x03, 0);
 _WAIT(pres);
 RE_DE_OFF;
}

uint8_t checkData()
{
 uint16_t crc = 0xFFFF;
 
 uint16_t _crc = (bufferBusRx[bufferBusRx[1]+2]<<8);
 _crc += bufferBusRx[bufferBusRx[1]+3];
 
 for(uint8_t i=1; i <= bufferBusRx[1]+1; i++)
 {
   crc = _crc16_update(crc, bufferBusRx[i]);    
 }

 if(crc == _crc)
 {
   return 1;
 }
 
 return 0;
}

void ackError(uint8_t ErrorNo)
{
 uint8_t data[5] = {0};
 data[0] = 0x04;
 data[1] = 0x81;
 data[2] = ADDRESS;
 data[3] = 0xFE;
 data[4] = ErrorNo;
 _WAIT(pres);
 writeData(data);
}
//////////////////////////////////////////////////////////////////////////////////////////////////

void write(uint8_t data, uint8_t txb8)
{
 while (!((UCSR1A) & (1 << UDRE1)))
   ;
 if(txb8)
 {
   UCSR1B |= (1<<TXB81);
 }
 else
 {  
   UCSR1B &= ~(1<<TXB81);
 }
 UDR1 = data;
}

void begin(uint32_t baud)
{
 uint16_t baud_setting;
 UCSR1A = 0;
 baud_setting = (F_CPU / 8 / baud - 1) / 2;

 UBRR1H = baud_setting >> 8;
 UBRR1L = baud_setting;
   
 UCSR1A |= (1<<MPCM1);
 UCSR1B = (1<<RXEN1)|(1<<TXEN1)|(1<<RXCIE1)|(1<<UCSZ12);
 UCSR1C = (3<<UCSZ10);
 UCSR1B &= ~(1<<UDRIE1);
}

Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Mar 20, 2012, 05:28 pm
Page index html:
Code: [Select]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>DDuinoAjax</title>

   <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
   <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
   <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
       
   <script src="webAjax.js"></script>
   <script src="response.js"></script>
   
  <link rel="stylesheet" type="text/css" href="style.css" media="screen" />

</head>
<body onload="init()">
<h3>DD</h3>
<div id="log"></div>
<br></br>
<div><button id="dw0" onclick="digitalWrite(0, 1, 1)">on</button></div>
<div><button id="dw1" onclick="digitalWrite(1, 1, 1)">on</button></div>
<div><button id="dw2" onclick="digitalWrite(2, 1, 1)">on</button></div>
<div><button id="dw3" onclick="digitalWrite(3, 1, 1)">on</button></div>
<div><button id="dw4" onclick="digitalWrite(4, 1, 1)">on</button></div>
<div><button id="dw5" onclick="digitalWrite(5, 1, 1)">on</button></div>
<div><button id="dw6" onclick="digitalWrite(6, 1, 1)">on</button></div>
<div><button id="dw7" onclick="digitalWrite(7, 1, 1)">on</button></div>

</body>
</html>


Code javascript:

Code: [Select]

function init()
{
setInterval("getStatut()", 200);
}

function getStatut()
{
 var dataJSon = {"0":0x02,"1":0x12,"2":0x12 };
 send(dataJSon);
}

function parseJSon(dJson)
{
 var duino = eval('(' + dJson + ')');
 if(duino.i2 == 0x10)
 {
   log(dJson);
   for(var i = 0; i <= 7; i++)
   {
     id="dw"+i;
   
     if(duino.i5 & (1 << i))
     {
       $(id).innerHTML="off";
       $(id).setAttribute('onclick', "cmdIO("+i+", 0, 0)");
     }
     else
     {
       $(id).innerHTML="on";
       $(id).setAttribute('onclick', "cmdIO("+i+", 1, 0)");
     }
     //log(Date.now());
   }
 }
}

function cmdIO(pin, value, ack)
{
 //log(Date.now());
 var dataJSon = {"0":0x04,"1":0x10, "2":0x12, "3":value, "4":pin };
 send(dataJSon);
}

function send(dataJSon)
{
 jQuery.post("socket.php", dataJSon,
 function(data)
 {
   parseJSon(data);
 });
}

function $(id)
{
 return document.getElementById(id);
}

function log(msg)
{
 $("log").innerHTML+="<br>"+msg;
}

function sleep(milliseconds)
{
 var start = new Date().getTime();
 start+=milliseconds;
 
 while((new Date().getTime()) <= start)
 {
     
 }
}


Code php:
Code: [Select]

<?php

$msg 
"";
$buffer null;

foreach(
$_POST as $element)
{
 
$msg=$msg.chr($element);
}

$host="192.168.1.109";
$port=9390;

$socket socket_create(AF_INETSOCK_STREAMSOL_TCP);
socket_connect($socket$host$port);
socket_write($socket,$msg,strlen($msg));

do
{
    if(isset(
$buffer))
        echo 
$buffer;
}
while(@
socket_recv($socket,$buffer,32,0) != 0);

socket_close($socket);

?>



Je songe à revenir vers les websocket mais serveur en java et communication avec le bus non plus avec shield eth mais via port serie du serveur (hard).
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Apr 09, 2012, 09:36 pm
Bonsoir,

Je reviens vers vous, pour vous tenir au courant de l'avancement de mes travaux.
Je viens de finir mes essais et le schéma structurel de l'unité d'interfaçage arrosage.
Cette unité en I2C vient s'intercaler entre l'unité de gestion (arduino) et l'unité de commande arrosage.
Je joins le schéma à ce post.
N'hésitez pas à me faire des commentaires et des remarques.
Je vais la câbler dès que j'ai reçu tous les composants, il ne me manque plus grand chose.

Bien à vous tous
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Apr 09, 2012, 09:50 pm
Yep!

Je viens de jeter un oeil. J'ai presque tout compris à part les transistors sur les lignes scl et sda qui à mon goût ne servent pas à grand chose  :smiley-mr-green:

En tout cas super boulot, faudra nous mettre une jolie photo kicad 3d  XD

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Apr 09, 2012, 10:41 pm
En fait, j'ai repris un schéma que j'ai trouvé sur le net, et qui doit permettre d'augmenter la distance sur la liaison I2C, j'ai fait quelques essais avec une longueur de 10m cela fonctionne très bien.
En fait je n'ai besion que d'environ deux mètres, mais je préfère assurer.

J'enverrai des photos dès que j'aurai fini le câblage.
En attendant voici des photos de l'unité de commande arrosage et de l'unité de commande chauffage.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Apr 10, 2012, 02:21 pm
Yop Yop BriBri,
Tu as bien avancé, en tout cas super boulot qui devrait en inspiré plus d'un.  :)
Grâce à toi je viens de découvrir le pcf8574  :smiley-sweat: qui m'apparait très intéressant pour étendre le nombre d'e/s.  :smiley-surprise:

Pour l'instant je ne travaille plus trop sur le bus, je suis en train de me faire une application java serveur de websocket qui permettra la communication websocket<->arduino via shield ethernet  mais également via port serie, ce qui permettra de lier web <-> arduino sans même être obligé de disposé d'un shield ethernet.  :smiley-surprise:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Apr 11, 2012, 04:54 pm

je viens de découvrir le pcf8574  :smiley-sweat: qui m'apparait très intéressant pour étendre le nombre d'e/s.  :smiley-surprise:


Le PCF8574 est très intéressant et facile à mettre en oeuvre avec un arduino.


je suis en train de me faire une application java serveur de websocket qui permettra la communication websocket<->arduino via shield ethernet


Pour ce que j'ai compris, ton principe de websocket permet d'utiliser des fonctions (ou modules) pour échanger des informations entre l'arduino et le serveur web, c'est ce dont je vais avoir besoin. Je vais bientôt attaquer la partie programmation et notamment ce qui concerne la partie web. Pour le moment, je n'en suis pas encore là, j'avance doucement, pas à pas. Mais j'aurai besoin d'aide à ce moment là.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Apr 11, 2012, 08:06 pm
Yep!

Pour ma part, je viens de finir la sérigraphie de mon premier proto double coeur à 20 Mhz.

J'ai quelques défauts de conception : petit manque de place au niveau de l'alimentation qui n'est pas définitive à l'heure actuelle. J'attends la livraison de régulateurs 5v/2A et 3.3v (le pion rouge) ainsi que des condo chimiques.
Je me suis planté sur l'empreinte des quartz.
C'est exploitable pour l'heure et je vais lancer les tests dés que j'aurais définitivement validé la partie alimentation (faudrait pas que çà chauffe de trop quand je vais tirer dessus).

J'attaque le shield ethernet + eeprom + ds1307 déssiné dans les grandes lignes.



@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Apr 11, 2012, 09:09 pm


je suis en train de me faire une application java serveur de websocket qui permettra la communication websocket<->arduino via shield ethernet

Pour ce que j'ai compris, ton principe de websocket permet d'utiliser des fonctions (ou modules) pour échanger des informations entre l'arduino et le serveur web, c'est ce dont je vais avoir besoin.  


En fait ça permettra surtout une communication full-duplex, dans le cas de serveur de contenu web (pages html, ...) la communication ne peux être initié que d'un seul côté, celui qui fais la requête (navigateur [requête]) ->arduino [réponse]-> navigateur).
Dans le cas du websocket chacun pourras initié la conversation (navigateur<->arduino).  
Entre () contrairement à la solution ajax et socket php, ici le code html pourra ce trouver sur un hébergeur distant comme la beaucoup n'accepte pas les sockets.

Mais j'aurai besoin d'aide à ce moment là.


Pas de problème, on t'aideras du mieux possible.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Apr 11, 2012, 09:11 pm

je viens de finir la sérigraphie de mon premier proto double coeur à 20 Mhz.

Pourquoi un double coeur ? As-tu une application particulière en projet ?
Quels CI utilises-tu ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Apr 11, 2012, 09:28 pm
Yep!

Quote from: Brisebee
Pourquoi un double coeur ? As-tu une application particulière en projet ?
Quels CI utilises-tu ?


Je vois que tu as raté un épisode...
EDIT1: Pourtant, tu étais là page 18  :smiley-yell:

Petit rappel : Je me suis inspiré des automates modernes qui possèdent une tache rapide et une tache normale. Ainsi, le premier uC (Atmega644), dans mon idée, s'occupera de la partie IHM (interface Homme/Machine : ethernet+Glcd) et le second de la communication avec les modules rs485 et sondes.
J'escompte faire dialoguer les 2 uC en I2c, avec une option multimaitre pour plus tard.

Outre l'expansion du nombre d'entrée/sortie et le partage des tâches, j'envisage dans les communications d'établir un système de priorisation des ordres.

Remarquons aussi que le débugage des programmes est facilité d'une certaine manière.

@+

Zoroastre.

PS : J'avouerais que je lorgne un peu vers la robotique en ce moment. Ce n'est pas encore ma priorité actuellement.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Apr 11, 2012, 10:00 pm

Je vois que tu as raté un épisode...
EDIT1: Pourtant, tu étais là page 18  :smiley-yell:


Effectivement, j'étais là, mais ma mémoire a quelquefois besoin d'être raffraichie.

Et maintenant je comprends mieux ce dont tu parlais à ce moment là.

En fait, il y a différentes problématiques qui n'ont pas du tout besoin des mêmes temps de réponse.

Pour l'instant de la manière dont je conçois mon système de domotique les temps de réponse peuvent être lents, qu'une électrovanne, ou un chauffage se mette en ou hors circuit avec une seconde de retard n'a que très peu d'importance.

Probablement que lorsque je travaillerai sur l'interface web, les choses seront différentes, car s'il faut attendre trop longtemps pour que l'ensemble des données soient collectées puis affichées, ce sera une autre histoire !
Mais bon je n'y ai pas encore vraiment réfléchi, chaque chose en son temps.

Et évidemment pour la robotique c'est encore une toute autre chose !

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Apr 11, 2012, 10:32 pm
Yep!

Quote from: Brisebee
Probablement que lorsque je travaillerai sur l'interface web, les choses seront différentes


Je suis effectivement face à cette problématique. Mon système actuel est plutôt réactif et je n'ai pas trop à m'en plaindre. Le seul hic se situe au niveau de mon afficheur tactile, outre une latence toute naturelle due à la dalle résistive, dans mon projet initial, j'avais envisagé de positionner à deux endroits différents 2 afficheurs.
La connectique fût déjà mon premier problème et je me suis vite rendu compte également que j'allais démultiplier d'autant le nombre de cycle réquisitionné par l'arduino.

Pour l'instant, je palie au problème en désactivant soit la connection internet soit la dalle tactile en fonction d'où provient les ordres. Solution simple et efficace, mais qui limite outrageusement l'utilisation globale sans pour autant la pénaliser certes.
L'autre solution est de déporter tous les modules dans une résolution indépendante et communicative. Cependant, le protocole de com a plutôt interêt d'être costaud et de subordonner tout autre module pouvant ralentir le système global, la déléguation, le rebond, la redondance sont la clé.
La dernière solution est de disposer d'un pc serveur centralisant toutes les informations et pilotant les modules.

Mon experience a débuté sur des choses simples, celle qui sont réactives et demandent peu de travail à l'arduino. Mais plus le système évolue, plus les ressources sont sollicitées et selon les organes embarqués, la consommation devient rapidement exponentielle.

Aujourd'hui, je choisis de conserver une approche centralisée des choses et de disposer de plusieurs connectiques rs485, afficheurs, rs232, i2c, 1wire, sur une seule carte + shield. L'idée de modules déportés a fait son chemin et je l'ai aujourd'hui consideré, cependant, j'aimerais que mes modules déportés soient le plus discrets possible.

Il y a plusieurs avantages d'avoir deux cerveaux à sa disposition. Le nombre de sortie est démultiplié, les programmes sont précis et dédiés à chaque puce, les temps de cycle sont mieux maitrisés, le fonctionnement minimal est garantie si l'un des uC lache...

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Apr 12, 2012, 09:54 am

Aujourd'hui, je choisis de conserver une approche centralisée des choses


C'est aussi mon idée.

Je trouve, que globalement ta réflexion est très intéressante, mais, en fait, il faut considérer les moyens mis en œuvre par rapport à l'objectif (ou les objectifs) recherché(s).
Et les solutions retenues pour certaines situations ne sont pas forcément les meilleures pour d'autres.
C'est pour cela qu'il est important de fixer le champ des contraintes, et de rédiger un cahier des charges le plus précis possible pour chaque projet (c'est vari qu'on ne sait pas toujours jusqu'où on va aller lorsqu'on se lance dans un projet).
Ce qui ne devrait pas empêcher de mettre en œuvre des systèmes modulaires, tu as raison de dire que c'set alors les protocoles de communications qui sont à peaufiner.
Il me semble que c'est ce qu'Osaka cherche à faire (ou a fait).
@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: tochinet on Apr 12, 2012, 02:09 pm
Salut à tous,

Depuis les derniers posts, j'avais bien progressé dans mon "espionnage" de régulateur (sondes NI1000), et puis ... BOUM : cours-jus sur le 230V-3V3, donc MEGA grillé, shield (et p-ê LCD) grillé, et ... régulation de tout mon capharnaum grillé. S**T. :-(((((   Plus de solaire, plus de chauffage.  Si quelqu'un est intéressé par un sketch d'oscilloscope 13 voies avec LCD 2"4 touch, je peux le poster...

Conclusion : on reprend tout à zéro. Plus besoin de penser à conserver le SAUTER, mais plutôt .. de ne pas mélanger les fils.

Première étape, installation d'un Arduino Nano sur breadboard pour remettre en route ... les trois sondes principales : T° intérieure, extérieure, capteurs. Pas très convaincant.
La feuille de calculs et le sketch est en annexe : avec le Nano en 5V et les NI1000 alimentés par D13 via une 4k7 chacun (sinon ils chauffent), mais une connexion 3V3-Aref, je pensais obtenir une résolution de 1 step/°C et un offset de 272, pas très précis mais bon ... Loupé. Mon multimètre montre bien les entrée faire 0-5V à vide et 0-1V avec la NI1000, mais les données sur l'EEPROM soit foireuses.

Ce soir/demain si tout va bien, deuxième essai avec le Nano. Quand çà marchera, je remplace par un DINo acheté le mois passé, et le Pro mini comme extension pour les sondes et les relais, peut-être avec du Firmata entre les deux. Je vous tiendrai au courant.

Pour recentrer sur le thread, l'opposition centralisé/décentralisé est aussi au coeur de mes questions. De toute façon, aucun AVR 8 bits n'a assez d'I/Os pour mon système, sauf le MEGA (16 analog ins), mais il n'était pas aisé à mettre en boîte non plus. Si la communication DINo/Pro mini se passe bien ou mal, on verra.

A+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Apr 13, 2012, 12:49 am

C'est pour cela qu'il est important de fixer le champ des contraintes, et de rédiger un cahier des charges le plus précis possible pour chaque projet (c'est vari qu'on ne sait pas toujours jusqu'où on va aller lorsqu'on se lance dans un projet).


Je vise toujours aux plus loin (cahier des charges), pour cela la seule réponse que j'ai trouvé c'est dépendance et modularité.


Ce qui ne devrait pas empêcher de mettre en œuvre des systèmes modulaires, tu as raison de dire que c'set alors les protocoles de communications qui sont à peaufiner.
Il me semble que c'est ce qu'Osaka cherche à faire (ou a fait).


C'est exact la modularité étant la réponse à certains besoins et problèmes l'impératif devient la fiabilité de communication entre ses modules.

Bon en voyant les différents montages de tout le monde je me dis qu'il serait temps d'acheter un petit fer à souder, je suis juste un peux bloquer niveau finance (Va me falloir un sponsor).  :smiley-mr-green:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Apr 25, 2012, 07:34 pm
Bonjour à tous,

Ca y est, j'ai fini le câblage de mon unité d'interfaçage arrosage.
C'était un peu plus compliqué que je ne le pensais à priori pour tout faire rentrer dans les boîtiers.
Ci-joints quelques photos.
J'ai maintenant une chaîne complète : unité de gestion (Arduino) + unité d'interfaçage (que je viens de finir) + unité de commande (que j'avais déjà).
Je vais donc pouvoir commencer à programmer pour faire fonctionner tout cela.
Je vous tiens au courant de mes essais et je reviendrai très probablement bientôt vers vous, pour avoir votre avis ou pour vous demander de l'aide.

Bien à vous
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Apr 25, 2012, 08:52 pm

C'était un peu plus compliqué que je ne le pensais à priori pour tout faire rentrer dans les boîtiers.



:smiley-mr-green:

Je pensais pas qu'il fallait jouer en étage lol.


Je vais donc pouvoir commencer à programmer pour faire fonctionner tout cela.
Je vous tiens au courant de mes essais et je reviendrai très probablement bientôt vers vous, pour avoir votre avis ou pour vous demander de l'aide.


Pas de problème on t'attend de pied ferme.  ;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Apr 25, 2012, 09:32 pm

Je pensais pas qu'il fallait jouer en étage lol.


Eh oui, quand il n'y a pas assez de place disponible au sol, on construit des tours !

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 25, 2012, 12:04 pm
Bonjour à tous,

Ça y est, j'ai avancé, mon système fonctionne à minima :
- Je commande mon unité d'interfaçage (10 zones) sur des plages horaires, cela fonctionne sans problèmes depuis plus d'une semaine.
- J'affiche la température (capteur DS18B20) sur un afficheur LCD.
Je publierai quelques photos prochainement.

Je vais maintenant attaquer la partie la plus délicate pour moi : l'interface web !

J'ai cherché un peu partout, j'ai trouvé beaucoup de choses, j'ai même fait quelques essais qui fonctionnent.
J'aurai besoin de vos conseils avant de me lancer :

Voici ce que je cherche à faire dans un premier temps :
- saisir sur le web des plages horaires : heure de début (hh:mm) et heure de fin (hh:mm) => j'en aurai au maximum 30 à saisir (3 par zones) et les transférer à mon système qui les stockera en mémoire.
- afficher sur le web l'état des 10 zones (cela correspond chaque fois à une entrée de l'unité d'interfaçage).
- afficher sur le web la valeur de la température.

J'ai plusieurs questions :
- quel protocole utiliser pour les transferts de données UDP, TCP, ... ?
- existe-t-il des librairies pour faciliter l'écrire la programmation pour l'arduino ?
- j'ai trouvé pas mal d'exemples mais rarement des exemples complets => .pde (je ne suis pas encore passé à IDE 1.0) et coté web (php) auriez-vous un exemple simple de mise en oeuvre ?

Je ne demande surtout pas que l'on fasse à ma place, je veux comprendre ce que je fais, mais j'ai besoin d'aide pour faire les bons choix et pour démarrer.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on May 25, 2012, 09:29 pm
Yop Yop bribti  :smiley-mr-green:,


Voici ce que je cherche à faire dans un premier temps :
- saisir sur le web des plages horaires : heure de début (hh:mm) et heure de fin (hh:mm) => j'en aurai au maximum 30 à saisir (3 par zones) et les transférer à mon système qui les stockera en mémoire.


Le plus simple à mon avis serait l'utilisation de formulaire.
http://www.siteduzero.com/tutoriel-3-13596-les-formulaires.html
En faisant abstraction du php transposer en c pour ton arduino.
http://www.siteduzero.com/tutoriel-3-14543-transmettre-des-donnees-avec-les-formulaires.html


- afficher sur le web l'état des 10 zones (cela correspond chaque fois à une entrée de l'unité d'interfaçage).
- afficher sur le web la valeur de la température.


Pour ceci c'est le plus simple, tout dépend si tu as besoin de rafraichissement fréquent des valeurs, temps réel ou autre ?


J'ai plusieurs questions :
- quel protocole utiliser pour les transferts de données UDP, TCP, ... ?
- existe-t-il des librairies pour faciliter l'écrire la programmation pour l'arduino ?
- j'ai trouvé pas mal d'exemples mais rarement des exemples complets => .pde (je ne suis pas encore passé à IDE 1.0) et coté web (php) auriez-vous un exemple simple de mise en oeuvre ?


Tu peux rester en tcp pour ça fiabilité, udp est surtout utile si tu as besoin de grande performance (tcp est très performant quand même) et si la perte de données n'a pas de grande conséquence comme pour les jeux, la voIP, ...
Librairie il en existe je pense mais jamais utilisé, maintenant est-ce utile pour ton projet tout dépand de tes besoins mais c'est pas la meilleur façon pour apprendre ?

Maintenant tout dépend également si tu compte hébergé le code en local sur ton arduino (limite en mémoire), en local sur un petit serveur web genre nas (machine supplémentaire) où à l'extérieure sur du mutualisé ou autre (où tout n'est pas permis) ?
Tout dépend également de la taille de ton code (contenu, dynamisme, design, etc, ...), rafraichissement fréquent ,socket?, websocket?,  ..., etc, etc, ...

Des solutions il en existe plusieurs, il faut juste trouver celle qui te conviendra le mieux.  ;)

(pour l'instant j'ai ma petite appli serveur de socket et websocket que je me suis fait en java qui me permet le full duplex avec l'arduino, peut être que le jour ou la due sort je le porterais sur arduino parce que les websocket avec le handshake, masquage, ... )
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 25, 2012, 10:02 pm
Merci Osaka pour tes réponses,

Alors


- afficher sur le web l'état des 10 zones (cela correspond chaque fois à une entrée de l'unité d'interfaçage).
- afficher sur le web la valeur de la température.


Pour ceci c'est le plus simple, tout dépend si tu as besoin de rafraichissement fréquent des valeurs, temps réel ou autre ?


En fait il faut juste que lorsque je consulte le site j'obtienne l'état des sorties et la température au moment de la consultation.



Maintenant tout dépend également si tu compte hébergé le code en local sur ton arduino (limite en mémoire), en local sur un petit serveur web genre nas (machine supplémentaire) où à l'extérieure sur du mutualisé ou autre (où tout n'est pas permis) ?
Tout dépend également de la taille de ton code (contenu, dynamisme, design, etc, ...), rafraichissement fréquent ,socket?, websocket?,  ..., etc, etc, ...


Je pense mettre en oeuvre un serveur web avec un vieux PC, vu qu'apparemment mon NAS (Iomega Home Media Network Hard Drive 1To) ne permet pas de faire un serveur web comme je le souhaite, car il lance un diaporama lorsqu'on se connecte à son adresse IP.
Enfin je n'ai pas réussi, mais comme je maîtrise moyennement le zinzin, il est fort possible que quelque chose m'ait échappé.

Pour le reste je ne sais pas encore trop.
Socket, websockets => je ne sais pas ce que c'est !
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on May 25, 2012, 11:23 pm

En fait il faut juste que lorsque je consulte le site j'obtienne l'état des sorties et la température au moment de la consultation.


Si je comprend bien en fait tu n'as pas d'énorme besoin, donc stocker le site directement sur l'arduino peut être plus simple et éviter ainsi un intermédiaire (nas) ?

Chico avait obtenu un résultat assé sympa sur son enc28j60 (le plus gros de son problème).

http://arduino.cc/forum/index.php/topic,66139.405.html





On lui avais fais un site multi pages assé simple mais suffisant et sympa, c'était mes débuts sur arduino et le forum  :smiley-mr-green:.


Je pense mettre en oeuvre un serveur web avec un vieux PC, vu qu'apparemment mon NAS (Iomega Home Media Network Hard Drive 1To) ne permet pas de faire un serveur web comme je le souhaite, car il lance un diaporama lorsqu'on se connecte à son adresse IP.
Enfin je n'ai pas réussi, mais comme je maîtrise moyennement le zinzin, il est fort possible que quelque chose m'ait échappé.


C'est bien celui là ?
https://iomega-eu-en.custhelp.com/app/answers/detail/a_id/26387#home_media
En effet en regardant le mode d'emplois qui est assé vague et flou, difficile de s'y retrouver ...  :smiley-sweat:
Juste trouvé ça page 69:
Quote

Paramètres de la page d'accueil
La page Paramètres de la page d'accueil vous permet de personnaliser l'apparence de la page d'accueil sur votre Home Media Network Hard Drive. Vous pouvez
attribuer un nom à la page d'accueil et choisir d'y afficher un diaporama et des partages.
1. Saisissez un titre pour la page d'accueil. Ce titre s'affiche dans la bannière supérieure de la page d'accueil lorsque des utilisateurs accèdent à l'Home
Media Network Hard Drive.
2. Sélectionnez Afficher les partages pour afficher les partages Lorsque vous choisissez d'afficher les partages, l'utilisateur voit tous les partages
présents sur le Home Media Network Hard Drive, mais il ne peut y accéder que s'il détient les autorisations d'accès requises.
3. Cochez la case Afficher les diaporamas pour afficher les diaporamas contenus dans les dossiers du Home Media Network Hard Drive. Cliquez sur Gérer
des diaporamas pour configurer les diaporamas que vous souhaitez afficher. Le diaporama peut se situer dans n'importe quel dossier associé au Home
Media Network Hard Drive, y compris un lecteur USB ou un emplacement DFS.
4. Cliquez sur Appliquer pour enregistrer vos modifications.
Suppression d'un diaporama
Pour supprimer un diaporama à partir de la liste des diaporamas disponibles, cliquez sur . Après avoir supprimé un diaporama, vous pouvez en configurer
un autre.



Pour le reste je ne sais pas encore trop.
Socket, websockets => je ne sais pas ce que c'est !


Les socket tu les utilises tous les jours rien qu'en surfant.  :smiley-surprise: :smiley-surprise:
Pour faire simple ça permet la communication inter processus (applications), c'est une sorte de canal de communication entre programme on va dire.
C'est grâce aux socket qu'une application peux communiquer avec une autre à travers les réseaux par exemple (navigateur <-> appli serveur).
http://fr.wikipedia.org/wiki/Socket
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 27, 2012, 09:43 am

Si je comprend bien en fait tu n'as pas d'énorme besoin, donc stocker le site directement sur l'arduino peut être plus simple et éviter ainsi un intermédiaire (nas) ?


J'ai prévu de faire les choses en deux temps :
- dans un premier temps un fonctionnement minimal très simple, celui décrit dans le post ci-dessus, pour apprendre et valider des solutions.
- dans un second temps le fonctionnement complet, que je n'ai pas encore complètement défini, qui sera bien plus complexe.

Je vais décrire ce fonctionnement complet, car le choix d'une solution, probablement même pour le premier temps, doit tenir compte de ce que je veux faire au final.

Je vais m'y mettre dès que j'ai un moment, et je le soumettrai à la sagacité des participants à ce Forum (surtout Osaka, qui semble être le seul à me suivre encore) .
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on May 27, 2012, 09:49 am
Yep!

Quote from: Brisebee
surtout Osaka, qui semble être le seul à me suivre encore)


Ouuuuuuhhh le faux teasing que voilà !!!!

Je ne pourrais pas trop t'aider dans cette affaire de site web, perso, j'ai tout d'abord préferé entreprendre la com pc/arduino avec un langage que je maitrise pas trop mal : python.

Les interfaces web sont trés prisées mais ne sont pas l'unique solution.

Bon courage.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 27, 2012, 11:25 am

Yep!

Quote from: Brisebee
surtout Osaka, qui semble être le seul à me suivre encore)


Ouuuuuuhhh le faux teasing que voilà !!!!



Je reconnais, c'était une petite provocation !

Je vais continuer à avancer, pas par pas, et je ferai à chaque fois un écho sur ce forum, en donnant un maximum d'infos, car je n'ai pas trouvé (peut-être n'ai je pas bien cherché), un tuto complet => qui explique aussi les avantages et les inconvénients des différentes solutions, des deux cotés (arduino et web) et accessible à un quasi débutant dans ce domaine.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on May 27, 2012, 02:43 pm

je n'ai pas trouvé (peut-être n'ai je pas bien cherché), un tuto complet => qui explique aussi les avantages et les inconvénients des différentes solutions, des deux cotés (arduino et web) et accessible à un quasi débutant dans ce domaine.


Pour le choix je peux peut être un peut t'orienter.

Choix de l'hébergement :

1) local arduino
   avantages :
     - Pas d'intermédiaire, accès direct arduino

   inconvénients :
     - limité par les caractéristiques mémoire de l'arduino.
     - sécurisation du code compliquée (voir poste chico).

2) local hébergement Nas ou autres
   avantages :
     - peux de limite concernant la tailles du code
     - pas de restriction concernant le choix du langage dynamique (php, java, python, c, ...) et mode de communication (socket, requête http, ...)
   inconvénients :
     - intermédiaire en plus à gérer (consommation, configuration, appli serveur, sécurisations, ...)
   
3) extérieure hébergement mutualisé ou autres
   avantages :
     - peux de limite concernant la taille du code
     - pas besoin de gérer sois même les problème matériels, paramètres réseau, appli serveur, sécurisation, etc, ...
   inconvénients :
     - intermédiaire en plus par rapport à la solution arduino
     - restrictions niveau langage dynamique (php utilisé principalement) et mode de communication (socket bloqué, etc, ...)
      - si l'hébergeur est out momentanément, plus d'accès faudra patienter


Maintenant point de vue solutions web et échange de données avec l'arduino :

1) html simple avec formulaire
   page html -> requête avec transmission de valeurs du formulaire -> traitement en réception des valeurs  -> construction du nouveau code html -> réponse html.

 avantages :
   - communication et traitement direct
   - simple

 inconvénients :
   - limite mémoire arduino ...
   - obligation de régénérer la page complète.

2) html et ajax (javascript+socket php)
   page html+javascript -> requête http avec valeurs -> réception et traitement page php -> transmission de valeurs via socket php -> réception socket arduino -> traitement des valeurs reçues -> retour socket arduino de valeurs (états ou autre) éventuels -> réception et traitement socket php -> modification de portion du code html avec les valeur retournées via javascript.

 avantages :
   - code étendu et dynamique
   - pas besoin de régénérer la page complète, juste les valeurs de retour éventuels.

 inconvénients :
   - appli serveur intermédiaire, hébergement du code à l'extérieure (local ou externe au réseau).
   - complexe, plusieurs langage, ...
   - traitements intermédiaire.

3) html et WebSocket (javascript)

Entre () les websocket on va dire que c'est un socket implémenté dans ton navigateur (client) et non pas sur le serveur (via php) comme dans la solution précédente, il communiquera directement avec ton arduino (enfin il faut toujours un serveur intermédiaire pour l'instant à cause d'un handshake et masquage des données, opération trop lourde pour l'arduino).

- page web+javascript -> valeurs transmises via socket directement depuis le navigateur (client) -> serveur de websocket (java, php, ...) traitement spécifique websocket (unmasking) -> réception socket arduino et traitement -> retour de valeurs éventuels -> serveur de websocket (masking) -> réception socket du ou des clients !!! (navigateur) -> modification de portion du code html avec les valeur retournées via javascript.

++ Maintenant sans aucune demande ou intervention du client (navigateur).
changement d'états, capteurs ou autres arduino -> serveur de websocket (masking) -> réception socket du ou des clients !!! (navigateur) -> modification de portion du code html avec les valeur retournées via javascript.

 avantages :
   - code étendu et dynamique.
   - pas besoin de régénérer la page complète, juste les valeurs de retour éventuels.
   - l'arduino peux initié la communication sans aucune interventions de la part du client (navigateur) et donc modifier l'interface web.
   - chaque clients sera informé en quasi temps réel d'un changement d'état provoqué par un autre client ou l'arduino même

 inconvénients :
   - appli serveur intermédiaire+ hébergement du code à l'extérieure (local ou externe au réseau).
   - standard pas encore finalisé (mais ça avance bien).
   - handshake (uniquement à la demande de connexion au serveur) et masking à gérer (mask obligatoire pour l'instant, optionnel dans le futur normalement).

Bon ici mon choix va aux websocket, maintenant on a toujours besoin d'une appli serveur intermédiaire (que j'ai fais en java momentanément) mais que je compte bien intégrer directement dans le futur via l'arduino DUE plus performante.

Au final ce qui complexifie les choses pour toi (pour tous) c'est qu'il faille hébergé le code en dehors de l'arduino, donc trouvé un autre moyen de faire la liaison entre ton arduino et ton interface (code html).
Maintenant grâce aux socket, requêtes http, ajax, ... on y arrive mais c'est au prix du mélange de différente techno et langages ...  :~
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: nadirovick on May 27, 2012, 05:02 pm
Bonjour,
Excellent topic, néanmoins je cherche les cahiers de charges associés « je suis exigent je sais  :smiley-mr-green:»  pour m'inspirer car je compte aussi faire un projet domotique à base d'un arduino mega et reconnaissance vocale pour le reste pratiquement le même principe  
N.B: Je cherche le cahier des charges pour me mettre sur rail et pouvoir me synchroniser avec vous  XD

Une question assez importante pour moi, peut-on gérer un téléviseur, démo, climatiseur » tous équipements à base de télécommande infrarouge  à base d'arduino ? une idée peut-être à ajouter sur le cahier des charges  Si C'est oui ? Je suis cherche simplement des orientations
Merci les amis  ;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on May 27, 2012, 05:37 pm
Tu trouveras le cahier des charges de Bribri ici http://arduino.cc/forum/index.php/topic,80422.msg713891.html#msg713891
On a pas tous le même, moi je part plus sur une solution modulaire de plusieurs arduino sur bus rs-485, mais ce post est plus une entraide entre nous pour les parties communes, on profite ainsi également des différentes connaissances (electro, prog, ...) de chacun.
Pour l'ir il existe pas mal de solutions

http://blog.le-guevel.com/?p=283
http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
http://www.pjrc.com/teensy/td_libs_IRremote.html
.
.
.

Donc c'est tout à fait possible.

;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 27, 2012, 05:38 pm
Merci Osaka pour toutes ces infos, je vais essayer d'ingérer et digérer tout cela, pour voir ce que je peux en faire.


N.B: Je cherche le cahier des charges pour me mettre sur rail et pouvoir me synchroniser avec vous  XD


J'avais publié sur ce topic une première version du cahier des charges.
J'en profite pour publier la version actuelle, je vais bientôt rajouter le descriftif du fonctionnement de l'unité de gestion (programme arduino) et des communications et échanges de données avec le serveur web (quelle que soit la solution technique retenue).


Une question assez importante pour moi, peut-on gérer un téléviseur, démo, climatiseur » tous équipements à base de télécommande infrarouge  à base d'arduino ? une idée peut-être à ajouter sur le cahier des charges  Si C'est oui ? Je suis cherche simplement des orientations


Je n'ai pas réfléchi à cela, mais il y aura surement quelqu'un qui a fait un projet en ce sens.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: nadirovick on May 27, 2012, 06:10 pm
merci les amis  :*
je serais de retour prochainement sur ce topic
je commence et je vous tiens au courant
@+  ;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 29, 2012, 01:59 pm
J'ai repris tranquillement les différentes infos données par Osaka et j'ai revu le post de Chicotore.

C'est vrai que le plus simple serai de pouvoir se passer de serveur externe, peut-être en stockant certaines données, et peut-être aussi les images, sur carte SD. Je n'ai pas vu d'exemple qui utilise la carte SD de l'Ethernet shield en même temps que l'Ethernet fonctionne en serveur web. Est-ce possible ?

Sinon il faudra que je m'oriente vers la solution d'un mini serveur web perso.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on May 29, 2012, 03:57 pm

C'est vrai que le plus simple serai de pouvoir se passer de serveur externe, peut-être en stockant certaines données, et peut-être aussi les images, sur carte SD. Je n'ai pas vu d'exemple qui utilise la carte SD de l'Ethernet shield en même temps que l'Ethernet fonctionne en serveur web. Est-ce possible ?


Normalement c'est possible, je n'ai jamais essayé mais il y a eu un poste récent qui en parle justement.
http://arduino.cc/forum/index.php/topic,104855.0.html

Maintenant tout ça me semble assé lourd et peux adapté à nos peti µc s'il faut rajouter à celui ci toute la gestion domotique :~ .


Sinon il faudra que je m'oriente vers la solution d'un mini serveur web perso.


Comme dit précédemment pour moi l'arduino n'est bon que pour faire du minimaliste, la solution chico même si "légère" est déjà limite, donc les solutions externe à celui-ci sont inévitable si on veux aller plus loin, ou alors prendre plus performant tel que la futur DUE par exemple si on veux éviter les intermédiaires.
En solution externe il y a de petite plateforme qui arrivent tels que http://www.raspberrypi.org/ mais pas encore du 100% dispo.

Donc au final tout dépend des besoins, mais le choix est difficile j'en suis toujours à étudié les possibilités ...  :smiley-sleep:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on May 29, 2012, 05:24 pm
Yep!

Dans mon optique, l'arduino n'est pas fait pour heberger un serveur web tel quel. Il faut effectivement s'orienter vers des solutions d'externalisation.
Pour ma part, j'ai plutôt opté pour une solution, certes fermée, mais qui correspond plus à mes besoins : développement d'une application complète et si possible portable.

Je ne me suis pas encore arrêté sur le langage de programmation et envisage de plus en plus de remplacer python par c++ ou java.

C'est aussi une des raisons qui me font pencher vers le double coeur tant la comm devient rapidement consommatrice de ressources et de temps.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 29, 2012, 07:23 pm
Bon donc je vais essayer de monter un serveur web avec un vieux noteboock sous XP avec Apache.

Je rédigé un peu rapidement, (il y a sûrement des erreurs et des oublis), le cahier des charges de l'unité de gestion avec notamment le transfert des données. J'ai considéré les deux hypothèses : avec serveur web externe ou interne, mais c'est vrai que la seconde hypothèse n'est pas évidente !
Je vous le soumets pour critiques et pour envisager des solutions.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on May 29, 2012, 07:42 pm
Yep!

Première remarque, tu peux déjà dissocier la gestion de l'horloge du serveur web. Un serveur ntp est justement fait pour çà.(vf librairie)

Tu émets l'hypothèse que l'arduino doit se renseigner régulièrement auprés du serveur web pour receuillir de nouvelles données. Dans l'idéal, un formulaire avec un bouton de validation informe l'unité de gestion que des nouvelles données sont disponibles. C'est à mon sens plus réactif ainsi.

Egalement, tu peux trés bien intégrer dans ton serveur web, un évenementiel indiquant au système de gestion qu'un utilisateur est entrer en mode paramétrage et renvoyer un echo de connectivité établi. De même pour la lecture des sondes...

Ainsi dans l'essentiel, l'arduino se contente la plupart du temps d'envoyer une trame contenant les informations in situ du système domotique (stats, logs, etc), c'est ici le principal interêt d'un serveur web.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on May 29, 2012, 08:07 pm
Yep!

Pour illustrer, dans mon logiciel, j'ai intégré 2 boites (login + mdp) --> envoi info à l'arduino = il y a un client + mise à jour en direct des sondes.

Lorsque je modifie un paramètre, le bouton validation remplie le buffer de sortie en attente d'expedition vers l'arduino (à la milliseconde prés)...



La trame grosso modo :

Code: [Select]
self.dicoParam = {'mode':'#', 'abs':'#', 'vac':'#', 't_jour':'#', 't_nuit':'#', 't_abs':'#', 't_vac':'#', 'cal':'#', 'day_at':'#', 'night_at':'#'}

(Le symbole '#' est ignoré par l'arduino)

Ainsi, une grosse portion du code est appelé uniquement à la demande.
En parallèle, j'envoie quelques logs à intervalles réguliers.

Pour info, dans ma version, un pc se charge de faire le proxy entre l'arduino et la liaison ethernet. Mais le principe est là pour le fond (ma prochaine étape est de communiquer en liaison direct sans le pc, donc j'y arrive aussi ;) )

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 29, 2012, 08:12 pm
Merci Zoroastre, je vais voir tout cela, pour le moment je ne sais pas comment faire ce que tu proposes, mais je vais continuer à avancer pas après pas.

En prenant les problèmes les uns après les autres.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on May 29, 2012, 08:25 pm
Yep!

Je te rassure, j'ai aucune idée de comment faire ceci en php ou java. Nonobstant, qu'un interfaçe web peut trés bien intégrer ce que l'on appèle des scripts cgi écrit en python, ruby, c++ ou tout autre langage compatible.
Ces petits programmes agiront comme bon te semble et peuvent parfaitement travailler avec apache entre autre.

Je te recommanderais personnelement de travailler avec un langage que tu maitrises...aprés web ou pas web, c'est une question de gout.

Je reconnais tout de même que d'avoir des graphiques et un historique détaillé est un des avantages indéniable d'un hebergement externalisé.

Bon courage.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on May 29, 2012, 08:54 pm
Quelque schémas pour mieux visualiser les solutions.

Solution 1 : Hébergement du code html sur arduino.



Solution 2 : Hébergement du code html et javascript en externe sur du mutualisé, requête http à l'arduino via ajax.



Solution 3 : Hébergement du code html et javascript interne a son réseau, la communication avec l'arduino ce fait via requête http depuis le navigateur au serveur (ajax) et celui ci redirige les information via socket executé en php, java, ou autre vers l'arduino ...



Solution 4 : Hébergement du code html et javascript en interne ou en externe a son réseau, la communication avec l'arduino ce fait via websocket exécuté directement par le navigateur ce qui permet une liaison direct navigateur -> arduino.
Il est possible également de ce passé de bridge ethernet et de lié directement l'arduino au serveur via rs-232, la liaison et l'hébergement sera entièrement géré sur un serveur interne (1: fonctionnel chez moi)(2: adaptable également en solution 3).
(Quelque restrictions et pas fonctionnel pour la solution à droite actuellement du au handshake et masking)




Rappel : le code html et javascript sont interprété et exécute par le navigateur, le code php, java, c/c++, ..., par le serveur.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on May 29, 2012, 09:11 pm
Yep!

Petite question au passage : On peut se créer un interface avec Pachube ou c'est plutôt fermé.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 29, 2012, 09:17 pm
Super Osaka.

C'est très bô !

En plus d'être clair.

A priori je pense m'orienter vers la solution 3.

Qu'en dis-tu ?

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on May 29, 2012, 09:36 pm

A priori je pense m'orienter vers la solution 3.

Qu'en dis-tu ?


C'est la solution que j'ai présenté il y a quelques pages.
http://arduino.cc/forum/index.php/topic,80422.msg732055.html#msg732055

C'est une très bonne solution pour avoir une communication presque full-duplex et presque temps réel (enfin possible mais en chipotant).
Par contre c'est plus ou moin du chipotage, faut dribler entre les différents langages et bidouillages.  :smiley-mr-green:
C'est pour ça que j'ai choisi la solution websocket, liaison direct possible et moin chipotage intermédiaire, mais bon pas encore à 100% au point.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 29, 2012, 10:15 pm

C'est la solution que j'ai présenté il y a quelques pages.


Je viens de jeter à nouveau un oeil, mais pour l'instant, je n'y comprends pas grand chose, il va falloir que je reprenne tous ces éléments au début, et commencer par faire des choses très simples pour comprendre.

Pour le moment je galère car j'essaye de passer un sketch simple qui lit un capteur OneWire DS18B20 et affiche la température sur un LCD, qui fonctionne très bien de l'IDE 023 à l'IDE 1.0, je n'arrive absolument pas à implanter la librairie OneWire, j'ai plein d'erreurs de compilation.

Je crois que je suis trop fatigué ce soir.
Je verrai demain soir.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on May 29, 2012, 10:51 pm

Petite question au passage : On peut se créer un interface avec Pachube ou c'est plutôt fermé.


Alors là je ne serais pas te dire, je connais de nom mais jamais trop bien compris son intérêt, partage de données (capteur, temp, ...), graphique ???  :~
Mais :
http://arduino.cc/en/Tutorial/CosmClientString?from=Tutorial.PachubeClientString


Je viens de jeter à nouveau un oeil, mais pour l'instant, je n'y comprends pas grand chose, il va falloir que je reprenne tous ces éléments au début, et commencer par faire des choses très simples pour comprendre.


Il va falloir le faire pas à pas, on commencera par utilisé les requêtes http (get, post), puis les sockets, etc.


Pour le moment je galère car j'essaye de passer un sketch simple qui lit un capteur OneWire DS18B20 et affiche la température sur un LCD, qui fonctionne très bien de l'IDE 023 à l'IDE 1.0, je n'arrive absolument pas à implanter la librairie OneWire, j'ai plein d'erreurs de compilation.


Il n'y a pas màj de la lib ou autres, quelqu'un a ou va surement rencontré les même problèmes ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 29, 2012, 11:10 pm
Ca y est, j'ai effectivement trouvé une librairie à jour, ça marche !

D'abord, Je vais mettre au propre mon programme (enlever toutes les scories) essayer de faire un truc lisible, pour que je puisse partir sur de bonnes bases.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 30, 2012, 11:32 am

Première remarque, tu peux déjà dissocier la gestion de l'horloge du serveur web. Un serveur ntp est justement fait pour çà.(vf librairie)


C'est d'accord, j'ai trouvé de l'info et des exemples => je mets cela de coté pour plus tard. => je vais modifier le cahier des charges en ce sens.


Egalement, tu peux trés bien intégrer dans ton serveur web, un évenementiel indiquant au système de gestion qu'un utilisateur est entrer en mode paramétrage et renvoyer un echo de connectivité établi. De même pour la lecture des sondes...


En fait pour éviter de stocker toutes les données (plages horaires + ...) => que j'estime à environ 2ko, dans l'arduino, j'ai imaginé n'en transférer que ceux nécessaires durant une périodes données par exemple 1 jour.
Mais en fait si je peux stocker ces données sur la carte SD, il n'y a plus de problème, je n'ai pas besoin d'avoir une connexion pour fonctionner.
J'aurai besoin d'une connexion pour connaître à distance les états du système et les grandeurs mesurées, mais du coup ce sera beaucoup plus simple => je vais là aussi modifier mon cahier des charges.

Encore merci pour votre aide.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: nadirovick on May 30, 2012, 01:34 pm
Bonjour,
je suis revenu  :P
Ci-joint mon cahier des charges concernant le projet Hexintelli pour avis et commentaires
Je cherche aussi conseils concernant :
Type de composants ou cartes manquantes ou de meilleure qualité/rentabilité
Orientation concernant le serveur Web « langage de programmation, Nom serveur Web, interface avec smartphone…etc. »
Merci d'avance  :D.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 30, 2012, 02:21 pm
Très sympa ton projet.
Cela me donne des idées pour prolonger le mien !

Tes questions sont très larges, quelles solutions as-tu déjà retenues et validées ?
Sur quelles parties cherche tu de l'aide ?
As-tu déjà travaillé sur la partie mécanique de ton robot ?

Ton cahier des charges est assez global, c'est comme cela qu'il faut commencer.
Mais ensuite il faudra rentrer plus dans le détail.

Pour ce qui me concerne, j'ai plus de compétences sur la partie électronique que sur la partie programmation.
Parmi les contributeurs à ce Forum il y a de grands spécialistes sur les différentes parties.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 30, 2012, 02:31 pm
J'ai corrigé ma partie du cahier des charges concernant de l'unité de gestion, suites aux remarques (merci Zoroastre).

Je vous le soumets à nouveau, puis je l'intègrerai dans le cahier des charges global.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: nadirovick on May 30, 2012, 02:34 pm
Merci
Pour ma part je du domaine informatique « option BDD  XD», je cherche de l'aide sur la partie électronique, surtout pour le volet IR « car je n'arrive pas à bien comprendre comment puis-je schématiser et avec quel composants je peux le faire» et la protection des composants « alimentation des relais et servo »
pour la partie mecanique j'ai pas encore commencé  :)
@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 30, 2012, 02:56 pm

je cherche de l'aide sur la partie électronique, surtout pour le volet IR « car je n'arrive pas à bien comprendre comment puis-je schématiser et avec quel composants je peux le faire


Il faudrait que tu en dises plus sur ce que tu veux faire exactement, comment cela doit fonctionner.

Pour ta partie IR qui semble relier un écran (TV ?) que veux tu afficher ?

Il y aura probablement une partie fixe (au moins certains actionneurs et peut-être capteurs + ...) pour commander les éléments domotiques, et d'autres mobiles embarqués sur le robot. Il faudrait déjà déterminer cela.
Après on peut voir comment il faut alimenter cela.

Si tout est mobile (mais cela ne me semble pas réaliste => poids + communications avec les différents éléments domotiques)=> l'alimentation se fera sur batterie => il faudra voir comment la dimensionner (poids, capacité, ...) et comment la recharger.
Sinon il y aura aussi une partie sur secteur.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: nadirovick on May 30, 2012, 03:10 pm
Pour la partie IR elle est très simple, je veux piloter ma télévision et le climatiseur via Arduino
Exemple pour la télévision :
Je peux l'allumer ou l'eteindre «  elle est alimentée et en mode veille » via arduino
Exemple pour le climatiseur :
Allumer/éteindre et Changer la température du climatiseur via Arduino « Toujours à partir du Mode veille »
Exemple pour le démodulateur starsat 4200D ou autre :
Changer les chaines de télévision via arduino et commandes vocales
Globalement l'arduino va jouer le rôle des télécommandes en plus à commande vocale
@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 30, 2012, 03:24 pm
OK, je comprends mieux.

Je n'ai pas grande expérience dans ce domaine, mais à une époque j'ai cherché de l'info sur ce sujet, j'avais pour projet de piloter un petit robot (self bricolated) en le commandant par une télécommande IR, mais finalement je ne l'ai jamais fait (mais j'y pense toujours !).

En fait, c'est la fonction inverse, mais cela revient à mettre en œuvre les mêmes technologies, pas forcément les mêmes composants, puisque tu auras besoins d'émettre et non de recevoir.

Je vais voir ce soir si je retrouve des choses.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on May 31, 2012, 08:48 am


Je n'ai pas retrouvé grand chose sur le sujet des télécommandes IR, car il s'agit de cela, il faut se substituer à la télécommande, il faut fabriquer une télécommande universelle.

Il y a quelques infos ici :
http://www.robot-mobile-irbot.com/8-telecommander-robot-irbot.htm (http://www.robot-mobile-irbot.com/8-telecommander-robot-irbot.htm)
http://www.roboticus.org/electronique/15-la-telecommande-infrarouge-theorie (http://www.roboticus.org/electronique/15-la-telecommande-infrarouge-theorie)

Mais peut-être en cherchant sur un moteur de recherche : "principe de fonctionnement d'une télécommande universelle IR".
Je sais que cela se faisait (remplacer la télécommande) avec un PAD et maintenant avec un smartphone => il doit bien être possible de trouver des information sur le fonctionnement des télécommandes IR.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: CocoVFR on Jun 03, 2012, 06:14 pm
Salut a tous.
Apres avoir lu d'une traite les 24 pages de ce topic, j'ai appris beaucoup de chose, et j'entrevoie certaine solutions pour mon projet.
Pour faire avancer le schmilblick, je me permet une petite réflexion:
Concernant la partie serveur Web:
Il existe de petite machine sur plateforme ATOM, qui ne coute pas très chère genre Zotac Zbox, et qui ne consomme pas grand chose. Ça c'est disponible de suite, et opérationnel sous Windows/Linux. Sur une plateforme ATOM D525, on peut faire tourner Windows 2003 Serveur, avec virtualbox qui fait tourner une Debian Squeeze. Le tout ne consomme que quelques dizaine de watts.
Pour moi, toute la partie Web dois se trouver en dehors de l'arduino. Les contraintes sont trop importantes. Pour palier celles-ci, il faudra trouver des astuces, déporter une partie du code sur le client, etc...
Il est, a mon sens, bien plus simple de réduire la partie web de l'arduino a appeler des page php sur un serveur local en passant les paramètres en arguments. Voir même, via une liaison série Arduino <-> Serveur Web.
C'est le serveur Web qui s'occupe ensuite de mettre les données en formes, de les stocker, etc...
De la même façon, l'arduino possède en dur, des paramètres de départ a froid, qu'il utilise jusqu'à ce qu'il puisse obtenir les donnée a jour du serveur (ou que l'utilisateur les modifie en direct).
Une fois obtenu les info, on les stocke dans l'EEPROM: en cas de reset (soft ou hard), le système repart comme il était avant le problème (je ne parle pas de l'état des actionneurs qui retrouverons un état "quelconque" selon leur mode de fonctionnement)
Pour déclencher la mise en mémoire des info nouvellement modifier, un simple appel d'une page sur l'arduino (qui ne renvoi rien, si ce n'est un http 200) qui déclenche la lecture d'un fichier texte sur le serveur (par ex: http://serveurweb/infoparametage.txt)
De la même façon, on peut même imaginer que c'est le serveur Web qui se signale "vivant" a l'arduino suite à un problème, et non à l'arduino de monopoliser des ressources pour faire des appels régulier au serveur.

Merci de ne pas taper sur le nez, je suis fragile  :smiley-mr-green: :smiley-mr-green: :smiley-mr-green:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Jun 03, 2012, 06:26 pm
Yep!

Quitte à faire tourner debian sur un serveur à moins de 5 watts de conso, autant s'orienter vers un plug pc. Le sheevaplug étant celui qui a le plus de notoriété et en plus ce sont des processeurs ARM (increvables) ;)

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: CocoVFR on Jun 03, 2012, 07:02 pm
Mouais.
C'est une solution, mais pas très "userfriendly": pas de port VGA, pas de HDD et 512Mo de RAM. A réserver aux plus "geek" des utilisateurs. Rien que l'installation de l'OS n'est pas super aisée.
De plus, c'est Linux only.
Mais c'est effectivement une solution.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Jun 03, 2012, 07:12 pm

Pour moi, toute la partie Web dois se trouver en dehors de l'arduino. Les contraintes sont trop importantes.


C'est la conclusion à laquelle je suis arrivé grâce aux conseils des contributeurs à ce topic.

Cette partie communication et échanges de données avec le Web est celle qui me pose le plus de problèmes, je suis donc très attentif et preneur de tous les conseils à ce sujet.

Pour ce qui concerne le serveur web en lui-même, je pense dans un tout premier temps, et pour ne pas multiplier les difficultés, utiliser un vieux PC (noteboock ou PC fixe, j'ai les deux en stock) sous windows XP avec un serveur apache et faire fonctionner le système en local, j'avais déjà fait un truc très simpliste dans ce genre (petit site html disponible sur mon réseau local => c'est le maximum dont je suis capable aujourd'hui).
Et ensuite je verrai :
- comment le rendre accessible au delà de mon réseau local
- mettre en place un serveur fiable, qui consomme peu ...

Est ce que j'écris des bêtises ?


De la même façon, l'arduino possède en dur, des paramètres de départ a froid, qu'il utilise jusqu'à ce qu'il puisse obtenir les donnée a jour du serveur (ou que l'utilisateur les modifie en direct).
Une fois obtenu les info, on les stocke dans l'EEPROM: en cas de reset (soft ou hard), le système repart comme il était avant le problème


Je m'oriente vers l'utilisation de la carte SD (sur l'éthernet shield) pour stocker les paramètres, ce qui permet à la fois d'avoir une capacité importante, et d'avoir des données non volatiles, je suis en train de faire des essais en ce sens, même si en ce moment je n'ai que peu de temps, je ne vais donc pas très vite.


Quitte à faire tourner debian sur un serveur à moins de 5 watts de conso, autant s'orienter vers un plug pc. Le sheevaplug étant celui qui a le plus de notoriété et en plus ce sont des processeurs ARM (increvables) ;)


Ca a l'air très sympa. Il faudra que je vois de plus près le moment venu.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Jun 03, 2012, 07:54 pm
Yep!

Quote
Mouais.
C'est une solution, mais pas très "userfriendly": pas de port VGA, pas de HDD et 512Mo de RAM. A réserver aux plus "geek" des utilisateurs. Rien que l'installation de l'OS n'est pas super aisée.
De plus, c'est Linux only.


Un peu comme les routeurs que nous avons à la maison, c'est du linux dedans en fait, parfeu, serveur web, serveur d'imprimantes, media avec beaucoup, beaucoup moins de vélocité et de ram. Pourtant, çà fait son job et plutôt pas mal.
L'enorme avantage de linux sur windows est justement que l'on peut se passer de tout l'aspect "userfriendly", l'interface graphique devenant complètement ostentatoire. De plus, c'est open, communautaire et free ;)
On peut largement faire tourner linux sur un vieux truc genre 400 Mhz et 128 Mo de ram...

Il n'y pas moins "userfriendly" que windaube, microsoft n'a jamais été notre ami  :smiley-mr-green:.

Quote
Mais c'est effectivement une solution.

Merci ;)

Une autre solution beaucoup plus ardue est d'utiliser certains routeurs comme serveur perso en y installant openwrt ou dd-wrt (encore linux  XD). Certains routeurs sont nativement pourvus d'une liaison série TTL 5volts (vf fonera = 30€).

Mais bon, quitte à choisir : vieux netbook ou sheevaplug.

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: CocoVFR on Jun 03, 2012, 11:52 pm
Pas de meprise. Je n'ai rien contre Linux. :smiley-mr-green:
J'ai cru lire en debut de topic, que le but était de pouvoir faire quelque chose d'a la fois simple et adaptable pour le plus grand nombre. Hors, Linux n'est pas la plateforme de prédilection du plus grand nombre :P.
Sachant que tout ce qui tourne sous Windows, trouve sont équivalent sous Linux, et que les utilisateur Linux sont bien souvent plus a même de mettre les mains dans le cambouis.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jun 04, 2012, 01:06 am

Il existe de petite machine sur plateforme ATOM, qui ne coute pas très chère genre Zotac Zbox, et qui ne consomme pas grand chose. Ça c'est disponible de suite, et opérationnel sous Windows/Linux. Sur une plateforme ATOM D525, on peut faire tourner Windows 2003 Serveur, avec virtualbox qui fait tourner une Debian Squeeze. Le tout ne consomme que quelques dizaine de watts.
.
.
.
pas de port VGA, pas de HDD et 512Mo de RAM. A réserver aux plus "geek" des utilisateurs. Rien que l'installation de l'OS n'est pas super aisée.
De plus, c'est Linux only.


En perso je pars plus sur du minima comme le propose zoro, point besoin de 512 de ram ou hdd qui seraient disproportionné pour l'hébergement d'un serveur cantonné à de petite tache pour 1 seul site et 2 visiteurs simultané et même en ajoutant ma petite appli serveur de websocket/rs232 qui demande 24Ko pour le stockage et une 10 ène de Mo en ram.  :smiley-sweat:
Maintenant ici c'est perso, mais la solution Zotac par exemple pourrait être intéressant pour celui qui désire faire du tout en un comme serveur web,de fichiers, multimédia (blue-ray ? ...  :smiley-roll-sweat:), etc.
Mais ses possibilités ne me plaisent guère ou ne m'intéresse pas comme tu l'auras sans doute remarqué depuis le début de ce topic, je n'aime pas tout mélanger, chaque chose à sa place et chacun son rôle  :smiley-mr-green:.  
Bon au final concernant la partie interface/web je suis pas encore arrêté à 100% sur une solution, j'attends de voire avec toute ses petites plateformes minimaliste qui sortent comme le raspberry à base d'arm,  etc, qui sont assé prometteurs en terme possibilités/perf/conso et qui me permettrait d'atteindre mes objectifs qui sont un minimum d'intermédiaires pour de grande possibilités.  



J'ai cru lire en debut de topic, que le but était de pouvoir faire quelque chose d'a la fois simple et adaptable pour le plus grand nombre.


En fait au départ du topic on étais partis sur un projet commun, mais au final on a plutôt dérivé sur une entraide pour un but commun avec des idées et solutions différentes ou identiques sur certaine parties, donc tous le monde est le bienvenue avec sa propre solution.   :smiley-surprise:


Hors, Linux n'est pas la plateforme de prédilection du plus grand nombre :P.
Sachant que tout ce qui tourne sous Windows, trouve sont équivalent sous Linux, et que les utilisateur Linux sont bien souvent plus a même de mettre les mains dans le cambouis.


Pour ce qui est des membres actif du forum c'est étonnant mais on trouve au temps d'utilisateurs de windows que de linux et qu'osx  8) (non skywood je ne parle pas de pron  :smiley-mr-green:).
Maintenant qui dit arduino ou µc dit obligatoirement main dans le cambouis de toute façon.

;)  
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Jun 08, 2012, 10:33 pm
Bonjour à tous,

Un petit point sur l'état d'avancement de mon projet : DOMOWEB 2012.

1) J'ai complété et amendé le cahier des charges qui deviendra le descriptif du système et de son fonctionnement, il va donc évoluer au fur et à mesure de l'avancement du projet (je joins à ce post la nouvelle version 1.0 du cahier des charges).

2) Le système fonctionne actuellement dans une configuration "minimale" : uniquement la partie arrosage, sans la connexion web.
C'est à dire :
- les paramètres (plages horaires) sont stockés sur la carte SD
- je capte la température à l'aide d'un capteur OneWire DS18B20.
- les sorties de l'unité d'interfaçage arrosage (module E/S en I2C) sont activées en fonction des plages horaires
il me reste à faire la partie stockage puis lecture des paramètres par défaut en EEPROM (je crois que c'est assez simple).

3) J'ai passé tout le sketch en .ino pour pouvoir travailler avec l'IDE 1.01, ça a été laborieux pour trouver les différentes bibliothèques, mais j'y suis arrivé (je joins le sketch).

J'aimerai maintenant commencer à faire des essais pour la partie web, mais je suis dans la posture de la poule qui a trouvé un couteau : je ne sais pas quoi en faire ! En fait je ne sais pas trop par où commencer.

Je joins également 2 photos du système actuel.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jun 08, 2012, 11:44 pm
Yop bribri,
J'adore suivre l'évolution de ta solution et photos en prime  :smiley-mr-green:, vivement que j'en sois aussi.
J'ai très rapidement parcouru ton code, juste une petite remarque concernant le type de variable.

Pour l'attribution des broches le type byte ou unsigned char suffit (1 octet) à la place de int (2 octet) pour des valeur n'excédant pas les 255 décimal, idem pour ton tableau de 120 pour la plage horaire de l'arrosage donc 120 octet de gaspillé  :~ .
Je regarderais attentivement la façon dont tu gère les plage horaire ça m'intéresse, faut que je réfléchisse également pour la gestion de scénarios, enfin j'ai déjà ma petite idée mais à étudier.
;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Jun 09, 2012, 06:37 am
Merci Osaka pour tes remarques.

Je vais corriger cela !

Et pour la partie web aurais-tu un conseil pour m'aider à  démarrer ?

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jun 09, 2012, 02:11 pm

Et pour la partie web aurais-tu un conseil pour m'aider à  démarrer ?


A mon avis peut être commencer par de simple requêtes POST, GET, voir comment interagir avec l'arduino et y aller tout en douceur même s'il ne s'agira pas de la solution définitive et voir les différentes solutions qui peuvent s'offrir à toi ?
Je vais regarder un peux ce que je pourrais te proposer comme "exercices" ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jun 11, 2012, 06:46 pm
Yop Yop,
J'ai fais quelque testes hier pour voir les différentes solutions possible.

1) Simple requête http GET/POST

Transmission de la requête et récupération de l'entête http par l'arduino ensuite l'arduino retourne une simple entête avec redirection pour forcer un retour vers la page d'origine.

- marche parfaitement en local ou mutualisé
- pas de valeurs de retour possible en réponse à la requête

2) Requête ajax POST/GET vers l'arduino

Transmission de la requête directement à l'arduino, l'arduino envoie une ou des valeurs en retour de la requête.

- transmission de la requête marche parfaitement en local ou mutualisé vers l'arduino
- retour de valeur(s) en réponse à la requête impossible, le navigateur bloque toute entrée pour cause de faille xss possible si le chemin de destination est différent de celui qui en fait la demande ...

3) Requête ajax POST/GET redirection PHP/socket

Transmission de la requête vers une page php chargé de redirigé la requête entière ou partiel vers l'arduino via socket, l'arduino répond au socket avec valeur(s) possible, la page php répond à la requête originel avec les éventuels valeurs transmises par l'arduino.

- transmission de la requête, marche parfaitement en local ou mutualisé vers la page php
- socket impossible sur du mutualisé ... donc la requête ne peux être redirigé vers l'arduino
- marche parfaitement en hébergement local

4) Requête ajax POST/GET vers page PHP/cURL/HttpRequest/... ?

Pas tester ...

- demande l'installation de lib (HttpRequest,cURL, ...) qui manipule les sockets de toute fessons donc aucun avantage avec la solution 3.


Hé bien au final il n'y a qu'une solution possible si on veux du bidirectionnel, via socket et en local exclusivement ... parce que c'est soit l'hébergeur qui ne veut pas soit le navigateur qui bloque tout retour ...
Il reste également les websocket mais toujours pas standardisé ...
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Jun 11, 2012, 07:10 pm
Yep!

Tu as oublié XAP (XPL)...

Bref description : http://laurentf.canalblog.com/tag/domotique%20arduino%20XAP%20protocol

+

http://www.xapautomation.org/index.php?title=xAP_Home_Automation_protocol

Un exemple : http://smhteam.info/blog/2011/06/17/arduino-controler-un-ruban-de-leds-rgb-avec-xpl-et-domogik-donc/

C'est pas toujours super documenté, cependant, le proto est plutôt à la portée de tous ;)

Gromain59 m'avait à une époque lancé sur le sujet...faudrait que je m'y rejette tantôt :smiley-mr-green:

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jun 11, 2012, 07:53 pm

Tu as oublié XAP (XPL)...


Oui mais là il s'agit d'un protocole (langage ici) comme l'est le html, xml, plcbus, modbus, knx, ... que l'on peut diffusé quelque soit le moyen de transport, série, ethernet, usb, etc.
On peux parfaitement diffusé une requête xpl via socket ou requête http comme dans mes testes.
Le problème ici c'est comment échangé ses informations sur le réseau (tcp/ip ou udp) via requête http ou socket ?
Entre () au final tout est socket, même les requête http ce font via socket, il ne s'agit que d'une couche (un protocole) supplémentaire à destination du serveur afin d'échanger les informations d'un autre protocole (xap par exemple)  :~
Sinon pour xpl et arduino je ne suis pas un grand fan, du parsing de chaines de caractères c'est extrêmement lourd en processus et mémoire pour nos pauvre petit µc.  :smiley-fat:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Jun 11, 2012, 08:41 pm
Yep!

Quote from: Osaka
du parsing de chaines de caractères c'est extrêmement lourd en processus et mémoire pour nos pauvre petit µc


C'est aussi ce que l'on peut reprocher au html, si on pouvait se contenter d'envoyer une trame sans balises  contenant uniquement un entête, les infos avec séparateurs et une confirmation de fin de data, les choses seraient on ne peut plus simple.
Les solutions sont à priori d'utiliser un langage interprété afin de parser les infos vers les bonnes pages ou requettes.

Ne peut-on pas également et quel en est la difficulté, discuter directement avec une base de données genre sql ou access (via XML ou mieux JSON) ???

@+

Zoroastre.

EDIT1 : Tiens çà me rappelle qu'il y a un projet interessant nommé AJSON (arduino-json lib)
http://www.domotichome.net/tutorials/4-json-protocol-for-home/public_show
(les + : pas lourd et facilement interpretable)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jun 11, 2012, 09:13 pm

Quote from: Osaka
du parsing de chaines de caractères c'est extrêmement lourd en processus et mémoire pour nos pauvre petit µc

C'est aussi ce que l'on peut reprocher au html, si on pouvait se contenter d'envoyer une trame sans balises


C'est exactement ce que je fais actuellement, tout du moin côté arduino de simple donnée binaire en réception et transmission c'est exactement le même protocole que celui que j'utilise sur le rs-485.
Maintenant dans la solution requête Http(navigateur) <-> serveur de contenu web/socket <-> socket/arduino  il y a quand même parsing ou autre au niveau serveur pour convertir la requête Http en donnée binaire mais bon ça limite fortement les ressource demandé à l'arduino et délégué plutôt celle ci au serveur qui lui est prévu pour.
Il reste encore la solution websocket que j'utilise actuellement webSocket (navigateur) <-> serveur de websocket (handshake,masking) <-> socket/arduino , il n'y a aucun parsing ou conversion à effectuer juste un "masking/unmasking" qui devrait être optionnel dans le futur normalement, les pages web en eux même pourront être hébergé en local ou extérieurement sur le websocket ne transiteront que les donnée utiles à l'arduino et gros avantage en plus l'arduino peut initié de lui même la conversassion et modifié le contenu web sans demande explicité côté navigateur .


Ne peut-on pas également et quel en est la difficulté, discuter directement avec une base de données genre sql ou access ???


Ici on peux parfaitement imaginés un client socket supplémentaire (php ou autre) directement associé à une base de donnée tel que mysql, sqLite, prosgreSql, ... là il faudra encore réfléchir.  :smiley-mr-green:

Edit:

EDIT1 :


Tiens çà me rappelle qu'il y a un projet interessant nommé AJSON (arduino-json lib)
http://www.domotichome.net/tutorials/4-json-protocol-for-home/public_show
(les + : pas lourd et facilement interpretable)


J'ai utilisé le format JSon dans mes solutions précédente.

http://arduino.cc/forum/index.php/topic,72035.0.html

uniquement côté navigateur de ce côté ci.
http://arduino.cc/forum/index.php/topic,80422.msg732056.html#msg732056

Le gros avantage c'est que le parsing est natif du côté javascript, donc ultra simple à interprété côté navigateur.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Jun 11, 2012, 09:19 pm
Yep!

Osaka, nos posts ont dûs se croiser, je refais un petit up sur AJSON et demande ton avis d'expert dessus  XD

Quote
Ne peut-on pas également et quel en est la difficulté, discuter directement avec une base de données genre sql ou access (via XML ou mieux JSON) ???

@+

Zoroastre.

EDIT1 : Tiens çà me rappelle qu'il y a un projet interessant nommé AJSON (arduino-json lib)
http://www.domotichome.net/tutorials/4-json-protocol-for-home/public_show
(les + : pas lourd et facilement interpretable)


@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jun 11, 2012, 09:23 pm
lol j'avais edit ton edit mais ça c'est recroisé donc je remet ici.  :smiley-mr-green:


Tiens çà me rappelle qu'il y a un projet interessant nommé AJSON (arduino-json lib)
http://www.domotichome.net/tutorials/4-json-protocol-for-home/public_show
(les + : pas lourd et facilement interpretable)


J'ai utilisé le format JSon dans mes solutions précédente.

http://arduino.cc/forum/index.php/topic,72035.0.html

uniquement côté navigateur ici, parser côté php.
http://arduino.cc/forum/index.php/topic,80422.msg732056.html#msg732056

Le gros avantage c'est que le parsing est natif du côté javascript, donc ultra simple à interprété côté navigateur.
Ca peut être une très bonne solution à ceux qui ne veulent pas gérer des données format binaire, de mon côté je préfère toujours évité les caractères et les chaines qui doivent de toute façons être reconvertie, mais bon c'est toujours une préférence perso.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Gromain59 on Jun 11, 2012, 09:25 pm
Quote
Gromain59 m'avait à une époque lancé sur le sujet...faudrait que je m'y rejette tantôt


ouiii ?
je confirme que xPL (dérivé simplifié d'XAP) est assez gourmand en ressource.
Ceci dit, moyennant quelques astuces, on arrive à limiter la consommation de RAM. En placant les parties "fixes" des trames émises en mémoire flash par ex.
Pareil pour le parsing, en analysant la trame entrante caractère par caractère au lieu d'utiliser des fonctions type scanf, on utilise beaucoup moins de mémoire.

Pour ma part, comme mes modules xplduino doivent causer entre eux en exécutant des scénarios "évolués", j'ai mis au point un protocole plus léger, via UDP, composé d'un header et d'une partie data. Chaque trame pésera de 5 à 20 octets. Ce même protocole me permettra de configurer les modules à distance au moyen du manager (soft java), et pourra être transporté via RF ou RS485 par ex.
Que devient xPL alors ? C'est un protocole "haut niveau" donc, les états et commandes sont toujours traités et émis. Il sert aux échanges avec l'extérieur (IHM Domogik...)

Voila pour ma contribution au sujet (hors sujet ?)

Gromain
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Jun 11, 2012, 09:36 pm
Bonjour à tous,

J'ai essayé de suivre vos discussions sur le sujet, mais plus ça va, moins j'y comprends !

C'est normal ?

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jun 11, 2012, 09:37 pm

Pareil pour le parsing, en analysant la trame entrante caractère par caractère au lieu d'utiliser des fonctions type scanf, on utilise beaucoup moins de mémoire.


Oui normalement c'est la solution la plus adapté à nos µc, c'est de faire un peux à la façon de "SAX" qui considère chaque balise '<' ou '>' ou ':' etc comme un évènement donc on ne prend que la partie correspondante à cette évènement en compte au fur et à mesure que l'on avance et non la totalité du document en un coup comme "DOM".
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Jun 11, 2012, 09:58 pm
Yep!

Je pense que la difficulté première est d'évaluer chaque solution. Si c'est pour créer une seule page pour allumer une lampe, alors html + css suffisent.

Par contre, lorsqu'il s'agit de confronter les solutions pour une application plus large, comment justement évaluer ces solutions : ne vaut-il pas mieux écrire quelques 500 lignes de code arduino en plus afin d'avoir un proto évolutif et définitivement implanté...ou faut-il rester sur du cas par cas en mettant dans la balance Php, Ajax, xpl ou json.

Il est clair qu'un uC ne peut pas tout faire mais dans l'optique d'une solution userfriendly et extensible, je pense qu'un proto doit être on ne peut plus figé quelque soit le hardware.

@+

Zoroastre.

EDIT :
Quote from: Gromain59
ouiii ?

Je suis toujours partant, mais en ce moment, je suis sur çà : http://arduino.cc/forum/index.php?topic=104781.0
(En gros, je scinde la partie gestion IHM et ordonnancement. J'ai d'ailleurs quasiment terminé le dessin, quelques retouches artistisques et mise au point théorique des cartes filles.)

EDIT2 :

Quote from: Brisebee
J'ai essayé de suivre vos discussions sur le sujet, mais plus ça va, moins j'y comprends !

C'est normal ?

T'inquètes, je commence à être largué aussi...$£**%DOM...SAX!!!
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Jun 22, 2012, 03:19 pm
Bonjour à tous,

Ça y est ! M'y voilà, le moment tant redouté, où il va falloir se jeter à l'assaut de la toile est arrivé !

J'ai réussi  à tout faire fonctionner, hormis la communication avec un site web.
J'ai même réussi à me connecter à un serveur NTP et lire le temps courant (c'est tout neuf), mais je n'ai pas encore intégré cette
fonction dans mon programme global.

Je suis maintenant à la recherche de solutions pour, via le web :
- pouvoir saisir et modifier des plages horaires (hh:mm)début et (hh:mm)fin
- pouvoir modifier l'état de sorties (binaires)
- afficher : l'état de sorties, d'entrées, des températures, des taux d'humidité, ...
- (plus tard), stocker et exploiter (listes, courbes) des données issues de capteurs ou d'E/S.

Pour l'instant j'ai assez peu d'éléments complets (il y a pas mal d'exemples, mais rarement la partie arduino et la partie serveur web) sur le sujet de la communication avec le web.

Merci par avance pour votre aide.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: clouso007 on Jun 22, 2012, 08:53 pm
Bonjour tout le monde,
vraiment bravo à vous, super excellent topic  XD, j'ai une remarque suggestion je préfère si vous permettez bien sûre  XD, vu le nombre de pages important « oulala trop d'informations et d'idées  :smiley-mr-green:», divers et parfois divergentes   :smiley-roll: qu'elle reste vraiment très utiles, et vu le but de se topic et de mettre en place un style de cahier des charges plus ou moins générique avec des petite personnalisation pour chacun « tracer les grandes lignes quoi », je vous suggère de faire un break pour synthétiser tout les idées d'une manière méthodique, comme proposé par Skuzmitoo « uml ou autre », afin de synchroniser les idées.
Une deuxième fois bravo
Je suis ce topic avec grand intérêt
@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Jun 22, 2012, 09:22 pm

vu le but de se topic et de mettre en place un style de cahier des charges plus ou moins générique avec des petite personnalisation pour chacun


L'idée de départ était de proposer différentes briques (modules) tant matérielles que logicielles pour que chacun puisse ensuite les assembler selon son besoin.

Mais cette idée est probablement trop utopique et/ou demanderait de partir sur des principes généraux communs.
Très vite, au fil des discussions, nous nous sommes rendu compte qu'il était plus simple que chacun parte sur "sa" solution en échangeant et en partageant son expérience et en demandant de l'aide aux autres pour les parties qu'il maîtrise le moins.

Donc forcément les projets ont divergés, avancés à des rythmes différents, mais cela n'empêche pas l'échange et l'entre aide.


je vous suggère de faire un break pour synthétiser tout les idées d'une manière méthodique, comme proposé par Skuzmitoo « uml ou autre »,

Synthétiser les discussions les plus intéressantes de ce topic (et d'autres) peut assurément rendre service à plus d'un. Mais c'est un travail de fourmi, c'est le genre de tâche que je confierai dans ma structure professionnelle à un stagiaire, comme c'est le cas de projets intéressants dont personne n'a le temps de s'occuper et qui ne présente pas un enjeu trop important.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: clouso007 on Jun 22, 2012, 09:53 pm

Mais cette idée est probablement trop utopique et/ou demanderait de partir sur des principes généraux communs.
Très vite, au fil des discussions, nous nous sommes rendu compte qu'il était plus simple que chacun parte sur "sa" solution en échangeant et en partageant son expérience et en demandant de l'aide aux autres pour les parties qu'il maîtrise le moins.

Donc forcément les projets ont divergés, avancés à des rythmes différents, mais cela n'empêche pas l'échange et l'entre aide.

Donc ce topic n'aura plus lieu d'exister car les préoccupations sont divergentes  ;) à murir

C'est le genre de tâche que je confierai dans ma structure professionnelle à un stagiaire.

Je pense que cette tache revient aux initiateurs du projet vu leurs expériences dans divers domaines et  vu la complexité de la modélisation, pour que les débutants comme moi peuvent l'exploiter et démarrer sur des bonnes bases :D
j'attends avec impatiente le fruit de ce topic et la réactions des autres  :smiley-mr-green: 
@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jun 23, 2012, 02:24 am
Yop BriBri,


Je suis maintenant à la recherche de solutions pour, via le web :
- pouvoir saisir et modifier des plages horaires (hh:mm)début et (hh:mm)fin
- pouvoir modifier l'état de sorties (binaires)
- afficher : l'état de sorties, d'entrées, des températures, des taux d'humidité, ...
- (plus tard), stocker et exploiter (listes, courbes) des données issues de capteurs ou d'E/S.

Pour l'instant j'ai assez peu d'éléments complets (il y a pas mal d'exemples, mais rarement la partie arduino et la partie serveur web) sur le sujet de la communication avec le web.


Ah mon avis une fois cette partie (http://arduino.cc/forum/index.php/topic,111101.0.html) plus ou moin "maitrisée" via de simple exemples sans lien spécifique à ton projet, tu pourras revenir vers celui-ci plus tard.


Donc ce topic n'aura plus lieu d'exister car les préoccupations sont divergentes  ;) à murir

Je dirais que les préoccupations sont les même, ce sont les solutions pour y parvenir qui sont un peux divergentes.  :smiley-mr-green:
Enfin ici à chaque question posée par l'un donne une réponse également à l'autre ...  :smiley-surprise:

Sinon j'essaierais de refaire une récap des différente solutions proposées vu l'avancement des un et des autres (bribri, zoro, etc) avec de zouli schémas ou diagrammes dès que j'ai le temps (ai repris une formation en électromécanique-maintenance industriel :smiley-mr-green:)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Jun 23, 2012, 08:24 am

Ah mon avis une fois cette partie (http://arduino.cc/forum/index.php/topic,111101.0.html) plus ou moin "maitrisée" via de simple exemples sans lien spécifique à ton projet, tu pourras revenir vers celui-ci plus tard.


Oui, c'est bien ce que j'ai essayé de faire, mais j'ai pas mal pataugé, et ton aide va me permettre d'avancer. Encore merci !



Donc ce topic n'aura plus lieu d'exister car les préoccupations sont divergentes  ;) à murir

Je dirais que les préoccupations sont les même, ce sont les solutions pour y parvenir qui sont un peu divergentes.  :smiley-mr-green:
Enfin ici à chaque question posée par l'un donne une réponse également à l'autre ...  :smiley-surprise:

C'est exactement cela !
Faire un projet complètement modulaire, qui correspondrait à tout le monde impliquerait d'une part l'écriture d'un cahier des charges unique qui satisfasse tout le monde, d'autre part une coordination (et non pas une collaboration) qui n'est possible que dans les structures hiérarchisées, avec un vrai chef de projet, qui prend les décisions, et que tout le monde met en oeuvre.
Or ce n'est pas possible dans le cadre ou nous nous trouvons qui est celui de l'échange et de l'entraide.


ai repris une formation en électromécanique-maintenance industriel :smiley-mr-green:

Super ! Ainsi tu seras également compétent sur la partie matérielle, et notamment les parties opératives et l'électronique de puissance.
Tu maîtriseras ainsi toute la chaîne.

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jun 23, 2012, 01:47 pm

Super ! Ainsi tu seras également compétent sur la partie matérielle, et notamment les parties opératives et l'électronique de puissance.
Tu maîtriseras ainsi toute la chaîne.


Toute la chaîne de production.  :smiley-mr-green:
Ah mon avis je serais encore très loin d'atteindre votre niveau, mais j'espère m'en approcher.  :*
D'un côté c'est vous (bribri, zoro, ...) qui m'avez donné envie de prendre cette direction.  ;)
http://www.tfindustrie.be/formations_longues.php?idfl=21
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Jun 23, 2012, 07:06 pm
Salut Osaka,

Ca a l'air très complet comme formation.
Tu as déjà commencé ?

@+
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: olebrun on Jun 24, 2012, 02:07 pm
Bonjour à tous,
Je profite de la discution autour d'xpl pour vous indiquer l'ouverture d'un projet xPL.Arduino : http://connectingstuff.net/blog/xpl-arduino/ (http://connectingstuff.net/blog/xpl-arduino/)
C'est une implémentation du protocole xPL (une partie du moins) pour arduino. La librairie est indépendante du shield ethernet utilisé.

C'est une première version donc surement pas optimisée (elle prend pas mal de place et de ram). Il n'y a pas eu de recherche dans ce sens pour l'instant car je l'utilise sur un arduino mega (qui me sert dans mon projet domotique) sans trop de soucis.

Elle est basée sur le premier parseur xPL que gromain avait publié (il me corrigera si je me trompe?).
Voila, si ça peut donner des idées ou aider ?
bonne journée.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jun 25, 2012, 06:01 pm

Ca a l'air très complet comme formation.
Tu as déjà commencé ?


Yop Bribri,
Oui j'ai commencé il y a une semaine.  :smiley-mr-green:


(elle prend pas mal de place et de ram)


On a discuté de xpl 2,3 fois dans le topic (voir la page précédente), pour ma part je ne l'utiliserais pas pour les raisons que tu sites.
Je préfère rester dans le seul langage que nos machines comprennent (binaire) puisqu'aux final c'est à eux que s'adresse le(s) message(s) et non à nous ...
;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: olebrun on Jun 25, 2012, 08:33 pm
Quote
On a discuté de xpl 2,3 fois dans le topic (voir la page précédente), pour ma part je ne l'utiliserais pas pour les raisons que tu sites.
Je préfère rester dans le seul langage que nos machines comprennent (binaire) puisqu'aux final c'est à eux que s'adresse le(s) message(s) et non à nous ...


J'ai cru comprendre en lisant les posts précédants ;) . Malgré ce petit problème, je pense que le confort que cela apporte vaut largement la place perdu. Il faut peut etre avoir déjà tout un système pensé autour d'xPL pour en voir les avantages ? 
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jun 25, 2012, 09:06 pm

Malgré ce petit problème, je pense que le confort que cela apporte vaut largement la place perdu.


Le problème c'est que confort il n'y en a aucun, lourd en mémoire, lourd en traitement, ... 
Le seule avantage que j'y vois c'est en temps de développement "facilement" accessible aux débutants puisqu'on n'a plus qu'à ce concentré sur les données (chaines de caractères lisible pour les humains), mais aucun avantage en ce qui concerne mon(nos) projet(s) bien spécifique ici.
(je n'ai que 16k en mémoire programme et 1k de sram sur mes 168 encore moin si je prend des attiny  :smiley-sweat:)


Il faut peut etre avoir déjà tout un système pensé autour d'xPL pour en voir les avantages ? 


Oui puisque à la base XPL est prévu justement pour l'interconnexion entre systèmes différents, ce qui n'est pas le cas ici puisqu'il s'agira d'un seul système à tout faire.

On trouvera plus facilement le public auquel il est destiné ici http://www.touteladomotique.com/forum/viewtopic.php?f=41&t=7809 .
Un petit peux de pub pour ton poste.  :smiley-mr-green:
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: olebrun on Jun 25, 2012, 09:40 pm
Je t'avoue que je n'ai pas lu tout le post, donc je ne connais pas tous les tenants et aboutissants du projets mais j'ai eu, il me semble, le meme genre  d'approche depuis 2ans pour la réalisation du mon système domotique (basé aussi sur arduino) et c'est pour ça que je me permets d'insister ;) (tu vas utiliser xPL oui !!  XD ... apres j'arrete. Tu dis qu'il s'agit ici "d'un seul système à tout faire", mais j'ose imaginer qu'il va devoir/pouvoir interragir avec le reste du monde ? un matériel existant ? une IHM au moins ? c'est pour cela que xPL existe.

Après forcement sur un atmega168, meme au chausse pied ça rentrera difficilement :) ... quoique la partie émission elle reste simple.
Bonne soirée
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jun 25, 2012, 10:06 pm

Je t'avoue que je n'ai pas lu tout le post, donc je ne connais pas tous les tenants et aboutissants du projets


Pour résumer mon projet d'à moi, quelque post tirés de ce topic.
http://arduino.cc/forum/index.php/topic,80422.msg612293.html#msg612293
http://arduino.cc/forum/index.php/topic,80422.msg618265.html#msg618265
http://arduino.cc/forum/index.php/topic,80422.msg720673.html#msg720673
http://arduino.cc/forum/index.php/topic,80422.msg732055.html#msg732055

une discussion sur xpl  :smiley-mr-green:
http://arduino.cc/forum/index.php/topic,80422.msg616576.html#msg616576


(tu vas utiliser xPL oui !!  XD ... apres j'arrete.


Naaannnnnn.  =( :smiley-mr-green:


Tu dis qu'il s'agit ici "d'un seul système à tout faire", mais j'ose imaginer qu'il va devoir/pouvoir interragir avec le reste du monde ? un matériel existant ? une IHM au moins ? c'est pour cela que xPL existe.


Vivi l'interfaçage est prévu  :smiley-sweat:, de ce point de vue là je me tourne vers interface web (html, javascript, websocket, ...) et toujours le même protocole binaire.


Après forcement sur un atmega168, meme au chausse pied ça rentrera difficilement :) ... quoique la partie émission elle reste simple.


Ma solution rentre dans un attiny2313 (2ko de mémoire programme sans compté le bootloader)  :smiley-mr-green: .


Bonne soirée


;)
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: zoroastre on Jun 27, 2012, 08:27 pm
Yep!

Le xpl est sympa dans le principe mais relativement pas optimisé pour nos machines à l'heure actuelle, c'est une variante interessante certes.
L'enorme avantage que j'y vois est une uniformisation, standardisation d'un système et de ses descendants.

Par contre, en terme d'optimisation, j'y reviens, ce n'est absolument pas viable. Prenons exemple sur le protocole SSC qui permet de piloter des servomoteurs avec 3 bytes {START, ADDRESS, ANGLE}, si nous concédions à suivre ce principe sur nos installations domotiques, un nouveau protocole pourrait naître. En effet, il est rare d'avoir plus de 255 adresses de péripherique et 255 actions possibles.
Un tableau préconcus determinerait quel bit pour quelle action.

Naturellement, cela n'est pas suffisant dans l'optique d'une totale application domotique, quoique!, mais bon nombre d'algorithme (hashage ?) pourrait résoudre la totalité des tâches sans avoir besoin d'écrire un roman, juste avec des nombres.

Pour qu'un système soit "commercialement" viable, il faut une bonne dose de vulgarisation et un peu d'élitisme. Le truc est qu'on s'en fout, on fait notre truc, on le partage et on y retire quelques enseignements et mise en garde.

Perso, je kiffe l'Attiny2313  XD

@+

Zoroastre.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: olebrun on Jun 27, 2012, 10:10 pm
Chacun voit midi à sa porte. En tout cas le protocole existe et est utilisé, la lib est dispo et si ça peut aider quelqu'un tant mieux. Moi je l'utilise et je pilote toute ma maison avec donc je peux te dire que c'est viable :)
++

Edit:
J'ai lu une partie des 27 pages pour mieux comprendre pourquoi cette "animosité" envers xPL ... j'aurai du le faire avant  :smiley-red: .
En partant sur de multiples "noeuds", une des obligations est de taille au mieux chaque µc pour limiter le cout (corrigez si je me trompe) du coup, je comprends mieux. Dans cette archi on pourrait voir xpl seulement sur un des noeuds (une passerelle) qui serait charger de dialoguer avec le reste du monde ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Jun 28, 2012, 06:20 pm

En partant sur de multiples "noeuds", une des obligations est de taille au mieux chaque µc pour limiter le cout (corrigez si je me trompe) du coup, je comprends mieux. Dans cette archi on pourrait voir xpl seulement sur un des noeuds (une passerelle) qui serait charger de dialoguer avec le reste du monde ?


C'est principalement moi qui part sur une solution modulaire complète, 1 µc par tache différentes comme pour le knx par exemple (chaque tache peut également être étendu pour en augmenter le nombre, ex: 5 modules de 8 I/O,2 module 5 entrée ana pour divers capteurs, etc) , zoro lui par exemple réparti les taches lente et rapide sur deux µc.
Pour ma part la raison est simplement de supprimer les dépendance entre taches (facilite le dév également), par exemple si 1 de mes modules 8 I/O vient à rendre l'âme,les autres sont toujours fonctionnel tendis qu'avec 1 seul be tu à l'intégralité de tes taches en rade, de plus je ne suis pas limiter aux nombre d'I/O d'un seul µc puisque je peux les étendres (avec une limite quand même selon la façon dont seront gérer les adresses : 1 octet = 256 adresses possible,2 octet = 65536 adresses possible, il y a de quoi faire  :smiley-sweat:).
Donc ça parait disproportionné et niveau cout c'est sans doute plus chère que la solution 1µc pour tous gérer  mais beaucoup moin qu'une solution knx par exemple qui se monte vite à quelque millier d'€ ou même zwave, plcbus, etc (1 module par prise ou interrupteur, volet à mini 30€ sans le contrôleur : zibaze ou autre  :smiley-sweat:).

Mais bon il faut dire qu'ici on a presque toute les connaissances pour pouvoir le réaliser (raison du topic, on s'entraide avec les connaissances de chacun, dev, elec, ...), ce n'est pas tout le monde qui peux ce permettre de réaliser un système de A à Z comme ont est en train de le faire, d'où l'intérêt du xpl par exemple (s'il est textuel c'est bien pour que les humain non initié sachent le lire et le comprendre et non les machines qui ne parle que binaire alors que pourtant c'est à eux que s'adresse le message au final), maintenant ici comme tu le dis rien ne m'empêche d'ajouter un module qui ferait office de passerelle xpl et ne ferait que ça.
Pour la com avec le monde extérieure on gèrera également l'intégralité, surement via client léger (web) et ou client lourd mais toujours en perso.
;)

Edit: regarde le tuto de barbu http://arduino.cc/forum/index.php/topic,102540.0.html pour mieux comprendre la différence entre protocoles.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: olebrun on Jun 28, 2012, 10:02 pm
Code: [Select]
raison du topic, on s'entraide avec les connaissances de chacun, dev, elec, ...

C'est bien pour cela que j'ai posté ici ;). Apres je peux comprendre les differentes orientations bien sur.

Si ca interresse, voici mon retour d'expérience:
Pour ma part, c'est simple la priorité au départ était le cout et ne m'y connaissant pas trop en elec j'ai trouvé l'arduino super abordable. Ensuite ça a évolué vers la fiabilité, cout et évolutivité. Du coup un Arduino par tableau (vielle maison), mais extensible, je peux ajouter une carte et piloter une io d'une carte depuis une autre, comme tu veux faire en fait.
L'arduino se contente de gerer les fonctions basiques, et un nas sert à loger en base toutes les remontées (capteurs, io etc) pour faire des scenarios évolués et des statistiques de conso d'energie. Et héberge l'interface web de commande (j'ai developpé un debut d'addon xbmc et une app android aussi ... bcp plus reactif que l'interface web).

Je gerais (gerais car je viens de vendre ma maison) avec un arduino mega ~15points lumineux et leurs interrupteurs, radiateurs elec par fil pilote, volets, store banne, un reseau 1wire pour les températures.
et sur un duemilanove, la chaudiere(bruleur, cirulateur et motorisation vanne 4 voies), 2 compteurs d'eau.
Le tout fesait des remontés en xpl à chaque changement d'état et étaient pilotés en http (pas encore de parseur xpl à ce moment là).

Voila ce que je peux dire de ma petite expérience. J'avais un mega en spare au cas ou. Il a servit une fois, changement en 2minutes (le probleme venait du shield ethernet en fait). A part cela, aucun problemes pendant 2ans, aucune lenteur malgre les multiples taches.

Edit:
Un exemple de l'intérêt d'utiliser un protocole standard (que ce soit xpl ou autre). Hier soir j'ai installé un addon xPL sur xbmc. Du coup, je peux faire réagir mes arduino en fonction des actions xbmc sans rien développer, à part les réactions souhaitées. C'est un des avantages.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: MiGaNuTs on Jul 30, 2012, 02:07 pm
Bonjour,

j'arrive sur ce topic suite au conseil d' Osaka sur un autre topic du forum.

Je suis électricien industriel au départ (j'ai un BTS electrotech depuis un bon moment maintenant, et quelques années d'expérience en installation, mise en service, maintenance, SAV de trucs divers dans l'industrie), et avec le temps je mets de plus en plus les pieds dans le monde de l'automatisme et de l'informatique industrielle (je délaisse un peu le multimetre pour le PC petit a petit). Du reste au mois d'octobre si tout va bien je devrais reprendre mes études (a 34 ans) et me lancer dans une licence pro Automatisme et info industrielle (parce que niveau programmation j'ai qd même des lacunes)

Des qu'il y'a un peu de logique programmable qui commande des machins électriques, ca attire mon attention (c'est plus fort que moi), et par extension je m'intéresse aussi a la domotique.

J'avais déjà ma petite idée (pas complètement figée cependant) pour utiliser un Arduino en guise d'automate avant de passer sur ce sujet, (je vous mets mon griboulli en pièce jointe. c'est le même que sur l'autre topic) et je constate que vous avez déjà pas mal creusé la question, vous êtes même allés bcp plus loin que moi.

Je m'attelle dons a la lecture intégrale de ce topic, et je vous tiens au courant de ce que j'en pense.
En attendant vous pouvez toujours me dire ce que vous pensez de mon approche de la question. Je me suis "vachement inspiré" de ce qui existe deja dans l'industrie.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Aug 01, 2012, 06:02 pm

j'arrive sur ce topic suite au conseil d' Osaka sur un autre topic du forum.


Yop Yop


(je délaisse un peu le multimetre pour le PC petit a petit). Du reste au mois d'octobre si tout va bien je devrais reprendre mes études (a 34 ans) et me lancer dans une licence pro Automatisme et info industrielle (parce que niveau programmation j'ai qd même des lacunes)


Moi je fais l'inverse à33 ans, je passe du monde de la programmation au monde industriel.  :smiley-mr-green:


En attendant vous pouvez toujours me dire ce que vous pensez de mon approche de la question. Je me suis "vachement inspiré" de ce qui existe deja dans l'industrie.


D'après ton diagramme ton approche modulaire est assé proche de la mienne.

Edit: skuzmi est devenu Blizzard27 ?
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Skuzmitoo on Aug 02, 2012, 10:20 am
Salut, oui j'ai changé de pseudo. Je ne vous ais pas abandonné et je lis toujours vos avancées mais malheureusement pour moi je suis toujours en location, je me familiarise toujours avec l'arduino, je commence a dompter un peu la bête, je suis actuellement sur un projet d'applique murale avec 6 LED's 3W RGB avec gestion télécommande IR, SPI avec les WS2801 et Transformation de fourrier pour gérer l'audio avec tout cela je serais calé, je m'efforce de créer de objets afin d'avoir un code propre. La prochaine étape sera la construction d'une CNC car c'est un truc qui me manque vraiment et après je vous rejoindrais même si je vois que chacun de vous a bien avancé sur le sujet.

Etant en location, je partirais sur une brique logiciel pour gérer un capteur de température, d'humidité, de lumière et de présence par pièce et une autre brique pour avoir un suivi de la consommation électrique. Viendra ensuite une brique pour gérer l'éclairage tout en gardant le mode manuel comme prioritaire.

Pour résumé, je suis toujours là, même si j'ai un peu déserté le sujet pour le moment et avec deux enfants le temps passe vite.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: MiGaNuTs on Aug 02, 2012, 10:49 pm
En fait apres réflexion et lecture de vos messages, je pense que l'arduino "master" de mon croquis, on peut s'en passer et confier le boulot au serveur.

Le RS 485 me semble le bus le plus adapté pour faire communiquer tout ce petit monde de façon fiable.

Reste la question du protocole de communication pour tout ce petit monde.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: MiGaNuTs on Aug 03, 2012, 02:46 pm
Je m'auto réponds, bien qu'en fait ma réponse amène d'autres questions.

Le soft qui pourrais faire l'affaire sur le serveur de mon installation semble deja exister, ou du moins il en existe un qui pourrais peut etre faire l'affaire :

http://mango.serotoninsoftware.com

La chose communique en modbus, technologie éprouvée sur le RS485.

l'arduino servirait donc uniquement pour réaliser des esclaves indépendants gérant chacun un petit bout de l'installation (ainsi en cas de panne on ne perds qu'une partie de l'installation et non pas tout).
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: chestroled on Aug 03, 2012, 08:09 pm
Salut Miganuts,

j'opte moi aussi pour un système ou les arduinos sont esclaves et le serveur central maitre ( il n'y a dans mon cas pas de raison valable d'utiliser une Arduino en maitre) , je pense aussi passer par une gestion série mais ne saisi pas encore les différence entre RS232 ou RS485 étant débutant dans le domaine des communications et de la prog...

Pour ton soft, j'ai jeté un coup d'oeil et je ne sais pas quels sont tes projets exacts et si il pourra répondre à ceux-ci. Peut-être pourrions nous comparer nos objectfs ?

Dans mon cas j'ai déjà investi dans le logiciel Homeseer PRO ( j'ai craqué sur la licence à moitié prix...), faut avouer j'ai un peu du mal avec les systèmes Linux toussa...


Au plaisir
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: MiGaNuTs on Aug 04, 2012, 06:13 pm
Mon objectif principal est d'apprendre, en utilisant autant que possible des "trucs" open software, open hardware, etc...

Je pense que je vais commencer par une station météo, avec des courbes sur le long terme etc. (j'ai déjà + ou - qqch qui fait du datalog pression, température, humidité (enfin le capteur de HRE déconne depuis qu'il a pris une averse un peu trop sévère ^^), mais je suis pas complétement satisfait de mon taff)
Ensuite peut être un module de régulation de chauffage, ou un compteur d'énergie ou je ne sait pas encore.

Je viens d'installer mango pour voir ce que ça donne, pour le moment j'arrive même pas a le démarrer. Le support a l'air pas terrible (surtout comparé a la communauté arduino ou y'a qd même bcp d'intervenants).

Bref, je creuse.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: chestroled on Aug 05, 2012, 12:13 pm
Salut Mignatus,

je ne sais pas si cela répondra à tes besoin car c'est plus orienté interface mais il existe Domogik (http://www.domogik.org/) , il est sortit en V0.1.0 donc c'est encore le début mais semble très prometteur et bien sur opensource

Bon dimanche
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: osaka on Aug 07, 2012, 09:51 pm

Salut, oui j'ai changé de pseudo


Bon ben finalement ça sera Blibli au lieu de skuzmi on est pas loin de Bribri.  :smiley-mr-green:


La prochaine étape sera la construction d'une CNC.


Sujet qui devrait intéresser du monde. :smiley-surprise: :smiley-surprise:


Dans mon cas j'ai déjà investi dans le logiciel Homeseer PRO ( j'ai craqué sur la licence à moitié prix...), faut avouer j'ai un peu du mal avec les systèmes Linux toussa...


mmmmh je ne sais pas trop ce que peux apporter Homeseer (windows only, pc, ...)  dans la gestion de plusieurs esclaves arduino, plugin existant ou à développer, je pense pas ou plutôt ne sais pas s'il en existe et si oui ça doit être limiter coté arduino ?
Pour Domogik le projet xpl de Gromain ou ce dont parlait olebrin peut être intéressant pour les débutants ?


En fait apres réflexion et lecture de vos messages, je pense que l'arduino "master" de mon croquis, on peut s'en passer et confier le boulot au serveur.


Attention il y a maître de bus qui gère la communication (collision, priorité, ...) entre esclaves (architecture maître-esclaves -> voir modbus par ex) et il y a maître de l'installation qui lui gère l'installation (ordres, commandes, enregistrement données, horaire, scénarios, ..., interface, ... ) ce n'est pas la même chose et comme je le voyais sur ton schéma je pensais que c'était pour le premier cas ?
(Dans ma gestion du bus je me passe de maître et gère le risque de collision différemment, avec protocole maison mais pas si éloigné de ce qui existe déjà).


Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: MiGaNuTs on Aug 16, 2012, 01:20 pm
Dans mon idée le mini serveur est a la fois le maitre de l'installation au sens ou il distribue les ordres aux différents modules, et c'est également lui qui est le maitre du bus, les modules étant des esclaves au fonctionnement le plus simplifié possible.
Au départ je voulais même pas mettre d'intelligence dedans, mais c'est gênant le jour ou le serveur tombe en rideau car plus rien ne fonctionne du coup.


Mango me semble vraiment pas le meilleur choix coté serveur, le support c'est vraiment pas ça. Apparemment la boite qui a repris le projet a son compte ne joue pas trop le jeu de l'open source :/


Je veux éviter au maximum les solutions propriétaires et/ou fermées, et surtout ne pas réinventer la roue.
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Aug 22, 2012, 05:07 pm
Bonjour,
Me voilà à nouveau sur ce forum, pour faire un point sur l'avancement de mon projet : DOMOWEB 2012.
Même si mon activité durant la période de congés à été fortement ralentie, j'ai tout de même progressé. J'ai avancé sur deux plans :

1) J'ai intégré dans le programme, différentes fonctionnalités, (tout cela fonctionne très bien) :
- Les plages horaires sont stockées sur une carte SD, elles sont lues puis stockées en RAM (pour le moment, lors d'un reset).
- Des plages horaires par défaut sont stockées en EEPROM, en cas de défaut de lecture de la carte SD, ce sont ces plages horaires qui sont transférées en RAM.
- Une LED clignote à une fréquence de 10Hz lorsque le système fonctionne en mode normal, et de 1Hz lorsqu'il est en défaut.
- L'horloge RTC DS1307 est synchronisée avec un serveur NTP, là aussi uniquement lors d'un reset pour le moment.
- Le back light de l'afficheur LCD est éteint lorsque l'éclairement est très faible, cela n'est pas du tout important. Mais comme mon système fonctionne dans un local technique qui n'est en règle générale pas éclairé, en passant devant, et en fonction de la vitesse de clignotement de  la LED, je vois tout de suite si tout est OK, alors que lorsque le back light est allumé, je vois moins distinctement le clignotement de la LED. (c'est un détail !)
- Un capteur de température OneWire DS18B20 donne la température ambiante.
- Les sorties (10 pour le moment, qui correspondent à mes électrovannes d'arrosage) sont activées ou désactivées en fonction des plages horaires.
Je joins le programme de l'arduino (.ino), il est très largement perfectible.

2) J'ai travaillé sur le transfert de données via le web :
A partir des éléments fournis par Osaka (que je ne remercierai jamais assez), j'ai « géré » des sorties (2 pour le moment) en fonction des plages horaires avec une possibilité de forçage via le web.
Je vais très prochainement donner plus d'infos sur cette partie sur cet autre topic http://arduino.cc/forum/index.php/topic,111101.0.html (http://arduino.cc/forum/index.php/topic,111101.0.html), d'autant plus que j'ai quelques questions à vous poser.
N'hésitez pas à me faire vos remarques, suggestions ou autres critiques, c'est comme cela que j'ai pu avancer, et si cela peut également servir à d'autres ce n'en sera que mieux.
Bien à vous
Title: Re: Aidez nous ! Projet - Gestion domotique
Post by: Brisebee on Jun 25, 2013, 10:19 am
Bonjour,

Je relance ce topic, après plus de 6 mois d'inactivité !
Pour vous dire que j'ai enfin fini la première partie de mon projet.
J'ai encore pas mal de travail pour la suite, et pour optimiser l'existant.

J'ai posté les différents éléments, descriptifs, photos, ... ici : http://g.sinnig.free.fr/spip.php?article7 (http://g.sinnig.free.fr/spip.php?article7)

Je vais également faire un petit post sur projets finis.

N'hésitez pas si vous voulez des compléments d'information.

Bien à vous