Is there any french people here? Est ce qu'il y a des Français ici?

Salut @Ludus

En fait inutile de récupérer les identifiants des prises puisqu’elles sont capables d’apprendre le code que tu leur donne.
il faut donc leur donner un nom distincte (si tu en a plusieurs) et faire fonctionner les prises l’une après l’autre en mode apprentissage.
Je ne peu pas partager l’intégralité de mon code (pour des raisons évidentes de sécurité) car c’est ma central domotique et alarme qui est géré par le Spark Core.
je suis prêt à t’aider la ou tu bloque (voir te donner des morceaux de code) si tu as besoin des librairies 433Mhz.

Ces sites t’aideront beaucoup dans le développement:
http://blog.domadoo.fr/2010/03/21/principe-du-protocole-homeeasy/
http://damien-battistella.fr/controle-de-prise-chacon-dio-first-via-raspberrypi/

Un Système d’alarme exploitant Wifi ? Est-ce une Blagounette ?

L’alarme est autonome en hard bien sur, mais l’interface web pour le monitoring, c’est le spark Core qui s’en charge.
Tout comme le pilotage sans fils de quelques appareils ainsi que l’envoi de mail/sms sur événement et les mesures de puissance consommées, mesure de températures…
Je ne vois pas ou est le problème d’utiliser le wifi?

@JP2M Merci beaucoup pour cette réponse rapide. Je pense que je vais m’en sortir avec ces infos.

Just wanted to let everyone know that Spark products are now available on http://shop.mchobby.be/

They have also translated some of our documentation into French:

http://mchobby.be/wiki/index.php?title=Spark-Core-Matériel

http://mchobby.be/wiki/index.php?title=Spark-Core-Brochage

http://mchobby.be/wiki/index.php?title=Spark-Core-TechInfo

http://mchobby.be/wiki/index.php?title=Spark.IO-Démarrer

If you notice any errors please let me know - my French is not very good these days…

1 Like

@JP2M Je suis actuellement en train de faire un projet similaire. Pourrai tu nous donner un morceau de code afin de voir les modifications que tu as apporté à la librairie Manchester.
J’aimererai simplement pouvoir allumer ou éteindre la prise Chacon

voila la librairie entière :wink:

Voila l’instruction qui permet d’allumer EasyHome.Send (IDprise,0,1); ou eteindre EasyHome.Send (IDprise,0,0);

IDprise étant la valeur de votre choix en hexadecimale (ex: 0x9F000000)

EasyHome.cpp

#include "application.h"
#include "EasyHome.h"


EasyHome::EasyHome(int pin) //constructor
{
pinMode(pin, OUTPUT);
_pin=pin;
}


