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.

Création de la tâche de lecture de Domoticz.

Pour cela :

Créer une tache en cliquant le le gros + en bas de l’écran

1

Nommez la

2Créez une action en cliquant sur le gros plus en bas

Cliquez sur Variable1 Puis affecter une variable,

3

  • Créons une variable %idx et donnons lui la valeur de l ‘idx de notre capteur de température (230 ici)

N.B. Une variable en minuscule n’est visible QUE par cette tâche, écrivez la et utilisez en majuscule si vous devez vous en servir dans des scènes, ou d’autres plugins.

4Enregistrez en utilisant le bouton « retour »

  • Ajoutez une nouvelle action « Get Http » dans la catégorie « Réseau »

5

Sur la ligne Serveur port vous mettez l’URL de Domoticz et la syntaxe JSON vue plus haut avec tout au bout &rid=%idx,  ce %idx faisant référence à la variable Tasker définie à l’étape précédente.

la ligne est donc : http://192.168.1.81:8080/json.htm?type=devices&rid=%idx

On pourrait se passer d’une variable Tasker  en mettant « en dur » notre IDX Domoticz :

http://192.168.1.81:8080/json.htm?type=devices&rid=230

mais c’est plus joli comme cela.

  • Créons un script de lecture d’un JSON

Depuis votre PC créez un fichier extrait_temp.js contenant ceci :

var tableau_json = [];
tableau_json = JSON.parse(global("HTTPD"));
var dz_status = tableau_json.status;
var dz_temp = tableau_json.result[0].Temp;
var dz_date_vu=tableau_json.result[0].LastUpdate;

Ce script lance la commande http précédente, récupère dans tableau_json tout le pavé renvoyé par Domoticz et extrait

le status (OK, ERROR), la Temp (sans unités donc) et LastUpdate (la date de dernière mise à jour ) qui sont placées respectivement dans 3 variables Tasker %dz_status, %dz_temp, %dz_date_vu.

Copiez/collez ce fichier sur votre périphérique Android. Pour moi ce sera dans  sdcard01/tasker/extrait_temp.js

  • Ajoutons le script à Tasker

Cliquez une fois de plus sur le gros + en bas , puis dans « Code » et ajoutez un « Javascript »

6

Avec la loupe en haut de l’écran,  il faudra aller chercher ce fichier dans le chemin en question.

Dernière étape

  • Affichage des valeurs récupérées

A l’étape précédente nous avons rempli 3 variables Tasker, affichons les maintenant.

Cliquez sur le + en bas de l’écran,

Cliquez sur « Alerte » puis « Flash »

Affichez %dz_status, %dz_temp, %dz_date_vu.

7

Validez.

Un peu de Fun

Cliquez sur le +

Cliquez « Alerte » puis « Dire », tapez %dz_temp ou cliquez sur le gros crayon pour aller chercher cette variable.

Laissez le mot vocal par défaut.

Toutefois si la sortie est en anglais et que vous voulez l’entendre en français, appuyez sur la loupe, puis sur « Synthèse vocale google » en choisissez votre langue favorite (fra-fra pour français). Il vous faudra aussi activer la langue française dans les paramètres « Langue et saisie).

Nous en avons terminé avec nos tâches vous devez obtenir quelque chose comme cela.

 

8

Pour vérifier que tout fonctionne bien, cliquez sur le bouton « Play » , à l’étape 4 vous devez avoir les textes puis l’annonce de la température.

Bien que tout cela, mais maintenant choisissons quand ou comment cette tâche va se déclencher.

C’est le rôle des profils.

Un profil correspond à une date, un lieu , un événement, bref c’est le déclencheur de notre tâche.

Le profil

Imaginons que je veuille entendre et voir la température toutes les 5 minutes.

J’ajoute dans « Profil » et je choisis « Heure »

N.B Dans les copies d’écran ci-dessous le délai de répétition est mis à 5 minutes, or il semble que le seuil minimal soit de 10 minutes.

9*

 

screenshot (2)

On indique la plage de validité puis en cochant « Répéter » l’intervalle de répétition au sein de la plage choisie.

En validant ceci par la flèche « Retour » on vous propose d’attacher ce profil à une tâche. Sélectionnez la tâche de récupération de la température.

10

 

11

 

 

Il ne reste plus qu’à tester tout cela.

Amusez vous bien.

 

 

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/
Posted in android, domoticz, logiciel and tagged , , , , , .

7 Comments

  1. Pas mal, tu te compliques un peu la « tâche » car il y a plus simple mais c’est nickel ?

  2. Je fais comme ça :

    Get Http ça interroge l’état d’un périphérique avec une requête type 192.168.0.1…… en bas de cette action tu as « Type Mime » là tu mets text/xml et en dessous « Fichier de sortie » tu mets par exemple Tasker/température.xml
    Lire une ligne, ce qui va lire la ligne qui t’intéresse dans le fichier précédemment créé, en dessous tu mets la ligne concernée (par exemple 1) et le résultat « Dans une variable » %Temperature par exemple
    Pour terminer tu fais changer le widget que tu auras créé (Température par exemple) et dans le libellé tu mets ta  variable %Temperature °C
    Tu peux même vocaliser cette variable avec un « dire »

    Donc dans un seule tâche avec trois actions tu as un widget sur ton bureau avec le résultat que tu veux.

    J’utilise un profil qui lorsque l’écran est allumé cette tâche est exécutée. Comme ça j’ai en temps réel les résultats que je souhaite (Températures, états de périphériques…..)

    Regarde ici j’ai fait quelques tutos 😉

    https://domotiquetechnoseb27.wordpress.com/2015/09/08/rechargement-de-la-batterie-avec-tasker/?preview=true

  3. Salut, super tuto, attention toute fois, si vous utilisez le TTS Google, vous avez un nombre limité d’utilisations, a faire une requête toutes les 5 minutes vous serez vite a bout et ensuite le compte est banni (c’est du vécu).

    Ne faire que des notifications super importantes

  4. Bonjour et merci

    Pour le TTS on est pas limité me semble t’il.
    Il n’y a que la synthèse vocale ou c’est 50 requêtes par jour

  5. bonjour

    @ma pomme : ta méthode fonctionne !

    j’ai galéré avec la méthode du tuto et la tienne a fonctionner du premier coup

    je voulais récupérer la valeur ‘Data’ dans la liste mais en modifiant le fichier json cela ne fonctionne pas il doit y avoir quelque chose a écrire de spéciale …. mais quoi ?

     

    j’ai fais ca :

    var tableau_json = [];
    tableau_json = JSON.parse(global(« HTTPD »));
    var Dz_status = tableau_json.status;
    var Dz_data = tableau_json.Data;
    var Dz_date_vu = tableau_json.result[0].LastUpdate;

    et ca aussi

    var Dz_data = tableau_json.result[0].Data;

     

    je n’arrive pas a avoir le ‘Data’

    super tuto en tout cas merci pour le partage

Comments are closed.