Détection de présence par beacon : partie 2

Dans l’article précédent http://easydomoticz.com/?p=3408 nous avions vu toute la partie préalable de la mise en place de détection de présence.

Voyons ici comment mettre en place la détection dans Domoticz.

Configurer le script

(Lisez les commentaires dans le script check_beacon_presence)

On peut adapter le niveau de log pour les tests et pour l’utilisation quotidienne en commentant/décommettant les lignes logLevel :
– Pour tester activez .DEBUG , le log de /var/log/check_beacon_presence.log est alors très bavard.

– Ensuite passez en .CRITICAL en commentant la première ligne

Domoticz et les variables

Rendez vous dans Domoticz et ajoutez une variable texte par beacon à gérer.

variables

Je vous conseille d’acheter des beacons de couleur différente pour chaque membre de la famille puis de nommer vos variables soit par couleur ou par prénom du possesseur, ou un mix des deux si vous avez deux fois la même couleur.

Par exemple

variables-texte

Adaptation du script

Ouvrez le script

Adaptez la partie URL_DOMOTICZ si vous ne travaillez pas en localhost ou avec le port par défaut

 

Descendez dans la partie des beacons et configurez les vôtres  sous la forme suivante dans  TAG_DATA : [Nom_de_la_variable_domoticz,MacAddress,Timeout,0,idx,mode]

  • Nom_de_la_variable_domoticz: C’est le nom EXACT de la variable texte de Domoticz, attention aux majuscules/minuscules !
  • macAddress : la Mac adress de ce beacon.
  • Timeout est le temps qu’il faut pour que le beacon soit considéré en AWAY (parti). Si le beacon émets toutes les 3 à 8 secondes , un bon timeout est  15 seconds. Pour définir cela utilisez les valeurs données par test_beacon.py voir plus haut).
  • – 0 : pas touche.
  •  l’idx Domoticz de cette variable texte, c’est le nombre en face du nom de la variable.
  • mode : SWITCH_MODE = une mise a jour unique lorsque le statut change / REPEAT_MODE = mise à jour continuelle de l’état toutes les 3 secondes

Second Test : Lançons le script à la main et voyons.

A l’écran des information s’affichent , le log se remplit à :

Vérifiez que vos variables texte sont mises à jour correctement en regardant leur contenu (AWAY ou HOME) et la date de mise à jour en fonction de ce que vous voyez passer à l’écran.

Repassez le debug à critical quand tout fonctionne et activons tout cela automatiquement en tant que service.

Installation du service

Troisième test

Lancez le service manuellement :

Vérifiez qu’il fonctionne par :

On peut y utiliser les commandes : start, stop, restart, status

Si le service est bien lancé activons le au boot du Raspberry

Démarrage du service automatique

Pour le supprimer du démarrage du Raspberry  :

Test final (avec le démarrage automatique activé)

Vous devez voir un « check_beacon_presence.py » quelque part

Utilisation dans Domoticz

Vous avez vu que ce sont des uservariables texte qui passent de AWAY à HOME, vous pouvez donc utiliser tous les moyens offerts par Domoticz pour exploiter cela à votre convenance (Lua, Blocky, API JSON…)

Exemple Lua

script_variable_autoArmAlarm.lua

 

D’autres exemples : https://www.domoticz.com/forum/viewtopic.php?f=28&t=10640&start=100#p86310

Blocky

https://www.domoticz.com/forum/viewtopic.php?f=28&t=10640&start=140#p86725

Références

Le topic du forum :https://www.domoticz.com/forum/viewtopic.php?f=28&t=10640
Une page de référence pour les beacons ble : https://www.beaconzone.co.uk/allbeacons
https://wiki.tizen.org/wiki/Bluetooth
https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/pybluez/source-archive.zip => pybluez\examples\advanced\inquiry-with-rssi.py

Mémo d’autres commandes

Reset  de l’adapttateur bluetooth (hci0 dans cet exemple) :

Trouver une  MacAdress d’un beacon avec hcitool

 

Voila vous pouvez maintenant détecter les arrivées/départs de tous les membres de la famille, faites en bon usage.

big-brother-is-watching-you1

 

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

Détection de présence par beacon

C’est la rentrée et afin de travailler mon anglais, je vous propose ici la traduction d’un article tiré du wiki anglophone et écrit par un de nos contributeurs français : jml. Merci de son autorisation de traduction.

Cet article détaille donc la mise en place de la détection de présence via des « beacons » ces petit capteurs bluetooth low energy que l’on peut attacher à nos clés de voiture, ou à nos enfants pour ne pas les perdre.

 

Nut_beacon

Voici le lien du forum ou l’annonce de son tuto est faite http://easydomoticz.com/forum/viewtopic.php?f=17&t=2047