void EasyHome::Send(unsigned long ID, unsigned char DEVICE, unsigned char ON_OFF)
{

unsigned char i, no;
unsigned long stream;
 
//En réalité on envoi 5 trames successives car c'est le minimum requis lors de l'apprentissage même si ensuite 2 trames suffisent)
 for(no=0; no<5; no++)
 {
  
  //Construction de la trame 32 bits complète à transmettre 
  stream = 0x00000000;
  stream = ID & 0xFFFFFFC0;  		//Insersion identifiant
  stream = stream | (DEVICE & 0x0F);				//Insersion numéro du device (système) à commander
  if (ON_OFF == 1) stream = stream | 0x00000010; 	//Insersion ordre ON/OFF

/*
The 433.92 Mhz receivers have AGC, if no signal is present the gain will be set to its highest level.
In this condition it will switch high to low at random intervals due to input noise.
A CRO connected to the data line looks like 433.92 is full of transmissions.

Any ASK transmission method must first sent a capture signal of 101010........
When the receiver has adjusted its AGC to the required level for the 
transmisssion the actual data transmission can occur.
*/
for(i=0; i<14; i++)
  {
    digitalWrite(_pin,HIGH);
    delayMicroseconds(275);
    digitalWrite(_pin,LOW);
    delayMicroseconds(275);
  }
  //Emission du l'indicateur de début de transmission
    digitalWrite(_pin,HIGH);
    delayMicroseconds(275);
    digitalWrite(_pin,LOW);
    delayMicroseconds(2675);
    
  //Envoi de l'octet à transmettre....
for(i=0; i<32; i++)
  {
   //On envoi "l'indicateur" de bit
    digitalWrite(_pin,HIGH);
    delayMicroseconds(275);
    digitalWrite(_pin,LOW);

   //Puis on envoi la séquence correspondant au "1" ou au "0" conforme à la norme home easy 
if((stream&0x80000000)!=0)   
   {
    delayMicroseconds(1225);
    digitalWrite(_pin,HIGH);
    delayMicroseconds(275);
    digitalWrite(_pin,LOW);
    delayMicroseconds(275);
   }
else
   {
    delayMicroseconds(275);
    digitalWrite(_pin,HIGH);
    delayMicroseconds(275);
    digitalWrite(_pin,LOW);
    delayMicroseconds(1225);
   }
    stream=stream<<1;
  }
  // Fin de trame
    digitalWrite(_pin,HIGH);
    delayMicroseconds(275);
    digitalWrite(_pin,LOW);
  //delais de 20ms avant l'envoi de la nouvelle trame
  delay(20);
 }
} 

et EasyHome.h

#ifndef EasyHome_h
#define EasyHome_h

#define SPARK	1		//Temporary until done by IDE compiler

#include "application.h"


class EasyHome
{
	public:
		EasyHome(int pin);
		void Send(unsigned long ID, unsigned char DEVICE, unsigned char ON_OFF);
	private:
		int _pin;
};
#endif

Merci pour ton code. Je vais essayer ça rapidement !

@JP2M

Je n’arrive pas à compiler . Bizarrement j’ai pas mal d’erreurs.
J’ai ajouté SPARKINTERVALTIMER, mais toujours pas fonctionnel
J’ai essayé la libraire MANCHESTER. Et ça compile bien.

Serait il possible d’avoir un exemple de votre fichier .ino ?

quel genre d’erreur?

inutile d’ajouter sparkintervaltimer et manchester pour que ça fonctionne (tout est dans la librairie que j’ai fournit). :wink:

as tu mis un #include "EasyHome.h" dans ton code? (tout au début)l
as tu déclaré le pin du spark core que tu utilise pour alimenter ton module 433Mhz dans le void setup()?

pinMode(TA_SORTIE, OUTPUT);

il faut aussi ajouter la déclaration de ta sortie pour la librairie EasyHome (avant le void setup())

   //Config 433Mhz
#define TX_PIN	A4//pin ou le transmeteur est connecté
EasyHome EasyHome(TX_PIN);  // initialisation de la sortie

Je n’ai plus de message d’erreur mais par contre impossible d’allumer la prise.
sur Raspberry j’utilise : 0 (PIN_TX) 666 (CODE_TELECOMMANDE) 1 (CODE_RECEPTEUR) on (ON ou OFF)
Voici mon code Spark :

 #include "EasyHome.h"


//Config 433Mhz
#define TX_PIN	A4//pin ou le transmeteur est connecté
int alim = D0;
EasyHome EasyHome(TX_PIN);  // initialisation de la sortie

void setup() {
pinMode(alim,OUTPUT);
digitalWrite(alim, HIGH);
}

void loop() {
 EasyHome.Send(0x29A,1,1);
  //EasyHome.Send(0x9F000000,0,0);// Wait for 1000mS = 1 secon
  delay(1000);       
}

Il faut faire un peu d’effort quand même…
je ne sais pas si le programme (pour Spark Core) fonctionne sur raspberry.
Mais vérifie la déclaration de ta sortie (pin ou le transmeteur est connecté) il y a un problème.

Thanks for the link Stephanie… not that I will buy parts from Belgium since I’m in Quebec but the french docs are cool.