Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

[Framework SC] les scenarios en php

Cette partie est dédiée à la programmation sur le logiciel JEEDOM
Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 28 mai 2016, 12:18

Merci Patrick, je vais regarder ça...

Je ne suis pas bêta testeur donc c'est pas simple.

pour le trigger je regarde aussi mais de mémoire j'ai fait exactement la même chose que Jeedom justement.
Le truc c'est que dans Jeedom tu tapes la fonction dans une condition ou dans une action, donc le trigger est évalué
Il faut donc l'utiliser dans une fonction qui utilise une expression Jeedom.
Si tu l'utilises avec un sc::getExp() ou sc::getCond() ça devrait faire la même chose que dans Jeedom (je pense).

Sinon pour avoir sa valeur en php avec ceci ça dervait marcher (j'ai ps tester donc à confirmer) :
$trigger = sc::getTrigger();
$triggerValue = sc::getExp($trigger);
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

Avatar de l’utilisateur
m.georgein
Timide
Messages : 299
Inscription : 18 mars 2016, 23:46
Localisation : 13820

Re: [Framework SC] les scenarios en php

Message par m.georgein » 30 mai 2016, 19:43

Bonjour,

Je reviens sur le problème du NULL.

en lançant :
sc::setcmd(('#' . $Equipement . '[Ambiance_]#', $Valeur)
Si $Valeur = 0 (ou '') on obtient une erreur 'NULL' et le slider n'est pas mis à jour.

Par contre en mettant la syntaxe classique :
$option['slider'] = $Valeur;
cmd::byString('#' . $Equipement . '[Ambiance_]#')->execCmd($option);
on à bien la mise a jour du slider qui est faite et aucun message d'erreur même si $Valeur= 0.
le lancement de
cmd::byString('#' . $Equipement . '[Ambiance_]#')->execCmd(0);
fonctionne également

Quelque chose m'a échappé ?
Plateforme :
NUCNUC6i5SYK en VM STRETCH
Version Jeedom 4.0.9
Version PHP 7.0.33-0+deb9u1
Version OS Linux debian9 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux [9.6]
Version database 10.1.26-MariaDB-0+deb9u1

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 30 mai 2016, 20:07

Merci m.georgein ;)

Le pb du NULL n'avait rien à voir avec celui de Jeedom mais était interne à la classe.
En fait Il est apparu quand j'ai rajouté l'évaluation des expressions directement dans la fonction setCmd

Bref, c'est corrigé, il suffit de lancer l'update ;)

(par contre "" n'est toujours pas accepté pour un slider car on veut un nombre, mais "0" ou 0 maintenant c'est tout bon
et "" passe toujours sans pb pour un titre et/ou un message)
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

Avatar de l’utilisateur
m.georgein
Timide
Messages : 299
Inscription : 18 mars 2016, 23:46
Localisation : 13820

Re: [Framework SC] les scenarios en php

Message par m.georgein » 30 mai 2016, 22:28

dJuL plus rapide que l'ombre de sa souris !!!

Question subsidiaire, en dehors du framework sc, y a t il une possibilité de lire les tags (#heure#, etc) ainsi qu'exploiter les fonctions (average, stateDuration, etc) dans les blocs code des scénarios ??
Plateforme :
NUCNUC6i5SYK en VM STRETCH
Version Jeedom 4.0.9
Version PHP 7.0.33-0+deb9u1
Version OS Linux debian9 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux [9.6]
Version database 10.1.26-MariaDB-0+deb9u1

Avatar de l’utilisateur
Patrick
Helper
Messages : 1007
Inscription : 29 août 2014, 15:21
Localisation : Savoie

Re: [Framework SC] les scenarios en php

Message par Patrick » 31 mai 2016, 10:17

dJuL a écrit :Merci Patrick, je vais regarder ça...

Je ne suis pas bêta testeur donc c'est pas simple.

pour le trigger je regarde aussi mais de mémoire j'ai fait exactement la même chose que Jeedom justement.
Le truc c'est que dans Jeedom tu tapes la fonction dans une condition ou dans une action, donc le trigger est évalué
Il faut donc l'utiliser dans une fonction qui utilise une expression Jeedom.
Si tu l'utilises avec un sc::getExp() ou sc::getCond() ça devrait faire la même chose que dans Jeedom (je pense).

Sinon pour avoir sa valeur en php avec ceci ça dervait marcher (j'ai ps tester donc à confirmer) :
$trigger = sc::getTrigger();
$triggerValue = sc::getExp($trigger);
@dJuL : Désolé pour le manque de réactivité, et merci de ton retour ;)
J'ai testé avec getCond(), et ca marche...
Si tu veux que je fasse quelques tests pour les logs, n'hésite pas ;-)
ßêta-Testeur / Développeur plugin / Modérateur du Forum EnOcean

En domotique ou en informatique, il n'y a pas de problème, mais seulement des solutions à trouver...
Pour contribuer au développement des plugins et tutos : Paypal

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 31 mai 2016, 17:25

Ok merci ;)
Bah a voir soit je fait un strip tags et du coup ça passera tel quel en texte brut, soit je fait un truc qui modifie la balise PRE pour conserver la mise en forme html... Je sais pas trop encore, j'me tâte...
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