et le le lien du wiki https://www.domoticz.com/wiki/Presence_detection_%28Bluetooth_4.0_Low_energy_Beacon%29

Je reprends éhontément les images issues du wiki.

But

Faire de la détection de présence d’un ou plusieurs beacon via BlueTooth Low Energy V4.0 dans Domoticz afin de savoir si le porteur du beacon en question est à proximité. Ainsi on pourra armer/désarmer les alarmes Domoticz en testant la présence/absence du/des beacons ou bien d’autres choses.

La présence d’un ou plusieurs beacons sera testée par un script qui affecte une valeur à une variable Domoticz.

Ce script possède 2 modes de fonctionnement. On peut choisir pour chaque beacon le mode préféré

  • REPEAT MODE : Pour un  beacon à portée, le script met à jour la variable Domoticz à « HOME » toutes les  3 secondes suivant la puissance du signal RSSI, sinon c’est « AWAY » qui est mis dans la variable.
  • SWITCH_MODE : Pour un beacon à proximité la variable est mise à « HOME » seulement une fois, sinon c’est  « AWAY » .

La détection est vraiment rapide (moins de 10 secondes), ensuite la présence/absence est vérifiée toutes les 5 secondes par comparaison à l’heure de la dernière présence de chaque beacon

Nous aurons donc besoin d’une variable de type string par beacon.

Beacon_uservariable

Puis des scripts Lua, Blocky ou autres pourront donc tester la valeur de la variable pour déclencher des actions Domoticz.

 Matériel

Ce tuto à été réalisé à l’aide d’un Raspberry Pi.

La clé USB Bluetooth BLE.

Les beacons utilisant bluetooth il faudra une clé USB Bluetooth 4.0 compatible avec le PI.

J’utilise celui ci : http://www.amazon.fr/SODIAL-Adaptateur-Bluetooth-Dongle-Ordinateur/dp/B00L317IL4/277-2648083-3402713?ie=UTF8&redirect=true&ref_=pe_386181_37038081_TE_3p_dp_1
https://www.amazon.co.uk/gp/product/B00XTU53A0/ref=oh_aui_detailpage_o09_s00?ie=UTF8&psc=1
– Plugable USB-BT4LE adapter: http://plugable.com/products/usb-bt4le (uses BCM20702 chipset)
– CSR chipset adapter http://www.amazon.co.uk/Version-Bluetooth-Adapter-Compatible-Windows/dp/B00A0CBOTE

Beacon

Ce type de beacon fonctionne correctement :
Vous les trouvez pour environ  5€
http://www.aliexpress.com/item/New-Nut-2-update-Nut-3-Nut-mini-Smart-Finder-Itag-Bluetooth-WiFi-Tracker-Locator-Luggage/32477579557.html
http://www.aliexpress.com/item/2015-Nut-2-Smart-Tag-Bluetooth-Tracker-Child-Pet-Key-Finder-Locator-Alarm-for-iphone-Android/32477066584.html
http://eu.banggood.com/Wholesale-Warehouse-Mini-Smart-Patch-Alarm-Tag-Bluetooth-GPS-Tracker-Locator-For-iPhone-Android-etc-wp-Uk-988462.html
La présence est détectée en 4 à 8 secondes. L’absence est décidée en moins de 15 sec quand le tracker s’éloigne et tombe hors de portée.

La clé USB SODIAL BLE  détecte à 12m (en vue directe) ou à 2 étages.

http://www.banggood.com/Mini-Smart-Patch-Alarm-Tag-Bluetooth-GPS-Tracker-Locator-For-iPhone-Android-etc-p-988462.html
https://www.amazon.co.uk/gp/product/B014P9VK5K/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1

Ils ne fonctionnent pas :
Je n’ai pas réussi à les faire fonctionner. Ils arrêtent d’émettre lorsque ils sont déconnectés de leur téléphones.
http://www.banggood.com/Sfd-p-985626.html .
http://www.banggood.com/Bluetooth-4_0-Self-Portrait-Remote-Control-Anti-Lost-Electronic-Finder-p-974320.html
http://www.banggood.com/Wifi-Smart-Bluetooth-4_0-Tracker-GPS-Locator-Tag-Alarm-Anti-lost-Device-GPS-Track-for-iPhone-Android-p-1028944.html – TI SensorTag

Le bluetooth avec bluez et sans blues 🙂

Il nous faudra bluez pour le bluetooth

Bluez nécessite un kernel > 3.5

Un petit

Et  BLE à besoin d’un bluez  >5.3

Vérifiez la version avec un

 

Vérifiez la dernière version ici  : http://www.kernel.org/pub/linux/bluetooth/ (et changez les numeros de versions en conséquence ). La compilation prends aux alentours de 20 minutes, il faudra rebooter ensuite.

