Tasker: récupérer les infos d'un module

Vous connaissez des applis Android ou Apple sympa, vous avez un problème de config, postez ici
Répondre
alexbi
Messages : 123
Enregistré le : 29 nov. 2015, 16:36

Tasker: récupérer les infos d'un module

Message par alexbi » 06 déc. 2016, 15:59

bonjour,

j'ai recherché une méthode pour activer mon écran de tablette lorsque je suis dans ma cuisine (j'ai donc une tablette + (Tasker + secure setting) dessus + un capteur mouvement)

une methode qui marche pour beaucoup d'autres idées !

récupérer les valeurs comme indiquer ici http://192.168.x.x:8080/json.htm?type=d ... rid="votre idx" et choisir une ligne pour extraire ce qui nous intéresse, puis l'utiliser. Dans mon cas : garder l’écran de ma tablette activer lorsqu'il y a du mouvement dans ma cuisine.

Tasker et secure setting vont faire cela :

https://play.google.com/store/search?q= ... apps&hl=fr
https://play.google.com/store/apps/deta ... ugin&hl=fr

l'explication vient de @Ma pomme

Ma Pomme
2 novembre 2016 at 17:09
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. ... eview=true


source de l'info https://easydomoticz.com/lien-tasker-domoticz/

j’espère que ça pourra vous aider !

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


T0ny Oh
Messages : 38
Enregistré le : 06 sept. 2016, 16:29

Re: Tasker: récupérer les infos d'un module

Message par T0ny Oh » 06 déc. 2016, 18:44

Personnellement pour communiquer entre tasker et domoticz je préfère utiliser du javascript qui est pris en charge nativement par Tasker. C'est beaucoup moins laborieux que de se taper tout le développement dans Tasker.

Sinon si ta tablette "observe" toute ta cuisine tu peux utiliser l'appli Android "Webcam IP" et récupérer l'intent "motion" qu'elle envoie quand un mouvement est détecté ;)

Si ça t’intéresse je peux fouiller et retrouver ces scripts que je n'utilise plus (ça tiens en quelques lignes). Maintenant je me suis fait une interface web qui est affichée quand l'écran de la tablette est allumé (en utilisant une scène Tasker et un Webview).

alexbi
Messages : 123
Enregistré le : 29 nov. 2015, 16:36

Re: Tasker: récupérer les infos d'un module

Message par alexbi » 06 déc. 2016, 19:41

Salut

Oui je veux bien tout ca !

Le javascript je n'y connais rien mais je vais pouvoir apprendre des choses je pense avec tes scripts.

Pour le webcam ip ma tablette est plutôt ancienne donc j'essaye de pas trop la charger ...

Apres j'ai aussi pensé a utiliser une appli qui lit les notification notification listener je crois. Si j'ai une notification de mon detecteur de mouvement ca allume l'ecran c'est une solution plus instantané que la repetiton du profile toute les 2 min (on peut pas mettre moins)

T0ny Oh
Messages : 38
Enregistré le : 06 sept. 2016, 16:29

Re: Tasker: récupérer les infos d'un module

Message par T0ny Oh » 06 déc. 2016, 21:44

Je te rassure pas besoin d'être un fin développeur (d'ailleurs je n'en suis pas un) pour comprendre le Javascript. JS est un langage super rependu et le net foisonne de solutions à tous tes problèmes potentiels.

Voici par exemple un script qui permet de récupérer des info des capteurs. C'est pas forcément bien codé (je n'avais pas prévu de le partager) mais c'est parfaitement fonctionnel du moment que tu l'adapte à ta configuration.

Je te conseil de copier/coller le code dans un vrais éditeur avec coloration syntaxique (notepad++, atom, sublimetext, etc.) ça sera plus simple que de lire sur le forum qui met tout de la même couleur :o . Tu connais peu-être déjà mais je préfère préciser.

Code : Tout sélectionner


//--------------------------------------------------
// Configuration
//--------------------------------------------------

var server = '192.168.0.5:8080'; // Adresse + port du serveur
var blankvalue = "-"; //Valeur par défaut si le résultat est 'undefined'

// ATTENTION >> DESCENDRE DIRECTEMENT DANS LA SECTION "CODE A ADAPTER"

//--------------------------------------------------
// NE PAS MODIFIER LA SECTION SUIVANTE
//--------------------------------------------------
//{
// Fonction permettant de récupérer un résultat en JSON
server = "http://" + server + "/json.htm?";
function get_http(url) {
	var http = new XMLHttpRequest(); 
	http.open("GET", url, false); 
	http.send(); 
	return(JSON.parse(http.responseText));
}

//Fonction permettant de récupérer une valeur précise d'un device
function get_device(idx, ext) {
	url = server + "type=devices&rid=" + idx;
	var result = get_http(url).result[0][ext];
	if (typeof result == 'undefined') {
		result = blankvalue;
	}
	return result;
}

// Fonction permettant de compter le nombre switch allumés
//'switches' doit est un tableau contenant la liste des devices sous la forme '[1, 2, 3, 4, etc.]'
// On pourrait créer une autre fonction calquée sur celle-ci pour compter le nombre de volet ouvert ou de radiateur en route par exemple :)