Avatar de l’utilisateur
m.georgein
Timide
Messages : 299
Inscription : 18 mars 2016, 23:46
Localisation : 13820

Re: [Framework SC] les scenarios en php

Message par m.georgein » 15 juin 2016, 09:40

Bonjour,
Je reviens avec (encore) un problème de syntaxe, impossible faire fonctionner l'expression :
sc::wait(sc::getexp('scenario(#[Salon][Volets roulants][Volet roulant]#)' == 0), 5);
donne
WARNING: getExp() - Évaluation d'une expression vide ( retourne NULL )

Avec
sc::wait(sc::getcond('scenario(#[Salon][Volets roulants][Volet roulant]# == 0)'), 5);
j'obtiens
Évaluation d'une condition: ( scenario(#scenario33# == 0) ) ?
[SCENARIO] - Condition évaluée: ( 0 ) ?
[SCENARIO] - Résultat: FAUX
[SCENARIO] - WARNING: wait() - L'expression est vide, le temps d'attente sera le temps d'attente maxixum

J'ai essayé des tas d'autres approches syntaxique sans succès.

Une idée ???????
Plateforme :
NUCNUC6i5SYK en VM STRETCH
Version Jeedom 4.0.9
Version PHP 7.0.33-0+deb9u1
Version OS Linux debian9 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux [9.6]
Version database 10.1.26-MariaDB-0+deb9u1

Avatar de l’utilisateur
Theduck38
Helper
Messages : 2703
Inscription : 22 févr. 2015, 17:32
Localisation : Près de Grenoble
Contact :

Re: [Framework SC] les scenarios en php

Message par Theduck38 » 15 juin 2016, 10:20

Heu, tu es sûr de ton utilisation de la fonction scenario ?
La doc précise que la fonction ne renvoie pas de valeur.

Par ailleurs, pour chaque appel de fonction de la classe sc, il doit falloir mettre sc:: devant => donc sc::scenario()

Par illeurs, j'ai quelques doutes sur le placement de tes guillemets simple par rapport à l'appel au getcond et à ses parenthèses.

Essaye d'écrire ça sur plusieurs niveaux pour architecturer ta requête.
Un bon moyen de savoir où ça ne va pas est de générer du log pour chaque niveau élémentaire de la requête : d'abord faire la partie 'scenario' et renvoyer un log pour voir si elle marche, puis la partie 'getcond', puis le 'wait'...

Edit : tu cherches à faire quoi exactement ?
-- TD38 --
Helper Officiel Jeedom
Zimeteo sur Jeedom : http://www.meteo.lecoin.info
Jeedom Stable sur serveur custom
Le risque électrique - Afficheur leds RGB - Tablette Murale - Thermostat connecté

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 15 juin 2016, 11:07

m.georgein a écrit :Bonjour,
Je reviens avec (encore) un problème de syntaxe, impossible faire fonctionner l'expression :
sc::wait(sc::getexp('scenario(#[Salon][Volets roulants][Volet roulant]#)' == 0), 5);
donne
WARNING: getExp() - Évaluation d'une expression vide ( retourne NULL )

