Aidez nous ! Projet - Gestion domotique

Skuzmitoo:
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 :grin:) 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.

Skuzmitoo:
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 :frowning: .

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, ...) :% :grin:
  • 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 ).