Mar 09

Ici, c’est Brest !

Un billet un peu différent, complètement à côté même de l’habituel fil de ce blog.

Je voulais juste déclamer l’amour que je porte à ma ville, Brest.

Alors oui, elle n’est pas belle, un peu abîmée par la guerre, un peu taillée à coup de serpe et de bétons pris à la va vite sur des immeubles sans charme et des carrelages blancs et noirs qui hantent les cages d’escaliers.

Elle a cette froideur indécente et dérangeante qui nous pousse à ne pas la regarder, à l’oublier, a faire comme si, après tout, elle n’existait pas, elle nous trouble, comme cette fille dont on était secrètement amoureux au primaire mais que jamais, au grand jamais, on n’aurait osé aborder.

Mais j’aime ses rues taillées au cordeau, ce vent cinglant qui nous bouscule quand on déboule sur Siam, ses mouettes qui n’ont plus depuis longtemps peur ni des voitures ni des piétons.
L’omnipresence de la rade au coin d’une rue et le crachin passager qu’un soleil rapide vient remplacer la minute suivante que, brestois habitué, vous ne vous laissez pas prendre au piège et gardez sur vous, la parka nécessaire à la gifle brutal qu’un coup de pluie viendra suivre, peut-être…

Car a Brest, il n’y a pas de météo, pas d’Eveline Delhia pour vous annoncer la journée, ici c’est à la minute, à l’heure, d’une pluie cinglante à un crachin revigorant ou un soleil pesant ou fugace (qui semble illusoire pour ceux qui ne sont pas d’ici), on vit à la marée, au bon vouloir des courants et d’un climat des plus océaniques et des plus despotiques.

Brest c’est ses vieux quartiers toujours plein d’une vie de bohème où se cotoient cadres et ouvriers, irlandais et marins, étudiants et passagers, ces bars innombrables et pourtant tous différents qui vivent, meurent, renaissent et d’un mois à l’autre, la vie nocturne change, varie, s’éclipse, se déplace, vit tout simplement.

C’est ses gens, tous différents, tous incroyables, ces après-midis dans un délire phisolo-littéraire-écolo qui tourne en une soirée entourée d’irlandais rigolards, roublards et rougis dans un pub improbable au sol collant de Guinness et se termine au matin dans un after-techno-new-wave dans un lieu qui l’est encore plus.
Vous ne vous rappelerez d’ailleurs sûrement de rien, ou de pas grand chose, a part d’avoir croisé, peut-être quelqu’un de connu, « ah je l’ai vu a la télé lui.. », oui lui, mais chut, ses gens la, eux aussi sont brestois.

Et par chance, sûrement, vous traînerez en bas, vers Siam, Recouvrance ou le Port de Commerce, gardant un souvenir de moules-frites arrosées, de tapas pimentés ou de rencontres féminines qu’un « t’as perdu ta lank myon ? » refroidiront vos ardeurs (même en tentant une approche « y’a moy’ ou quoâ ? »)

A traîner, vous passerez d’un complexe mégalo-commercial à une boutique de coin de rue brinquebalante, découvrant parfois, des lieux insolites et improbables comme des cimetières attachants, des fortifications du XIVe siècle ou allez même, jusqu’a un stade de foot sous les feux de la rampe niché au détour d’une artère.

Sonné, étourdi de souvenirs, devant le pont de Recouvrance, étendu sur le sable du Moulin-Blanc ou endormi sur un banc du cour Dajot, vous réaliserez peut-être que cette ville n’est pas si moche que ça, parce qu’ici, c’est Brest…

Alors oui, je t’aime Brest et juste là, je voulais te le dire.

Classé dans Non classé | 5 Commentaires
Fév 22

PushingBox, vos notifications « in the cloud »

Aujourd’hui je vais vous parler d’un nouveau service qui vient d’ouvrir : PushingBox.

Cela me fait d’autant plus plaisir de vous en faire sa « publicité » car l’un des membres pensant de ce projet est un confrère, Clément Storck, dont je vous avez déjà parlé dans de précédents billets (enfin surtout de son blog hein :p).