Avec
sc::wait(sc::getcond('scenario(#[Salon][Volets roulants][Volet roulant]# == 0)'), 5);
j'obtiens
Évaluation d'une condition: ( scenario(#scenario33# == 0) ) ?
[SCENARIO] - Condition évaluée: ( 0 ) ?
[SCENARIO] - Résultat: FAUX
[SCENARIO] - WARNING: wait() - L'expression est vide, le temps d'attente sera le temps d'attente maxixum

J'ai essayé des tas d'autres approches syntaxique sans succès.

Une idée ???????
La fonction wait prend directement une condition jeedom (String) en entrée et pas un boolean pourquoi donc utiliser getExp ou getCond qui vont évaluer le résultat à la place de la fonction wait ?

sc::wait('scenario(#[Salon][Volets roulants][Volet roulant]# == 0', 5);

Tout simplement, et ça devrait marcher
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

Avatar de l’utilisateur
m.georgein
Timide
Messages : 299
Inscription : 18 mars 2016, 23:46
Localisation : 13820

Re: [Framework SC] les scenarios en php

Message par m.georgein » 15 juin 2016, 12:01

Une des rares solution que je n'avais pas essayée !

Ta syntaxe aussi comportait une erreur (manque la parenthèse en fin d'équipement), en fait il faut écrire :
sc::wait('scenario(#[Salon][Volets roulants][Volet roulant]#) == 0', 2);

et là ça roule parfaitement !!!

Je commence à avoir une grande quantité de scénario complexe utilisant ton framework (gestion volet, lumière, alarme, caméra, visu de snapshot, etc.). Alors si tu as besoin de quelqu'un pour des tests ou autre n'hésite pas ! Ce sera un simple retour d'ascenseur !


Pour répondre à Theduck38 ici il s'agit d'un appel à la fonction scenario native de jeedom, c'est le wait qui appartient à sc.
Plateforme :
NUCNUC6i5SYK en VM STRETCH
Version Jeedom 4.0.9
Version PHP 7.0.33-0+deb9u1
Version OS Linux debian9 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux [9.6]
Version database 10.1.26-MariaDB-0+deb9u1

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 15 juin 2016, 12:07

Oui désolé pour la ) manquante je l'ai tapé à la volé ;)
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

Avatar de l’utilisateur
Theduck38
Helper
Messages : 2703
Inscription : 22 févr. 2015, 17:32
Localisation : Près de Grenoble
Contact :

Re: [Framework SC] les scenarios en php

Message par Theduck38 » 15 juin 2016, 14:49

m.georgein a écrit : Pour répondre à Theduck38 ici il s'agit d'un appel à la fonction scenario native de jeedom, c'est le wait qui appartient à sc.
Voui, ça m'a effleuré après coup, mais ne connaissant ni ton niveau ni ton but je n'ai pas réédité le post. Le principal c'est que tu aies réussi à le faire :)
-- TD38 --
Helper Officiel Jeedom
Zimeteo sur Jeedom : http://www.meteo.lecoin.info
Jeedom Stable sur serveur custom
Le risque électrique - Afficheur leds RGB - Tablette Murale - Thermostat connecté

Avatar de l’utilisateur
m.georgein
Timide
Messages : 299
Inscription : 18 mars 2016, 23:46
Localisation : 13820

Re: [Framework SC] les scenarios en php

Message par m.georgein » 16 juin 2016, 10:32

Encore lui !!!

Cette fois ci je viens avec la fonction sc::unsetvar()

