banneer2

Rechercher sur le blog du grouik:

#Main:

Le contexte:

Avec @flogib, on avance sur un projet de télémètre qui est un sous projet d’un système de triangulation, lui même un sous projet de mon robot explorer.

Lundi dernier, on a (enfin) réussi à faire fonctionner le télémètre. Son principe:

  • T0 Le télémètre envoie un signal radio contenant le numéro de la balise qu’il sollicite
  • T1 La balise reçoit le signal et répond par un pulse en ultrason
  • T2 Le télémètre reçoit le pulse et peut mesurer la durée T2 - T0

Voici l’installation pour faire les mesures:

IMG_20140317_205147.jpg

Voila les résultats des mesures:

distance (m)Mesure 1(µs)Mesure 2Mesure 3Mesure 4Mesure 5Mesure 6Temps moyen en µs
0203219642096204819602020
14548438443284396180443243964
2743274247876 838475567734,4
3104441035210228 102321026410304
413492136481348413540 1343213519,2
516588164361742817100 1728816968

tempsMesuresUS.jpeg Une équation à deux inconnues permet de déterminer la vitesse du son (qui varie en fonction de la température et de la pression atmosphérique):

IMG_20140319_231344.jpg

313,97 m/s

Bon Ok, le but n’était pas de faire la mesure de la vitesse du son, mais plutôt du temps de transmission des radio fréquences + le temps des traitements effectués par l’arduino.

Enfin grâce à ces mesures, on va pouvoir estimer les marges d’erreur du futur système de triangulation (plus tard à tête reposée).

Concernant les codes arduino et les schémas électroniques, ça prend un peu de temps de les mettre au propre, je le ferai sur la page dédiée au projet Télémètre ultrason et radio fréquences si j’arrive à obtenir de l’hébergeur du wiki qu’il dépanne certains trucs :p


IMG_20140123_144607.jpg

Toute l’info sur le tamat est disponible sur leur site:

Je vais quand même vous le présenter avec mes propres mots. [1]

Ça fait quelques semaines qu’il a été fixé dans la baie. On vient de finir de le mettre en production, il remplace le "notification server". Ce billet a pour objet de vous présenter cette technologie.

Ça sort un peu de la ligne de ce blog [2] parce que c’est un produit industriel/tertiaire et non accessible au grand public. Si j’en fais un billet, c’est que j’ai été surpris par la qualité du produit. je vais essayer de vous expliquer pourquoi. Mais d’abord: A quoi que ça sert?

Ça sert d’intermédiaire entre des alarmes d’un coté, et le système téléphonique de l’autre. Je vous détaille ça.

Les points d’entrées du Tamat sont toutes les technos (obsolètes ou actuelles) qu’on peut trouver dans un établissement industriel ou tertiaire

C’est la magie du tamat, c’est qu’il saura se raccorder à tout et n’importe quoi. Dans mon centre hospitalier en "alarmes", on trouve:

1.1: Des appels malades,

Il existe plusieurs systèmes d’appels malades. Ceux de la décennie précédente[3] envoient les informations sur des trames série (protocoles V24). des ports COM. Voici un exemple de trame d’un vieux système ASCOM:

Données brutes:
02 30 43 39 39 31 47 4e 34 30 30 30 20 20 20 20  .0C991GN4000    
20 20 41 43 48 31 30 36 20 20 20 20 20 20 20 20    ACH106        
20 20 20 41 50 50 45 4c 20 37 41 03                 APPEL 7A.

Et sur un autre bâtiment, on est équipés en BLICK, peut être un peu plus respectueux des standards qu’ASCOM vu que les marqueurs de fin des trames sont des CR LF, voici un exemple de trame Pour l’appel

41 50 50 45 4c 20 20 20 20 20 20 20 20 20 20 20  APPEL           
20 43 48 20 31 36 39 20 20 20 20 20 20 20 20 20   CH 169         
20 20 20 31 2f 30 31 20 20 31 32 3a 31 34 20 20     1/01  12:14  
20 38 2f 30 33 20 20 31 32 33 34 35 20 20 31 32   8/03  12345  12
3a 31 34 0d 0a                                   :14..

et l’acquittement (l’aide soignante appuie sur un bouton pour prendre en compte l’appel):

41 43 51 20 20 20 20 20 20 20 20 20 20 20 20 4b  ACQ            K
42 43 48 20 31 36 39 20 20 20 20 20 20 20 20 20  BCH 169         
20 20 20 31 2f 30 30 20 20 31 32 3a 31 34 20 20     1/00  12:14  
20 38 2f 30 33 20 20 31 32 33 34 35 20 20 31 32   8/03  12345  12
3a 31 34 0d 0a                                   :14..

