Jan 24

Suivre la consommation de fioul de sa chaudière

Aujourd’hui je vous propose une « petite » technique pour suivre sa consommation de fioul quand on dispose d’une chaudière de ce type pour chauffer son habitation.

En domotique, le suivi de consommation est quand même l’un des axes principal  sur lequel se tourne rapidement les gens qui s’y mettent.

Autant suivre sa consommation d’eau ou d’électricité est relativement simple et aisé, autant suivre une consommation de fioul, c’est beaucoup plus complexe…

Je trouve d’ailleurs étonnant qu’il n’existe pas de solution proposée par les pétroliers et/ou les chauffagistes/vendeurs de fioul pour suivre ce genre de consommation.

Quand j’ai commencé a me pencher sur le sujet, la seule solution que j’ai trouvée était une sonde a incorporer sur la cuve qui, par ultrason, donnait le niveau de fioul restant.

Cet appareil envoi un signal pour dire « y’a presque plus de fioul, faut en recommander », super…

Certains geeks de la domo ont pondu deux, trois trucs toujours axés sur le niveau de fioul dans la cuve, mais je trouve la méthode moyennement fiable.

Moi ce que je voulais, c’est la même chose que mon compteur d’eau, a savoir, le nombre de litres consommé.

Alors les plus avertis d’entre vous me diront, bah t’installe un débitmètre sur le tuyau ! Mouais, et des débimètres « communicants » ça court pas les rues… (si vous avez une piste…)

De plus, je me voyais mal jouer avec les flexibles de fioul dans le sous-sol…

