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

Arithmétique simple directement avec l'eedomus :)
http://forum.eedomus.fr/viewtopic.php?f=18&t=1478
Page 1 sur 1
Auteur:  benj70b [ 22 Jan 2014 23:26 ]
Sujet du message:  Arithmétique simple directement avec l'eedomus :)

bonjour,

j'ai découvert un moyen d'effectuer des opérations arithmétiques simples sur plusieurs valeurs en utilisant les fonctionnalités xpath du "HTTP - Capteur" c'est un peu usine a gaz mais cela fonctionne et m'a permis de reproduire l'algorithme "Zone de chauffage 10% ... 100%" avec en plus la gestion du pilotage de l’arrêt et l’arrêt sur ouverture d'une fenêtre :mrgreen:

voici un exemple simple pour effectuer une soustraction de 2 valeurs de température (Extérieur et Intérieur du Salon),
Ensuite nous avons besoin de :
- Un Etat pour stocker un chaîne de caractère qui contiendra [Temp Intérieur], [Temp Extérieur]
- Un Actionneur HTTP qui va envoyer les 2 températures a l'état du dessus
- Un Capteur HTTP qui effectuera la soustraction donc le résultat du calcul
- ainsi que les code API

Sans titre.jpg
les élements
Sans titre.jpg (103.69 Kio) Consulté 16141 fois


Etape 1 : Configurer l'envoi avec l'actionneur HTTP 'TEST - Envoi Valeurs' via l'API eeDomus vers 'TEST - Etat Text' en concaténant les 2 températures avec une , en séparateur

Ajouter une nouvelle Valeur sur 'TEST - Envoi Valeurs'
Valeur : 3 dans mon exemple
Description : SEND 2 'TEST - Etat Text'
URL : http://localhost/api/
Type : GET
Parametre : set?action=periph.value&periph_id=64116&format=xml&value=[LAST_VALUE PERIPH_ID=63282],[LAST_VALUE PERIPH_ID=63224]

64116 : Code API de 'TEST - Etat Text'
63828 : Code API de la 'Température Séjour'
, : le séparateur
63224 : Code API de la 'Température Exterieur'

Sans titre 1.jpg
TEST - Envoi Valeurs
Sans titre 1.jpg (60.61 Kio) Consulté 16141 fois


Etape 2 : Configurer le Capteur HTTP - Résultat Calcul
Type de données : Nombre décimal
Url de la requete : http://localhost/api/get?action=periph.caract&format=xml&periph_id=64116
Chemin XPATH : substring-before(//last_value,',') - substring-after(//last_value,',')

64116 : Code API de 'TEST - Etat Text'
substring-before(//last_value,',') : Extration de la Température Séjour'
- : Opérateur
substring-after(//last_value,',') : Extration de la Température Extérieure'

Sans titre 2.jpg
HTTP - Résultat Calcul
Sans titre 2.jpg (31.5 Kio) Consulté 16141 fois



Le principe est donc de concaténer 2 (N) valeurs avec une virgule en séparateur, puis de les extraire a nouveau et d’utiliser les opérateurs Arithmétiques disponibles avec xPath

Voila, j’espère que c'est assez clair :D
Auteur:  Nico33 [ 22 Jan 2014 23:56 ]
Sujet du message:  Re: Arithmétique simple directement avec l'eedomus :)

Clair et carrément malin !!!!
Dommage que ce ne soit pas inclus simplement dans la box.
Bien joué en tout cas !
Auteur:  Tinto [ 22 Jan 2014 23:58 ]
Sujet du message:  Re: Arithmétique simple directement avec l'eedomus :)

Ouais, assez malin :)

La box a des capacités de base et est assez souple, aux utilisateurs de bricoler :)

Bien joué ;)
Auteur:  aurel [ 23 Jan 2014 06:49 ]
Sujet du message:  Re: Arithmétique simple directement avec l'eedomus :)

Woouw, il fallait y penser a ca! Très bien vu! Ca aidera certainement nos amis qui ont peur de manipuler php. Belle trouvaille!
Auteur:  Rocketlud [ 23 Jan 2014 08:28 ]
Sujet du message:  Re: Arithmétique simple directement avec l'eedomus :)

Merci pour le partage ;) je le rajoute à la longue liste des trucs à tester;) LOL
Auteur:  Dartymath [ 28 Jan 2014 22:10 ]
Sujet du message:  Re: Arithmétique simple directement avec l'eedomus :)

Bonjour benj70b,

super découverte et merci pour ton partage, en revanche je n'arrive pas a trouver un document expliquant toutes les fonctions XPATH utilisable sur l'API et notamment pour réaliser les autres fonction arithmétique pour finaliser la réalisation d'un équivalent de zone de chauffage personnalisé.

Peux tu partager l'ensemble de tes capteur et actionneurs HTTP pour la réalisation de ta zone de chauffage avec fonction stop et fenêtres ouvertes ??

Encore merci,