function count_switch_on(switches) {
	var arr = [];
	var result = 0;
	var index;
	for (index = 0; index < switches.length; ++index) {
		arr = get_device(switches[index]);
		if (arr.Status != "Off") result += 1;
	}
	return result;
}

//}
//--------------------------------------------------
// CODE A ADAPTER
//--------------------------------------------------
//
//	- Pour récupérer les informations d'un périphérique. "valeur" étant le libelé JSON de l'info à récupérer
//		get_device(idx_dispositif, valeur)
//
//	- Si on veux faire appel à une variable globale de Tasker on utilise la fonction suivante :
//  	/!\ Si problème : essayer avec tk.global() /!\
//
//		global("VARIABLE_GLOBALE")
//	
//	- Si on veux créer/modifier une variable globale on fait (les ' autour de VARIABLE_GLOBALE sont importants):
//		setGlobal('VARIABLE_GLOBALE', variable_javascript);
//
// --Initialisation des variables--
// En les déclarant elle seront utilisables dans Tasker après l'exécution du script via "%nom_de_variable"
// Dans l'exemple suivant la variable JS 'alarm_status' sera utilisable dans Tasker sous le nom '%alarm_status'
// Si on veux l'utiliser dans une autre tâche Tasker (ou dans un plugin comme Zooper) il faudra la rendre Globale avec la func setGlobal

var salon_switchs_on = count_switch_on([3, 5, 10, 12]);
var alarm_status = get_device(10, "Status");
var salon_temp = get_device(5, "Temp"); //Pour la valeur 'température' d'un capteur
var salon_hum = get_device(5, "Humidity")+"%"; //Pour la valeur 'humidité' d'un capteur
var consoelec_inst = get_device(6, "Usage")+""; //Conso Electrique instantanée
var consoelec_count = get_device(6, "CounterToday")+""; //Conso Electrique journalière