TODO check the right of gatttool. (set execution right chmod +x ?)

Premier Test

Pour être sur que la clé USB Bluetooth est bien reconnue, lancez un

On voit apparaitre une ligne Cambrige Silicon Radio:

Bien, l’adaptateur USB est sur le  Bus 001 Device 006.

Pour en savoir plus  prenez le numéro ID 0a12: et faites

Il y a quelques pages de caractéristiques qui s’affichent.

lancez maintenant hciconfig.

on voit que l’adaptateur Bluetooth est sur hci0, si cela n’était pas le cas vous devez adapter les scripts python dont il est question ci-dessous avec votre configuration.

Récupérez cela

Cela lance la détection des beacons à proximité.

Il FAUT noter la MAC Address et la fréquence à laquelle le beacon émet , nous en aurons besoin pour la suite.

Si j’ai un conseil, si vous avez plusieurs beacons, mettez les en route un par un, pas tous ensemble, et notez pour chacun sa MAC address.

Installer les scripts

Vous avez bien travaillé: rendez vous bientôt pour la suite de la configuration : http://easydomoticz.com/?p=3442

 

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

Prévision de pluie pour Domoticz

Météo France propose un service bien pratique et qui de nombreuses fois m’a prouvé son efficacité lors de sortie sportives : le fameux « Va t’il pleuvoir dans l’heure ». http://www.meteofrance.com/previsions-meteo-france/previsions-pluie

Ainsi vous saurez pour une ville donnée si vous avez la malchance de voir tomber la pluie dans l’heure qui suit et ainsi vous éviter un inutile arrosage du jardin ou une ballade humide.

A force de chercher j’ai trouvé l’API en question chez Météo France. :mrgreen:

Vous trouverez ici  une extension Chrome : https://github.com/liorzoue/ext-meteo affichant le fameux  » ‘Va-t-il pleuvoir dans l’heure ?' », merci à l’auteur liorzoue pour son travail et dont je reprends en fin d’article le message de prudence quand à l’utilisation de cette API.

 

L’API

  • Récupérer le code insee de votre ville ici  (ce n’est pas le code postal!) ajoutez y le chiffre 0 à la fin

sinon rendez vous ici avec le nom de votre ville tout au bout.

http://www.meteofrance.com/mf3-rpc-portlet/rest/lieu/facet/pluie/search/ma_ville_

  • Récupérer les prévisions via url

http://www.meteofrance.com/mf3-rpc-portlet/rest/pluie/330210

la réponse est du JSON , je ne sais pas tout en lire mais l’essentiel est

Un script bash + un switch virtuel

Je vais donc créer un switch virtuel qui passera à ON que si de la pluie est annoncée, une notification est associée à ce passage à ON

Après interrogation du site web, récupérons donc le contenu de niveauPluieText par utilisation de JQ  jdont l’installation est expliquée ici, supprimons les caractères indésirables de texte horaire, de ‘[‘ ‘]’ et espaces.

Dans ce script changez vos ip de votre Domoticz et votre CODE INSEE.

Dans la ligne curl http://192.168…..’ modifiez idx=215 par votre idx de votre switch virtuel.

Il faudra bien entendu lancer toutes les heures le script via crontab pour mettre à jour le widget

Attention !

L’extension utilise une API non documentée (à ma connaissance) de Météo France, cette extension peut donc cesser de fonctionner à tout moment. 🙂

Et hop, rangez vos parapluies

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

IPX800 V4, lien avec Domoticz

 

 

 

ipx800v4

Depuis quelques semaines j’ai un ipx800 V4  sous la main et passé la phase de prise en main de celui-ci, je n’ai pu m’empêcher de le relier à notre Domoticz.

Pour ceux qui ne connaîtraient pas :

Principales fonctions:

  • 8 entrées digitales tout ou rien (contact sec). Extensible à 56.
  •  8 sorties relais sur contact  270 V/10A  extensible à 56.
  •  4 entrées analogiques 10 bits.
  •  128 entrées + 128  sorties librement configurables. Mode Virtual IO ©.
  • 32 entrées analogiques virtuelles 16 Bits. Mode Virtual IO ©
  • 32 Ping Watchdog (détection de périphériques réseaux par PING ICMP).
  • 32 Périphériques Enocean. ( Nécessite l’extension X-ENO ).
  •  16 Compteurs d’impulsions incrémental / décrémental et pas configurable.
  •  255 Scènes sur 512 canaux DMX.(Nécessite l’extension X-DMX).
  •  255 horloges programmables pour déclencher des actions uniques ou à chaque seconde, minute, heure, jour , mois.
  •  Notifications GET et POST sécurisées: Cryptage des pushs en TLS (HTTPS).
  •  Envoi d’émails sécurisés vers 1 à 4 utilisateurs différents.
  •  Support du Dyn-Dns.
  •  Mise à l’heure par serveur NTP et/ou Horloge interne avec sauvegarde en cas de coupure réseau ou de courant.
  •  Gestion fuseaux horaire et changement d’heure été/Hiver.
  •  Moteurs de scénarios GX© : Logique combinatoire ET / OU / NOT.
  •  8 Tableaux de bord responsives personnalisables par  widgets.
  •  Editeur Javascript pour personnaliser et créer ses propres widgets.
  •  Sources de données configurable  JSON et XML.
  •  Controle des lampes LED RGBW Mi-Light.

 