Voici le boîtier répondant au doux nom de Moxa NPort qui reçoit les ports série: IMG_20140228_145009.jpg Les appels malade de la génération actuelle[4] envoient les informations via un protocole TCP/IP , généralement de l’ESPA. Ils seront mis en place dans deux semaines, je n’ai pas encore étudié le détail, mais ce que je sais , c’est que le Tamat le prendra en charge facilement.

1.2: Le système incendie

Ceux qui savent qui se cache derrière le pseudonyme "Gnieark" savent que j’exerce des fonctions d’administrateur système/tech réseau, mais aussi les fonctions de chef de service de sécurité incendie et d’assistance à la personne (oui, je me la pète avec mon SSIAP3). je me permet donc ce petit avertissement: Le report des alarmes incendie via le système Tamat ne se substitue pas aux répétiteurs d’alarmes conformes aux normes NFS61-930 à NFS61-937 rendues obligatoires dans certains établissement recevant du public.

En cas d’incendie je peux garantir que tout est fait pour que le SSI fonctionne (les câbles entre la centrale incendie et les répétiteurs d’alarme sont censés résister pendant une heure aux flammes, si l’incendie coupe l’électricité, l’ensemble est sous batteries etc... Par contre, pour le système de téléphones sans fil. Rien ne garantit qu’ils fonctionneront si le feu a rongé quelques câbles.

En fonction de votre SSI (et des options prises), vous aurez une trame série, ce qui permettra de localiser le départ d’incendie dans le texte de l’alarme; ou bien un simple contact sec. C’est malheureusement mon cas. Le texte sur les téléphones sans fil est simplement "Alarme incendie".

1.3: Des contacts secs

Voici le boitier qui gère ça IMG_20140305_165947.jpg

Actuellement les quelques fils ci dessus nous permettent de superviser via le Moxa:

  • l’alarme incendie
  • la nuit la présence à la barrière
  • Un éventuel problème sur la production de vide d’air
  • Un éventuel problème sur les détenteurs d’oxygène
  • Des défauts sur l’éclairage de secours
  • Une alarme intrusion.

1.4: Et plein de "signaux" informatiques

Plein d’autres types de "signaux" peuvent être utilisés pour générer des alarmes. Dont de simples requetes HTTP. Le développement est en cours pour interfacer l’extranet sur la téléphonie de cette manière.

Voici un synoptique des possibilités du TAMAT: 13590_schmat_tamatv5_octobre_2012.png

2: Les modules TAMAT

Comme vous avez pu le voir dans les photos ci dessus, on a fait le choix d’utiliser des boitiers distants pour les trames série et la supervision des contacts secs car je n’envisageais pas le chantier de câblage mais on aurait pu, pour faire plus propre ajouter des cartes modules internes au tamat.

En différents modules on trouve:

2.1: Une carte T2 ou T0

Les communications téléphoniques vers l’autocom passent par là T2.jpg

T0.jpg

2.2: Des ports V24

Même si j’ai utilisé un boîtier Moxa, et pas cette carte, j’ai expliqué le principe un peu plus haut. TAMAT-COM.jpg

2.3: Une carte SYNC

Elle sert pour certains autocommutateurs[5]

TAMAT-SYNC.jpg

2.4: Des cartes TAMATi

Supervisent 32 contacts par carte (plus que le boitier Moxa dédié à cette fonction) TAMATI.jpg

Non, on ne clipse pas directement les contacts sur les petits picots de la carte. Ce serait galère. On relie cette carte à un panneau de brassage.

Voici la façade du tamat en imaginant qu’on ait mis toutes les cartes:

tamatall-cards.jpeg

2.6: Les boitiers Moxa

Vous l’avez vu au dessus, j’ai utilisé deux boîtiers Moxa Ce n’est pas le même fabriquant, mais le tamat les gère de façon magique. Ils ont été reconnus semi-automatiquement.

3: Mettons un peu les mains dans le Tamat

Je ne crois pas que MWS vende le directement le tamat (à confirmer). L’achat et l’installation, je les ai fait avec l’entreprise NextiraOne... Ou plutôt un technicien de NextiraOne a tout fait et m’a expliqué comment ça marche. Je ne pense pas que j’aurai réussi seul à créer le faisceau T2 et à préparer l’autocommutateur. Mais pour le paramétrage des alarmes et leurs destinataires, ça ne nécessite pas de compétence particulière. La logique est la suivante il faut résonner à l’envers:

annuaire -> calendriers -> listes de diffusion -> plans de diffusion --> alarme

3.1: On configure un annuaire

Les contacts de l’annuaire peuvent etre des téléphones voix, des téléphones affichant du texte (CSTA), des e-mails, etc...

3.2: On configure des calendriers:

Je n’en ai as fait beaucoup:

  • 24/7
  • Journée
  • NUIT
  • Quart soignants nuit
  • quart soignants après-midi
  • quart soignants matin
  • service technique

3.3: On configure des listes de diffusion.

Bref c’est là que j’indique quelles sont les personnes de l’annuaire qui appartiennent au service technique par exemple

3.4: On configure les plans de diffusion

Il s’agit de relier les listes de diffusion avec les calendriers. C’est aussi à ce niveau là qu’on définit les "cascades": savoir à quelle liste de diffusion on notifie le message s’il n’a pas été pris en compte dans les temps par la première liste.

3.5: Enfin les alarmes.

De façon simple on définit le déclencheur de l’alarme, le texte ou le son à transmettre, et le plan de diffusion à effectuer.

De façon plus avancée, on va définir de déclencheur de l’arrêt de l’alarme, ses modalités de répétitions tant qu’elle n’est pas acquittée (si elle doit être acquittée). Et en cas d’échecs de notification au premier niveau, au deuxième etc... on définit si on abandonne ou si on persiste.

3.6: Les technologies utilisées dans le Tamat

Il ne faut pas le dire à votre con de DSI quinquagénaire qui achète des licences Microsoft parce que Outlook, c’est quand même trop de la balle[6][7], mais... dans le tamat, il y a un linux... L’interface est tellement bien faite, qu’il ne le saura pas, c’est un linux digne d’un système embarqué.

Et il est à jour en plus!

  1. ~ # uname -r
  2. 3.10.9

Vous n’aurez besoin du prompt linux que quelques minutes pour définir l’IP, les DNS etc... du serveur, ensuite tout se fera par l’interface web. mais je suis curieux; la commande top m’indique que:

  • Le serveur web est lighthtpd + PHP
  • Certains scripts tournent en python
  • Pour les communications, un serveur Asterisk tourne. [8]

Aperçus de l’interface de paramétrage:

Le paramétrage du tamat demande des bonnes notions, (ou de se faire aider) pour son interfaçage sur le système de téléphonie (c’est un faisceau T2 ou T0, et du CTSA pour les textes). Mais une fois que c’est mis en place, le paramétrages des scénarios d’alarmes, c’est fastidieux s’il y a beaucoup d’alarmes, mais ce n’est pas très compliqué.

Ce billet ’est pas un tutoriel de paramétrage du serveur Tamat, voici simplement quelques aperçus de l’interface web.

Le liste des alarmes configurées: tamat1.png

Le formulaire de configuration d’une alarme tamat2.png

La page "état" du tamat: tamat3.png

Voici le "fil de l’eau" des alarmes et des tentatives de notifications. Quand on coche "données brutes" on peut voir les trames series qui arrivent (sur le moxa dans mon cas). ça aide bien pour le paramétrage des alarmes.

tamat4.png

La configuration et l’ajout de nouvelles cartes, c’est tres user friendly: tamat5.png

Détail d’un "plan de notification". Si la notification des personnes prévue au niveau 1 échoue, on bascule sur celles du niveau 2. Notre scénario en très simplifié:

  • niveau 1: l’aide soignante du service
  • niveau 2 si l’aide soignante ne lit pas l’alarme sur téléphone allumé; le Tamat notifie l’infirmière du secteur

tamat6.png

4: Le SAV, la maintenance et la documentation du TAMAT

Le SAV, on l’a appelé deux fois pour le moment. Pas pour une panne, mais pour des questions précises pour le paramétrage.

  • C’est un numéro en 02 etc... Le SAV est bien à Tours chez MWS et n’a pas été délocalisé.
  • On n’a pas attendu.
  • Le monsieur a su répondre à nos questions.

Bref nickel.

Concernant la documentation, elle est fournie dans le Tamat, ou en ligne sur le site de MWS. Ils ont créé une sorte de wiki en français. Elle est très complète.

Enfin, le code du Tamat est maintenu. Des mises à jour du système sont proposées gratuitement[9] et s’installent en quelques clicks (apparemment plusieurs fois par an).Il y en a même eu une entre le soir où j’ai commencé à rédiger ce billet, et sa publication.

5: Les petits défaut du TAMAT

Je n’arrête pas de faire l’éloge de ce produit, il faut quand même que je montre mon esprit critique.

Qu’une seule alim

Il y a un mode haute disponibilité au Tamat[10]. Sans aller jusqu’à de la haute disponibilité; il n’a qu’une alimentation. J’aurai bien aimé redonder son alim.

Qu’une seule carte réseau

De la même manière, il n’a qu’une carte réseau. Une seconde carte réseau permettrait de faire communiquer le tamat avec deux LAN distincts. Pratique si on a mis la vidéo-surveillance sur un LAN séparé[11]. J’ai le projet d’envoyer les rooters et les équipements des appels malades sur une autre plage d’IP privées. Une seconde carte réseau au tamat m’aurait simplifié la vie pour qu’il puisse recevoir quand même les requêtes http provenant du LAN. Je mettrai une passerelle du coup.

5.3: Pas de TLS

Enfin, il manque une couche httpS au tamat. Pour les alarmes via requête http; il faut faire une requête via curl par exemple. On peut faire en sorte qu’une authentification http soit obligatoire, mais en ce cas là le mot de passe passe en clair. Du coup, j’ai fait le choix de désactiver l’authentification pour déclencher les alarmes.

5.4: Des doutes sur le respect des licences libres

Ils utilisent beaucoup de logiciel libre et si je le sais, c’est parce que j’ai fouiné. Mais dans l’interface web et la documentation je n’ai trouvé aucune trace de GPL ni de mention qu’ils utilisent du logiciel libre. Alors je me trompe peut être (lighthtpd est en licence BSD, Asterisk a une licence propriétaire...) mais je suis persuadé que certains éléments sont en GPL.

Cependant pour moi, l’intérêt principal du logiciel libre est d’avoir accès au code source. Imaginez si jamais un fournisseur venait à ne plus assurer un SAV. Un bug simple à corriger (genre une journée de recherche dans le code) vous bloque. Pour la plus part des logiciels propriétaires, en ce cas là, il faut supporter la frustration de ne rien pouvoir faire.

Pour le Tamat, MWS n’a produit peu ou pas de code compilé. Si un tel cas arrivait (Le SAV a l’air super, donc je pense que je ne le ferai jamais), j’ai la possibilité d’aller farfouiller dans les scripts.

6: Conclusion

Monsieur le directeur des ressources humaines de MWS.

J’adore votre produit, le Tamat. La finition est propre, Il est stable, parait solide. Les technologies employés (Linux) sont un très bon choix. Votre équipe a su compiler un noyau en l’optimisant pour qu’il fasse pile poil ce qu’on attend de votre machine. En fait, j’aurai aimé concevoir moi même le Tamat. N’y allons pas par quatre chemins:

Je connais très bien le milieu hospitalier (votre cible commerciale).

Je suis titulaire d’un SSIAP3, ma culture incendie/préventioniste peut vous servir. et on peut même imaginer que ma première mission soit de faire l’étude de faisabilité d’une version du tamat conforme NFS61-930. Parce que les fonctionnalités du tamat pourraient remplacer une centrale incendie, et que ça me ferait plaisir de contribuer à marcher dans le territoire du cartel SIEMENS, Chubb, DEF.

Je suis plutôt à l’aise dans l’environnement Linux

Je peux filer des coups de main pour les développements qui concernent l’interface utilisateur, je maitrise le PHP et le JavaScript.

Mes connaissances en téléphonie sont basiques, je sais administrer basiquement un autocom Alcatel en ligne de commande (créer des lignes, installer des DECT etc...). Je maîtrise aussi les techniques de brassage. Cependant, certains cotés de la téléphonie me sont encore obscurs. Je sais ce qu’est un T0, un T1 ou un T2. Bref, je ne pars pas de zéro sur ce terrain là, même si j’ai pas mal de choses à découvrir.

Je ne suis pas électronicien, mais mes bidouillages récents à base d’ATMEGA font que l’électronique basique ne me fait pas peur. A titre d’exemple sur mon niveau, si vous me demandez de multiplexer 140 contacts secs, je réussirai à concevoir le circuit électronique en quelques jours.

Je sais rédiger des procédures et des notices techniques (et d’ailleurs, elles sont souvent mieux écrites que les tutoriels et articles de ce blog).

Enfin, si vous avez besoin d’un coup de main pour animer vos sites web / blog, sachez que je suis à l’aise sur ce terrain; L’ensemble des sites web que j’administre à titre personnel cumulent 2 500 000 pages vues par mois.

Tours, ce n’est pas très loin. Si vous cherchez un geek, qui serait ravi d’intégrer votre pole R&D, je peux me rendre disponible. Je serai peut être moins pointu que vos ingénieurs, mais avec une culture assez large (j’ai oublié de le préciser, j’ai de bonnes bases sur les marchés publics). Et je pense que vous n’aurez pas de mal à compenser la perte de mes avantages liés au statut de fonctionnaire par un meilleur salaire.

Veuillez agréer, monsieur le DRH l’expression de mes sincères salutations

Notes

[1] Certaines des images contenues dans ce billet ont été empruntées sur le site de MWS. Elles ne sont pas libres de droit et de réutilisation

[2] Quoique de toutes façons, ces derniers mois je n’ai pas beaucoup écrit, alors on ne peut pas vraiment dire que ce blog a une ligne

[3] et je ne compte pas les changer pour le moment

[4] Pour les chambres qu’on est en train de créer

[5] La carte SYNC doit être utilisée uniquement lorsque le PABX ne fournit pas la synchronisation au TAMAT

[6] zut j’ai trollé dans ce billet

[7] Précision: Je n’ai pas de DSI au dessus de moi :-D Je dois juste expliquer à mon directeur l’objet des bons de commande que je lui demande de signer de temps en temps

[8] #troll: ça me fait sourire étant donné que MWS (l’entreprise qui développe les tamat) est très proche d’Alcatel

[9] Dans le marché des progiciels, c’est fréquent que les mises à jour pour un produit qui a coûté initialement plusieurs dizaines de milliers d’euros, soient payantes

[10] soumis à licence que je n’ai pas pris

[11] Ça fait partie des recommandations que je reçois. Les caméras IP sont des bouses remplies de failles. Elles peuvent servir comme tremplin pour pirater un réseau d’entreprise



Mis hors service la semaine dernière, je viens de le rallumer 5 min pour en faire quelques photographies.

Le notification serveur est un programme qui a été développé pour/par Alcatel. Il servait à prendre en compte des alarmes (alarmes techniques/ appels malades) et générait un appel ou un message texte sur des téléphones sans fil.

Les alarmes arrivaient via des trames séries V24 sur les ports COM du notification serveur. Ce dernier était raccordé à l’autocommutateur (un alcatel 4400) via le réseau informatique.

Vous comprenez que dans un hôpital, c’était un élément quasiment vital [1] pour le fonctionnement. Et pourtant... Voici la tête du "notification serveur":

IMG_20140305_093910.jpg

Deuxième frayeur, c’était un windows 2000. Je me souviens qu’en 2007 je crois on avait tenté de le migrer. Il n’avait pas été possible de le passer sous XP

IMG_20140305_094002.jpg

Troisième frayeur: Il ne démarre pas des services en tache fond, mais une fenetre de commandes DOS par service:

IMG_20140305_094621.jpg Il n’est donc pas possible de fermer la session, ça arrêterait les programmes du notification server.

Et petit aparté, Voici la PCB qui reçoit des contacts secs et envoie les changements d’états des contacts sur une trame série. "Observation de contacts pour notification server" C’est une création de l’entreprise MWS (j’en reparlerai dans les jours qui viennent en bien au sujet de leur produit "tamat"):

IMG_20140305_094940.jpg

Au niveau du paramétrage (telle alarme est notifiée sur tel téléphone, dans telle tranche horaire, et le reste du temps, notifiée à ....), Il y avait un petit GUI qui se présentait comme ça.

IMG_20140305_094654.jpg

IMG_20140305_094808.jpg

IMG_20140305_094834.jpg

Présenté comme ça vous pourriez croire que le Notification Server était une bouse logicielle dévellopée par des stagiaires en turbo pascal et en visual basic pour le GUI. Et bah non, remettons le notification server dans son contexte:

On est au début du réseau informatique. Alcatel est précurseur/leader dans les autocommutateurs téléphoniques, mais ce sont des technos différentes. Dixit les anciens installateurs téléphoniques avec qui j’ai pu en parler, ils ont vu le notification server pour la première fois sous windows 98 puis sur millenium. A cette époque, dans les petits hopitaux et les petites maisons de retraite, il y avait au maximum 3 ordinateurs qui se partageaient la bande passante du modem RTC 56k pour aller sur internet. Éventuellement il y avait un switch, mais pas forcément de réseau, et encore moins de serveurs dignes de se nom. Bref, je pense que c’est un produit qui allait avec son époque. De plus, le report des appels malades sur la téléphonie sans fil était comme je l’écrivais plus haut un confort qui allait en complément des bandeaux lumineux ou autres systèmes à LED, et n’avait pas de contrainte de haute disponibilité.

Et chose surprenante en fait il ne plantait pas si souvent que ça, je ne le redémarrais pas plus de deux fois par mois.

J’ai changé le notification serveur afin d’anticiper la mort de l’ordinateur qui le supportait, afin d’anticiper des travaux d’extension, mais aussi de façon à garder une technologie neutre par rapport du fabriquant des systèmes malades. A présent c’est un "vrai" serveur sous linux , le tamat].