Dartymath
Auteur:  benj70b [ 29 Jan 2014 06:04 ]
Sujet du message:  Re: Arithmétique simple directement avec l'eedomus :)

bonjour DartyMath

Pour la programmation de ma zone de chauffage au final, j'ai arrêté d'utiliser la gestion du 0% à 100% a cause de mes radiateurs a fluides et l'inertie de ceux ci, j'ai posté la config de chauffage de mon bureau sur le fofo http://forum.eedomus.com/viewtopic.php?f=12&t=1488 :)

Pour les fonctions XPath utilisables c'est ici : http://doc.eedomus.com/view/Capteurs_HTTP et les opérateurs c'est par la : http://www.w3schools.com/xpath/xpath_operators.asp

voila en espérant que tout ceci t'aidera ;)
Auteur:  pasanga [ 29 Jan 2014 14:03 ]
Sujet du message:  Re: Arithmétique simple directement avec l'eedomus :)

bonjour
avec ta méthode si j ai bien compris
on peut donc par exemple : crée un état virtuel qui remonte une moyenne de deux sondes de température par exemple :?:
Auteur:  Dartymath [ 30 Jan 2014 21:52 ]
Sujet du message:  Re: Arithmétique simple directement avec l'eedomus :)

Merci pour l'aide

je ferais un retour sur mon installation lorsque je l'aurais fini,

dartymath
Auteur:  benj70b [ 30 Jan 2014 22:17 ]
Sujet du message:  Re: Arithmétique simple directement avec l'eedomus :)

@DartyMath : de rien ;)

@pasanga : Yep, l'expression xpath devrait etre : (substring-before(//last_value,',') + substring-after(//last_value,',')) /2
Auteur:  pasanga [ 31 Jan 2014 13:56 ]
Sujet du message:  Re: Arithmétique simple directement avec l'eedomus :)

ok :)
merci pour ton partage
j'ai,réussi a refaire ton tuto
cela fonctionne nikel :D
je vais essayer de faire de faire les moyennes de mes températures
encore merci
Auteur:  Dartymath [ 01 Fév 2014 23:21 ]
Sujet du message:  Re: Arithmétique simple directement avec l'eedomus :)

Bonjour benj70b

Super, j'ai reussi avec ton astuce d'actionneur et de capteur HTTP pour faire le calcul entre la temperature, la consigne et la temperature exterieur. Maintenant que j'ai cette valeur de pourcentage de chauffage ex 50% je cherche comment lancer la macro du chauffage fils pilote avec le pourcentage le plus proche ? Comment as tu fait avant de revenir sur ta situation actuelle en tout ou rien ?

Dartymath
Auteur:  benj70b [ 15 Fév 2014 18:33 ]
Sujet du message:  Re: Arithmétique simple directement avec l'eedomus :)

Bonsoir Dartymath

J'avais fait 3 regles
1) < à 25 %
2) > à 25 % et < à 75 %
3) > à 75 %

et a chaque règle je lançais la macro correspondante (ex la regle < à 25 %) :
Sans titre 2.jpg
regle < à 25 %
Sans titre 2.jpg (74.37 Kio) Consulté 15793 fois


voili voilou
Auteur:  milillicuti [ 22 Fév 2014 00:02 ]
Sujet du message:  Re: Arithmétique simple directement avec l'eedomus :)

Super intéressant !
J'ai utilisé ta méthode pour calculer ma consommation électrique journalière.
Par contre elle est forcément calculée en W. Je n'arrive pas à trouver la syntaxe pour diviser par 1000 et afficher ainsi des kW.
Tu aurais une idée ?

Merci !
Auteur:  Zitoire [ 24 Fév 2014 14:28 ]
Sujet du message:  Re: Arithmétique simple directement avec l'eedomus :)

Il faut aller voir ici et donc dans ton cas utiliser 'div 1000'
Auteur:  milillicuti [ 24 Fév 2014 22:54 ]
Sujet du message:  Re: Arithmétique simple directement avec l'eedomus :)

Merci pour ta réponse. J'avais déjà vu ça mais mon calcul est plus compliqué et j'ai l'impression que XPATH ne sait pas gérer les parenthèses :

(conso totale - conso hier) div 1000

Ca ça ne semble pas fonctionner ... Pourtant la soustraction seule fonctionne.
Auteur:  razowski [ 06 Mars 2014 11:55 ]
Sujet du message:  Re: Arithmétique simple directement avec l'eedomus :)

Bonjour,

Merci pour le partage, très utile...

Une question sur l'expression XPath: est-il possible de réaliser le même exercice sur une string contenant trois valeurs, et si oui, comment adapter l'expression XPath ?

Exemple :
string construite sur 3 sondes de température : 18,22,19.6

Comment parser la string avec XPath pour récupérer les trois valeurs. J'aurais tendance à dire que c'est pas jouable, mais ne suis pas certain de mon coup.
Page 1 sur 1 Le fuseau horaire est UTC+1 heure