Lien Tasker et Domoticz

Dans la série « Cause toujours tu m’intéresses » et après la découverte de Jarvis voyons ici comment faire parler notre périphérique Android grâce à l’appli Tasker, cela paraitra basique pour nombre d’entre vous mais je n’avais pas encore fait de topo détaillé sur la liaison entre un Domoticz et Tasker, alors…

Nous avions évoqué Tasker dans un article précédent https://easydomoticz.com/domoticz-et-tasker/

J’aimerais ici décrire complètement le processus de récupération de valeurs entre les 2 systèmes. Le but étant de mettre à disposition dans  Tasker une valeur de Domoticz afin d’en faire un widget, une synthèse vocale ….

Nous procèderons par une interrogation de Domoticz via son API dont nous retirerons la valeur souhaitée que nous placerons dans une variable Tasker pour un usage ultérieur.

Prérequis

Coté Domoticz.

Vous devez tout d’abord aller chercher dans votre Domoticz l’IDX du périphérique qui vous intéresse.

Je vais prendre ici exemple d’une sonde de température nommée « Extérieur »

Rendez vous dans « Réglages » puis « Dispositifs » , recherchez votre matériel, puis dans la première colonne, se trouve le fameux IDX.

valeur_idx
On voit ici que ma sonde porte l’IDX 230.

L’étape suivante est d’interroger Domoticz pour le matériel 230 via une URL JSON.

Toute la doc est sur le Wiki Domoticz à cette adresse Wiki Domoticz.

Ouvrez un navigateur Internet  et tapez dans la barre d’adresse (pas dans la recherche , hein)  http://votre_ip_Domoticz:8080/json.htm?type=devices&rid=le_numero_IDX_noté_plus_haut

Et il s’affiche une page Web comme celle si

tasker_dz_api

On l’on retrouve entre autre, la variable Data contenant la température et l’unité et la variable Temp contenant juste la valeur numérique.

Mais on voit qu’il y a  aussi plein d’autres données que l’on pourrait extraire pour d’autres besoins (date de mise a jour, signal level (niveau de signal pour les émetteurs radio) )….

Je souhaite ici en utiliser plusieurs, la date de mise à jour (LastUpdate); la température sans son unité et le Status (OK)

Tasker

Nous allons tout d’abord créer des tâches Tasker afin d’interroger Domoticz via son API par un http GET, utiliser un bout de code Javascript pour retirer les valeurs qui nous intéressent, afficher et faire dire ces valeurs.

De façon plus pragmatique il faudra plusieurs variables Tasker, une dans laquelle nous stockerons l’IDX à interroger, puis d’autres dans lesquelles nous irons placer nos valeurs Domoticz et plusieurs actions au sein de cette tâche.Lire la suite

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

Commandes vocales via Jarvis : adaptations

Cet article est la suite de https://easydomoticz.com/commandes-vocales-via-jarvis/ qui expliquait comment causer à notre Raspberry pour piloter Domoticz.

Cet article se concluait par le fait de dire « Allume  store cuisine » était  étrange et donc voyons ici comment ajouter un peu de vocabulaire au plugin « Home Automation » en lui apprenant à reconnaitre « Ouvre » « Ferme » qui sera utilisable par les volets/stores.

2 solutions sont possibles :

  • soit changer les phrases de reconnaissances (merci à alexylem pour son aide)
  • soit la modif du plugin  lui même.

Changer les motifs de reconnaissance vocale

Il suffit de rajouter un nouveau mot dans les commandes vocales reconnues :

Pour le allume / ouvre / démarre, on peut changer ca dans le plugin directement :
*ALLUME*|*DEMARRE*|*OUVRE*==pg_jc_turn on « $order » && say « Voilà« 
Ainsi on pourra prononcer un de ces 3 mots pour allumer/démarrer/ouvrir nos équipements car la barre verticale | est un OU.
Simple et efficace.

Adaptations du pluginRésultat de recherche d'images pour "plugin"

Technique un peu plus compliquée que celle ci-dessus, elle permet de rentrer dans le moteur de Jarvis, les geeks apprécieront.

Rendez vous dans /home/pi/jarvis/plugins/jarvis-home-control

  • Puis dans /fr et ouvrez le fichier commands

Ajoutez à la fin du fichier ces nouvelles instructions :

Les mots  « Ouvre » et « Ferme » appellent maintenant un « pg_jc_ouvre » puis prononcent la phrase indiquée dans say.

  • Ouvrez le fichier functions.sh
  1. Dupliquez tout ce que contient le fichier, à savoir  la fonction pg_jc_turn. On a donc 2 blocs identiques.
  2. Comme on a décidé d’appeler la fonction  « pg_jc_ouvre » ( regardez juste ci-dessus ). Renommez la première ligne en pg_jc_ouvre
  3. Sur la 4eme ligne modifiez pour appeller « pg_hc_ferme_url « et « pg_hc_ouvre_url »
  4. Sur les lignes 14 et 19 on appelle « $pg_hc_config », j’ai décidé de mettre mes stores dans « $pg_hc_volets » je corrige donc ces 2 lignes pour appeler « $pg_hc_volets »

j’ai mis echo $order et echo âddress pour debugger.

 

  • Ouvrez maintenant le fichier config.sh juste dans home-automation.
  1. Dupliquez tout son contenu puis modifiez le nom des variables que nous avons définies à l’étape précédente : à savoir : « pg_ouvre_url » , « pg_ferme_url » et comme je voulais avoir ma liste des volets dans la variable pg_hc_volets, le fichier devient :

Il est fort probable que les mises à jour des plugin Jarvis effacent ces fichiers, sauvegardez les avant de faire ces mise à jour.

Et voila Jarvis comprends maintenant « Ouvre volet cuisine », « Ferme volet salon ».

N’hésitez pas à y supprimer les bavardages inutiles 🙂

jarvis_logo_red

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

Commandes vocales via Jarvis

J’avais déjà parlé ici de reconnaissance vocale via imperihome Android ou YANA.

Je voudrais vous présenter ici un nouvel outil que j’ai découvert récemment nommé JARVIS.

Son grand avantage par rapport à d’autres outils : LE FRANCAIS est natif !!

jarvis Vous emballez quand même pas trop, on est pas dans Ironman. jarvis_logo_red

L’intérêt de ce Jarvis ci est de faire de la reconnaissance vocale et d’y enchaîner des actions :

  • « Jarvis » « météo » vous donnera vocalement la météo de weather Underground (plugin+enregistrement) ,
  • « Jarvis » « tu sais quelle heure il est ? » dira l’heure.

La reconnaissance se base sur des mots clés que vous définissez vous même. Ainsi dans le « tu sais quelle heure il est » le mot clé recherché peut être défini à *HEURE* et donc toute phrase contenant le mot heure donnera l’heure. Cette reconnaissance d’un mot permet de lancer des scripts bash qui font des actions. « Heure » lance une commande linux :

En plus d’être extrêmement paramétrable car on peut programmer soit même les actions à effectuer à l’issue d’une phrase, on peut lancer des taches vocales via cron (toutes les 10 minutes dire « Bonjour votre Altesse »), il y a des plugins dont un destiné à de la domotique et bien plus.

La phase de reconnaissance vocale peut utiliser soit un moteur local (pocketsphynx) soit Bing.

La page de référence est ici http://domotiquefacile.fr/jarvis/ et Alexylem le concepteur du soft à bien fait les choses puisque explications d’ installation et d’utilisation du soft sont très claires et didactiques (comprenez par la que je ne détaillerai pas ces phases 😆 ).

Bien entendu nous verrons ici comment intégrer Jarvis à notre Domoticz.

A noter Jarvis ne fonctionne QUE sur Raspberry, il faut donc un micro et des enceintes reliés à celui-ci.

Les points forts

Énormément de choses sont paramétrables, plusieurs moteurs de synthèse ou reconnaissance vocable, liste de mots clés reconnus , actions à déclencher, des plugins météo, gmail, de domotique.

On peut aussi lancer Jarvis en ligne de commande pour lui faire faire des actions, on peut utiliser les scripts:/// de Action ON et Action OFF pour lancer des commandes au basculement d’un switch. jarvis.sh -s « Le salon vient de s’allumer » juste pour faire dire une phrase ou -x pour exécuter une commande interne Jarvis

Via Lua un petit os.execute fera le job./home/pi/jarvis/jarvis.sh -x « c’est comment la météo » lance la commande METEO de Jarvis.