J'ai pris la peine de commenter le code autant que possible, si il y a des points à éclaircir fait moi signe.
alexbi a écrit : Pour le webcam ip ma tablette est plutôt ancienne donc j'essaye de pas trop la charger ...
Alors moi j'utilise une TF300T du temps jadis et je reconnais qu'elle peut avoir des coups de bourre. Pour éviter ça il vaut mieux augmenter le délais de détection vers les 30 secondes ... ou plus (le mini étant 3 secondes si mes souvenirs sont bon - pour l'appli 'Webcam IP').
alexbi a écrit : Apres j'ai aussi pensé a utiliser une appli qui lit les notification notification listener je crois. Si j'ai une notification de mon detecteur de mouvement ca allume l'ecran c'est une solution plus instantané que la repetiton du profile toute les 2 min (on peut pas mettre moins)
Alors là tu as pas mal de solutions, notamment des plugins pour Tasker Autonotification pour lire les notifications ou AutoRemote qui permet à Tasker d'être contrôlé avec des requettes HTTP. Autoremote est plus adapté je trouve. Moi je m'en sert pour faire "causer" ma tablette.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


alexbi
Messages : 123
Enregistré le : 29 nov. 2015, 16:36

Re: Tasker: récupérer les infos d'un module

Message par alexbi » 07 déc. 2016, 01:53

Super merci a toi je vais etudier tout ca

Autoremote je vais essayer ca je pense

Merci a toi

alexbi
Messages : 123
Enregistré le : 29 nov. 2015, 16:36

Re: Tasker: récupérer les infos d'un module

Message par alexbi » 07 déc. 2016, 23:17

a ouai ....

autoremote c'est ça qu'il me fallait !!

tu l'installes, tu donne un nom a ta tablette, tu obtiens une adresse url, tu colle cette url dans ton navigateur, tu écris ton mot déclencheur, tu copie l'url créée et tu l'utilise ! et ça fonctionne très très bien

perso pour ma solution j'ai mis l'url directement dans "editer" de mon capteur de mouvement, action on = https xxxxxxxxxxxx (url de autoremote créée)

dès que j'ai du mouvement dans ma cuisine la tablette s'allume :D
je laisse le liens qui m'a aidé pour les autres

http://techno-bidouille.com/autoremote- ... er-tasker/

T0ny Oh
Messages : 38
Enregistré le : 06 sept. 2016, 16:29

Re: Tasker: récupérer les infos d'un module

Message par T0ny Oh » 08 déc. 2016, 13:42

En effet c'est sympa sauf que si tu n'a plus de connexion internet ça fonctionne plus.

Autoremote peut fonctionner en local, par contre la je n'y arrive pas. Il disent d'activer la prise en charge du wifi dans tasker, j'ai fouillé partout, y compris dans le plugin Autoremote et je ne trouve pas.

Doudy
Messages : 170
Enregistré le : 07 mai 2016, 17:23

Re: Tasker: récupérer les infos d'un module

Message par Doudy » 09 janv. 2019, 11:22

Bonjour,

Je remonte ce sujet car cela m'intéresse.
Je suis novice en la matière.
Mais comment exécuter un script .js dans domoticz ?
J'ai cherché mais pas trouvé...

Merci de ton aide.
PI 1
PI 2 = RFXCOM
PI 3 + Touchscreen 7" = Domoticz
RFXCOM 433

Doudy
Messages : 170
Enregistré le : 07 mai 2016, 17:23

Re: Tasker: récupérer les infos d'un module

Message par Doudy » 09 janv. 2019, 11:32

J'ai trouvé une partie
Il m'a fallu installer

Code : Tout sélectionner

sudo npm install xmlhttprequest
Ensuite pour visualiser la valeur sur l'écran j'ai ajouté :

Code : Tout sélectionner

console.log(out_speed);
Mon but étant de récupérer la vitesse du vent (speed) dans mon idx=43
Une partie du script ne m'intéresse pas

Code : Tout sélectionner

// https://easydomoticz.com/forum/viewtopic.php?t=2936
//--------------------------------------------------
// Configuration
//--------------------------------------------------

var server = '192.168.1.xxx:xxxx'; // Adresse + port du serveur
var blankvalue = "-"; //Valeur par défaut si le résultat est 'undefined'

// ATTENTION >> DESCENDRE DIRECTEMENT DANS LA SECTION "CODE A ADAPTER"

//--------------------------------------------------
// NE PAS MODIFIER LA SECTION SUIVANTE
//--------------------------------------------------
//{
// Fonction permettant de récupérer un résultat en JSON
server = "http://" + server + "/json.htm?";
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;

function get_http(url) {
	
	var http = new XMLHttpRequest(); 
	http.open("GET", url, false); 
	http.send(); 
	return(JSON.parse(http.responseText));
}

//Fonction permettant de récupérer une valeur précise d'un device
function get_device(idx, ext) {
	url = server + "type=devices&rid=" + idx;
	var result = get_http(url).result[0][ext];
	if (typeof result == 'undefined') {
		result = blankvalue;
	}
	return result;
}

// Fonction permettant de compter le nombre switch allumés
//'switches' doit est un tableau contenant la liste des devices sous la forme '[1, 2, 3, 4, etc.]'
// On pourrait créer une autre fonction calquée sur celle-ci pour compter le nombre de volet ouvert ou de radiateur en route par exemple :)

// function count_switch_on(switches) {
//	var arr = [];
//	var result = 0;
//	var index;
//	for (index = 0; index < switches.length; ++index) {
//		arr = get_device(switches[index]);
//		if (arr.Status != "Off") result += 1;
//	}
//	return result;
//}

//}
//--------------------------------------------------
// CODE A ADAPTER
//--------------------------------------------------
//
//	- Pour récupérer les informations d'un périphérique. "valeur" étant le libelé JSON de l'info à récupérer
//		get_device(idx_dispositif, valeur)
//
//	- Si on veux faire appel à une variable globale de Tasker on utilise la fonction suivante :
//  	/!\ Si problème : essayer avec tk.global() /!\
//
//		global("VARIABLE_GLOBALE")
//	
//	- Si on veux créer/modifier une variable globale on fait (les ' autour de VARIABLE_GLOBALE sont importants):
//		setGlobal('VARIABLE_GLOBALE', variable_javascript);
//
// --Initialisation des variables--
// En les déclarant elle seront utilisables dans Tasker après l'exécution du script via "%nom_de_variable"
// Dans l'exemple suivant la variable JS 'alarm_status' sera utilisable dans Tasker sous le nom '%alarm_status'
// Si on veux l'utiliser dans une autre tâche Tasker (ou dans un plugin comme Zooper) il faudra la rendre Globale avec la func setGlobal

var out_speed = get_device(43, "Speed"); //Pour la valeur 'Speed' d'un capteur
console.log(out_speed);
// var salon_switchs_on = count_switch_on([3, 5, 10, 12]);
// var alarm_status = get_device(10, "Status");
//var salon_temp = get_device(5, "Temp"); //Pour la valeur 'température' d'un capteur
//var salon_hum = get_device(5, "Humidity")+"%"; //Pour la valeur 'humidité' d'un capteur
//var consoelec_inst = get_device(6, "Usage")+""; //Conso Electrique instantanée
//var consoelec_count = get_device(6, "CounterToday")+""; //Conso Electrique journalière

Maintenant je voudrais sauvegarder cette valeur " out_speed" dans mon idx=117 dans le champ "Data"
Je cherche
Si quelqu’un a une idée ?
Merci
PI 1
PI 2 = RFXCOM
PI 3 + Touchscreen 7" = Domoticz
RFXCOM 433

T0ny Oh
Messages : 38
Enregistré le : 06 sept. 2016, 16:29

Re: Tasker: récupérer les infos d'un module

Message par T0ny Oh » 10 janv. 2019, 06:31

Salut Doudy,

Ça fait des lustres que je ne me suis pas connecté ici, je suis passé à Home Assistant :o . Ce script est prévu pour fonctionner avec Tasker sous Android, toi tu semble vouloir l'utiliser sous linux avec nodejs j'imagine. Je pense que c'est possible mais je ne pourrai pas t'aider.

Bon chance

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre