Fonction prenant des paramètres en entrée/sortie ?
#1
Bonjour,
J’ai besoin de déterminer la valeur maximum d’un ensemble de valeurs (valeur maximum de consigne de tous les thermostats). Je ne trouve pas de fonction de type Max(). Je ne comprends pas comment faire pour créer une telle fonction qui prendrait des paramètres (numériques) en entrée, et qui en retourne une valeur numérique en sortie. Comment faire ?
Thierry
Répondre
#2
Bonjour, à ma connaissance, il n'est pas possible pour l'instant (v1.3.53) de créer des fonctions avec des paramètres en entrée. Je crois que la solution actuelle à votre problème est de créer une succession de "IF" du genre:

1- IF consigne_thermo1 > consigne_thermo2 ALORS consigne_max=consigne_thermo1 SINON consigne_max=thermo2, PUIS CONTINUER en ligne 2
2- IF consigne_thermo3 > consigne_max ALORS consigne_max=consigne_thermo3 SINON rien, PUIS CONTINUER en ligne 3
3- IF consigne_thermo4 > consigne_max ALORS consigne_max=consigne_thermo4 SINON rien, PUIS CONTINUER en ligne 4
4- IF consigne_thermo5 > consigne_max ALORS etc....

Je ne sais pas si c'est très clair désolé :o
www.osmotiq.com, domotique, développement logiciel et web -- tests & tutoriels KNX, Lifedomus, ZWave, etc.
Twitter: osmotiq
Répondre
#3
Bonjour,
Merci de ta réponse. Elle est très claire.
J'ai pensé à cette solution mais elle n'est pas très élégante et surtout je suis obligé d'intégrer cette suite de IF dans le corps principal de l'automate, et je ne peux pas la factoriser entre 2 automates. Gênant.
@+
Répondre
#4
bizniouf a écrit :Bonjour,
Merci de ta réponse. Elle est très claire.
J'ai pensé à cette solution mais elle n'est pas très élégante et surtout je suis obligé d'intégrer cette suite de IF dans le corps principal de l'automate, et je ne peux pas la factoriser entre 2 automates. Gênant.
@+

Je suis bien d'accord avec toi.
Ce qu'il faudrait au minimum serait de pouvoir lancer un automate depuis un autre automate. Dans ce cas, au moment d'évaluer quelle est la consigne maximum, il suffirait d'exécuter l'automate qui fait les comparaisons et qui stocke le résultat dans une variable publique (globale). Sans être aussi avancée qu'une fonction paramétrisée ca donnerait au moins la possibilité de réutiliser du "code" sans devoir le ré-écrire.

Pour l'instant, dans des cas similaires, pour pallier à ce manque, j'exécute régulièrement mon automate (genre toutes les minutes ou tous les quarts d'heure selon l'importance) et ainsi le "résultat" des mes X comparaisons est relativement "à jour".

--tilleul
www.osmotiq.com
Twitter: osmotiq
Répondre
#5
Effectivement, ce serait déjà un plus, et ton idée d'exécution régulière de l'automate qui fait le calcul un moyen de contourner. Espérons que nos amis de Lifedomus iront jusqu'à implémenter des fonctions paramétrées. C'est quand même une des bases de l'informatique.
@+
Thierry
Répondre
#6
bizniouf a écrit :Effectivement, ce serait déjà un plus, et ton idée d'exécution régulière de l'automate qui fait le calcul un moyen de contourner. Espérons que nos amis de Lifedomus iront jusqu'à implémenter des fonctions paramétrées. C'est quand même une des bases de l'informatique.
@+
Thierry