Et vous savez quoi? Dans certains hôpitaux, ils ont virtualisé le windows 2000 afin de pérenniser le notification serveur au lieu de chercher à le faire évoluer. Signalement de failles: Il reste des windows 2000 dans certains hôpitaux. Quand je vous dit que la virtualisation c’est le mal :p

Note

[1] Il y a quand même les bandeaux lumineux dans les salles de soins qui préviennent des appels malades


IMG_20140219_002141.jpg

Un oscilloscope c’est 150 euros pour des bouzins numériques, et plus de 400 euros pour des appareils corrects.Avec un arduino , ça va prendre 5 min pour créer un oscilloscope très basique qui sera efficace pour du dépannage occasionnel, sans avoir besoin d’une grande précision, et pour des circuits électroniques qui ne montent pas au delà de 5V (c’est généralement le cas pour les montages arduino).

Il existe le projet arduinoscope. Qui fonctionne avec java et surtout: Je n’aime pas Java, et la réciproque est vraie. Je n’ai pas insisté pour comprendre comment le faire marcher. Du coup, je vais vous parler ici de lxardoscope

Ça fonctionne de cette marnière:

  • l’arduino mesure en permanence la tension sur A0 A1 etc...
  • l’arduino envoie ses mesures sur le serial
  • Le programme lxardoscope lit les données série pour afficher un oscillo.