Installation

Je vous laisse parcourir le site de Jarvis pour effectuer l’installation.

Sachez toutefois qu’il vous faudra installer sox, alsamixer,aplay, arecord,mpg123 et jq.

Pour jq vous trouverez la procédure ici https://easydomoticz.com/manipuler-les-donnees-json-de-domoticz-en-shell/

Sinon, pas d’inquiétude, la procédure d’installation vérifie tout cela et vous donne les commandes à taper.

Puis l’assistant d’installation vous guide dans tout le processus de configuration y compris la détection de vos micros et hauts-parleurs.

A noter : Les meilleurs résultats de reconnaissance que j’ai pu obtenir sont lors de l’utilisation de la reconnaissance vocale Microsoft Bing qui utilise Internet (à mon grand désespoir).

Alexylem à un joli tableau récapitulatif ici http://domotiquefacile.fr/jarvis/content/stt

Pensez à votre vie privée lorsque vous transmettez des commandes à des tiers sur Internet (Bing, Google, Wit)

Une fois familiarisé avec Jarvis, attaquons nous au coté Domoticz de façon à piloter quelque chose à la voix.

Intégration avec Domoticz

Nous allons utiliser un plugin générique Home Automation de Jarvis.

Ce plugin permet d’envoyer des requêtes http à la voix .

Dans le store Jarvis

jarvis_storeInstallez le plugin « Home Automation » puis « Home Control ».

De même n’hésitez pas à faire des mise à jour du plugin dans Store > Installed > Home Control > Update en attendant les mise à jour automatique des plugin (work in progress).

Il s’affiche une page d’aide que nous allons détailler et adapter à Domoticz.

On voit ici qu’il nous faudra adapter les url suivant les spécifications de l’API Json de Domoticz et indiquer dans le tableau pg_hc_config le nom à prononcer et l’idx domoticz.

Modifiez les turnon_url et turnoff_url avec vos ip:ports Domoticz et l’appel à l’api JSON qui vous convient en laissant [ADDRESS] à l’endroit ou vous devez envoyer l’idx Domoticz.

Rappel : l’idx c’est cette colonne :idx_domoticz

Faites les modifs  via le menu « Config » du plugin « Home Automation » de Jarvis pour obtenir quelque chose comme :

Ou 192.168.181:8080 est mon Domoticz, lumière et 112 , le nom et l’idx de la lumière , volet cuisine, 33 …

En prononçant « allume lumière » on ira donc activer l’idx 112 de Domoticz  via « pg_hc_turnon_url »

N.B  Les plugins sont dans le dossier plugins, il y a un sous dossier par plugin, puis dans celui ci un readme.md qui donne quelques explications au sujet du plugin , puis des dossiers /fr ou /en ou se situent les commandes dans la langue correspondante. Ce sont des fichier texte bash. Vous pouvez agir directement sur ces fichiers. La modification est immédiate, pas besoin de relancer Jarvis sauf si vous avez changé un mot à reconnaitre..

Je vous conseille de prendre des mots vraiment discriminants , par exemple , la reconnaissance du mot « volets » donne souvent le verbe « voler » et donc la phrase « ouvre voler salon » n’existant pas …

alexylem vient de me préciser que en utilisant « vole » tout simplement (la comparaison vérifie si le nom du device est « inclue » dans la commande reçue) cela devrait fonctionner.

Et comme les plus perspicaces d’entre vous auront remarqué qu’il faut dire « Allume volet salon » ou « éteint volet salon » ce qui peut paraitre bizarre nous verrons prochainement comment améliorer cela en ajoutant les mots « Ouvre » et « Ferme ».

Un petit film de présentation ici

 

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

Le httplink Domoticz

Sous ce nom barbare ce cache un outil fort pratique dès lors que l’on a besoin de mettre à jour un équipement, une machine, un service avec lequel le dialogue se fait par envoi de commandes http.

L’idée est donc d’envoyer des mesures issues de Domoticz à un quelque chose via http.

Prenons le cas d’un IPX 800 https://easydomoticz.com/ipx800 par exemple ou l’on envoyer des  http://192.168.1.74/api/xdevices.json?key=1234&SetC02=+1 pour incrémenter un compteur. Jusqu’à présent il fallait un script bash, python, lua pour mettre l’ipx 800 à jour.

Ou envoyer un sms sur un changement de valeur d’un capteur.

Grâce à httplink c’est Domoticz qui s’en charge tout seul.

A noter, 3 points importants :

  • Httplink s’exécute à chaque changement de la valeur en question, attention donc au nombre de sms recus!!.
  • Cet envoi n’est pas conditionnel , il s’exécute régulièrement
  • On ne peut définir d’un seul destinataire http.

 

Le principal intérêt de ce httplink est de faire un lien plus simple avec des outils que j’avais décrit ici https://easydomoticz.com/iot-1/ que sont les time series databases. Mais nous verrons cela une autre fois dans un article à venir.

La référence anglophone est ici https://www.domoticz.com/wiki/HttpLink

Configuration

« Réglage/Plus d’options/Envoi de Données/Httplink »

httplink_1

Vous obtenez un écran en 2 parties  :

httplink_2

A gauche nous choisirons les variables Domoticz à utiliser, la partie de droite permettra de décrire le format de la chaine http attendue par notre vis à vis.

 

 

Prenons ici l’exemple d’envoyer par sms la consommation électrique mesurée par Domoticz, ce n’est pas très malin étant donné que cela va envoyer un sms à chaque changement de valeur, mais cela permettra rapidement de tester.

Les valeurs

Dans la partie gauche il nous faut choisir quelle valeur Domoticz nous voulons envoyer à l’équipement en face.httplink_4

Il y a un choix « variable globale » ou « périphérique virtuel » dont je n’ai pas compris l’utilité (n’hésitez pas si vous savez :))

J’ai donc pris « variable globale » puis sélectionné le bon capteur ainsi que la valeur à envoyer pour ce capteur. N’oubliez pas que pour un capteur on peut avoir plusieurs valeurs. Ex : un capteur de température peut envoyer aussi la mesure d’humidité.

  • Variable cible un texte quelconque. j’ai mis v comme « valeur »  mais cela n’a pas d’incidence.
  • Inclure l’unité cochez ou pas suivant votre envie
  • Cochez « Lien actif » si vous voulez que cela marche 🙂
  • Cliquez sur « Ajouter »
  • Refaites la manip pour ce même capteur ou un autre si vous voulez envoyer plusieurs messages consécutifs à votre équipement.

httplink_45

 

On peut donc avoir de nombreuses lignes ici qui enverront autant de commande http distinctes.

Le lien http

La partie de droite va nous permettre de décrire la syntaxe de notre lien http. Vous devez ici respecter le format qu’attend votre périphérique à l’autre bout. Utiliser la doc des API de votre matèriel.

Repronons l’exemple d’envoi de mail par Free https://easydomoticz.com/nouveau-service-sms-pour-les-utilisateurs-de-free-mobile/

On voit qu’il faut envoyer quelque chose comme :

Donc dans url je met l’url avec les identifiants et mot de passe puis tout au bout il y a %v %u

 

httplink_48

 

Oui d’accord mais pourquoi %v %u ? .

Cela permet à Domoticz d’envoyer la valeur %v suivie de l’unité %u ainsi le sms recu sera 2457458 Watt

On peut envoyer d’autres choses dans les champs URL et DATA telles que  :

  •  %v : Valeur
  •  %t0 : Timestamp (epoc time in seconds, local time)
  •  %t1 : Timestamp (epoc time in ms, local time)
  •  %t2 : Timestamp (epoc time in seconds, UTC)
  •  %t3 : Timestamp (epoc time in ms UTC)
  •  %t4 : Timestamp (RFC 3339 format, « YYYY-MM-DDThh:mm:ssZ »
  •  %D : L’idx du Capteurvice id
  •  %V : Target Variable
  •  %u : Unit
  •  %n : Nom du matériel
  •  %T0 : Type du capteur
  •  %T1 : Sous type du capteur
  •  %h : hostname

Dans le cas étudié ici seul %v et %u sont utilisables, le reste des % peut être utilisé en lien avec des base de données timeseries.

Au final on obtient quelque chose comme cela :

 

httplink_5

Activez le log pour voir les messages

Voila une première approche du httplink , nosu en verrons des déclinaisons liées aux time series databases dans un autre article.

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

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

Dans l’article précédent https://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 à https://easydomoticz.com/forum/