Arexx et raspberry

Avant de m’intéresser à RFLINK je me suis équipé de sondes Arexx. POur cela il faut donc des sondes mais aussi le logger. Pendant longtemps le tout tournait, à merveille je dois dire, sous Windows.. oui mais voila j’ai voulu faire marcher la chose sur raspberry ..

Et bien la on se sent un peu seul voyez vous ..

Il faut télécharger un programme qui date de 2003 ..

http://www.arexx.com/downloads/templogger/linux/rf_usb_http_rpi_0_6.zip

Bien sur on l’installe et on lit le readme .. par chance le programme sait faire un appel http .. on va donc utiliser cela .. voici comment paramétrer le fichier rulefile.txt

Vrulefile
A1php push
B1
C0
E213.186.122.44/getdata.php
Zdata==arexx&&name==$i-$q&&value==$v&&type==$q

en première ligne, vous lui dites que vous faite du “push” php .. ensuite en 5 ieme ligne vous donner l’url de base sans préciser http:// mais avec un E devant

Enfin, après un Z, vous spécifiez les noms des variables et la valeur

dans mon cas donc l’url appelée serait

http://213.186.122.44/getdata.php?data=arexx&name=20242-0&value=12.6&type=hum

Ensuite il ne reste plus qu’à appeler le programme. Mais malheureusement ca ne marche pas, et il n’y aucune doc. Qu’a cela ne tienne, on va le gruger. J’appelle le programme et redirige la sortie standard dans un fichier, le tout pendant 30s.

sudo ./rf_usb_http.elf -v rulefile.txt > logfile < <(sleep 30;echo -e "\n")

Une fois la sortie récupérée je vais nettoyer tout ca et récupérer la partie qui m’intéresse et faire le curl moi meme.

cat logfile | grep GET | uniq | awk '{print $2}' >> tmp
while read -r line
do
        url="http://monsiteamoi$line"
        echo "curl sur $url"
        /usr/bin/curl --connect-timeout 1 --max-time 5  $url
done < tmp

Voila, c’est dégoutant mais ca marche …

J’en profite pour souligner que les sondes Arexx sont de super qualité. Je les utilise depuis 10 ans, j’en ai une qui cessé de vivre après être tombée, mais sinon elles sont super, les piles durent super longtemps.

Malheureusement, le protocol utilisé n’est pas décrypté par rflink .. ce serait un travail à faire … peut etre un jour .. cela permettrait de se passer de la passerelle usb.

Toutefois, si vous avez un rflink, cela ne fait pas le poids avec une sonde Oregon qui a le bon gout d’indiquer, dans la trame, le niveau de batterie..

lire les trames RF avec RFlink depuis LINUX

RFlink est un super code qui décode à la volée les trame RF, les reconnait et les transmets .. à domoticz ..

Domoticz est un produit super … mais j’ai préféré m’en passer.

J’utilise pour ma part un script shell qui parse le fichier (oui sous LINUX l’arduino connecté en USB peut etre vu comme un fichier) et qui transmet les informations lues à mon site sur lequel un webservice REST tourne.

Pour commencer, comment paramétrer la lecture du “fichier” ou plutot du flux : on utilise pour cela la commande stty en lui donnant les bons paramètres

#8 data bits, 1 stop bit, no parity
/bin/stty -F /dev/ttyACM0 57600 sane -parenb cs8 -cstopb cread inlcr

Ensuite, on peut lire ou écrire, pour ma part je commande à désactiver le mode débug

echo "10;rfdebug=off;" >> /dev/ttyACM0

Enfin, on peut s’atteler à la lecture. Pour cela je fais une boucle infinie dans laquelle je vais décoder chaque ligne avec des awk. Cela permet de savoir quel type de trame on a (la variable what) et son la valeur de son id ..

/bin/cat /dev/ttyACM0 | while read line; do
  fullcontent=`/bin/echo ${line:4} | tr -d ' '`
  what=`/bin/echo $fullcontent | /usr/bin/awk -F";" '{print $2}'`
  id=`/bin/echo $fullcontent | /usr/bin/awk -F";" '{print $3}'`
  id=${id#ID=}
done

On suivra le meme principe en changement la commande pour récupérer, selon le type de trame, la température, la valeur du “switch”, de la commande, de la batterie .. Dans un prochain article je détaillerais comment, avec ce système, je récupère la valeur des sondes oregon ..

Faire votre propre récepteur/émetteur RF433MHz

Je ne vais pas trop m’étendre sur le comment .. en effet vous trouverez plein de tuto pour faire ca (cherchez rflink et arduino) donc je ne vais pas ré-écrire .. quelques points importants ..

Juste penser bien à acheter un récepteur super stéréodyne .. il en existe d’autre un peu moins cher mais c’est tout simplement pourri au niveau de la réception.

Donc pourquoi passer au rflink ? Et bien parce que vous pourrez ensuite facilement lire (via un simple script shell) les données et commencer à établir des scénarios !

voila c’est tout .. faites le .. c’est vraiment bien..

Test alarm RF433Mhz premier prix

En bon radin que je suis j’ai voulu installer une alarme mais sans passer par les offres telles que mon assurance me propose à 50€ par mois.

J’ai donc choisi le premier modèle qui est fortement répandu et voici en exclusivité mondiale les retours :

  • tout d’abord la documentation est passablement foireuse .. c’est difficile d’identifier le modèle qu’on a et les options qu’il digère .. de ce coté la il faut s’accrocher et essayer
  • Il faut désactiver sur votre carte sim la protection par code ..
  • Il faut être assez compréhensif avec le système car des actions sont clairement perdues : quand on voit ce qui se passe avec RFLINK on comprend mieux : je ne sais pas à qui est la faute mais on voit clairement que les trames sont parfois mal interprétées : le détecteur de présence est vu de type newKaku mais son id change de temps en temps ..

Vu que le gestionnaire rate visiblement aussi des actions c’est que le problème n’est pas dans RFLINK mais dans l’émetteur. Effecticvement, j’ai également des sondes “Oh Raie Gonds” (je ne veux pas faire de pub, en tout cas pas tant que je ne suis pas rémunéré pour 😉 ) et je n’ai jamais ce genre de problème ..

Peut être est pour cela qu’il y a des systèmes d’alarme très cher et d’autre non .. A mon sens, ce doit être dissuasif uniquement donc inutile d’y mettre des fortunes (j’ai entendu quelqu’un dire que j’étais radin .. mais on le savait déjà) ..