Installation

  1. wget downloads.sourceforge.net/project/lxardoscope/lxardoscope_0.95/lxardoscope_0.95.tar.gz
  2. tar -zxvf lxardoscope_0.95.tar.gz
  3. cd lxardoscope_0.95/
  4. #on peut compiler, mais on peut aussi tout simplement copier l'éxécutable
  5. #en tant qu'user root
  6. cp lxardoscope /usr/local/sbin
  7. #à présent la commande pour démarrer l'oscillo est:
  8. lxardoscope

Installation du code sur l’arduino

Le code arduino est très simple. Vous le trouverez dans le fichier lxardoscope_0.95/ATmega/lxardoscope95/lxardoscope95.ino

Cependant, Oskar Leuthold, l’auteur de ce code, a prévu que vous appliqueriez une tension de référence sur la pin AREF de l’arduino. Vous pouvez faire en sorte de ne pas en avoir besoin en commentant la ligneanalogReference(EXTERNAL); comme ci dessous, ligne 56. La référence sera alors 5V.

  1. /*
  2.  *
  3.  * This file is part of the LXARDOSCOPE package.
  4.  *
  5.  * LXARDOSCOPE is an Arduino based oscilloscope for Linux, using the Xforms library.
  6.  *
  7.  * Copyright (C) 2013 Oskar Leuthold
  8.  *
  9.  * LXARDOSCOPE is free software: you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation, either version 3 of the License, or
  12.  * (at your option) any later version.
  13.  *
  14.  * LXARDOSCOPE is distributed in the hope that it will be useful, but
  15.  * WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  17.  * Lesser General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU Lesser General Public
  20.  * License along with LXARDOSCOPE; see the file COPYING. If not, write to
  21.  * the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
  22.  * MA 02111-1307, USA.
  23.  *
  24.  */
  25.  
  26. // This program for Arduino Uno reads two channels and sends the data
  27. // out through the serial port in 4 bytes.
  28. // For synchronization purposes, the following scheme was chosen:
  29. // A0 data: A09 (MSB) A08 A07 A06 A05 A04 A03 A02 A01 A00 (LSB)
  30. // A1 data: A19 (MSB) A18 A17 A16 A15 A14 A13 A12 A11 A10 (LSB)
  31. // sent as byte 1: 1 1 1 A09 A08 A07 A06 A05
  32. // and byte 2: 0 1 1 A04 A03 A02 A01 A00
  33. // and byte 3: 0 1 1 A19 A18 A17 A16 A15
  34. // and byte 4: 0 1 1 A14 A13 A12 A11 A10
  35. //
  36. // (This arrangement was chosen for hystorical reasons; there are
  37. // many other possibilities. 3 bytes would be enough, but this could
  38. // possibly create a nonsymmetry between the channels.
  39. //
  40. //
  41. int sensorValue = 0; // value read from the pot
  42. byte lb;
  43. byte hb;
  44. boolean ac1=false; // Channel 1 AC amplifier off
  45. boolean ac2=false; // Channel 2 AC amplifier off
  46.  
  47. void setup() {
  48. // initialize serial communications at 115200 bps:
  49. Serial.begin(115200);
  50. pinMode(8,OUTPUT);
  51. pinMode(9,OUTPUT);
  52. pinMode(10,OUTPUT);
  53. pinMode(11,OUTPUT);
  54. pinMode(12,OUTPUT);
  55. pinMode(13,OUTPUT);
  56. //analogReference(EXTERNAL);
  57. }
  58.  
  59. void loop() {
  60. // if(transmit) {
  61. digitalWrite(8,HIGH);
  62. if(ac1) sensorValue = analogRead(A2);
  63. else sensorValue = analogRead(A0);
  64. // sensorValue = test;
  65. // shift sample by 3 bits, and select higher byte
  66. hb=highByte(sensorValue<<3);
  67. // set 3 most significant bits and send out
  68. Serial.write(hb|224);
  69. // select lower byte and clear 3 most significant bits
  70. lb=(lowByte(sensorValue))&31;
  71. // set bits 5 and 6 and send out
  72. Serial.write(lb|96);
  73. //
  74. digitalWrite(8,LOW);
  75. if(ac2) sensorValue = analogRead(A3);
  76. else sensorValue = analogRead(A1);
  77. // sensorValue = 200;
  78. // shift sample by 3 bits, and select higher byte
  79. hb=highByte(sensorValue<<3);
  80. // set bits 5 and 6 and send out
  81. Serial.write(hb|96);
  82. // select lower byte and clear 3 most significant bits
  83. lb=(lowByte(sensorValue))&31;
  84. // set bits 5 and 6 and send out
  85. Serial.write(lb|96);
  86. // }
  87. if(Serial.available()) {
  88. char inChar = (char)Serial.read();
  89. if (inChar == '1') { // cal channel 1
  90. digitalWrite(9, HIGH); // gnd1
  91. digitalWrite(11, LOW); // AC1 off
  92. ac1=false;
  93. }
  94. else if (inChar == '2') { // channel 1 DC & AC, low gain
  95. digitalWrite(9, LOW); // gnd1
  96. digitalWrite(11, LOW); // AC1 off
  97. ac1=false;
  98. }
  99. else if (inChar == '3') { // channel 1 use AC amplifier
  100. digitalWrite(9, LOW); // gnd1
  101. digitalWrite(11, HIGH); // AC1 on
  102. ac1=true;
  103. }
  104. else if (inChar == '4') { // cal channel 2
  105. digitalWrite(10, HIGH); // gnd2
  106. digitalWrite(12, LOW); // AC2 off
  107. ac2=false;
  108. }
  109. else if (inChar == '5') { // channel 2 DC & AC, low gain
  110. digitalWrite(10, LOW); // gnd2
  111. digitalWrite(12, LOW); // AC2 off
  112. ac2=false;
  113. }
  114. else if (inChar == '6') { // channel 2 use AC amplifier
  115. digitalWrite(10, LOW); // gnd2
  116. digitalWrite(12, HIGH); // AC2 on
  117. ac2=true;
  118. }
  119. else if (inChar == '*') {
  120. digitalWrite(13, HIGH); // LED (on)
  121. }
  122. else if (inChar == '#') {
  123. digitalWrite(13, LOW); // LED (off)
  124. }
  125. }
  126. }

