Connecter ce qui n'est pas connectable

Connecter ce qui n'est pas connectable

N'avez-vous pas chez vous un ou deux appareils que vous brûlez d'envie de pouvoir surveiller à distance, mais que vous ne pouvez pas (ou n'osez pas) démonter pour raccorder à Internet? Réjouissez-vous, nous vous présentons aujourd'hui une manière simple, économique et efficace de résoudre ce problème. Pour environ 30 EUR, vous allez enfin pouvoir sortir ces appareils de l'obscurité...



Pour illustrer cet article, nous allons vous montrer comment pouvoir contrôler par Internet l'état d'une installation d'alarme existante.

Le panneau de contrôle que nous allons surveiller à distance
Le panneau de contrôle que nous allons surveiller à distance



Cet appareil, qui communique avec une centrale de surveillance en utilisant les réseaux de téléphone publics, ne dispose pas de moyen standard pour contrôler son état à distance par Internet. Pourtant, il serait parfois utile de pouvoir vérifier à distance si l'alarme a bien été armée, ou de pouvoir déclencher des actions automatiquement en cas d'alarme, en plus d'alerter la société de surveillance. Mais bien sûr, ce n'est pas le genre de boîte que l'on peut ouvrir et bricoler à sa guise...

La solution propre est toute simple. Puisque l'appareil dispose de voyants lumineux, il suffit de mettre devant chacun d'eux un dispositif pour mesurer la lumière et le problème est réglé. On pourrait faire cela en utilisant autant de Yocto-Light qu'il y a de leds, mais cela reviendrait franchement cher. Puisque la valeur exacte de l'illumination nous importe peu, nous pouvons nous contenter d'utiliser un Yocto-Knob, et de raccorder directement sur chaque entrée un phototransistor bon marché, le tout coutant moins de 30 EUR:

Schéma de branchement: connectez directement les phototransistors sur le Yocto-Knob, et le tour est joué
Schéma de branchement: connectez directement les phototransistors sur le Yocto-Knob, et le tour est joué



Bien sur, il faudra brancher le Yocto-Knob par USB sur un ordinateur connecté au réseau. Si vous n'en avez pas déjà un à proximité de l'appareil à surveiller, vous pouvez commander un Raspberry Pi, largement suffisant pour cette tâche, et qui vous coutera lui aussi moins de 30 EUR... dès qu'il sera disponible. Pour notre exemple, nous avons réutilisé un vieux Fit-PC de première génération avec un Linux Ubuntu.

Le Yocto-Knob fonctionne en appliquant sur chaque entrée un faible voltage, à travers une résistance, et en mesure la tension résultante. Cela permet d'y connecter non seulement un interrupteur ou un potentiomètre, mais aussi tout composant qui laisse passer une quantité variable de courant, comme un phototransistor par exemple. Le réglage des seuils est trivial: le Yocto-Knob dispose d'une procédure de calibrage automatique qui mesure le min et le max de l'entrée, et ramène ensuite la valeur mesurée dans un intervalle standardisé entre 0 et 1000.

Un phototransistor
Un phototransistor



La partie bricolage est simple, il n'y a qu'à positionner les phototransistors en face des leds. Si la face de l'appareil à surveiller est plate, relevez la position des leds avec du papier calque et reportez-la sur un petit panneau de verre acrylique. Il vous suffira de quelques trous et d'un peu de colle époxy pour fixer les phototransistors en place. Le panneau peut être fixé à l'aide d'un adhésif double-face, ou à l'aide d'équerres.

Si la face de votre boîtier n'est pas plane, comme c'est le cas pour nous, le mieux est de reporter le profil du boîtier sur une feuille de carton (en utilisant le bas du boîtier comme guide), que vous découperez pour vous assurer qu'il soit correct. Découpez ensuite le profil dans une plaque de verre acrylique, que vous installerez perpendiculaire à la surface du boîtier. Découpez ensuite des encoches rectangulaires à l'emplacement où vous devez positionner les phototransistors, et fixez-y les phototransistors. Nous avons choisi de mettre pour chacun la patte commune (la plus longue) au dessus de la plaque, et de les souder ainsi l'une à l'autre. L'autre patte passe sous la plaque et la traverse par un petit trou pour rejoindre le bornier du Yocto-Knob.

Positionnement des phototransistors sur une plaque perpendiculaire à la surface du boîtier
Positionnement des phototransistors sur une plaque perpendiculaire à la surface du boîtier



Pour terminer le bricolage, il ne reste plus qu'à couvrir les phototransistors par une bande adhésive opaque pour éviter toute perturbation par la lumière ambiante, à fixer la plaque en position et le tour est joué.

Voyons maintenant comment rendre l'information accessible sur Internet, puisque c'est tout l'intérêt du bricolage. Voilà une première version qui utilise une page Web écrite en PHP pour lire l'état des phototransistors et le publier, de sorte à pouvoir être consulté avec un iPhone par exemple. Comme souvent, l'essentiel du code ne sert qu'à faire joli...

<HTML><HEAD>
  <TITLE>Monitoring system</TITLE>
  <STYLE type="text/css">
     IMG {
       height: 56px;
       border: 0px;
     }
     DIV.frame {
       width: 56px;
       height: 56px;
       padding: 4px;
       text-align: center;
       border-radius: 7px;
       -moz-border-radius: 7px;
       -webkit-border-top-left-radius:  7px;
       -webkit-border-top-right-radius: 7px;
       -webkit-border-bottom-right-radius: 7px;
       -webkit-border-bottom-left-radius:  7px;
       border:2px solid grey;
     }
  </STYLE>
</HEAD><BODY>
<TABLE width='100%' height='100%'>
<TR><TD width='50%'></TD>
<?php
 include('yocto_api.php');
 include('yocto_anbutton.php');

 // Setup the API to use the VirtualHub on local machine
 if(yRegisterHub('http://127.0.0.1:4444/',$errmsg) != YAPI_SUCCESS) {
     die("Cannot contact VirtualHub on 127.0.0.1");
 }

 // Display each leds
 $leds = Array("power"       => "LimeGreen",
                "locked"      => "LimeGreen",
                "open"        => "Yellow",
                "alert"       => "Tomato",
                "maintenance" => "Tomato");
  foreach($leds as $ledname => $ledcolor) {
      $detector = yFindAnButton("yoctoMonitor.$ledname");
      $style = '';
      if($detector->get_calibratedValue() < 500)
         $style = "style='background-color:$ledcolor;'";
     Print("<TD><DIV class='frame' $style><IMG src='$ledname.png'></DIV></TD>");
  }
?>
<TD width='50%'></TD></TR>
</TABLE>
<SCRIPT language='javascript1.5' type='text/JavaScript'>
setTimeout('window.location.reload()',500);
</SCRIPT>
</BODY></HTML>


Voilà le résultat:

Consultation à distance de l'état de l'installation avec un téléphone portable
Consultation à distance de l'état de l'installation avec un téléphone portable



Le code PHP ci-dessus est très simple, mais il n'est pas parfait. Comme il se rafraîchit uniquement deux fois par seconde, il ne permet pas, par exemple, de reproduire fidèlement un voyant qui clignote, car le rafraichissement n'est pas dynamique. Pour améliorer cela, il faut faire appel à la technique AJAX. Vous trouverez l'implémentation améliorée dans le fichier d'exemples de cet article. L'aspect de la page web est le même, mais cette fois le rafraichissement est dynamique, avec à peine quelques millisecondes de latence. Cette nouvelle version fournit véritablement sur votre serveur web un miroir de l'état des leds de contrôle.

Nous vous proposons encore une troisième version du code de contrôle, pour les cas où vous désirez soit lancer des actions automatiquement en fonction de l'état des leds de contrôle, soit simplement propager l'état des leds sur une autre machine, par exemple pour le publier de l'autre côté d'une barrière NAT par exemple. Dans ce cas, le code de contrôle (toujours en PHP) sera lancé en ligne de commande, et pour chaque changement d'état significatif détecté sur les leds, il fera une requête HTTP vers un autre serveur. L'implémentation est aussi disponible dans le fichier d'exemples de cet article.

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.