RFLINK : Un Module 433Mhz Arduino MEGA : Partie 1 : le matériel

Grâce à la complicité de mon ami Deennoo, je vous propose cet article qui devrait faire du bruit dans les chaumières, puisque il s’agit ni plus ni moins de confectionner un module compatible avec les protocoles 433Mhz en mode « C’est moi qui l’ai fait ! »

rfl_rxtx
ArduinoMega rf2

Présentation

RFLink (http://rflink.sourceforge.net/) est un outil OPENSOURCE/DIY a base d’Arduino Mega qui permet de sniffer et d’envoyer des trames Radio Frequence en 433 MHZ de différents protocoles basés sur cette fréquence.

RFLink se fait donc passer pour un équipement autre et il est donc reconnu comme tel dans Domoticz.

C’est un très bon complément (pour ne pas dire plus) au RFXTRX de RFXCOM.

Les termes Rfxcom/Rfxtrx étant marques déposées par leur propriétaire ne seront pas utilisées ici.

Le Rflink  fonctionne comme les modèles précédemment cités en embarquant les protocoles les plus populaires..

Il a été crée par la Stuntteam, une équipe de développeurs néerlandais passionnés de domotique qui a travaillé auparavant sur Nodo (http://www.nodo-domotica.nl/).

Il est rendu compatible avec Domoticz depuis la bêta  2.2336.

La version stable 2344 de Domoticz intègre Rflink nativement.

Grâce a des Plug Ins en langage C, Il permet de décoder et de piloter les appareils suivants : (liste exhaustive à ce jour (25/03/15)  mais en constante et rapide évolution.

Prises et interupteurs RF

  • Klik Aan Klik Uit (Code Wheel) (Send + Receive)
  • Princeton PT2262 / MOSDESIGN M3EB / Domia Lite / Klik-Aan-Klik-Uit / Intertechno)
  • CoCo Technologies / Cogex / D-IO (Chacon) / Nexa / Düwi Terminal
  • Klik Aan Klik Uit (Automatic Code Learning) (Send + Receive)
  • Home Easy (Code Wheel) (Send + Receive)
  • Flamingo FA500R/S/DSS/WD (Automatic Code Learning) (Send + Receive)
  • SilverCrest 91210/60494 RCS AAA3680
  • Mumbi M-FS300
  • Unitec 48110 EIM 826 / 48111 EIM 821
  • Elro Home Comfort AB600 (Send + Receive)
  • Intertek Eurodomest 972080(Automatic Code Learning) (Send + Receive)
  • Blyss (Send + Receive)
  • Conrad RSL2 (Receive only)
  • Kambrook RF3399/RF3405/RF3672/RF3689/RF4471R (Receive only)
  • X10 RF switches (Send + Receive)

Capteurs Meteo :

  • Alecto V1:
  • Alecto WS3500, SilverCrest, Otio SHT-10, Otio SHT-20
  • Auriol H13726, Ventus WS155, Hama EWS 1500, Meteoscan W155/W160
  • Alecto WS4500, Ventus W044, Balance RF-WS105
  • Alecto V2: (868 Mhz! A donc besoin d’un )
  • ACH2010, DKW2012
  • Alecto V3:
  • WS1100, WS1200
  • Cresta/Hideki:
  • Hideki, TFA Nexus, Mebus, Irox, Irox-Pro X, Honeywell, Cresta TE923, TE923W, TE821W,
  • WXR810, DV928, Ventus W906, HomeWizard Rain meter
  • Mebus:
  • Mebus Outdoor Sensor
  • Stacja Pogody WS-9941-M
  • UPM/Esic:
  • UPM, Esic, Emos, DVM, Clas Ohlson, Dickson
  • WT260,WT260H,WT440H,WT450,WT450H,WDS500,RG700
  • LaCrosse:
  • Lacrosse TX3-TH Thermo/Humidity, Lacrosse TX4
  • WS7000-15: Anemometer, WS7000-16: Rain precipitation, WS2500-19: Brightness Luxmeter,
  • WS7000-20: Thermo/Humidity/Barometer
  • Auriol:
  • Z31743, Z31055A, Rubicson
  • Oregon V1/2/3:
  • THC238, THC268, THN132N, THWR288A, THRN122N, THN122N, AW129, AW131, THGR268, THGR122X,
  • THGN122N, THGN123N, THGR122NX, THGR228N, THGR238, WTGR800, THGR918, THGRN228NX, THGN500,
  • THGR810, RTGR328N, THGR328N, Huger BTHR918, BTHR918N, BTHR968, RGR126, RGR682, RGR918, PCR122
  • THWR800, THR128, THR138, THC138, OWL CM119, cent-a-meter, OWL CM113, Electrisave
  • UVN128, UV138, UVN800, Huger-STR918, WGR918, WGR800, PCR800, WGTR800, BTHG968

Commande de Volets / Store

  • Kaku ASUN650

Detecteurs de mouvement et d’ouverture de porte :

  • Low Budget Chinese PIR
  • Ajax Chub Varel PIR

Dectecteur Incendie:

  • Mertik G6R H4T1 / Dru

Detecteurs de fumée:

  • KD101 (Send + Receive)
  • Flamingo FA20RF (Send + Receive)

Carillons:

  • SelectPlus (200689103 – Black – Datecode:0614), 1 by One, Delta (O00 QH-0031) (Send + Receive)
  • SelectPlus (200689101 – White – Datecode:0914) (Send + Receive)
  • Byron SX (Send + Receive)
  • Plieger York (Receive) Note that when the Plieger button is detected as Conrad RSL2, you need to use the button on the inside to change the address code of the Plieger.

Nodo Slave Sensors:

  • Temperature, Humidity, UV, barometric Pressure, OpenTherm and any other kind of Nodo sensor you want to include.

On voit bien que pour l’instant le nombre de périphériques supportés est bien moindre que ceux du RfxTrx, mais l’équipe de développement travaille à ajouter de nouvelles compatibilités tous les jours. Et puis, comme c’est open source, libre a vous de développer vos propres Plug Ins pour les protocoles qui ne sont pas encore reconnus et de les partager dans la communauté. 😆

Lire la suite

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Cacher un widget dans Domoticz

Dans la série « Je me coucherai moins bête ce soir », voici un nouvel épisode, un simple truc qui permet de masquer un widget de l’interface web de Domoticz.

C’est tout simple :

En sélectionnant le plan $Hidden Devices et en y affectant les périphériques non désirés on peut les masquer de l’interface web. Cela se passe dans le menu « périphériques par emplacement » du menu des plans il suffit d’affecter un périphérique à la liste nommée $Hidden Devices.

Screenshot - 22032015 - 18:28:09

 

Une autre technique de « masquage » basée sur les noms existe.

Editez le widget concerné et placez un signe dollar ‘$’ devant son nom. Il disparaît.

2015-03-22 10_05_36

Il est toujours dans la liste des dispositifs et continue à faire le job (plannings, récupération de valeurs …), il est juste « pas affiché ».

2015-03-22 10_06_37

Si vous voulez le récupérer, depuis la liste des dispositifz, la flèche verte vous permet de le renommer et donc de supprimer le $ devant et ainsi de réafficher le widget en question et d’en récupérer tout l’historique d’ailleurs.

2015-03-22 10_07_19

2015-03-22 10_06_02

Cette manip me semble valable pour tous les widgets (bien que je n’ai pas tout testé)

Indiana,  lecteur attentif nous informe :

Attention toutefois : cette manip a pour inconvénient de changer le nom du switch et donc de rendre inopérable les scripts lua qui l’utilisent. Perso, je préfère les cacher en les mettant dans l’emplacement $$HiddenDevices dans le menu emplacements.

Merci de l’info.

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Mémento instructions shell bash

Cet article fait suite à  https://easydomoticz.com/domoticz-et-scripts-les-bases/ qui tentait de définir les bases du scripting. Ce second opus concerne les commandes Linux usuelles à connaitre pour piloter Domoticz via le shell bash.

Cette liste n’est pas exhaustive et n’empêche pas la lecture de site web spécialisés dans le shell Linux (OpenClassRoom par exemple à des très bons tutoriaux).

Pourquoi écrire des scripts ?

On à besoin d’écrire des scripts quand on commence à s’interfacer avec le monde extérieur, par exemple piloter un ampli via http, récupérer son calendrier google, gérer ses plantes vertes …

C’est la que l’on va avoir besoin d’envoyer des requêtes, récupérer et traiter le résultat, puis mettre à jour Domoticz via l’API JSON.

L’API JSON

« Dans Domoticz vous parlez tout le temps de l’API JSON qu’est ce que c’est ? »

Il s’agit d’un moyen de lecture et d’envoi de données depuis/vers Domoticz.

L’intérêt est de pouvoir interroger ou écrire des données, par le biais de requêtes http, depuis n’importe quel langage (shell, php, python, perl, Lua…) pour peu que l’on respecte le format imposé par Domoticz.

L’API est donc le dictionnaire des commandes que sait comprendre et exploiter Domoticz.

La référence de l’API est ici http://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s

Pour utiliser les fonctions de l’API à l’aide du shell Linux nous avons souvent besoin de commandes http, de récupérer des données extérieures…

Voici un petit mémo des commandes récurrentes:

Ecrire et rendre exécutable un script

Ou placer les scripts ?

Il n’y a pas d’emplacement privilégié du moment que domoticz puisse aller lire à cet endroit.

Toutefois les développeurs de Domoticz ont crée domoticz/scripts, domoticz/scripts/lua cela serait quand même logique de les utiliser.

Quitte à créer domoticz/scripts/python, domoticz/scripts/sh, domoticz/scripts/php pour faciliter la gestion des scripts.

Ce qui suit ne s’applique pas aux scripts LUA de domoticz/scripts/lua qui sont entièrement géres par Domoticz et à ce titre doivent correspondre à des “nommages” précis (script_time, script_device…)

Comment écrire un script ?

Tout d’abord quelques considérations générales.

  • Nommez votre script d’un nom explicite et pas toto.py mais clignotement_lampe_exterieur.sh
  • Utilisez les .sh à la fin du fichier, cela n’est pas obligatoire mais pour les pauvres êtres humains que nous sommes c’est mieux.
  • LA chose qu’il faut savoir c’est que votre script doit commencer par un shebang approprié, http://fr.wikipedia.org/wiki/Shebang, en effet les scripts sont des fichiers texte dont la première ligne devra être le shebang qui indique au système dans quel langage est rédigé le script et le chemin vers ce langage. Pour le shell c’est
    #! /bin/bash

Rédaction du fichier.

sudo pico monscript.sh

ouvrira un éditeur de texte qui vous permettra d’écrire vos commandes shell dans le fichier nommé monscript.sh.

  • CTRL k  : permet de couper des lignes.
  • CTRL u : de coller les lignes précédemment coupées.
  • CTRL x  : permet de quitter cet éditeur, une confirmation est demandée.
  • CTRL G : aide du logiciel pico.

Rendre exécutable ce script et le lancer

chmod +x monscript.sh

permet de rendre exécutable votre script.

le lancement se fait par un

./monscript.sh

voici quelques commandes que nous utilisons régulièrement dans des scripts bash.

Appeler une url http

Pour piloter Domoticz on doit appeler une requête http dont l’écriture nous est imposée par l’API Domoticz.http://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s

Ainsi pour allumer une lampe dont l’idx est 44

On utilise la commande curl en ligne de commande

curl 'http://192.168.1.81:8080/json.htm?type=command&param=switchlight&idx=112&switchcmd=On&level=0'

Ou dans un script

#! /bin/sh
curl 'http://192.168.1.81:8080/json.htm?type=command&param=udevice&idx=44&nvalue=0&svalue=25;60;2'

envoie 25,60,2 (température, humidité, indice confort) dans l’idx 44 de mon Domoticz, ce qui à peu d’intérêt.

Affecter une variable shell bash

L’idée est de récupérer une valeur de quelque part puis de la réutiliser.

la définition et l’affectation de valeurs d’une variable est faite simplement par son nom.

son utilisation (affichage, tests) est préfixée par « $ »

#!/bin/bash
tempo=$(curl -s "http://domogeek.entropialux.com/tempoedf/now")
echo $tempo

if [ $tempo = "bleu" ]
then
...
tempo=rouge

ici je récupère « bleu », »blanc », ou « rouge » dans la variable tempo en appelant curl.

les tests sont faits sur $tempo= »bleu »

 Envoyer des données dans un fichier

N’importe quelle commande Linux peut être renvoyée à l’intérieur d’un fichier, il suffit de faire suivre la commande de > nom_du_fichier.txt.

l’affichage au lieu de se faire à l’écran se fait dans le fichier.

ainsi un ./domoticz > mon_fichier_log.txt envoie tous les messages Domoticz dans ce fichier.

Afficher des données d’un fichier, d’un port.

Pour afficher les données contenues dans un fichier texte, qui arrivent d’un port ttyXXX, on utilise la commande ‘cat’

cat /dev/ttyAMA0

affiche les données du port série ttyAMAO

cat domoticz.sh

affiche le contenu de ce fichier.

Manipulation de chaines

Extraire une chaîne de caractères entre deux positions précises:

On utilise les symboles ${}.

La syntaxe est ${chaine,position,longueur}

ainsi

chaine=abcdefgh
souschaine=${chaine:4:3}
echo $souschaine

affiche efg (3 caractères à partir du 4eme caractère)

http://pierrellensa.free.fr/dev/bash/www.bsdbooks.net/shells/scripting/fr/string-manipulation.html

Extraire un champ

Cas de figure un peu diffèrent de ci dessus, lorsque je reçois une chaine correctement formatée avec des séparateurs entre chaque champ.

Soit des données telles que :

3A40 mixer volume 30

les champs sont séparés par un espace (3A40espacemixerespacevolumeespace30)
un cut -d’  ‘ -f3 renvoie le 3eme champ de la chaine soit « volume »
et donc cut -d’  ‘ -f4 affiche le 4eme champ soit « 30 » (Attention à l’espace au milieu des simples ‘)

le -d’ ‘ indique le caractère de séparation des champs, ainsi si les champs sont séparés par un caractère @

3A40@mixer@volume@30

cut -d’@’ -f3 affiche  « volume »

 

To be continued

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Domoticz, Arduino : MySensors.org Partie 3 : Un sensor

Dans les épisodes précédents nous avions détaillé le principe de fonctionnement de MySensors.org, vu comment intégrer une passerelle MySensors à notre Domoticz, il nous reste à expliquer l’intégration d’un capteur MySensor.

Cette partie sera plus légère car je ne vais pas détailler ici tous les montages à base d’Arduino possibles. Je prendrai plusieurs exemples.

Le site de MySensors.org nous facilite l’intégration de nos capteurs au sein de nodes MySensors car sur la page du capteur on a à la fois le schéma de câblage, le code MySensor qui correspond et la boutique pour faire nos achats de capteurs (E-bay ou Ali-express).

Ainsi je je veux intégrer un capteur de gaz ou d’alcool : :mrgreen: , la page http://www.mysensors.org/build/gas me fournit tout ce qui est nécessaire.

Il faudra aussi bien entendu un module radio NRF24L câblé correctement à notre sensor Arduino. Le montage est le même que celui de la passerelle.

On peut directement téléverser le code Arduino MySensors dans notre propre Arduino depuis cette page en n’oubliant pas d’installer les librairies Mysensors auparavant, mais si vous avez suivi la progression dans l’ordre, vous avez fait cette étape lors de la mise en place de la passerelle. https://easydomoticz.com/domoticz-arduino-mysensors-org-partie-2-la-passerelle/

Respectez les schémas de câblage donnés ou pensez à changer, dans le sketch,  les numéro de pin que vous utilisez.

Si vous avez installé les bibliothèques MySensors sur votre PC, le menu des Exemples (Fichiers/Exemples) contient tous les sketches Arduino-MySensors.org

arduino_mysensors_libLire la suite

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Domoticz, Arduino : MySensors.org Partie 2 : la passerelle

L’article précédent nous à permis de voir le principe de fonctionnement du réseau MySensors.org à base d’Arduinii (un Arduino des Arduinii) avec leurs capteurs, leur passerelle.

Édition du 22/11/2015 pour ajouts paramétrages Gateway dans Domoticz.

network

Voyons ici la mise en place de la passerelle (GW) Arduino⇒Domoticz.

Dans ce qui suit j’utiliserai les symboles S pour les Sensors, GW pour la passerelle pour rester cohérent avec le schéma ci-dessus.

 

1 – Les composants nécessaires :

La passerelle Arduino.

Je vais prendre exemple de la réalisation d’une gateway USB vers Domoticz, sachez qu’un lien Ethernet est possible également avec Domoticz.

Pour la passerelle :

  • un arduino

250px-Arduino_Diecimila

  • un cable USB A/B

USBAB

  • un module radio NRF24L

radio

  • 6 câbles pour relier le module radio à l’Arduino

 

assortiment-de-100-straps-mf

Câblage  du module radio

Lire la suite

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/