Utilisation.

Une fois votre arduino programmé:

  • Reliez A0 et A1 aux point de mesure de l’oscillation
  • Branchez l’arduino et démarrez lxardoscope.
  • En bas à droite, précisez /dev/ttyACM0 (ou ttyACM1, le truc qui correspond à l’USB quoi )
  • "Start"

IMG_20140219_225413.jpg

Limites et améliorations possibles.

ça me parait un peu imprécis quand même et l’échantillonage des mesures est limité pas les capacités de l’arduino, au delà de quelques khz c’est tres aléatoire. Dans le tar.gz du programe, vous trouverez quelques documentations sur la façon de préparer un port com, ou de permettre des mesures de tensions plus élevées.

Sinon, il existe un shield (non testé) pour améliorer les capacité de votre oscilloscope.

Peut etre que dans cette version de l’ossilo me suffira pour continuer le projet de télémètres ultrason et RF.


captchas_bandeau.jpeg Je vous parlais dernièrement d’un wiki qui avait été spammé. J’écris cette petite note à présent suite aux expériences sur un forum et ce blog. Je ne souhaite pas fermer les commentaires sur ce blog, encore moins fermer le forum en question, enfin je ne veux pas faire sous-traiter la gestion des commentaires par facebook.

Je vous met direct mes deux conclusions:

  • Les bots des spammeurs savent reconnaître les captchas.
  • Les auteurs des bots les ont programmés pour la pluspart des CMS. Les sites que j’ai "fait main" ne se font pas spammer malgré parfois un meilleur référencement et l’absence de protection antispam.