Apparemment si la variable est vide elle n'est pas supprimée ... C'est contournable mais il faut y penser !!! :(
Plateforme :
NUCNUC6i5SYK en VM STRETCH
Version Jeedom 4.0.9
Version PHP 7.0.33-0+deb9u1
Version OS Linux debian9 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux [9.6]
Version database 10.1.26-MariaDB-0+deb9u1

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 16 juin 2016, 13:07

Tu parles d'un variable Jeedom en bdd ?
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

Avatar de l’utilisateur
m.georgein
Timide
Messages : 299
Inscription : 18 mars 2016, 23:46
Localisation : 13820

Re: [Framework SC] les scenarios en php

Message par m.georgein » 16 juin 2016, 13:22

Jeedom oui
Plateforme :
NUCNUC6i5SYK en VM STRETCH
Version Jeedom 4.0.9
Version PHP 7.0.33-0+deb9u1
Version OS Linux debian9 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux [9.6]
Version database 10.1.26-MariaDB-0+deb9u1

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 16 juin 2016, 13:28

Ok je regarde ça quand je rentre
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 17 juin 2016, 09:55

J'ai l'impression que lorsque la variable est vide Jeedom ne retourne pas la valeur vide mais la valeur spécifiée par défaut, ce qui fait que le framework ne lance pas l'effacement croyant que la variable n'existe pas.
Je regarderai ça plus en profondeur ce WE.

As tu vérifier le log du scénario concernant l'effacement ?
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

Avatar de l’utilisateur
m.georgein
Timide
Messages : 299
Inscription : 18 mars 2016, 23:46
Localisation : 13820

Re: [Framework SC] les scenarios en php

Message par m.georgein » 17 juin 2016, 16:37

Je viens de refaire le test, le message est :
WARNING: unsetvar() - Variable Alarme_Mvmt non définie, aucune destruction
et pourtant elle existe bien dans la liste des variables jeedom, mais vide.
Plateforme :
NUCNUC6i5SYK en VM STRETCH
Version Jeedom 4.0.9
Version PHP 7.0.33-0+deb9u1
Version OS Linux debian9 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux [9.6]
Version database 10.1.26-MariaDB-0+deb9u1

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 17 juin 2016, 16:50

Ok c'est bien ce que je craignais, lorsque la variable est vide Jeedom considère qu'elle n'existe pas et retourne la valeur par défaut au lieu de vide.
ex: si tu vais dans une expression jeedom un variable(toto , "defaut"), si toto est vide "défaut" sera retourné au lieu de "" qui est pourtant sa valeur.

Comme le framework utilise la valeur par defaut pour savoir si la variable est définie, forcément ça ne marche pas lorsqu'elle est vide.

Je vais voir si je peux trouver une autre méthode pour savoir si la variable existe en bdd, ou bien voir si ça ne créer pas d'erreur d'effacer une variable qui n'existe pas, auquel cas le framework pourrait se passer du test d’existence avant d'effectuer le unset.
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

Avatar de l’utilisateur
m.georgein
Timide
Messages : 299
Inscription : 18 mars 2016, 23:46
Localisation : 13820

Re: [Framework SC] les scenarios en php

Message par m.georgein » 17 juin 2016, 17:24

Encore une chose qui n'a peut être rien à voir avec toi mais si je ne pose pas la question ...

Dans le log "expression", j'ai des centaines de lignes de ce type :
[2016-06-17 17:13:34][expression][DEBUG] : [Parser 1] Expression : #[SdB][Fenêtre SdB][Ouverture]# tranformé en #[SdB][Fenêtre SdB][Ouverture]# => Unexpected character "#" around position 0.
[2016-06-17 17:13:39][expression][DEBUG] : [Parser 1] Expression : 2016-06-17 17:12:59 tranformé en 2016-06-17 17:12:59 => Unexpected token "number" of value "17" around position 12.
[2016-06-17 17:08:01][expression][DEBUG] : [Parser 1] Expression : #ff0000 tranformé en #ff0000 => Unexpected character "#" around position 0.
[2016-06-17 17:07:30][expression][DEBUG] : [Parser 1] Expression : ALARME !!! tranformé en ALARME !!! => Variable "ALARME" is not valid around position 1.

Pas d'incidence sur le fonctionnement mais consommation cpu pour rien ;) et difficulté de lecture des logs !!!

Signé : ton pire client :roll: :roll:
Plateforme :
NUCNUC6i5SYK en VM STRETCH
Version Jeedom 4.0.9
Version PHP 7.0.33-0+deb9u1
Version OS Linux debian9 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux [9.6]
Version database 10.1.26-MariaDB-0+deb9u1

Répondre

Revenir vers « Développements sur Jeedom »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité