xPL eedomus

Discussion sur la box eedomus

xPL Eedomus

Messagepar Chacks » 27 Mai 2012 17:07

Bonjour,

je cherche à envoyer des données en xPL vers l'Eedomus avec un arduino.
Mon premier souci est que j'ai une livebox2 et elle ne supporte pas le broadcast donc j'ai mis directement l'IP de ma box eedomus (IP fixé par la livebox) pour l'envoi des requêtes xPL.
Les requêtes sont envoyées en UDP sur le port 3865 (port xPL).

voici une trame xPL envoyée

Code : Tout sélectionner
xpl-stat
{
hop=1
source=arduino
target=eedomus
}
sensor.basic
{
device=0x4A30
type=temp
current=24.2
}


Dans l'aide de l'eedomus, il est indiqué qu'une notification doit apparaitre quand la box reçoit une requête xPL mais je ne vois rien apparaitre. Serait-il possible d'avoir une petite aide pour arriver à intégrer des requêtes xPL autres que le RFXCOM.

Merci.

P.S. : Une section xPL pourrait peut être intéressante ou à regrouper avec la section API
1 EEDOMUS, modules FIBARO, IPX800 V3, Arduino, sondes T & Rh WS1170
Chacks
 
Messages : 228
Inscription : 06 Mars 2012

Re: xPL Eedomus

Messagepar Chacks » 27 Mai 2012 21:09

Bon je me répond à moi même, j'ai réussi à recevoir correctement les trames xPL avec la box en lui faisant croire que c'est un RFXCOM LAN qui lui envoi les données. Voici une trame que je lui envoi :

Code : Tout sélectionner
xpl-stat
{
hop=1
source=rfxcom-lan.0004a3131b9d
target=*
}
sensor.basic
{
device=th1 0x4B70
type=temp
current=20.7
}


J'espère que le support nous permettra plus tard d'ajouter des modules sans avoir besoin de se faire passer pour un RFXCOM.
1 EEDOMUS, modules FIBARO, IPX800 V3, Arduino, sondes T & Rh WS1170
Chacks
 
Messages : 228
Inscription : 06 Mars 2012

Re: xPL Eedomus

Messagepar cedriclocqueneux » 28 Mai 2012 09:10

Merci pour l'astuce !
J'espère aussi que d'autres appareils que le RFXCOm seront supportés, c'est une demande que j'ai remonté aussi à l'équipe :p
Image
cedriclocqueneux
 
Messages : 159
Inscription : 10 Jan 2012
Localisation : Orléans, France

Re: xPL Eedomus

Messagepar PlaneteDomo » 28 Mai 2012 10:32

Salut,

Je n'ai pas testé, mais il n'y a pas de raison que ça ne fonctionne pas.

Je pense plus que c'est un problème de déclaration de la source vis à vis du protocole xPL

La source doit être de la forme [editeur-deviceID].[identifiant]

Essaye donc en mettant chacks-arduino.1 par exemple, je pense que ça devrait marcher.

A++
Revendeur domotique : http://www.planete-domotique.com
PlaneteDomo
 
Messages : 53
Inscription : 09 Jan 2012
Localisation : Clermont fd

Re: xPL Eedomus

Messagepar PlaneteDomo » 29 Mai 2012 14:43

J'ai édité mon message ci-dessus, j'avais oublié le deviceID.

Il faut donc impérativement avoir une source identifiée correctement.

A+
Revendeur domotique : http://www.planete-domotique.com
PlaneteDomo
 
Messages : 53
Inscription : 09 Jan 2012
Localisation : Clermont fd

Re: xPL Eedomus

Messagepar Chacks » 29 Mai 2012 20:29