Donc, quand on se fixe un objectif, la première chose à faire c’est de comprendre comment marche le bouzin (parce qu’une chaudière à fioul, on dirait pas, mais c’est une sacré usine à gaz (ah ah ah, ça fait rire que moi, désolé :/ )

Après « quelques » heures passées à éplucher les docs techniques de Geminox, harceler mon gentil technicien qui me fait la révision de ma chaudière, j’ai trouvé une solution plutot pas mal…

  • Ou sort le fioul ?

(je sais DTC…)

Plus sérieusement, d’un… gicleur.

Et au cas où vous ne le sauriez pas, un gicleur est calibré pour envoyer la même dose de fluide constamment.

Et cette « dose » est justement marquée dessus (ou si vous avez de la chance, sur le rapport d’entretien annuel de votre chauffagiste quand il vous le remplace).

Par exemple pour mon cas personnel, mon gicleur est un Danfoss 0,60. Ce qui veut dire que le gicleur envoit 0,60 US Gallon de fioul à l’heure.

L’unité nous étant plutôt lointaine, il faut savoir qu’ 1 gallon = 3,78541178 litres.

Donc, toute les heures de fonctionnement, le gicleur envoit 2 litres 27 de fioul (vous commencez a comprendre où je veux en venir ? non ?…)

Continuons.

L’appareil qui contrôle l’envoi de fioul dans le gicleur, c’est le Brûleur (il fait pas que ça hein :p )

Le mien ressemble à ca :

Un coup de nain ternet et magique, les docs des brûleurs sont disponibles sur le site du fabricant.

Fabricant qui nous donne en plus, gros cadeau, le principe de fonctionnement d’un brûleur :

http://www.bentone.net/formation/forma2.htm

Chapeau pour cette page toute simple qui éclaire n’importe quel néophyte 😀

Donc vous avez maintenant compris où je veux en venir, si on connait le temps de fonctionnement électrique de la pompe ou de l’électrovanne, on peu en déduire le temps de fonctionnement du gicleur et donc combien de litres de fioul il a envoyé 😀

Première piste pour savoir cela, un compteur horaire tel qu’on en trouve chez Conrad :

http://www.conrad.fr/compteur_horaire_c_53207_53709_53719

Sauf que pareil que le débitmètre, je n’en ai pas trouvé de « communicant » :/

Je me prend la tête quelque temps et là, mon pote Nico (aka le Dino Barbu) me souffle une idée de génie : la pince ampèremétrique.

TILT ! le CM119 😀

Et bien sûr, je m’en sers déjà pour récupérer ma consommation électrique de la maison 🙂

Cet appareil est en fait une pince ampéremétrique que vous clipsez autour d’une phase d’alimentation et qui vous donne en temps réel l’intensité consommée sur cette phase.

L’information est émise toutes les 15 secondes sur la fréquence 433Mhz et donc récupérable avec un récepteur compatible tel le RFXCOM.

(le fil jaune qui sort de mon boîtier RFXCOM est en fait une deuxième carte « émettrice » à l’intérieur, je peux donc aussi envoyer des ordres en 433Mhz, promis je poserais une antenne plus tard 🙂 )

Ne reste plus donc qu’a relier une deuxième pince sur le boîtier de contrôle, et la « greffer » sur la phase du moteur du brûleur.

A partir de maintenant, par simple script bash sur le bus xPL qui me remonte les informations de mes équipements domotique, quand une intensité est détectée via le CM119 sur la sonde 2, je déclenche un compteur jusqu’a ce que l’intensité retombe à 0. Donc en gros, quand la pompe/électrovanne (tout dépend où vous vous branchez) marche, je calcule son temps de fonctionnement.

A la fin de la journée, un simple calcul tout bête (automatique bien sûr) :

-Temps de fonctionnement 4h30 minutes

– Débit du gicleur : 2,27 l/h (0.60 de 3,7854 l/h)

– Consommation de fioul du jour : 12 litres en gros

Sympa non ? 😀

Il y a une petite marge d’erreur de quelques litres par mois du a la latence d’émission du boitier  CM119 mais bon, c’est ridicule.

J’avoue c’est très bidouille, bidouille, mais pour comptabiliser sa consommation de fioul, je n’ai rien trouvé de mieux.

A vous lire de vos propres bidouilles 😀

Amusez-vous bien 😀

Classé dans domotique | Taggé , , | 52 Commentaires
Jan 06

Dropbox allume vos lumières

Tout d’abord, je vous souhaite à tous une excellente année 2012 😀

Qu’elle vous apporte plein de petits plaisirs et de grand bonheur qui font la joie de notre vie de tout les jours 🙂

Je vous propose une petite bidouille rigolote dont je me suis servie dernièrement en l’absence d’accès web sur mon serveur domotique.

Comme nombreux parmi vous je me sers de Dropbox entre mes serveurs, pcs, téléphone Android etc..

Bien évidemment, mon serveur domotique dispose d’un répertoire partagé avec mes autres équipements.

Il m’est arrivé de devoir ouvrir la porte de mon garage à distance (chose courante qui se gère par différents accès SSH, API ou interface Web) mais je n’avais pas accès à ses environnements depuis le lieu où je me trouvais. A part un accès a mon Dropbox…

Et là, j’ai eu une idée farfelue, controler par Dropbox l’interaction avec les équipements domotique 😀

Hop, c’est parti, comment j’ai mis cela en place.

Tout d’abord, bien sûr, il faut sur votre serveur domotique un Dropbox qui tourne 😉

Ensuite, on va utiliser l’excellentissime INCRON

Quoi que c’est INCRON ?

Et bien, c’est une sorte de crontab mais qui se base sur la librairie Inotify du noyau.

En gros, le démon INCRON détecte tout changement sur un ou des fichiers dans un répertoire défini, et exécute une action en conséquence.

Magique 🙂

On installe donc INCRON sur notre serveur

apt-get install incron

Dans le fichier /etc/incron.allow on ajoute les utilisateurs autorisés.
On se configure dans le répertoire /etc/incron.d/ deux petites actions, l’un en cas de création ou de copie de fichier dans le répertoire cible, l’autre en cas de suppression de ce fichier.

cat /etc/incron.d/lumieres
 
/home/guiguiabloc/Dropbox/domodrop IN_CREATE,IN_MOVED_TO /usr/local/bin/heyu on $#
 
cat /etc/incron.d/lumieresoff
/home/guiguiabloc/Dropbox/domodrop IN_DELETE,IN_MOVED_FROM /usr/local/bin/heyu off $#

Petite explication :

D’abord, le répertoire à surveiller : /home/guiguiabloc/Dropbox/domodrop

Ensuite l’évènement à surveiller (création, déplacement dedans, suppression, déplacement en dehors etc..)

La liste de tout les évènements possibles est visible en tapant :

$ incrontab -t
 
IN_ACCESS,IN_MODIFY,IN_ATTRIB,IN_CLOSE_WRITE,IN_CLOSE_NOWRITE,IN_OPEN,
 
IN_MOVED_FROM,IN_MOVED_TO,IN_CREATE,IN_DELETE,IN_DELETE_SELF,IN_CLOSE,
 
IN_MOVE,IN_ONESHOT,IN_ALL_EVENTS,IN_DONT_FOLLOW,IN_ONLYDIR,IN_MOVE_SELF

Enfin, l’action a effectuer, dans le cas de ce test, j’appelle l’utilitaire HEYU ( contrôle X10) et je lui passe en paramètre le nom du fichier par la variable $#.

Et voila, maintenant, par un simple copier-coller, si je dépose le fichier nommé « A2 » dans le répertoire domodrop de mon Dropbox, la lumière référencé par le module A2 s’allume, si je supprime le fichier, elle s’éteint 🙂 (bien évidemment avec le temps de décalage de synchronisation de Dropbox)

Pour voir ce que cela donne, je vous ai même fait un petit film ! 🙂

Marrant 😀 😀  😀

Alors je ne sais pas si cela va vous servir, en tout cas, c’est bien fun :p

Amusez vous bien 😀

Classé dans domotique | 6 Commentaires
Déc 23

Projet xPL-pyHAL, un cerveau xPL, Episode 1

Si vous suivez ce blog et ses derniers billets (grand bien vous en fasse 🙂 ), vous savez que je me consacre de plus en plus à la domotique (pour diverses raisons dont vous trouverez l’explication dans cet historique justement).

En plus de cette passion pour la domotique, je me suis pris d’un grand intérêt pour le protocole xPL.
(et de nouveau je vous invite à lire l’excellent billet de Thibault sur son blog).
Qui dit xPL, dit forcément une lecture soutenue des différentes pages du projet xPL et de la rencontre avec ses différents acteurs.
D’ailleurs, mon engouement sur le sujet vient aussi beaucoup de l’activité française dans ce domaine et des contacts enrichissants et passionnants avec les passionnés de Domotique en France, que je salue au passage, dont le dévouement et l’implication font que cette communauté est a elle seule, une raison de les rejoindre.

Bref, comme vous l’avez vu, j’ai commencé a poindre mon nez en fournissant un premier client xPL écrit en python, qui, à ma grande surprise, a reçu un accueil très favorable et enthousiaste (au point d’être référencé dans les développeurs xPL du projet sur la page d’accueil !!!).
J’avoue avoir était grandement surpris et je remercie les agitateurs du projet pour leur soutien.
D’un autre côté, cela vous met une pression grave 🙂 (en plus d’une demi-molle je l’avoue…)

Dans cette progression personnelle que j’ai, j’ai donc commencé à pondre du code (et là, les gens qui me connaissent bien doivent halluciner 😀 ).
Le langage de développement qui m’a très vite attiré est bien sûr Python (loin de moi l’idée de lancer un troll sans fin sur les remarques « mais t’es nul Java c’est mieux! », parce que bon, java, euh, comment dire… (bah non je vais rien dire mais j’en pense pas moins :p ))
Alors attention, je ne suis pas développeur du tout, mon métier c’est le système/réseau (plutôt réseau d’ailleurs), et donc je conçois totalement d’être hué, haï, conspué et dénigré par des « vrais » développeurs (quand ils existent), et si j’ai fait le choix de Python comme langage de prédilection, c’est qu’il répond à mes attentes, qu’il est très puissant, et que j’aime bien les serpents.
S’tout.

Cela étant dit, pour en revenir à nos moutons, dans une architecture xPL, un des éléments qui peut s’avérer important est ce que l’on appelle le xPLHal.
Vous en trouvez l’explication ici .
C’est un « moteur » central xPL, il écoute les messages transitant dans les hubs xPL et exécutent des actions en conséquence de ses messages ou suivant une programmation horaire définie par l’utilisateur.
Pour contrôler ce moteur, il y a un xPL-HalManager qui est l’interface entre l’utilisateur et le xPLHal.
Alors bien évidemment, cet xPL-Hal n’est pas obligatoire, beaucoup utilisent des scripts maison (surtout dans le monde Linux), ou autres bidouilles.
Sous windows, vous trouverez votre bonheur, mais sous Linux, c’est un peu le désert, a part un XPLHAL java plus maintenu depuis 2008.

Et en python, rien… (a part le projet Domogik bien sûr).
Parent pauvre de la domotique, Linux est durement supporté par une poignée de personnes face aux mastodontes Windoziens (aka Homeseer bien sûr) et c’est bien dommage au regard des gens qui sont actifs dans ce milieu.

Je me suis donc mis en tête et en cheval de bataille sur ses prochains mois, d’écrire un xPLHal en python.
La charge du projet est importante si l’on considère les pré-requis, et peut-être même insurmontable, mais après tout pourquoi pas.
Déjà cela m’obligera a me familiariser avec python, avec xPL, et surtout, le plus important à mes yeux, d’essayer d’offrir quelque chose de plus à la communauté.

Dont acte, début du projet xPL-pyHAL.

J’espère vous donner une première ébauche de ce que j’ai écrit, mais les premiers pas sont encourageants surtout quand on apprend le langage en même temps 🙂
Je suis parti pour l’instant sur une configuration à base de fichiers YAML (un simple fichier typé par module à surveiller dans lequel vous spécfifiez les règles a déclencher quand une action sur le module est détectée) et qui pour les premiers tests marchent plutôt bien (action de type HEYU, stockage dans un Memcached ou message de type Notifry (clin d’oeil a Thibault au passage pour son excellent xPL-PushMsg 😉 ) etc…) bref, ça avance et j’espère vous détailler plus tard un peu plus de ce projet qui me tient à coeur pour 2012.

Le projet sera hébergé ici : http://code.google.com/p/guiguiabloc/ (avec la création d’un nouveau logo pour l’occasion 😀 )

En attendant, je vous souhaite à tous d’excellentes fêtes de Noël et de fin d’année 😀

Classé dans domotique | Taggé , , , | 16 Commentaires
Oct 31

xPL et NUT, récupérer les données de votre onduleur

Comme la majorité des passionnés qui touche à la domotique, j’utilise le protocole xPL pour centraliser les informations de mes équipements.

Si vous ne connaissez pas encore le principe, je vous invite à lire les excellents billets de Thibault et Mickael à ce sujet :

http://www.poulpy.com/2010/02/xpl-one-protocol-to-rule-them-all/

http://www.planete-domotique.com/blog/2011/05/18/le-protocole-xpl/

Et bien sûr, le site du projet lui-même :

http://xplproject.org.uk/wiki/index.php?title=Main_Page

C’est un protocole fiable, performant et acté par les plus fervents agitateurs de la domotique (par exemple Domogik, un des projets français les plus prometteurs actuellement dans la mise à disposition d’une solution « tout-en-un » (et libre surtout !) ou RFXCOM, un des leaders des équipements domotique RF qui intègre désormais nativement le xPL dans ses produits).

Moi, comme beaucoup de mes confrères passionnés, je suis absolument convaincu du fait qu’il faille définir un protocole standard pour l’interaction des équipements de domotique, bien évidemment, ouvert, et bien évidemment, xPL répond à cette attente.

Jusqu’a maintenant, j’utilisais beaucoup les scripts de la communauté, et surtout ceux de l’excellentissime Mark Hindess connu sous le pseudo de beanz et auteur du framework xpl-perl.

Et puis vient le moment où l’on a un besoin précis qui n’existe pas…

En l’occurence, je voulais récuperer les données et l’état de mon onduleur et bien sûr en xPL.

Je fais le tour des solutions et il existe xpl-apcups du même Mark pré-cité mais, mince, flûte, sacrebleu, il ne fonctionne qu’avec apcupsd.

Bon, tant pis, je me dis que je vais revoir le code pour le faire fonctionner et là, forcément, je sèche comme une blonde décolorée aux attributs siliconés  sur une plage méditerranéenne en plein mois d’août.

Parce que bon, Perl et moi… Comment dire… Autant expliquer le principe du cum-swapping à une none ayant fait voeu d’isolement… (avouez que vouliez un lien !!!!)

Donc je me dis que je vais tenter de l’écrire moi-même mon client, ayant aborder Python du coin de l’oeil je regarde ce qu’il existe et je trouve un petit exemple de John Bent sur le site du projet xPL.

Quelques litres de café plus tard (s/café/bière/), je vous propose donc xpl-nut.

Vous pouvez bien sûr le télécharger ICI
Ou sur le projet GoogleCode :
http://code.google.com/p/guiguiabloc/

J’ai essayé de suivre les recommandations du projet xPL.

Les schémas utilisés sont UPS.BASIC et SENSOR.BASIC

Concernant les recommandations TRIGGER, il est demandé de n’émettre une trame que lors d’un changement d’état mais personnellement, j’ai passé outre, préférant avoir une remontée constante des informations.

EDIT : Suite aux discussions avec l’équipe Domogik, j’ai revu mon code pour être « aux normes » et donc le format de message est donc de type STAT désormais et TRIG en cas de changement d’état (version 1.1 du script)

Comme donner un script python comme ça ne sert pas à progresser, et comme j’ai pris du plaisir à l’écrire (et oui :p), je vous propose d’en voir les parties intéressantes, au cas, où, comme moi, vous décidez d’écrire vos propres clients xPL

#############
# variables
#############
upsaddr='127.0.0.1'
upsport=3493
polltime=10
nomups = 'mononduleur'
 
xpladdr = ("255.255.255.255",3865)
UDPSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
UDPSock.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)

