dimanche 2 septembre 2012

OWFS : script pour le demarrage

Configuration pour le démarrage automatique de owfs

Créer le fichier /etc/init.d/owfs.sh

#! /bin/sh
### BEGIN INIT INFO
# Provides:          owfs
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 6
# Short-Description:  run owfs
# Description:        run owfs
### END INIT INFO


MOUNTPOINT='/mnt/1Wire'
case "$1" in
  start)
        echo "Starting script owfs with USB support...";
        echo `/usr/bin/owfs -u -s localhost:4304 --allow_other --mountpoint=$MOUNTPOINT`;
        ;;
  stop)
        echo "stopping script owfs by unloading mount-point ..";
        echo `umount $MOUNTPOINT`;
        ;;
  *)
        echo "Usage: $N {start|stop}" >&2
        exit 1
        ;;
esac
exit 0

Puis faire :
#sudo update-rc.d owfs.sh defaults


Source : Sebastien Mei, owfs.org

samedi 1 septembre 2012

OWFS : installation sur une Debian "Wheezy"

Owfs - présentation

C’est l’exploitation d'owserver sous forme de système de fichiers.

Owserver s’occupe des communications avec le DS9490R, il tourne en tant que serveur à l’écoute sur le port 4304 (cf conf /etc/owfs.conf).
Owfs, va interroger le serveur pour rendre un résultat sous forme de répertoires et de fichiers.
L’intérêt est de rendre le 1-wire plus malléable et de répondre à certains besoins.

Verification

Connecter votre contrôleur 1-wire DS9490R sur l'un de vos ports USB. Pour s'assurer qu'il est bien reconnu tappez :
# lsusb

Vous devez voir votre clef apparaite dans la liste:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 003: ID 04fa:2490 Dallas Semiconductor DS1490F 2-in-1 Fob, 1-Wire adapter

Installation

OWFS se trouve dans le repository. Il suffit donc de faire un simple apt-get :
# sudo apt-get install owserver ow-shell owhttpd owfs-fuse

 Configuration

Il faut ensuite modifie le fichier /etc/owfs.conf, commenter la ligne 16, décommenter la 19 :
# This part must be changed on real installation
#server: FAKE = DS18S20,DS2405
#
# USB device: DS9490
server: usb = all

Restart pour la prise en compte :
# sudo /etc/init.d/owserver restart

On crée un point de montage et on monte :
# sudo mkdir /mnt/1wire/
# sudo owfs -s localhost:4304 -m /mnt/1wire/ --allow_other

Résultat :
# ls -lh
total 0
drwxrwxrwx 1 root root 8 mars 11 00:09 81.BD2223000000
drwxr-xr-x 1 root root 8 mars 10 23:56 alarm
drwxr-xr-x 1 root root 8 mars 10 23:56 bus.0
drwxr-xr-x 1 root root 8 mars 10 23:56 bus.1
drwxr-xr-x 1 root root 8 mars 10 23:56 settings
drwxrwxrwx 1 root root 8 mars 11 00:09 simultaneous
drwxr-xr-x 1 root root 8 mars 10 23:56 statistics
drwxr-xr-x 1 root root 32 mars 10 23:56 structure
drwxr-xr-x 1 root root 8 mars 10 23:56 system
drwxr-xr-x 1 root root 8 mars 10 23:56 uncached


Source : Domolio, owfs.org

mercredi 29 août 2012

Design Pattern Composite : exemple Java

Voila un exemple simple en Java pour illustrer le pattern composite.

Diagramme UML


Les sources

La classe Forme
import java.awt.geom.Point2D;

abstract class Forme {

   Point2D position;

   void ajouterForme(Forme forme) throws Exception {
      throw new Exception("Non impémenté");
    }
   void retirerForme(Forme forme) throws Exception {
      throw new Exception("Non impémenté");
   }

   abstract void dessiner();

   abstract float calculerVolume();
}

La classe Carre
import java.awt.geom.Point2D;

class Carre extends Forme {

int hauteur;

   int largeur;

   public Carre(Point2D position, int hauteur, int largeur) {
      this.position = position;
      this.hauteur = hauteur;
      this.largeur = largeur;
   }

