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 ..

Domotiser une chaudière ELM Leblanc

et voila, ma nouvelle chaudière vient d’être installée et mise en mode hiver ..

mais maintenant j’aimerais bien avoir une idée de sa consommation (c’est mon truc vous verrez… )

Le service client et technique d’ELM Leblanc étant aussi aimable que collaboratif et compétent, il va falloir se débrouiller seul.

Par chance, la chaudière est équipée d’une entrée thermostat qui se trouve être un contact sec ..

Tiens donc, mais faire mordre un contact c’est le job d’un relais .. et pilote un relais avec le raspberry je sais faire ! Essayons

Equipement :

  • un relais 5v
  • un raspberry
  • des cables dupont et dupond

Dans mon cas la chaudière gère l’eau chaude de chauffage j’ai donc des radiateurs avec des têtes thermostatiques mais tout ce qu’il y a de plus vieux et basique.

Je les règle sur une valeur qui correspond au maximum que je tolère (si ce n’est plus mon rapsberry qui pilote).

Ensuite c’est assez simple, le raspberry collecte les températures et évalue le besoin de chauffage (si une pièce est trop froide par rapport à la consigne) et si oui, on active le relais.

A noter que le relais est branché en “normalement fermé”, cela veut dire qu’en cas de perte du raspberry, par défaut on chauffe (enfin si les têtes thermostatiques laissent passer l’eau) ainsi on a du chauffage même si notre rapsberry nous a laché (votre femme appréciera).

La routine d’évaluation du besoin de chauffage tourne à interval régulier et on note le résultat (chauffage demandé ou pas). On a ainsi plus qu’a multiplié le nombre de demande de chauffage par le temps de cycle de notre routine et on obtient le temps de chauffage. En faisant l’approximation de la consommation de gaz (le débit est désormais variable est piloté par votre chaudière) on a une estimation de la consommation de gaz. Sur une année, mon erreur est en dessous de 10% !

Protéger votre réseau tout en diffusant vos données

Kesako ?

Comme tout a chacun vous souhaitez accéder à des informations concernant votre maison depuis votre travail .. cela se comprend ..

Mieux que cela vous aimeriez pouvoir agir sur votre maison à distance : bouger une caméra, déclencher le chauffage, diminuer le thermostat, déclencher la VMC et j’en passe ..

Donc il n’y a pas 36 solutions .. il faut hébeger domoticz sur votre réseau et en ouvrir l’accès .. évidement .. et puis c’est si facile ..

Que dalle ! C’est le mal ! Vous vous croyez en sécurité derrière votre raspberry, votre http ?

Oui je sais ce que vous allez dire : qu’est ce que les pirates en ont à faire de mon pauvre serveur ? Ben ne je vais même pas répondre à ca ..

Moi j’aime pas l’idée qu’on rentre chez moi donc j’ai décidé de faire autrement ..

L’idée est simple :

  • un service (shell script) tourne sur un serveur de mon réseau et interroge (via des commandes curl) mon site web (qui dispose d’un webservice) en permanence .. en réalité il y a plusieurs services selon la fréquence mais cela n’a pas d’importante (ben pourquoi le dis-tu ? oh ca va)
  • sur mon site je peux saisir des instructions. Quand elles sont saisies j’en profite pour récupérer des infos sur le visiteur de la page. Avec les informations j’ajoute aussi un mot de passe qui dépend de la commande, du jour et du pc que j’utilise.
  • Quand une instruction a changé le service vérifie qu’elle a une bonne tête d’instruction et que celui qui l’a faite a une bonne tête de … que c’est moi quoi .. (une IP connue ou un appareil connu) il lance l’action qui va bien et trace tout cela .. bien sur s’il pense qu’il y a une entourloupe .. il m’envoie un ptit mail et éteint tout ..)

A plus tard pour illustrer cet article et le détailler dans le code si cela intéresse ..