Merci pour les réponses, je vais tester tout ça dès que possible (un heureux événement m'occupe à 100% ces jours-ci :P )
1 EEDOMUS, modules FIBARO, IPX800 V3, Arduino, sondes T & Rh WS1170
Chacks
 
Messages : 228
Inscription : 06 Mars 2012

Re: xPL Eedomus

Messagepar Chacks » 03 Juin 2012 15:44

Je viens de tester et ça ne marche pas. Je pense qu'il faut que le couple [editeur-deviceID] doit être connu par la box. Pour l'instant je reste donc avec le couple RFXCOM-LAN
1 EEDOMUS, modules FIBARO, IPX800 V3, Arduino, sondes T & Rh WS1170
Chacks
 
Messages : 228
Inscription : 06 Mars 2012

Re: xPL Eedomus

Messagepar PlaneteDomo » 03 Juin 2012 17:18

Chacks a écrit:Je viens de tester et ça ne marche pas. Je pense qu'il faut que le couple [editeur-deviceID] doit être connu par la box. Pour l'instant je reste donc avec le couple RFXCOM-LAN


Je te confirme qu'il n'y a aucun test sur l'éditeur je vais regarder d'ou ça vient. Tu as laissé * comme destination ?
Revendeur domotique : http://www.planete-domotique.com
PlaneteDomo
 
Messages : 53
Inscription : 09 Jan 2012
Localisation : Clermont fd

Re: xPL Eedomus

Messagepar Chacks » 03 Juin 2012 19:16

Oui j'ai bien laisser * en destination, j'ai juste changer la source.

Merci.
1 EEDOMUS, modules FIBARO, IPX800 V3, Arduino, sondes T & Rh WS1170
Chacks
 
Messages : 228
Inscription : 06 Mars 2012

Re: xPL eedomus

Messagepar Pat11 » 14 Mars 2013 22:35

Bonsoir
je relance de forum car je cherche comment envoyer des donnée xPL a partir d'un arduino pour les récupérer sur mon eedomus
j 'ai cherché sur internet , j ai trouvé des librairie pour arduino mais c est un peut complique pour un débutant comme moi
alors si quelqu'un passe par la peut être Chacks qui la déjà fait
merci d'avance
Pat11
 
Messages : 71
Inscription : 23 Sep 2012

Re: xPL eedomus

Messagepar Chacks » 15 Mars 2013 08:34

Bonjour Pat,

je ne suis pas chez moi jusqu'à lundi mais dés que je rentre je peux t'envoyer le fichier de prog de mon arduino si tu veux. Pour info je récupère les données RF de sondes WS1170 et j'envoi la valeur vers l'eedomus par xPL.

@+
1 EEDOMUS, modules FIBARO, IPX800 V3, Arduino, sondes T & Rh WS1170
Chacks
 
Messages : 228
Inscription : 06 Mars 2012

Re: xPL eedomus

Messagepar Pat11 » 15 Mars 2013 12:56

Bonjour chacks
Merci pour ta réponse , oui je veux bien avoir tes profs sa me donnera une base,moi c est pour récupèrer la température ds18b20 et le niveau d une piscine pour l envoyer sur l eedomus en xpl
Merci bonne journée et j attend sa avec impatience
Pat11
 
Messages : 71
Inscription : 23 Sep 2012

Re: xPL eedomus

Messagepar Chacks » 18 Mars 2013 07:48

Bonjour,

voici le code que j'utilise pour envoyer les valeurs de température et humidité issues de capteurs Velleman WS1170 en xPL vers l'eedomus. La fonction d'envoi xPL s'appelle xPLSend().

Code : Tout sélectionner
/* Inclus la librairie SPI pour le module Ethernet Shield */
#include <SPI.h>

/* Inclus la librairie Ethernet */
#include <Client.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
#include <Server.h>

/* Variables d'entrée/sortie de l'arduino */
#define DataPin 2

/* Variables de gestion des boucles */
int i = 0;
int j = 0;

/* Variables de gestion des données reçus par RF */
unsigned long time = 0;
byte data = 0;
byte tableoctet[6];
boolean End_Receive = false;
#define POLYNOME 0x131; // POLYNOME = x^8 + x^5 + x^4 + 1

/* Variables Température et Humidité et Adresse du capteur */
int Tp = 0;
int Tp_dec = 0;
char Tp_str[5];
int Rh = 0;
char Rh_str[3];
int Adr = 0;
char Adr_str[13];

/* Variables de configuration ethernet */
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x9B, 0x73 };

