Go Down

Topic: Aidez nous ! Projet - Gestion domotique (Read 153687 times) previous topic - next topic

Skuzmitoo

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
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 ?

Brisebee

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 !

Brisebee


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 ?

Skuzmitoo

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.

Brisebee


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.

osaka

#65
Dec 02, 2011, 04:25 pm Last Edit: Dec 02, 2011, 05:18 pm by osaka Reason: 1

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

Skuzmitoo

#66
Dec 02, 2011, 07:15 pm Last Edit: Dec 02, 2011, 07:18 pm by Skuzmitoo Reason: 1
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 ?

osaka


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

Brisebee


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.

chicotore

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

zoroastre

#70
Dec 02, 2011, 09:16 pm Last Edit: Dec 02, 2011, 09:43 pm by zoroastre Reason: 1
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 ). 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...


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

osaka

#71
Dec 02, 2011, 09:20 pm Last Edit: Dec 02, 2011, 09:49 pm by osaka Reason: 1

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 ?

osaka

#72
Dec 02, 2011, 10:09 pm Last Edit: Dec 02, 2011, 10:37 pm by osaka Reason: 1

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

Brisebee


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.

chicotore

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 ...

Go Up