Et donc je préconise deux choses (qui sont du bon sens):

  • Ne pas utiliser de captchas visuels. mais les captchas sous forme de questions simples comme sur ce blog. D’autant que si vous rédigez les questions en français, il est peu probable que les bots soient faits pour les comprendre. Cette méthode fonctionne à merveille depuis des mois sur le blog du grouik, et m’a permis de mettre un terme définitif aux spams sur un forum PHBPP (le captcha de questions est placé à l’inscription)
  • Si votre site est fait main, vous pouvez vous passer de captchas à condition de ne pas mettre dans votre form d’éléments avec des noms trop usuels genre "login" "post" etc... Codez en français par exemple!
  1. <form method="post" action="commenter.php">
  2. <p>Pseudo:<input type=text name="pseudonyme"><p>
  3. <p>Message:<textarea name="commentaire"></textarea></p>
  4. <p><input type="submit" value="Envoyer le commentaire"/></p>
  5. </form>

- page 1 de 88

#enBref:

Développeur d'intranet

Gnieark:

... Je rajouterai un champs "url_du_logo" dans la base de donnée...

Dev front-end:

... Juste une petite question en passant d’après ton mail : Tu utilises des noms de champs en français? :p ...

Gnieark:

XD Je fais pire que ça... toutes mes variables sont nommées en français (peut être qu’1 ou 2 m’ont échappé et sont en franglais).

Je voulais avancer encore un peu avant de t’ouvrir l’accès au code et te faire cette surprise.

Dev front-end:

q1hfuia.gif



L'effet du passage en https sur la fréquentation du site

En septembre 2013, je passais ce blog en https. J’ai été plutôt inactif depuis (10 billets environ), et pourtant la fréquentation (malgré le risque du passage en https) n’a pas diminuée. Au contraire, elle a légèrement augmenté alors qu’elle aurait du baisser vu le manque d’activité.

stats.jpeg

Je reste à un peu plus de 6000 visiteurs uniques par mois.

Voici un grand raccourci, vu que la majorité des visiteurs sur ce site sont passés par google: Google indexe et référence aussi bien un site en https qu’en http. Attention quand même:

  • Toutes mes anciennes url en http sont proprement redirigées vers la nouvelle adresse avec un code 301.
  • Mon certificat SSL est signé par une autorité de confiance.

Syntax error

artworks-000047761397-j1ky7w-t200x200.jpg Syntax Error est un groupe rouennais (Cocorico) que je découvre à cause de Chyropter.

Ils chantent des morceaux de codes informatique qui ne fonctionnent pas.

Leur page web est par là: http://www.lekalif.com/syntaxerror


Windows 8 avoir une icone sur le bureau pour arréter l'ordinateur