/* Variables xPL */
char* xPLType = "xpl-stat";
char* xPLSource = "rfxcom-lan.0004a3131b9d";
//char* xPLSource = "arduino-lan.90A2DA009B73";
char* xPLTarget = "*";
char* xPLSchema = "sensor.basic";
char packetBuffer[200];

/* Adresse de Broadcast */
byte BroadcastIP[] = {192, 168, 1, 255};

/* Port xPL */
unsigned int xplPort = 3865;

EthernetUDP Udp;

unsigned int TargetPort = 3639;

/* Fonction d'initialisation */
void setup()
{
  pinMode(DataPin, INPUT);
 
  //Serial.begin(115200);
 
  // Initialise la connexion ethernet
  Ethernet.begin(mac);
  Udp.begin(6600);
  //Serial.println("Initialisation terminee.");
}

void loop()
{
  while (End_Receive == false)
  {
    time = pulseIn(DataPin, HIGH, 2000);
   
    if (time > 450 && time < 1800)
    {
      data = (data << 1) + (time > 1000 ? 0 : 1);
     
      if (((j + 1) % 8) == 0)
      {
        tableoctet[j / 8] = data;
      }
      ++j;
    }
    if (j > 0 && time < 450)
    {
      End_Receive = true;
    }
  }
 
  if (tableoctet[0] == 0xFF)
  {
    if (Check_CRC(tableoctet,6,0))
    {
      Tp = ((tableoctet[2] & 0x0F) << 8) | tableoctet[3];
      Rh = tableoctet[4];
      Adr = (tableoctet[1] << 8) | (tableoctet[2] & 0xF0) ;
      sprintf( Adr_str, "%s 0x%02X", "th1", Adr);
      //Serial.println(Adr_str);

      if (Tp >= 2048)
      {
        Tp = (Tp - 2048) + 0x4000;
      }
     
      if ((Tp & 0x001) == 0x000)
      {
        Tp_dec = Tp/10;
        sprintf( Tp_str, "%d", Tp_dec);
        Tp_dec = Tp % 10;
        sprintf( Tp_str, "%s.%d", Tp_str, Tp_dec);
        xPLSend(Adr_str,"temp",Tp_str);
        //xPLSend(Adr_str,"battery","100"); // Pour essai
      }

      sprintf( Rh_str, "%d", Rh);
      xPLSend(Adr_str,"humidity",Rh_str);
      //xPLSend(Adr_str,"battery","100"); // Pour essai

    }
  }
  j = 0;
  End_Receive = false;
  delay(100);
}

void xPLSend(char* Capteur, char* Type, char* Valeur)
{
  sprintf( packetBuffer, "");
  strcat( packetBuffer, xPLType);
  strcat( packetBuffer, "\n{\nhop=1\nsource=");
  strcat( packetBuffer, xPLSource );
  strcat( packetBuffer, "\ntarget=" );
  strcat( packetBuffer, xPLTarget );
  strcat( packetBuffer, "\n}\n" );
 
  strcat( packetBuffer, xPLSchema );
  strcat( packetBuffer, "\n{\n" );
  sprintf( packetBuffer, "%sdevice=%s\n", packetBuffer, Capteur );
  sprintf( packetBuffer, "%stype=%s\n", packetBuffer, Type );
  sprintf( packetBuffer, "%scurrent=\%s\n", packetBuffer, Valeur );
  sprintf( packetBuffer, "%s}\n", packetBuffer );
  //Serial.println(packetBuffer);
 
  Udp.beginPacket(BroadcastIP, xplPort);
  Udp.write(packetBuffer);
  Udp.endPacket();
}