et une présentation ici http://blog.domadoo.fr/2016/02/16/a-decouverte-de-carte-ipx800v4-de-cge-electronics/

Il nous intéresse ici de savoir que l’IPX possède une API permettant de le contrôler par passage de commandes dans une URL.

Pour peu que vous ayez ouvert un compte chez gce vous pouvez récupérer les mises à jour de l’ipx et la documentation qui nous apprends que pour utiliser l’IPX via JSON ou M2M, il faut y autoriser l’utilisation de l’API.

Dans le menu ip_de_votre_ipx/admin/m2m.htm il suffit d’activer l’API et de donner un code d’accès (1234 par exemple).

ipx800_api

Puis ensuite la doc de l’api est assez bien faite pour mettre en place le pilotage et l’interrogation facilement

Sachant que l’ipx 800 à 192.168.1.74 comme adresse ip et que ma clé API est 1234.

Pour activer le Relai 01
http://192.168.1.74/api/xdevices.json?key=1234&SetR=01

Pour le repasser  à 0
http://192.168.1.74/api/xdevices.json?key=1234&ClearR=01

Pour incrémenter le Compteur 02 de +2
http://192.168.1.74/api/xdevices.json?key=1234&SetC02=+2

Ces url de pilotage pourront être facilement liées à un switch Domoticz par les action ON/ action OFF pour que celui-ci pilote l’ipx.

ipx_http

On peut aussi grouper les commandes dans un seul appel d’URL de cette façon :

http://IPX800_V4/api/xdevices.json?key=apikey&SetR=01,02,03,04,05,06,07,08 » qui met les 8 relais de l’IPX800V4 à 1.

Pour récupérer des données on utilise Get=R pour relais ou Get=VA pour les virtuelles ou Get=C pour les compteurs

http://192.168.1.74/api/xdevices.json?key=1234&Get=C
renvoie un pavé de valeurs en JSON contenant toutes les valeurs des compteurs.

Exemple :

{
« product »: « IPX800_V4 »,
« C1 »: 0,
« C2 »: 26,
« C3 »: 0,
« C4 »: 0,
« C5 »: 0,
« C6 »: 20,
« C7 »: 0,
« C8 »: 0,
« C9 »: 19050,
« C10 »: 0,
« C11 »: 0,
« C12 »: 0,
« C13 »: 0,
« C14 »: 0,
« C15 »: 0,
« C16 »: 0
}

Il est ensuite facile d’extraire les valeurs recherchées via jq/python ou autres, ici jq dont l’installation est détaillée ici http://easydomoticz.com/manipuler-les-donnees-json-de-domoticz-en-shell/

me renverra bien ma valeur attendue pour le compteur 2

Voila, au final une intégration simple et fonctionnelle rapidement sans prise de tête.

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

Envoyer des email depuis le Raspberry

Etonnant, mais depuis le temps que je parle ici d’envoyer des tweets, des sms jamais il n’a été question d’envoyer des mails depuis la ligne de commande. 😯

Réparons cet oubli avec sSMTP dont l’installation est bien décrite ici http://www.pihomeserver.fr/2015/08/13/envoyer-un-email-depuis-votre-raspberry-pi/   et  https://doc.ubuntu-fr.org/ssmtp qui nous permettra d’utiliser un SMTP (de google) mais d’autre fournisseurs sont semble t’il utilisables à condition d’adapter les ports/TLS.

Installation.

Sur la page citée plus haut , il faudra juste faire précéder les instruction d’un sudo.

Dans le fichier de configuration, placez dans la ligne  hostname=mon_serveur_domotique.com par exemple.

puis modifiez le etc/hosts en conformité, ceci afin d’éviter les erreurs d’envoi de mail.

Testez par echo Bonjour | mail -s « test » votre_adresse_mail@xyz.com

Utilisation.

  • Pour envoyer un simple message :

  • Pour envoyer le contenu d’un fichier dans le message :

 

  • Pour envoyer un fichier en pièce jointe :

Le sujet du message est donné par ce qui suit le -s

C’est simple et ça nous évite postfix !

Afficher l'image d'origineAfficher l'image d'origine

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