Envie de pouvoir arrêter votre ordinateur windows 8 avec juste une icône à double clicker?

Téléchargez shutdown.bat (click droit -> enregistrer sous)

Double cliquez dessus:

shutdown.bat.jpg


En cours - module puppet authentification sur l'active directory

pupper-act.png

Avertissement

Attention, c’est un développement en cours!!! Dans l’immédiat ça ne fonctionne pas correctement, et ça peut même vous supprimer toute possibilité de vous authentifier en root sur la machine. Ce billet s’adresse aux bricoleurs uniquement, testez sur une machine sur laquelle on ne craint pas de tout perdre uniquement. J’espère pouvoir finaliser ce module puppet dans la semaine, mais vu mon emploi du temps ce n’est pas gagné. Mais c’est quand même pas mal avancé, et ça peut inspirer les gens qui cherchent à lier un linux à un AD.

Puppet?

Puppet est un système permettant de charger des configurations sur plein de machines à la fois depuis un serveur master puppet.

Mon module:

l’objet est de configurer les PC sous linux pour que l’authentification au démarrage se fasse en utilisant le serveur Microsoft active directory. + montage de quelques dossiers.

Le dépot git est là https://github.com/gnieark/puppet-authOnActiveDirectory


Le solveur de scrabble en bash par Zigazou - code source

scrabble-resolver-bash-zigazou.jpeg

Hier soir au hackerspace j’expliquais qu’en défi absurde, je m’étais penché sur un résolveur de scrabble. Non, pas un résolveur du plateau de scrabble, juste un petit programme qui, à partir d’une combinaison de lettres, liste les mots contenus acceptables au scrabble. Le défi étant d’optimiser un poil le code pour la recherche étant donné qu’il y a quand même 387 719 mots acceptables d’après l’officiel du scrabble version 6.

De mon coté j’avais un peu bataillé en PHP / mysql. L’avancement de mon code: Il savait retrouver seulement les mot ayant le même nombre de caractères que ceux fournis dans la requête de l’utilisateur.

Zigazou (qui aime bien ce genre de prises de tête) a relevé le défi, et pour compliquer/simplifier[1], il l’a fait en bash dans la soirée, et son script (une 40aine de lignes) donne toutes les possibilités (même celles avec moins de caractères) et prend en compte le jocker (le pion blanc du scrabble).

GG!

Avec une petite limite quand même:

@gnieark si tu testes, ne met pas plus de 2 jokers (1 joker multiplie par 26 le nombre de solutions testées. 2 par 676, 3 par 17576 etc.)

EDIT 13-09-2013: Zigazou a créé une page pour présenter et expliquer son code. C’est par là.

Téléchargez son sript par là scrabbleResolver.tar.gz

Pour ceux que ça intéresse, voici la liste de mots acceptables au scrable (officiel du scrabble version 6) récupérée via une recherche avancée dans google. ODS6.txt.tar.gz

Note

[1] Entourez la réponse qui vous plaît


Yubaba en paper craft

DSCN0329c.JPG

Ça m’a pris quelques heures, pas mal de coups de scalpel et un peu de UHU sur les doigts.

Le patron que j’ai utilisé pour réaliser Yubaba vient de là: http://www.paper-toy.fr/2013/01/25/yubaba-papercraft-by-zicondesign/


Propulsé par Dotclear