Problème de commande dans bloc si

Bonjour je débute avec jeedom et je ne suis pas familiarisé avec le language des commandes dans les blocs mais j’ai une bonne maitrise du VBA donc avec votre aide je dois pouvoir progresser.

Voici la commande qui me pose problème.
(#time# >= time_op(#[Maison][Météo][Coucher du soleil]# ET #time# <= time_op(#[Maison][Météo][Lever du soleil]#,+60) ET #[Jardin][Prise multiple )][Etat]# == 0

L’objectif du scénarion est d’allumer les lumières du jardin quand je sort de la maison. Le déclancheur est un detecteur de mouvement et les lumières s’allument 3 minutes si : (c’est la commande à problème)

  • La plage horaire et comprise entre le couher du soleil et le lever plus une heure

  • La lumiére du jardin n’est pas déjas alumé car dans ce cas il n’est pas nécessaire de l’alumer et surtout il ne faut pas l’éteindre au bout de 3 minutes car le soir j’allume le jardin pendant 1 heure.

Ma commande dans le bloc si doit faire cela mais cela ne fonctionne pas.

Merci pour votre aide et de façon plus globalle où est-il possible de trouver des tutos ou de la documentations détaillée sur la syntaxe des commandes Jeedom ou le langage de programmation .

Jean-Marc

Pour tester une plage horaire qui couvre minuit il faut mettre OU
Pour tester une plage horaire qui ne couvre pas minuit il faut un ET

Or dans ton cas, tu couvres minuit puisque tu testes du coucher au lever…

Ensuite ça n’est pas bon time_op(#[Maison][Météo][Coucher du soleil]#
puisque tu ne fais aucune opération sur l’heure !

Donc ton test devrait plus ressembler à
SI
(#time# >= #[Maison][Météo][Coucher du soleil]# OU #time# <= time_op(#[Maison][Météo][Lever du soleil]#,+60)) ET #[Jardin][Prise multiple )][Etat]# == 0

Ensuite je te conseille de remplacer les ET et les OU par && pour ET
|| pour OU

Merci déjas beaucoup pour ces informations que je vai tester ce soir. J’apprecie beaucoup votre aide pouvez-vous me dire comment je peux progresser en étudiant soit de la documentationsoit des ouvrages et où et lesquels?
Ranplacer ET par II est surmement une bonne idée elle ne doit certainement rien au hasard mais a la connaissance acquise. Alors merci de me dire ce que vous me conseillez pour en acquir une.

Jean-Marc

Ou alors, pour ne pas s’embêter avec le passage à minuit, autant utiliser la fonction time_between

SI time_between(#time#,2200,1400)

1 « J'aime »

Ok je testerai cela aussi.

merci

Jean-Marc

La commande serait celle-ci ?

SI time_between(#time#, time_op(#[Maison][Météo][Coucher du soleil]#),time_op(#[Maison][Météo][lever du soleil]#,+30))

Je viens de tester

time_between(#time#,#time#, time_op(#[Maison][Météo][Coucher du soleil]#),time_op(#[Maison][Météo][Lever du soleil]#,+300))

J’ai augmenté la plage pour le test et cela marche solution que je toruve élégante et utilisable aisemment dans beaucoup d’autres scénario.

Merci beaucoup

Jean-Marc

Salut @Gally,
Comme le dis @anon53349806, le 1er time_op sur le coucher du soleil ne sers à rien vu que tu ne fais pas d’opération dessus (pas de calcul).
time_between(#[Maison][Météo][Coucher du soleil]#),time_op(#[Maison][Météo][lever du soleil]#,+30))
devrais suffire.
Cordialement.

quand tu es sur la page des scénarios, clique en haut à droite sur le point d’interrogation ce qui t’emmènera directement sur la documentation pour les scénarios.

Merci pour l’info, j’ai déjas été sur cette page interessante, c’est un catalogue très complet mais pas un cours sur la façon d’utiliser ce qui est dans le catalogue; notamment au niveau de la syntaxe. Une virgule ou une parenthèse au mauvais endroit et la fonction que l’on veux utiliser ne fonctionne pas.
C’est ce que je voudrait apprendre comme j’ai appris à programmer en VBA pour excel ou en C++ pour arduino . Avec jeedom je n’ai pas encore trouvé les supports pédagogiques qui permetent de faire cela.

Certes je sais que je peux compter sur vous et que j’arivevrai à termes à être plus autonome. Mais c’est domage de vous solliciter pour des choses qui seront au départ très basiques.

Jean-Marc

Bonjour, le plus simple selon moi:

La doc pour la liste des fonctions (et des exemples)

Le testeur d’expressions pour valider la syntaxe/ le résultat.

Je ne pense pas qu’il y ait de cours tout fait (a moins que quelqu’un en ait fait un sur un des sites qui parle de jeedom)

Bonjour,

Il manque le #time#

La bonne commande est plutôt :
time_between(#time#,#[Maison][Météo][Coucher du soleil]#),time_op(#[Maison][Météo][lever du soleil]#,+30))

En français :
SI : l’heure qu’il est, est comprise entre l’heure du coucher du soleil et l’heure du lever du soleil+30minutes

Mea Culpa.
tu as raison, j’ai été trop rapide en écrivant et je me suis pas relu… c’était l’heure de passer à table et mon estomac as pris le dessus :wink:

Merci à tous pour votre aide mon problème est résolu et pour ma progression dans la maîtrise de jeedom et de ses commandes je progresserai grasse aux tutos et avec votre aide. Il n’y a apparamment pas de documents ou de livre structurée pour se former sur le sujet. Mais ce n’est pas grave.

Jean-Marc

On en est tous là.
Lire la doc et se faire la main en utilisant au mieux nos compétences.
Pense à clôturer ton sujet si tu penses avoir tes réponse.
Bonne journée

1 « J'aime »

Le sujet n’est pas clot malheuresement. Mais avant de dévleopper comment cloture t-on un sujet.
Voila le problème restant.
si time_between(#time#, time_op(#[Maison][Météo][Coucher du soleil]#),time_op(#[Maison][Météo][Lever du soleil]#,+30))

Fonctionne comme testé ce matin mais la condtion complette avec le ET ne passe pas.

si time_between(#time#, time_op(#[Maison][Météo][Coucher du soleil]#),time_op(#[Maison][Météo][Lever du soleil]#,+30)) ET #[Jardin][Prise multiple )][Etat]# == 0

Jeedom me la signale en erreur mais je ne voie pas où est le problème.

Jean-Marc

SI time_between(#time#,#[Maison][Météo][Coucher du soleil]#,time_op(#[Maison][Météo][Lever du soleil]#,+30)) ET #[Jardin][Prise multiple][Etat]# == 0

Pourquoi tu supprime time_op devant la l’experssion couher du soleil en fait la commande :
time_between(#time#, time_op(#[Maison][Météo][Coucher du soleil]#),time_op(#[Maison][Météo][Lever du soleil]#,+30))
Fonctionne c’est quand je rajoute le ET que cela bloque

Jean-Marc

Parce que quand tu fais un time_op c’est pour faire un calcul.
En l’occurrence, tu ne fais pas de calcul, donc prends directement la valeur

Et il y avait une parenthèses de trop