Raison supplémentaire, Clément m’a fait l’immense plaisir d’être béta-testeur de ce projet il y a quelques semaines et c’est donc avec impatience que j’attendais son ouverture officielle (du projet hein, pas de Clément..) pour vous en parler (secret-défense toussa, conspiration, mots chuchotés et courrier crypté en AES256 et blowfish (nan j’déconne).

Bref, c’est avec grand plaisir que je vous annonce le lancement officiel du service PushingBox.

Alors a quoi ca sert ?

PushingBox est un centralisateur de notifications. C’est à dire qu’il vous permet de créer et de gérer des scénarios de notifications pour vos applications (domotique dans mon cas).

La liste des notifications disponibles au lancement du service est déjà bien garnie :

  • Email
  • Twitter
  • Karotz
  • Prowl
  • Pushme.to
  • Toasty
  • Notifry
  • Notify My Android
  • GetNote

Et ce n’est qu’un début 🙂

Comment ça marche ?

Et bien vous allez voir, c’est tout simple :

Supposons que vous désirez une notification qui arrive simultanément sur votre compte Notifry et votre email en cas de détection sur une intrusion chez vous.

Dans la partie services, vous allez créer les « cibles » qui vont recevoir les notifications.

Dans mon cas, un email avec le sujet et le message a envoyer.

Puis le service Notifry avec le sujet et la clé Notifry.

Ensuite le scénario dans lequel vous allez ajouter les deux services précédemment créés.

Un clé « deviceid » est généré dont vous allez vous servir pour exécuter le scénario en utilisant l’API fournie par PushingBox.

La méthode la plus simple :

curl -d "devid=v35883B72B89AFAC" http://api.pushingbox.com/pushingbox

et boum, vous recevez un email et la notification Notifry !

C’est pas génial ? Si, je l’avoue

D’autres méthodes d’appel à l’API sont disponibles sur la page du projet :

http://www.pushingbox.com/api.php

Sachez également que son intégration avec l’Arduino est de déjà disponible.

Si comme moi vous utilisez énormément Python, voici la classe que j’ai écrite pour envoyer mes alertes sur PushingBox :

import urllib, urllib2
class pushingbox():
  url = ""
  def __init__(self, key):
    url = 'http://api.pushingbox.com/pushingbox'
    values = {'devid' : key}
    try:
      data = urllib.urlencode(values)
      req = urllib2.Request(url, data)
      sendrequest = urllib2.urlopen(req)
    except Exception, detail:
      print "Error ", detail

L’appel de la classe se fait très simplement :

from PushingBox import pushingbox
key = "v35883B72B89AFAC"
pushingbox(key)

(il vous suffit de variabiliser la valeur « key » pour envoyer votre notification au bon endroit)

Voici donc un service excellent, de plus Gratuit (et c’est à souligner de nos jours), et seul un compte Google vous suffit.

Toutes mes félicitations à Clément et ses collègues pour ce webservice indispensable dans nos installations domotique.

Longue vie au projet 😀 et Merci à Clément pour sa confiance sur le lancement du projet 😉

Classé dans domotique, geekerie | Taggé , | 12 Commentaires
Fév 16

Client xPL pour la carte ipx800

Un petit billet rapide pour vous informer de la mise à disposition d’un client xPL pour la carte IPX800 de GCE-Electronics que tout les fans de domotique connaissent 🙂

Vous trouverez le script et le code source sur mon google code :
http://code.google.com/p/guiguiabloc/downloads/detail?name=xPL-ipx800.py&can=2&q=

Pour le moment je ne gère que les ordre on/off sur les relais de 1 à 8 par un message standard xPL basé sur le schéma control.basic.

Exemple :

xpl-sender -m xpl-cmnd -c control.basic device=ipx800
 type=output current=on|off data1=1|2|...

Où data1= le numéro du relais

En espérant que cela vous serve autant qu’à moi 😉

Classé dans domotique | Taggé , | Commentaires fermés sur Client xPL pour la carte ipx800
Fév 12

Domotiser son chauffage au fioul

Quitte à tripoter ma chaudière fioul, autant en profiter pour la domotiser un peu 🙂

Quand je dis domotiser, je parle bien évidemment de la régulation/programmation du chauffage.

Pour les chauffages électriques, c’est de la rigolade, puisque dans la plupart des cas, c’est natif (fil pilote, thermostat d’ambiance, que sais-je encore…)

Pour les chaudières Gaz, mon « confrère » bloggeur, Abavala (je peux t’appeler confrère Hervé ? :p ), a écrit un excellent billet à ce sujet que je vous invite à lire de suite :

http://www.abavala.com/2011/10/24/ma-chaudiere-a-lapproche-de-lhiver/

Quand au chaudière fioul, bah y’avait pas grand chose…

Alors tout d’abord, petit rappel de fonctionnement.

Ma chaudière est une « vieille » chaudière (comme Karen Cheryl) (spécial clin d’oeil à Fred qui se lamentait de ne plus avoir de lien vers sa chanteuse favorite) (pardon Karen).

Elle n’a donc aucun dispositif de thermostat d’ambiance.

(Vous me direz, je pourrais en changer et mettre un truc de la mort qui tue avec toutes les options, mais bon, c’est comme mes PCs ou ma femme, je suis assez basique la dessus, tant que ça marche, pourquoi en changer ?..)

C’est une chaudière qui produit de l’eau chaude (nommée ECS dans les milieux autorisés, pour Eau Chaude Sanitaire).

Donc elle est composée d’un brûleur (qui brûle le fioul ah ah ah) et chauffe l’eau du ballon incorporé pour me permettre de prendre ma douche dans des conditions acceptables en hiver (et en été aussi d’ailleurs…) et également l’eau qui est envoyé dans le circuit d’eau des radiateurs par un Circulateur.

Ce circulateur est une sorte de pompe qui ne fait que faire « circuler » (d’où son nom, comme quoi la nature est bien faite) l’eau dans le circuit.

Alors un circulateur, c’est ça :

En mode « été », on coupe le circulateur d’eau chaude qui donc n’envoi plus d’eau dans le circuit des radiateurs (magique hein ?).

Sous ce circulateur, nous avons un gros thermostat d’avant guerre qui permet de « régler » la température de l’eau chaude envoyée dans le circuit (en fait une simple vanne qui permet de doser le volume d’eau chaude envoyé).

Vanne qui ne me sert à rien puisque tout mes radiateurs (sauf 1 bien sûr (obligatoire!)), sont équipés de robinets thermostatiques, c’est pour quoi elle est ouverte à fond.

Je peux donc, individuellement, contrôler la température de chaque « pièce/radiateur » (si je met le robinet thermostatique a 21°, le robinet coupe l’arrivée d’eau chaude dans ce radiateur une fois cette température atteinte dans la pièce).

Bon je ne vous expliquerais pas le fonctionnement du robinet, on s’en moque un peu.

Alors déjà ça c’est bien, mais le matin, quand on quitte la maison, on se voit mal faire le tour de tout les radiateurs (j’en ai 13 !) pour baisser la température de 2°.

Donc bilan, on laisse tel quel et dans la journée, quand personne n’est la (à part le lapin), ben ça chauffe pareil que quand on est la…

D’où l’idée de gérer un peu tout cela par le serveur Domotique.

De quoi dispose t’on pour traiter de sujet ?

La majorité des pièces de mon domicile sont équipées de sondes de température, mon système domotique « connait » donc la température de chaque pièce.

On ouvre la chaudière et on regarde un peu les branchements électriques :

Alors oui, c’est très old-school… Nous avons le fil d’alimentation du circulateur qui arrive sur un bornier et donc qui est alimenté quand la chaudière est mode Hiver et coupé quand elle est en mode été.

Ne reste plus qu’a se greffer la dessus.

Pour cela, rien de plus simple, il nous faut un contacteur on/off 1000w Chacon (RF 433Mhz)

Un interrupteur va-et-vient (pour passer en mode normal si le système domotique venait à ne plus fonctionner), un voyant rouge 220v (pour faire zoli et voir quand le circulateur est alimenté) et une boiboite pour mettre tout ca dedans.

Soudure, domino et tadammmmm :

The Chaudiere-Controler made by GuiguiAbloc.

Essentiel pour la compréhension, un schéma électrique bien pourri (PS: Pour ceux qui aurait dormi en cours d’électricité P = Phase (ou aussi L comme « Live ») et N = Neutre):


(Quizz a mes amis du réseau : De quel équipement est tiré l’oreille qui sert de support à mon domino ? 😀 )

Maintenant que l’on peut contrôler l’arrêt/marche du circulateur, comment on programme cela ?

Alors vous allez voir c’est assez basique.

Tout d’abord, on se créé un template crontab qui sera chargé tout les jours de la semaine de 8h à 18h.

Comme mon serveur domotique « plotte » nos agendas, si nous sommes en RTT/Vacances/Pas envie d’aller bosser , il ne charge pas la crontab dans ce cas là.

Une fois cette crontab chargée, il exécute un script tout les quart d’heure qui vérifie les consignes qui lui sont données dans un fichier YAML. Si la température est au-dessus de ses consignes, il coupe le circulateur, sinon il le relance. Par contre, si une des températures de la maison venait a descendre en dessous du seuil minimum, il relance le circulateur.

La commande on/off du module Chacon est envoyée sur le bus xPL et transmise par mon boîtier RFXCOM.

J’ai donc écrit un script en python qui est lancé toutes les 15 minutes :

NB: C’est une version allégée de celui que j’utilise

Exemple fichier YAML de consigne :

SALON: 18.0
SDB : 20.0
MINITEMP : 17.0

Le script :

#! /usr/bin/python
# -*- coding: cp1252 -*-
 
import MySQLdb, sys
import yaml, socket
 
# YAML
fichieryaml = open('consigne.yaml')
consigne = yaml.load(fichieryaml)
fichieryaml.close()
 
# ALIMENTATION VARIABLE
consignesalon =  consigne['SALON']
consignesdb = consigne['SDB']
minitemp = consigne['MINITEMP']
hostname = socket.gethostname()
 
# CONNECTEUR UDP XPL
UDPSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
UDPSock.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
 
# fonction Message XPL
def xplmsgcmnd(ordre):
  msg = "xpl-cmnd\n{\nhop=1\nsource=guigui-chauffage." +hostname+"\ntarget=*\n}\nhomeeasy.basic\n{\naddress=0x1111bb\nunit=1\ncommand=" +ordre+ "\n}\n"
  xpladdr = ("255.255.255.255",3865)
  UDPSock.sendto(msg,xpladdr)
 
 
# Connexion MySQL
try:
  db = MySQLdb.connect(host="localhost", user="sonde", passwd="sonde", db="sondes")
except :
  print "connexion refusée"
  sys.exit(1)
 
c = db.cursor()
c.execute("SELECT sensorValue from sensor where sensorType='TempSalon' ORDER BY idx DESC limit 1")
 
rows = c.fetchall()
for row in rows:
    tempsalon = float(row[0])
 
c.execute("SELECT sensorValue from sensor where sensorType='TempSdb' ORDER BY idx DESC limit 1")
 
rows = c.fetchall()
for row in rows:
    tempsdb = float(row[0])
 
c.execute("SELECT sensorValue from sensor where sensorType='TempAutre' ORDER BY idx DESC limit 1")
 
rows = c.fetchall()
for row in rows:
    tempautre = float(row[0])
 
c.close()
 
if tempsalon < minitemp or tempsdb < minitemp or tempautre < minitemp :
  ordre = "on"
  xplmsgcmnd(ordre)
  sys.exit(0)
 
if tempsalon <= consignesalon or tempsdb <= consignesdb:
  ordre = "on"
  xplmsgcmnd(ordre)
 
if tempsdb > consignesdb and tempsalon > consignesalon:
  ordre = "off"
  xplmsgcmnd(ordre)

Et voila, un thermostat d’ambiance beaucoup plus fin que ceux que l’on trouve dans le commerce (car il prend en compte plusieurs températures et non pas seulement la température de la pièce de référence) et comble du luxe, comme je connais également la température extérieure, je peux peaufiner ma demande (inertie des radiateurs, baisse plus ou moins rapide de la chaleur de la pièce etc…)

C’est très DIY je l’avoue, mais c’est très amusant à faire (et en plus ça permet de faire des économies 😀 )

Amusez vous bien 🙂

Classé dans domotique, geekerie | Taggé , | 17 Commentaires