Tout à fait d'accord. En tant que développeur/programmeur c'est "frustrant" ... mais bon, je me fais une raison :p
Je crois que le module "automate" est encore trop jeune (quelques mois) et que donc on hérite des petits défauts de jeunesse. Personnellement j'aimerais bien qu'ils laissent la possibilité de développer en "vrai code" (en plus de leur interface vulgarisée, sympa pour l'utilisateur lambda) ... pourquoi pas en Javascript puisque c'est déjà possible avec les objets universels HTTP ?


--tilleul
http://www.osmotiq.com
Twitter: osmotiq
Répondre
#7
tilleul a écrit :Tout à fait d'accord. En tant que développeur/programmeur c'est "frustrant" ... mais bon, je me fais une raison :p
Je crois que le module "automate" est encore trop jeune (quelques mois) et que donc on hérite des petits défauts de jeunesse. Personnellement j'aimerais bien qu'ils laissent la possibilité de développer en "vrai code" (en plus de leur interface vulgarisée, sympa pour l'utilisateur lambda) ... pourquoi pas en Javascript puisque c'est déjà possible avec les objets universels HTTP ?

J'ai déjà évoqué ce souhait à Hervé Fourmeaux.

Aujourd'hui je pense qu'on devrait pouvoir contourner en créant un équipement universel TCP/IP car il est apparemment possible de modifier les variables Lifedomus depuis du code Javascript. A partir de là, on devrait pouvoir écrire du Javascript dans l'équipement et l'invoquer en interrogeant l'équipement depuis un automate puis en récupérant un résultat dans une variable globale Lifedomus. C'est un peu compliqué mais ça semble faisable.

Ceci dit je n'ai pas eu le temps de m'y pencher, je manque d'exemples pour me mettre le pied à l'étrier, et côté informatique je suis plutôt architecte et à présent éloigné du code...

As-tu déjà essayé de mettre en oeuvre un équipement exploitant le protocole universel TCP-IP ? ça m'intéresserait bien d'avoir un exemple. Pour la petite histoire je voudrais par exemple en créer un pour récupérer le temps qu'il va faire et l'utiliser dans mon algo d'automatime du chauffage (pour optimiser les apports solaires).

@+
Thierry
Répondre
#8
bizniouf a écrit :J'ai déjà évoqué ce souhait à Hervé Fourmeaux.
Aujourd'hui je pense qu'on devrait pouvoir contourner en créant un équipement universel TCP/IP car il est apparemment possible de modifier les variables Lifedomus depuis du code Javascript. A partir de là, on devrait pouvoir écrire du Javascript dans l'équipement et l'invoquer en interrogeant l'équipement depuis un automate puis en récupérant un résultat dans une variable globale Lifedomus. C'est un peu compliqué mais ça semble faisable.
Ca semble prometteur mais sans doc ca va être difficile. Hervé, si tu nous lis ... ;)

Citation :As-tu déjà essayé de mettre en oeuvre un équipement exploitant le protocole universel TCP-IP ? ça m'intéresserait bien d'avoir un exemple. Pour la petite histoire je voudrais par exemple en créer un pour récupérer le temps qu'il va faire et l'utiliser dans mon algo d'automatime du chauffage (pour optimiser les apports solaires).
J'ai déjà chipoté avec les équipements universels TCP/IP. Pas encore pour récupérer les prévisions météo mais je sais que c'est faisable. Après, le problème est que tu dépend d'un serveur extérieur qui, aujourd'hui formatte ses données (en XML ou pas) d'une certaine manière et qui demain pourrait décider de les formatter d'une toute autre manière et du coup ton script plante.

Conclusion: Lifedomus devrait conclure un accord avec Météo France pour pouvoir rapatrier à tout instant les données météo sans crainte d'un changement de format. Ceci dit, moi (et surtout mes clients) sont assez peu intéressés par le climat en France, c'est plutôt celui de la Belgique qu'il leur faudrait, donc, Lifedomus doit conclure au moins un accord supplémentaire avec les services météo belges :rolleyes:
Répondre
#9
tilleul a écrit :Bonjour, à ma connaissance, il n'est pas possible pour l'instant (v1.3.53) de créer des fonctions avec des paramètres en entrée. Je crois que la solution actuelle à votre problème est de créer une succession de "IF" du genre:

1- IF consigne_thermo1 > consigne_thermo2 ALORS consigne_max=consigne_thermo1 SINON consigne_max=thermo2, PUIS CONTINUER en ligne 2
2- IF consigne_thermo3 > consigne_max ALORS consigne_max=consigne_thermo3 SINON rien, PUIS CONTINUER en ligne 3
3- IF consigne_thermo4 > consigne_max ALORS consigne_max=consigne_thermo4 SINON rien, PUIS CONTINUER en ligne 4
4- IF consigne_thermo5 > consigne_max ALORS etc....

Je ne sais pas si c'est très clair désolé :o
Salut François,

J'ai commencé à coder la chose comme tu le suggérais. Franchement c'est galère, très long, et en plus pas du tout maintenable car tous les opérandes sont "cachés" : Pour voir la condition du IF il faut zoomer dessus. Pour voir quelle propriété de quel équipement on affecte à la consigne_max, pareil.

Il me semble que ces besoins (une fonction MAX, et la possibilité de créer des fonctions avec paramètres d'entrée/sortie) serait très utile à beaucoup. Quelqu'un de la team Lifedomus pourrait il me dire ce qu'il en est et ce qu'il pourrait en être ?
Many thanks !
Répondre
#10
Est ce que quelqu'un a récupéré les prévisions météo dans Lifedomus?

Pour info, Wunderground a une api pour les prévisions météo global.

http://www.wunderground.com/weather/api/


Répondre


Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  Allumer une lampe de balisage en fonction de l'heure au lieu de la lampe du plafond com@home 19 22,869 12-19-2016, 10:58 PM
Dernier message: com@home
  Simulation de présence - Fonction Random Domoconnect 27 31,627 05-28-2016, 06:24 AM
Dernier message: zozotte
  Paramètres de géolocasition Ives 5 7,752 01-26-2016, 10:55 PM
Dernier message: jbbrescia
  Programmes RGB et sortie de boucle while zozotte 3 5,524 01-13-2016, 07:11 AM
Dernier message: zozotte
  Allumer une lampe de balisage en fonction de l'heure au lieu de la lampe du plafond com@home 15 17,942 08-27-2015, 09:24 AM
Dernier message: Domo
  Automates... Déclenchements en parallèle, réentrance et paramètres d'entrée/sortie bizniouf 2 5,435 01-26-2015, 06:50 PM
Dernier message: coyotus
  Impossible de renommer une fonction AucuneID 3 5,835 01-14-2015, 07:13 PM
Dernier message: tilleul
  Démarrage automate en fonction d'une variable ngm47 4 7,416 06-02-2014, 01:50 PM
Dernier message: ngm47
  Erreur sur ma fonction WeekEnd ? AucuneID 4 6,481 12-31-2013, 06:16 PM
Dernier message: AucuneID
  Demande de fonction: reveil et retours de variables via appli smartphone/tablette! AucuneID 2 4,600 12-03-2013, 12:36 PM
Dernier message: Julien



Utilisateur(s) parcourant ce sujet : 1 visiteur(s)