Ici rien de compliqué, on définit les variables essentielles, a savoir :
– upsaddr : l’adresse IP du démon NUT
– upsport : le port du démon NUT
– polltime : la fréquence d’interrogationdu démon NUT en secondes
– nomups : le nom de votre onduleur, tel que définit dans votre /etc/ups.conf
– xpladdr : l’adresse et le port de broadcast pour les messages

Le code suivant est la préparation de l’ouverture d’un socket UDP.

etatonduleur = "get var "+nomups+" ups.status\r\n"
voltage= "get var "+nomups+" input.voltage\r\n"
batterycharge= "get var "+nomups+" battery.charge\r\n"

Ici on définit les requètes que nous allons passer au démon NUT.
Si vous faites un « telnet ip_du_nut_demon 3493 » par defaut, vous avez accès a une console qui vous permet d’interroger le démon NUT.
HELP donne l’aide (nan ????)
GET VAR nomdelonduleur input.voltage donne le voltage en entrée
etc…
Pour avoir la liste des variables, il vous suffit de taper : upsc nomonduleur.

Voici par exemple ce que cela retourne chez moi :

srv-guiguiabloc:/etc/nut# upsc mgeups
battery.charge: 100.0
battery.charge.low: 30
battery.runtime: 02655
battery.voltage: 055.2
battery.voltage.nominal: 048.0
device.mfr: MGE UPS SYSTEMS
device.model: Pulsar ESV22+
device.type: ups
driver.name: mge-utalk
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS0
driver.version: 2.4.3
driver.version.internal: 0.89
input.frequency: 50.00
input.transfer.boost.high: 212.0
input.transfer.boost.low: 204.0
input.transfer.high: 248.0
input.transfer.low: 204.0
input.transfer.trim.high: 248.0
input.transfer.trim.low: 240.0
input.voltage: 227.0
output.current: 002.9
output.voltage: 224.1
ups.delay.shutdown: 020
ups.delay.start: 001
ups.firmware: 2
ups.id: Pulsar ESV22+ 2
ups.load: 027.0
ups.mfr: MGE UPS SYSTEMS
ups.model: Pulsar ESV22+
ups.status: OL
ups.test.interval: 10080

