Forum eedomus
http://forum.eedomus.fr/

calcul de statut
http://forum.eedomus.fr/viewtopic.php?f=15&t=2374
Page 1 sur 1
Auteur:  Arnaud [ 19 Jan 2015 16:34 ]
Sujet du message:  calcul de statut

Bonjour à tous,
J'essai de mettre en place un widget et des capteurs http qui me donnent une vue sur le statut de mon IPX800. J'ai bien réussi à créer mes capteurs (un par led !!!), mais je cherche un coup de main pour calculer un statut virtuel...
Par exemple, je souhaite créer un "bidule" (je n'ai pas encore trouvé quoi) représentant le statut de mon ipx800 sur un système de chauffage qui a 4 valeurs (modes) possibles :
- si led2=0 et led3=0 alors mode=confort
- si led2=1 et led3=1 alors mode=eco
- si led2=0 et led3=1 alors mode=hors gel
- si led2=1 et led3=0 alors mode=arrêt

Ca je dois le faire pour mes 8 leds (pour 4 systèmes): ça me semble un peu fastidieux, donc si vous avez une simplification, elle est bienvenue...

(en termes d'actionneurs http, tout fonctionne comme il faut; l'idée ici est de récupérer le statut...)
Merci pour votre contribution.
Auteur:  blues [ 19 Jan 2015 17:29 ]
Sujet du message:  Re: calcul de statut

Un capteur http peut se dupliquer. Si tu utilise les variables dans la partie configuration :
VAR1=IP-de-l-IPX
VAR2=led2
VAR3=led3
Et il suffit de remplacer ledx par le nom de la variable dans les paramètre de l'URL... une fois dupliquée il suffit de changer les valeurs VAR1 et VAR2. Cela aide un peu.
Sinon on peut demander le statut de tous les relais dans un xml. Peut-être que des formules xpath sur le résultat permettraient d'obtenir le résultat voulu... une idée comme ça...
Auteur:  Arnaud [ 19 Jan 2015 17:41 ]
Sujet du message:  Re: calcul de statut

Merci, mais je ne comprends pas (encore) tout, désolé :( .
Pour récupérer le statut de la led0, je met l'URL http://IP-de-IPX/status.xml, puis dans xpath, je mets //led0, idem pour les 7 autres.

Comment j'adapte ta proposition à ce cas ? vu que l'URL ne prend pas de paramètre...
Auteur:  influman [ 19 Jan 2015 20:44 ]
Sujet du message:  Re: calcul de statut

Je créerai un état virtuel (type actionneur), qui permet de changer mais aussi restituer le mode en cours. Donc 4 valeurs : Confort, Eco, hors-gel, arret

Fais un test avec les deux règles suivantes :
Règle n°1 :
- Si "Nouvel Etat Mode" devient maintenant égal à Confort avec Source = Manuel
- Alors Actionneurs HTTP IPX => Confort
La source permet de préciser que le critère ne vaut que si le mode est positionné manuellement sur l'interface, et pas par une règle auto par exemple. Tu peux rajouter toutes les sources censées fonctionner, sauf les règles.

Règle n°2 :
- Si capteur Led2 est maintenant égal à 0
- Et capteur Led3 est maintenant égal à 0
- Alors "Nouvel Etat Mode" = Confort

Essaye de changer l'une ou l'autre Led par l'actionneur http directement (et pas par le nouvel état), et vois si ça réagit convenablement. A priori, le capteur http à périodicité récurrente devra bien générer à chaque fois des "est maintenant".
Si ok, tu dupliques les règles pour chaque état, et tu peux rendre invisible tes actionneurs et capteurs http.
Auteur:  Arnaud [ 19 Jan 2015 22:41 ]
Sujet du message:  Re: calcul de statut

Merci influman.
Alors...
La règle 1, je ne sais pas le faire car je ne comprends pas de quoi il s'agit...
Mais j'ai bien créé un objet "IPX800-Mode chauffage zone 1" par exemple, et je lui ai mis 4 valeurs possibles : confort, eco, hors gel, arrêt.
La règle 2, c'est ce que je pensais devoir faire, mais je n'arrive pas à créer la règle:
- dans les critères, je ne peux pas saisir la valeur dans le 4ième critère... Donc je mets "IPX800-LED2", "devient maintenant", "égal à", et impossible de saisir quoi que ce soit pour la valeur...
- dans les actions, je ne peux pas choisir mon objet "IPX800-Mode chauffage zone 1"
Auteur:  Arnaud [ 19 Jan 2015 23:01 ]
Sujet du message:  Re: calcul de statut

Alors donc, je viens de comprendre la différence entre Capteur et Actionneur ! :oops:
Donc, même si mon objet "IPX800-Mode chauffage zone 1" représente un statut et qu'il est le résultat de capteur, c'est un actionneur, et je peux le choisir dans les actions et lui mettre une valeur !
De même, concernant mes capteur de led, je dois saisir les valeurs possibles dans le capteur pour pouvoir les choisir dans la règle (heureusement qu'il n'y en a pas 50000...)
Je vais continuer les tests avec les histoire de "est maintenant" ou "devient maintenant" !

A suivre...
Auteur:  blues [ 19 Jan 2015 23:54 ]
Sujet du message:  Re: calcul de statut

Arnaud a écrit:Merci, mais je ne comprends pas (encore) tout, désolé :( .
Pour récupérer le statut de la led0, je met l'URL http://IP-de-IPX/status.xml, puis dans xpath, je mets //led0, idem pour les 7 autres.

Comment j'adapte ta proposition à ce cas ? vu que l'URL ne prend pas de paramètre...

En relisant ma réponse j'avoue que ce n'était pas clair :-)
La première partie est une astuce pour cloner les périphériques.
La deuxième s'appuie sur xpath pour faire des évaluations plus compliquées que //led2 par exemple.
La page http://doc.eedomus.com/view/XPath donne des idées d'opérateurs. L'astuce étant de combiner la valeur de 2 relais pour déterminer un mode de chauffage.
Un truc du genre (à creuser car je ne maîtrise pas) : change(concat(//led2,//led3),'00','confort')

La cerise sur le gâteau serait d'utiliser cette expression dans la partie polling de récupération d'état d'un actionneur http ! ;-)
Auteur:  Arnaud [ 20 Jan 2015 10:16 ]
Sujet du message:  Re: calcul de statut

Alors,

@blues, ok je comprends mieux. Mais je ne crois pas qu'on puisse récupérer plusieurs valeurs via le xpath... Ce que tu proposes marche, ... mais pour une seule valeur.

@influman, j'ai essayé avec une règle contenant les critères "est" et "égal à". Ca marche. Ca ne marche pas avec "devient maintenant" ni "est maintenant".
Je dois donc en faire 16 !!!
Question: n'y a-t-il pas un risque de mettre dans les règles le critère "est" (au lieu de "devient maintenant") ? Car si on réfléchit bien, ..., dès que la valeur est égale à 0, la règle s'applique, ..., donc elle va s'appliquer tout le temps, des milliards de fois par seconde, non ?
Auteur:  influman [ 20 Jan 2015 10:59 ]
Sujet du message:  Re: calcul de statut

Arnaud a écrit:Alors,

@blues, ok je comprends mieux. Mais je ne crois pas qu'on puisse récupérer plusieurs valeurs via le xpath... Ce que tu proposes marche, ... mais pour une seule valeur.

@influman, j'ai essayé avec une règle contenant les critères "est" et "égal à". Ca marche. Ca ne marche pas avec "devient maintenant" ni "est maintenant".
Je dois donc en faire 16 !!!
Question: n'y a-t-il pas un risque de mettre dans les règles le critère "est" (au lieu de "devient maintenant") ? Car si on réfléchit bien, ..., dès que la valeur est égale à 0, la règle s'applique, ..., donc elle va s'appliquer tout le temps, des milliards de fois par seconde, non ?


tu mets un ré enclenchement de règle toutes les 1mn,
ou un critere horaire toutes les 1 mn
ou plus en fonction de ta tolérance.
Auteur:  Arnaud [ 20 Jan 2015 11:20 ]
Sujet du message:  Re: calcul de statut

OK merci.
Si jamais qqn a réussi a reproduire le statut de l'IPX800 dans l'eedomus, ça m'intéresse...
Auteur:  blues [ 20 Jan 2015 12:59 ]
Sujet du message:  Re: calcul de statut

Arnaud a écrit:@blues, ok je comprends mieux. Mais je ne crois pas qu'on puisse récupérer plusieurs valeurs via le xpath... Ce que tu proposes marche, ... mais pour une seule valeur.

ça devrait fonctionner avec 4 valeurs utilisées dans le capteur http (confort, eco, hors gel, arrêt) et type de données="liste de valeurs".
avec XPATH=concat(//led2,//led3) change('00', 'confort') change('11', 'eco') change('01', 'hors gel') change('10', 'arrêt')

Tu dois le faire 4 fois pour 4 chauffages... (led0+led1,led2+led3,led4+led5 et led6+led7).

:D
Auteur:  Arnaud [ 20 Jan 2015 14:57 ]
Sujet du message:  Re: calcul de statut

Merci Ô Chevalier blues ! Perfecto ! Finalement, tu ne maîtrises pas si mal que ça... :)
Ca a l'air de marcher très bien. Le seul hic (mais pas grave), c'est qu'il faut mettre des valeurs (0, 1, 2, 3, ...) au lieu de ('confort', 'eco', ...), sinon on ne peut pas les utiliser ailleurs dans eedomus.

Je serais curieux de voir la doc qui parle de tout ça...
Auteur:  blues [ 20 Jan 2015 22:58 ]
Sujet du message:  Re: calcul de statut

You're welcome ! :D
Page 1 sur 1 Le fuseau horaire est UTC+1 heure