Category Archives: Raspberry Pi

Consommation électrique

A l’instar du système mis en œuvre pour visualiser la consommation d’eau, l’installation d’un capteur équivalent permet d’accéder à celle de l’électricité.

capteur_elec

Amélioration du tableau électrique

Légende :

  1. le capteur de consommation électrique avec une sortie numérique,
  2. la sortie numérique du capteur reliée au Raspberry Pi (tout comme pour le capteur de consommation d’eau),
  3. une alimentation 5V DC 2.4A,
  4. le branchement de l’alimentation sur le Raspberry Pi.

Attention, si en théorie l’ajout du capteur au tableau électrique est simple, en pratique il est nécessaire de la confier à un professionnel.

L’ajout d’une alimentation installée sur le rail DIN est optionnel mais tant qu’à faire déplacer un électricien pour l’installation du capteur de consommation électrique, autant en profiter !

Le captage des impulsions est identique à celui fait pour l’eau. La conversion en watt est différente et dépend (un peu) du capteur mais l’affichage est similaire :

ConsommationElectrique

La consommation instantanée

C’est vraiment pédagogique de voir sa consommation d’énergie en temps réel ! En vidéo, c’est plus démonstratif : https://youtu.be/WDUL1vy2zWc

Il ne reste plus qu’à exploiter l’information pour faire des économies et contribuer à lutter contre le réchauffement climatique.

Pour l’exemple du café de la vidéo, on a consommé environ 10 W/h pour faire le café, soit 1 cent TTC pour l’électricité. Il faudrait estimer les coûts d’eau et de grains de café pour avoir un prix de revient mais on peut raisonnablement penser que ce n’est pas en limitant le nombre d’expresso que l’on sauvera la planète. Ouf !

Mais pourquoi 10 kΩ ?

Pourquoi 10 kΩ ? C’est la question posée par Giome dans son commentaire sur le “module additionnel”. C’est sans doute une question que tout le monde se pose et que personne n’ose poser. Comme d’habitude, c’est une évidence pour ceux qui savent et un mystère pour les autres. Si la réponse apportée ici est satisfaisante, Giome aura rendu un grand service en posant cette question.

Schématiquement, la connexion électronique à un GPIO (General Purpose Input Output c’est à dire port d’entrée sortie d’usage général) est le suivant :

GPIO

A gauche de ce schéma on a le symbole d’un bouton poussoir qui correspond au fonctionnement des capteurs “à impulsion”.  Pour le capteur utilisé sur le compteur d’eau du système de visualisation en temps réel de la consommation d’eau, c’est juste ça. Pour les compteurs utilisés pour le suivi de la consommation d’électricité c’est l’équivalent en version électronique. Dans les deux cas, une impulsion correspond à ce qui ce passerait si on appuyait brièvement sur le bouton poussoir : un court-circuit entre l’entrée GPIO et la masse.

Au niveau de l’entrée GPIO, on veut la traduction de cette impulsion sous forme binaire : un bref passage de 1 à 0, c’est à dire la passage de la tension Ub de 3.3 V à 0 V, puis un retour à 1 (3.3 V).

Si on ne branchait que le bouton poussoir, la valeur lue par le GPIO serait indéterminée (on dit “flottante”). Pour la maintenir à 3.3 V, on la relie à une sortie 3.3 V. C’est ce qu’on appelle un “pull-up” car cela tire la valeur lue par le GPIO vers le haut.

Si on reliait directement le 3.3 V au GPIO, sans résistance intermédiaire, on aurait, lors d’une impulsion, un cour-circuit du 3.3 V vers la masse !

La résistance de pull-up sert donc à protéger la sortie 3.3 V pour éviter de griller le circuit. L’intensité est alors limité à Ua/R. Avec une résistance de 10 kΩ l’intensité est donc de 0.33 mA, largement en dessous de la limite des 16 mA recommandée pour la limite du courant tiré d’un des GPIO. On aurait pu mettre moins que 10 kΩ mais c’est une valeur couramment admise pour une résistance de pull-up. C’est celle utilisée pour la version 1 du capteur de consommation électrique.

Par ailleurs, il est aussi possible d’activer, par une instruction logicielle, une résistance de pull-up interne, une par GPIO, d’une valeur annoncée de 50 kΩ.

Si on active cette résistance de pull-up interne, on peut donc se passer de rajouter une résistance de pull-up externe. C’est le choix fait pour la version 2 du capteur de consommation électrique.

Ce qui simplifie efficacement le montage.

Consommation électrique version 0.2

Chouette c’est le weekend ! Un peu de détente de geek, ça fait du bien…

Améliorations du capteur

Version 1 :el1La version 1 utilise un Raspberry Pi 1, une connexion avec des borniers, des résistances de pull-up de 10 kΩ, un compteur à 1000 imp./kWh. On note que tout ne tient pas dans le cadre de l’objectif tellement c’est encombrant. On cachera les détails, ils ne valent pas la peine d’être montrés.

Version 2 :el2

La version 2 a un bien meilleur WAF. Elle utilise un Raspberry Pi zero, une connexion sans bornier ni pull-up, un compteur à 2000 imp./kWh. L’intérieur est nettement plus élégant.

el2_details

Améliorations du traitement

Techniquement, le plus important est le passage à 2 impulsions par Wattheure : deux fois plus précis et deux fois plus réactif, surtout pour les consommations “faibles”.

Pour la peine, on passe pour le relevé des impulsions du Python au C (invisible à l’œil nu) et on améliore l’UX, nettement plus visible : el2_UX

Le fait que la consommation soit passée de 179 à 247 W est inopiné. C’est juste qu’il y a un ordinateur  portable en charge en plus au moment de la capture d’écran ; ah oui, 68 W pour charger le portable.

Consommation électrique version 0.1

Le commentaire de Mikael BERTHO à propos de l’article sur la consommation d’eau a fourni une piste pour un capteur permettant de suivre également la consommation électrique.

Affichage

Un poste de travail avec deux grands écrans

Le résultat attendu est un peu différent. Là il s’agit de connaître la consommation instantanée pour se rendre compte de la puissance électrique utilisée. Pour l’eau, c’était la quantité cumulée utilisée pour une action donnée mais le principe de base reste le même.

Pour explorer cette possibilité, on installe le capteur sur une vieille rallonge électrique recyclée pour l’occasion :

capteur

ATTENTION : c’est du 220 V ! Ne pas faire ce montage sans parfaitement comprendre et maîtriser les risques qu’il implique.

Et puis on monte un banc de tests :

banc2test

Tout l’intérêt du capteur réside dans sa sortie numérique :

testoutput

Cette sortie est reliée à l’entrée du banc de tests :

testInput

Ici elle est en parallèle avec une entrée manuelle ; un simple bouton permettant de simuler une impulsion et d’en valider la lecture par le Raspberry Pi.

Pour visualiser l’impulsion fournie par le capteur, on installe un oscilloscope digital, version geek :

bitscope

Ce qui permet de capturer une magnifique impulsion :

Impulsion

L’entrée digitale du Raspberry Pi maintenue à l’état “haut” de 3.1 V par une résistance de pull-up passe brutalement à un état bas de 1 V pendant 76 ms lorsque le capteur annonce la consommation d’un wattheure.

Il reste à faire installer par un électricien professionnel le montage du capteur sur le tableau électrique pour avoir une visibilité sur la consommation électrique générale. En attendant, ce simple dispositif permet déjà de prendre conscience de la consommation d’un poste informatique.

En veille, les mêmes équipements consomment nettement moins :

veille

Et en veille encore plus prolongée, encore moins :

veille2

Tiens, cela permettrait donc aussi de donner des indications objectives sur les temps et horaires de travail effectif d’un informaticien…

Oh !

Une information incomplète est-elle mieux que rien ?

C’est la demande posée dans un commentaire sur l’article au sujet de la consommation d’eau qui interpelle :

Et que le programme qui permet de surveiller les impulsions, c’est possible :p ?

La réponse à cette demande, sous une forme visible par un profane c’est ça :

capteur

La version sous une forme qui intéresse un informaticien est sans doute moins sexy ( quoique…) :

#!/usr/bin/env python
import RPi.GPIO as GPIO
import time, datetime

GPIO.setmode(GPIO.BOARD)

def cb(pin):
        cd= datetime.datetime.now()
        f= open('/var/capteurs/eau/' + cd.strftime('%Y-%m-%d_%H%M%S.%f'), 'w')
        f.close

GPIO.setup(15,GPIO.IN)
GPIO.add_event_detect(15, GPIO.FALLING, callback=cb, bouncetime=180)

try:
        while True:
                time.sleep(1)
except KeyboardInterrupt:
        GPIO.cleanup()

Dans tous les cas cette réponse est incomplète.

Et pourtant c’est le contenu exact du fichier capteur.py qui fonctionne depuis le 17/02/2014 (bientôt 3 ans !) et qui est déjà à l’origine du comptage de plus de 1 900 000 impulsions…

Mais ce n’est qu’une (petite) pièce du puzzle qui permet de visualiser la consommation d’eau présentée dans l’article en question.

Au pire, cette information ne sert à rien. Au moins elle est inoffensive. Au mieux elle va susciter plein d’autres questions :-(. Mais qui sait, peut-être suffira-t-elle ? Dans le doute autant la partager.

La vrai question qui est posée est “Comment faire pour surveiller moi-même ma consommation ?” est importante et mérite une réponse. Cependant, il faudrait du temps pour y répondre vraiment, beaucoup plus que pour écrire cet article, presque autant que pour mettre au point le dispositif qui permet de le savoir, nettement moins que pour acquérir les compétences pour avoir pu concevoir et réaliser ce dispositif. La disponibilité nécessaire pour répondre de manière satisfaisante à cette vrai question rentre en concurrence avec des obligations plus alimentaires…

Ensuite, cela dépend aussi du nombre de personnes intéressées, ce qui pourrait motiver une révision des priorités en faveur d’une communication plus complète sur la solution mise en œuvre pour compter des impulsions.

Justement, il y a un autre projet parallèle tout aussi motivant : comment recueillir un avis objectivement quantifié sur une question. Ah la la, ce ne sont pas les projets passionnants qui manquent mais le temps pour bien les traiter.

En attendant, revenons-en aux priorités, celles qui contribuent immédiatement et directement au chiffre d’affaire de l’EURL Barme, toutes aussi passionnantes d’ailleurs…

Shutters and light control

PreProto

All tests are passed on the breadboard, it’s time to solder a first prototype:

MultiControlHere a Raspberry Pi accesses:

  • a 433 MHz emitter that controls power outlets, shutters’ motors and light switches,
  • a temperature and humidity sensor,
  • a luminosity sensor that gives a human perception of luminosity based on infrared and full spectrum diodes.

This home automation system already controls the temperature and humidity since several weeks. Now it also control the light and shutters.

In the background, the Raspberry Pi computes the sunrise and sunset times of the day. Half an hour after sunrise, it opens the shutters and switches off the light. Half an hour before sunset, it closes the shutters and switches on the light.

The next steps are to control a light dimmer and another luminosity sensor monitoring outside luminosity.

A light dimmer would allow to progressively shut on or off the light while the shutters close or open.

Monitoring outside luminosity will take into account the laziness of the sun (or rather the clouds hiding its light) some days.

Home automation is definitely a never ending story.

Why it’s helpful to have two?

SchemaAs described in the schema above there is one keyboard and a mouse shared by 4 computers. For the Pi zero, an USB / Ethernet adapter is added.

SharedHub

The USB shared hub is supposed to be powered by its USB connections. It works for the Mac mini but fails for the Pi zero.

Indeed, the shared hub draws 260 mA and the Pi zero draws 240 mA: both are too much for the Pi zero alone.

PowerDrownDefinitely, it is better to have two, even for power supplies and USB multi-meters.

Heat and humidity control

Winter… (well, at least  as it should be)

Winter

When you awake, the house is cold – only 15.5 ºC! – and dry…

SecEtFroid

Hopefully, it is possible to boost the heating system: an efficient solution is to add a fan in front of a radiator. Then it is warmer but definitely too dry – only 26%!

PlusChaud

This is mere physic: a warm air can absorb more humidity and heating doesn’t add humidity.

Hopefully, it is possible to humidify the air: an efficient solution is to add an humidifier, next to the fan.

MoinsSec

Then it is too wet – 48%!

TropHumide

Hopefully, it is possible to control the humidifier: an efficient solution is to add an humidity sensor to a remote outlet controller.

SHT1XThen the percentage of humidity is at last perfect – 40%.

TropChaudYet, it is a little too warm…
Hopefully, it is possible to control the fan: an efficient solution is to replace the big and very noisy fan by a tiny yet powerful very silent fan specialized for PC cooling. SilentFan

 

Eventually the temperature and humidity is under control 🙂

 

PerfectTnH

 

A Raspberry Pi Zero turned in a HomeEasy RX/TX

HomeEasy

Last post about the relaxing geek was just a simple preparatory step for a more challenging project: controlling domotic devices with a open computer.

Incidentally, it was a perfect opportunity to illustrate the thought about what is better than open source. Many thanks to Gordon Henderson (UK, Devon) for his well documented Wiring Pi. It has proven the most helpful resource for this project, unlike all the misleading false information so easily found on the HomeEasy protocol. Actually, the same protocol is also used by many home automation brands: Chacon, DI-O, TellStick, Zibase, My FOX, RFXCom and much more.

Apart from the Raspberry Pi Zero, the main component used for this project is the RTX-MID-5V from Aurel SPA (Italy, Modigliana). This is an RF digital data transceiver working on the ISM free-license band of 433.92 MHz, in half-duplex way. Only the transmission feature was looked for in this product but its receiving capabilities helped a lot in understanding the HomeEasy protocol.

Of course the RGB LED played its useful part:

  • Red to monitor the direction, TX: on, RX; off
  • Green to monitor the data received 1: on, 0: off
  • Blue to monitor the data sent, 1: on, 0: off

The Proof of Concept is successful. Yet there is more to come. Being able to remotely control up to more than 134 million home automation devices from a computer opens an infinite range of possibilities for a geek:

Moreover, controls of all those devices can be synchronised and linked to other sensors. For example, the light is turned on when the shutters are closed and off when they are opened, depending on the time of the day and the ambient light detected by a light sensor.

 

Relaxing geek

pzgpiohwHaving finished a tough job in an even tougher schedule called for a welcomed rest.

The Raspberry Pi Zero was lurking on its hacking stand and a RGB LED was longing to be used in a cupboard…

Every conditions were thus set to build this mighty project: a multi coloured blink. It’s the equivalent of the famous “Hello world!” to the realm of GPIO.