A vous de forger les requètes en conséquence 😉

s.send(etatonduleur)
    data = s.recv(50)
    resultat = data.split()
    statusbatt = resultat.pop()
    statusbatt = statusbatt.replace('"','')
    statusbatt = statusbatt.replace('OL','onmains')
    statusbatt = statusbatt.replace('OB','onbattery')
    statusbatt = statusbatt.replace('LB','lowbattery')
    body = 'status=battery\nevent='+statusbatt
    msg = "xpl-trig\n{\nhop=1\nsource=guigui-xplnut."+hostname+"\ntarget=*\n}\nups.basic\n{\n" + body + "\n}\n"
    UDPSock.sendto(msg,xpladdr)
    print msg

J’envois la requète au démon NUT et je récupère le résultat que je traite (salement je l’avoue).
Je forge ensuite le message xPL que j’envois dans le réseau.

Le reste du code est assez basique et vous devriez en comprendre le fonctionnement avec ses quelques explications.
soyez indulgent, je suppose que mon code n’est pas très propre et si vous êtes un pro du python, je suis ouvert à vos recommandations ! 😀

En tout cas, cela marche très bien et pour un premier script xPL j’en suis plutôt fier 🙂

Une fois lancé, vous devriez voir les remontées dans votre bus xPL:

[xpl-trig/ups.basic: guigui-xplnut.Thanatos -> * - battery onmains]
[xpl-trig/sensor.basic: guigui-xplnut.Thanatos -> * - mgeups[voltage]=225.7]
[xpl-trig/sensor.basic: guigui-xplnut.Thanatos -> * - mgeups[battery]=100.0]

En espérant que cela vous serve,

Amusez vous bien 😀

Classé dans domotique | Taggé , , , | 4 Commentaires