boolean Check_CRC(uint8_t data[], uint8_t nbrOfBytes, uint8_t checksum)
{
  uint8_t crc = 0;
  uint8_t byteCtr;
 
  for ( byteCtr = 1; byteCtr < nbrOfBytes; ++byteCtr)
  {
    crc ^= (data[byteCtr]);
    for (uint8_t bit = 8; bit > 0; --bit)
    {
      if (crc & 0x80)
      {
        crc = crc << 1;
        crc = crc ^ POLYNOME;
      }
      else
      {
        crc = (crc << 1);
      }
    }
  }
 
  if (crc != checksum)
  {
    return false;
  }
  else
  {
    return true;
  }
}


Bon courage.
1 EEDOMUS, modules FIBARO, IPX800 V3, Arduino, sondes T & Rh WS1170
Chacks
 
Messages : 228
Inscription : 06 Mars 2012

Re: xPL eedomus

Messagepar Pat11 » 18 Mars 2013 13:34

Bonjour
Merci chacks pour se code je vais étudier sa se soir et je te tiens au courant
Bonne journée
Pat11
 
Messages : 71
Inscription : 23 Sep 2012

Re: xPL eedomus

Messagepar Pat11 » 20 Mars 2013 17:21

Bonjour
Merci chacks pour le code, j ai eu du mal , mais en cherchant sur le net j'ai trouvé une librairie
xPL.Arduino au lien suivant : http://connectingstuff.net/blog/xpl-ard ... mment-7427
qui est plus facile à mettre en œuvre et en plus tu as aussi pour recevoir les messages xpl, maintenant il me reste plus qu'a faire la transmission par xbee et arduino
merci encore pour ton aide
Patrick
Pat11
 
Messages : 71
Inscription : 23 Sep 2012

Re: xPL eedomus

Messagepar Pat11 » 21 Mars 2013 10:00

Bonjour
j'ai une petite question, peut on envoyer un ordre xpl à partir de l'eedomus.
merci
Pat11
 
Messages : 71
Inscription : 23 Sep 2012

Re: xPL eedomus

Messagepar Madoma73 » 21 Mars 2013 10:33

Bonjour,
oui, tu peux le faire sans problèmes via les actionneurs XPL disponible en tant que périphérique

Pierre
Pierre
Madoma73
 
Messages : 1441
Inscription : 16 Sep 2012
Localisation : 38

Re: xPL eedomus

Messagepar Pat11 » 21 Mars 2013 18:16

Bonsoir
merci pour la réponse, effectivement ça fonctionne, mais je pense qu'il y a un souci la box doit attendre un retour, car le bouton reste "ON en cours", une petite idée peur être
merci
Pat11
 
Messages : 71
Inscription : 23 Sep 2012

Re: xPL eedomus

Messagepar Pat11 » 27 Mars 2013 20:41

bonsoir
je cherche a récupérer une commande xPL sur mon arduino via une commande par un actionneur xPL de la box, pour actionner deux relais,si quelqu'un à une idée ou un exemple, peut être si chacks passe dans le coin

merci d'avance
Pat11
 
Messages : 71
Inscription : 23 Sep 2012

Re: xPL eedomus

Messagepar Chacks » 29 Mars 2013 08:48

Bonjour,

avec la librairie trouvée sur connecting stuff, il y a une partie réception avec une fonction de parse qui te permet de parser les messages xPL reçus afin de déclencher une action en fonction du type de message reçu. Tu souhaites recevoir quoi exactement?
1 EEDOMUS, modules FIBARO, IPX800 V3, Arduino, sondes T & Rh WS1170
Chacks
 
Messages : 228
Inscription : 06 Mars 2012

Suivant

Retour vers Box eedomus

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 19 invité(s)