|
La Domotique & .Net bonne combinaison
Create from : 3/27/2012
|
Update from : 3/27/2012
|
By : Proteus
|
Seen : 1632
|
Comment(s) : 3
|
|
Il y a maintenant plusieurs semaines j’ai présenté lors de l'édition 2012 des TechDays, un code qui vous permettez de contrôler des appareils électrique grâce à différents produits X10 et un peu de C#. Vous êtes nombreux à m’avoir sollicité pour d’autres produits et/ou d’autres modes de contrôle. Aussi je fais cet article afin de recueillir vos différents besoins afin que nous puissions les analyser ensemble. Avec quels produits dois-je démarrer ? Comme je l’avais mentionné dans un précédent billet. Des fournisseurs de produits X10 il en existe une quantité impressionnante sur le web, pour ma part je passe l’ensemble de mes commandes via « Maison du numérique » les prix sont très correcte et surtout le délaie de livraison est à toute épreuve. Pour commencer vous devez obligatoirement avoir un CM15Pro.
Il représente le gros de votre investissement, c’est lui qui, connecté à votre pc, va faire l’interface entre votre appareil électrique et votre ordinateur. Ensuite pour effectuer des tests avant de vraiment craquer la carte bleue, je vous conseil de commencer petit, prenez juste un AM12 pour contrôler la lumière. Une fois que vous aurez compris les bases, vous pourrez vous lâchez sur des produits plus exotique.
J’ai reçu mon matériel et maintenant quoi ? Suivez ce Lien et procurez vous le SDK de ActiveHome. Une fois que vous l’avez, compilez le et mettez de coter le ficher fraichement reçu. L’adresse Commencez par identifiez l’adresse électrique de votre AM12 c’est cette adresse qui vous permettra d’allumer ou d’éteindre l’équipement. Pour notre exemple nous partirons du principe qu’il s’agit de l’adresse « C3 » (C représente la salle, 3 représente le numéro de l’appareil). Les ordres Les ordres qui nous intéressent sont contenu dans l'enum du coup nous allons developper une classe qui va nous permettre d’envoyer ces ordres. Il n’y a rien de plus à faire qu'instancier la classe et utiliser la méthode qui va prendre en paramètre, le code de l’appareil et l’ordre à envoyer. Notre méthode se chargera de transférer ces informations à l’exécutable que nous avons mis de coté. L'enum Order using System.Runtime.Serialization;
namespace Proteus.Services.HouseController.Contracts
{
[DataContract(Name = "Order")]
public enum OrderEnum
{
[EnumMember]
None,
[EnumMember]
On,
[EnumMember]
Off,
[EnumMember]
DimmUp,
[EnumMember]
DimmDown,
}
}
L'enum HouseCode using System.Runtime.Serialization;
namespace Proteus.Services.HouseController.Contracts
{
[DataContract(Name = "HouseCode")]
public enum HouseCodeEnum
{
[EnumMember]
None,
[EnumMember]
A,
[EnumMember]
B,
[EnumMember]
C,
[EnumMember]
D,
[EnumMember]
E,
[EnumMember]
F,
[EnumMember]
G,
[EnumMember]
H,
}
}
La classe X10Manager using System.Diagnostics;
using Proteus.Services.HouseController.Contracts;
using Proteus.Services.HouseController.Interfaces;
namespace Proteus.Services.HouseController.Implementations
{
public class X10Manager : IX10Manager
{
#region Variables
private string _executableFullNamePath = @"C:\Program Files (x86)\AHSDK\bin\ahcmd.exe";
#endregion
#region Constructeurs
public X10Manager() { }
#endregion
#region Methodes
#region Public
public void SetExecutableFullPathName(string value)
{
if (System.IO.File.Exists(value))
_executableFullNamePath = value;
}
public void SendOrder(HouseCodeEnum houseCode, int portCode, OrderEnum order)
{
string parameterArgs = string.Format("sendplc {0}{1} {2}", houseCode, portCode, order);
ProcessStartInfo processStartInfo = new ProcessStartInfo(_executableFullNamePath, parameterArgs);
processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
System.Diagnostics.Process.Start(processStartInfo);
}
#endregion
#endregion
}
}
Il ne vous reste plus qu'a créer deux methodes qui vont se charger de consommer ce code. public void PowerOn()
{
X10Manager manager = new X10Manager();
manager.SendOrder(HouseCodeEnum.C, 3, OrderEnum.On);
}
public void PowerOff()
{
X10Manager manager = new X10Manager();
manager.SendOrder(HouseCodeEnum.C, 3, OrderEnum.Off);
}
Dès lors, vous devriez déjà avoir une première mouture qui fonctionne. Prochaine étape, un peu d’exotisme dans le passage d’ordre. J’aimerai bien faire un truc plus futuriste Lors des TechDays, j’avais montré comment l’action d’appuyer sur la tête de Nao pouvait declencher l'allumage de la lumière que j’avais achetée la veille. Nous n’avons pas tous des « Nao » sous la main. Alors nous allons commencer par allumer la lumière en commande vocale. using System;
using System.Collections.Generic;
using System.Speech.Recognition;
using System.Windows;
using Proteus.Services.HouseController.Contracts;
using Proteus.Services.HouseController.Implementations;
namespace WpfApplication1
{
public partial class MainWindow : Window
{
#region Variables
private SpeechRecognizer _speechReco;
private List
N'hesitez pas a prendre ce code, copier le dans un nouveau projet WPF. Vous devriez pouvoir faire rapidement un test. Conclusion Les idées sont nombreuses et sans vraiment de limite, vous pouvez très bien imaginer pouvoir contrôler vos volets électrique grâce à Kinect (évitez juste de vous prendre pour « Dark Vador »), etc. Si jamais vous avez des idées mais pour lesquels vous ne voyez pas de solutions technique laissez un commentaire j’essaierai de le reprendre avec vous pour vous aider. |
||||
Comment from Geek attitude
|
|
Sacré projet, je suis vraiment bluffé. Bonnes continuations ! |
||||
| Create from : 5/3/2012 | Adress Ip : 82.242.88.11 | E-Mail : contact@geekattitu.de | Web Site : http://geekattitu.de | ||
Comment from bentou_n
|
|
Peut-on avoir le code source des techdays sur la session domotique. Merci |
||||
| Create from : 5/25/2012 | Adress Ip : 85.168.8.76 | E-Mail : kingnaoufal@hotmail.com | Web Site : | ||
Comment from Proteus
![]() |
Bonjour, une mise a jour de cet article est presente dans le magazine Programmez de cet été. Vous pouvez trouver le code source lié a cet article sur le topic suivant : Maison Connectée. N'hesitez pas a me dire si il manque quelque chose. |
||||
| Create from : 7/8/2012 | Adress Ip : 89.157.145.120 | E-Mail : salah.amer@proteus-groupe.com | Web Site : https://www.proteus-groupe.com | ||