   @Override
   public void dessiner() {
      ...
   }

   @Override
   public float calculerVolume() {
      return hauteur * largeur;
   }
}

La classe Cercle
class Cercle extends Forme {

   int rayon;

   public Cercle(int rayon) {
      this.rayon = rayon;
   }

   @Override
   public void dessiner() {
      ...
   }
   @Override
   public float calculerVolume() {
      return (float)Math.PI * rayon * rayon;
   }
}

La classe Groupe
import java.util.HashSet;
import java.util.Set;

class Groupe extends Forme {

   private Set<forme> formes;

   public Groupe() {
      this.formes = new HashSet<forme>();
   }

   @Override
   public void ajouterForme(Forme forme) {
      formes.add(forme);
   }

   @Override
   public void retirerForme(Forme forme) {
      formes.remove(forme);
   }

   @Override
   public void dessiner() {
      for (Forme forme : formes) {
         forme.dessiner();
      }
   }
   @Override
   public float calculerVolume() {
      float volume = 0;
      for (Forme forme : formes) {
         volume += forme.calculerVolume();
      }
      return volume;
   }
}

mardi 28 août 2012

Domotique : commande groupée

Le site "Toute la Domotique" effectue du 27/08/2012 au 16/09/2012 une commande groupée en partenariat avec le site "Domadoo".
Attention : il faut être membre du forum TLD pour pouvoir en profiter.

Pour les intéressé, c'est par la.

vendredi 15 avril 2011

Maven - Structure du projet

Un projet Maven est structuré de la façon suivante :

src/main/javaSource de l'application/Librairie Java
src/main/resourcesRessources de l'application/librairie
src/main/filtersFichiers ressources pour les filtres (seront inclus par défaut dans le Jar)
src/main/assemblyDescription pour l'Assembly
src/main/configFichier de configuration (Ne seront pas inclus par défaut dans le jar)
src/main/webappSources de la partie web de l'application
src/test/javaSources des tests
src/test/resourcesRessources pour les tests
src/test/filtersFichiers ressources pour les filtres
src/siteSite
LICENSE.txtLicense du Projet
NOTICE.txtNotices
README.txtFichiers readme du projet
POM.xmlFichier Maven décrivant le projet

Maven crée un répertoire "target" au même niveau que le "src". Il contiendra tous les fichiers générés par maven. On y trouvera en autre le Jar de l'application/librairie, les .class, les résultats des tests,...

jeudi 16 septembre 2010

CMMI : Méthode GQM

J'ai découvert récemmet la méthode GQM (Goal/Question/Metric) grace au site http://afoucal.free.fr/.

Cette methode propose un guide pour mettre en place des metriques dans le cadre de qualité logiciel. Elle est une réponse aux exigences CMMI (processus Mesure et Analyse).

Pour plus d'information, vous pouvez allez voir sur le cite officiel (en Anglais) : http://www.gqm.nl/

    mercredi 1 septembre 2010

    Hudson - Ant : Liste des parametres utilisables dans un script Ant

    Voila la liste des parametres utilisables dans un script Ant lancé par Hudson :

    BUILD_NUMBER Le numero du build, exemple "153"
    BUILD_ID L'id du build, exemple "2005-08-22_23-59-59" (YYYY-MM-DD_hh-mm-ss)
    JOB_NAME Nom du projet du build. C'est le nom du job configuré. C'est le nom que l'on retrouve dans la 3ème colonne du dashboard de la page principale.
    BUILD_TAG Concaténation de : hudson-${JOBNAME}-${BUILD_NUMBER}. Pratique pour mettre dans un fichier de ressource, un jar,... pour faciliter l'identification.
    EXECUTOR_NUMBER Le numéro unique de l'éxecution. (Commence à 0 et non 1)
    JAVA_HOME Le JAVA_HOME de la JDK utilisée.
    WORKSPACE Le chemin absolu du workspace.
    SVN_REVISION Pour les projets Subversion, cette variable contient le numéro de revision SVN. Si plusieurs modules SVN configurés, la variable ne sera pas positionnée.
    CVS_BRANCH Pour les projets CVS, cette variable contient le numéro de revision CVS. Si plusieurs modules CVS configurés, la variable ne sera pas positionnée.