Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

[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 : 1427
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 20 juil. 2017, 12:12

J'ai volontairement retiré la variable $scenario du scope car en mode scénario synchrone cela ne marche pas correctement avec des scénarios imbriqués ($scenario peut correspondre à l'ancien scénario lors du passage d'un scénario à l'autre).

Pour définir une variable il faut utiliser à la place :

Code : Tout sélectionner

$sc->setVar($Variable_Lever, $lever);
;)
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.

nou
Actif
Messages : 557
Inscription : 17 mai 2015, 00:17

Re: [Framework SC] les scenarios en php

Message par nou » 20 juil. 2017, 12:16

Ok,
mais honnêtement, je trouve ça un peu gênant le fait d'avoir modifié le fonctionnement 'normal' de jeedom.
l'approche initiale (coté complémentaire à Jeedom) me convenait mieux.

c'est un avis perso, qui ne remet en rien en cause l'énorme travail fournis !

Nou

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

Re: [Framework SC] les scenarios en php

Message par dJuL » 20 juil. 2017, 12:23

Je n'ai rien modifié du tout... (c'est juste une histoire de scope)
Mai je vais faire une maj pour rétablir la variable $scenario... Qui pour le coup sera toujours la bonne, même en mode synchrone (ce qui n'est pas le cas dans Jeedom de base)
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.

nou
Actif
Messages : 557
Inscription : 17 mai 2015, 00:17

Re: [Framework SC] les scenarios en php

Message par nou » 20 juil. 2017, 12:28

dJuL a écrit :
20 juil. 2017, 12:23
Qui pour le coup sera toujours la bonne, même en mode synchrone (ce qui n'est pas le cas dans Jeedom de base)
euh, pas certain d'avoir compris
peut être lié à la faim ! ;)

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

Re: [Framework SC] les scenarios en php

Message par dJuL » 20 juil. 2017, 12:33

Voilà maj en ligne

Update du framework SC v0.92b en ligne :D

- Intégration de la variable $scenario dans le scope d’exécution des blocs codes
(variable non globale, il faut l'envoyer en paramètre si vous l'utilisez dans des fonctions)

ATTENTION, CHANGEMENT DE SYNTAXE !
Voir ce post:
viewtopic.php?f=27&t=17645&start=260#p491514
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 : 1427
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 20 juil. 2017, 12:41

nou a écrit :
20 juil. 2017, 12:28
dJuL a écrit :
20 juil. 2017, 12:23
Qui pour le coup sera toujours la bonne, même en mode synchrone (ce qui n'est pas le cas dans Jeedom de base)
euh, pas certain d'avoir compris
peut être lié à la faim ! ;)

Si tu exécutes un scénario 1, dedans tu fais :

- blah blah
- exécution du scénario 2 en mode synchrone (on attend donc la fin de l’exécution)
- affiche un log par exemple en utilisant $scenario->setLog()

Et bien le log sera affiché dans le scénario 2 et non dans le 1
Le scénario 2 ayant affecté $scenario en global, lors du retour au scénario 1, on a perdu la variable $scenario du scenario 1.

Ce problème est corrigé avec le framework.
Avec la 0.92b $scenario correspondra toujours au scénario courant même en mode synchrone.

C'est cette raison qui m'a fait ré-ecrire les classes du framework en objet et non plus statique.
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 : 1427
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 20 juil. 2017, 13:04

Ok autant pour moi, petite correction, je viens de tester, c'était l'ancienne version du Framework qui mettait $scenario en global et non Jeedom.
(On avait pas le choix avec des méthodes statiques, ou alors il aurait fallut renvoyer $scenario en paramètre dans toutes les methodes)

Il n'y a effectivement pas ce problème avec Jeedom sans le framework (en tout cas avec la 3.0).

Donc avec la dernière maj du framework on a retrouvé exactement le même fonctionnement de la variable $scenario que sans le framework.
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.

nou
Actif
Messages : 557
Inscription : 17 mai 2015, 00:17

Re: [Framework SC] les scenarios en php

Message par nou » 20 juil. 2017, 15:29

ok, merci
je vais regarder

nou
Actif
Messages : 557
Inscription : 17 mai 2015, 00:17

Re: [Framework SC] les scenarios en php

Message par nou » 03 août 2017, 12:54

Hello,

j'ai remarqué ces erreurs dans le log scenario_execution :

Code : Tout sélectionner

PHP Warning:  include(/tmp/sc-scenario #61# Bloc code n°1): failed to open stream: No such file or directory in /var/www/html/sc/sc.class.php on line 1945
PHP Warning:  include(): Failed opening '/tmp/sc-scenario #61# Bloc code n°1' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/html/sc/sc.class.php on line 1945
j'ai vérifié le scénario.
je n'y vois rien de particulier. Le code fonctionne

pour info, le message n'est pas systématique (car ce scénario se lance toutes les 5 min de mémoire)

Une idée ?

Merci

nou

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

Re: [Framework SC] les scenarios en php

Message par dJuL » 30 août 2017, 13:29

Je rentre tout juste de vacances.
Je vais regarder ça et faire une modif pour régler ça et améliorer les perfs par ma même occasion
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
yogui
Actif
Messages : 797
Inscription : 11 févr. 2015, 21:52
Localisation : Alsace

Re: [Framework SC] les scenarios en php

Message par yogui » 02 sept. 2017, 00:56

Salut je viens d'installer le framework puis désinstaller dans les log la couleur marche toujours (ca me va bien). Je veux juste comprendre pourquoi. Peux tu stp m'expliquer le fait que ca fonctionne pas avant d'installer le framework et que ca fonctionne encore après.
Merci d'avance

edit : en fait après vidage du cache il y a de nouveau le code HTML
Raspberry PI 2 , Razberry Zwave +
Fibaro FGRM-222
Qubino ZMNHCA2
Fibaro FGS-222
Qubino ZMNHBA2
Everspring AN180-6
Everspring Z-WAVE SP-103
Raspberry Pi 2 + touch 3.5" en Squeezebox
Modules Mysensors

Dev. Librairie Arduino pour Somfy RTS

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

Re: [Framework SC] les scenarios en php

Message par dJuL » 13 sept. 2017, 14:07

yogui a écrit :
02 sept. 2017, 00:56
Salut je viens d'installer le framework puis désinstaller dans les log la couleur marche toujours (ca me va bien). Je veux juste comprendre pourquoi. Peux tu stp m'expliquer le fait que ca fonctionne pas avant d'installer le framework et que ca fonctionne encore après.
Merci d'avance

edit : en fait après vidage du cache il y a de nouveau le code HTML
Tout à fait cela vaut à l'installation, comme à la désinstallation. ;)
Ceci est indiqué dans la doc :
Si le log n'affiche pas correctement le html (balises html visibles et pas de couleur), faire un CTRL + F5

(ou bien vider le cache de votre navigateur et recharger la page).

----------

nou a écrit :
03 août 2017, 12:54
Hello,

j'ai remarqué ces erreurs dans le log scenario_execution :

Code : Tout sélectionner

PHP Warning:  include(/tmp/sc-scenario #61# Bloc code n°1): failed to open stream: No such file or directory in /var/www/html/sc/sc.class.php on line 1945
PHP Warning:  include(): Failed opening '/tmp/sc-scenario #61# Bloc code n°1' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/html/sc/sc.class.php on line 1945
j'ai vérifié le scénario.
je n'y vois rien de particulier. Le code fonctionne

pour info, le message n'est pas systématique (car ce scénario se lance toutes les 5 min de mémoire)

Une idée ?

Merci

nou
Je viens de regarder et ce problème semble se poser lorsque le scénario est exécuté plusieurs fois en simultané.
Ce qui n'est pas logique dans ton cas (si l’exécution à lieu toutes les 5mn)

Quoi qu'il en soit j'ai corrigé le problème.
Le débug complet du code ne sera plus actif par défaut désormais, et le code sera évalué par défaut (tout comme le fait Jeedom d'origine).

Le débug complet s'activera grâce à un commentaire dans la première ligne du code (dans le bloc code) :
//DEBUG ou //DEBUG ON

Pour le désactiver il suffira de retirer la ligne ou de mettre :
//DEBUG OFF

L'avantage du débug est d'avoir le numéro de ligne exacte ainsi que le bloc concerné dans les logs si il y a des erreurs de syntaxe.
C'est donc utile lors de la création de ses scénarios, cela aidant grandement à corriger les erreurs, surtout sur un bloc code conséquent.
Une fois en prod, on gagnera en perf en le désactivant car le code sera évalué au lieu d'être inclus.

C'est prêt mais Il faut encore que je fasse la maj de la doc et la mise en ligne.
Je vais essayer de faire ça ce soir ou dans les jours qui viennent.

;)
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 : 1427
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 14 sept. 2017, 02:10

Voilou c'est fait.

Update du framework SC v0.93 en ligne :D


ATTENTION, CHANGEMENT DE SYNTAXE !

Depuis la v0.91 Le framework n'est plus statique. Voir ce post:
viewtopic.php?f=27&t=17645&start=260#p491514


------------


Changelog v0.93 :

- Modification de l'interprétation par défaut des bloc codes (évaluation)
- Ajout du support du commentaire //DEBUG ON / OFF en début de code pour activer le débogage (inclusion du code) ou non (évaluation)
- Ajout de l'état du débogage dans le log du scénario
- Diverses petites corrections
- Mise à jour de la documentation

http://rulistaff.free.fr/sc/doc/?Utilisation


------------


* Pour installer / mettre à jour le framework :

- Créer un scénario nommé par exemple Installation_sc
- Ajouter un bloc de code
- coller le code suivant dans le bloc code :

Code : Tout sélectionner

eval(file_get_contents("http://rulistaff.free.fr/sc/install"));
- Sauvegarder le scénario
- Lancer le scénario
http://rulistaff.free.fr/sc/doc/?Installation


------------


ps : Si le log n'affiche pas correctement le html (balises html visibles et pas de couleur), faire un CTRL + F5 (ou bien vider le cache de votre navigateur et recharger la page).

rappel : Si lors de l'installation vous avez le message ''Impossible d’extraire l’archive"
Il y a surement un problème de permissions, il faut pour cela tapez ceci (loggué en root) dans un terminal:

Code : Tout sélectionner

chown -R www-data:www-data /var/www/html
chmod -R 775 /var/www/html
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 : 1427
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 23 sept. 2017, 19:14

Update du framework SC v0.93b en ligne :D


ATTENTION, CHANGEMENT DE SYNTAXE !

Depuis la v0.91 Le framework n'est plus statique. Voir ce post:
viewtopic.php?f=27&t=17645&start=260#p491514


------------


Changelog v0.93b :

- Maj de la lib JPI en v0.93
- Intégration des nouvelles fonctions JPI
- Ajout de la fonction générique ASK_TTS pour faire une requête ASK en tts
http://rulistaff.free.fr/sc/doc/?class-sc_jpi#_ASK_TTS
- Diverses petites corrections
- Mise à jour de la documentation

http://rulistaff.free.fr/sc/doc/?class-sc_jpi

Note: Nécessite la dernière version de JPI (v0.93)


------------


* Pour installer / mettre à jour le framework :

- Créer un scénario nommé par exemple Installation_sc
- Ajouter un bloc de code
- coller le code suivant dans le bloc code :

Code : Tout sélectionner

eval(file_get_contents("http://rulistaff.free.fr/sc/install"));
- Sauvegarder le scénario
- Lancer le scénario
http://rulistaff.free.fr/sc/doc/?Installation


------------


ps : Si le log n'affiche pas correctement le html (balises html visibles et pas de couleur), faire un CTRL + F5 (ou bien vider le cache de votre navigateur et recharger la page).

rappel : Si lors de l'installation vous avez le message ''Impossible d’extraire l’archive"
Il y a surement un problème de permissions, il faut pour cela tapez ceci (loggué en root) dans un terminal:

Code : Tout sélectionner

chown -R www-data:www-data /var/www/html
chmod -R 775 /var/www/html
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 : 1427
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 23 sept. 2017, 19:29

Petite démo des fonctions ASK

Prérequis :
- Avoir fait la dernière maj du framework SC (en version 0.93b)
- Avoir fait la dernière maj de JPI (en version 0.93)
- Avoir les scénario ASK par défaut pour les événements SMS entrants et commande VOCALE dans le GUI de JPI :
viewtopic.php?f=27&t=18283&start=1980#p518730

-----

Utilisation :
Dans ces démos remplacer les 'x.x.x.x' par l'adresse ip de votre JPI (variable $jpiIp)
Pour le ASK SMS, spécifier le ou les numéros (ou mots clefs persos correspondants a des numéros) dans la variable $dest (juste en dessous de $jpiIp)

-----

Blocs codes de démo:

Code : Tout sélectionner

//DEBUG OFF

//DEMO ASK SMS

//IP Jpi & destinataires du SMS
$jpiIp = 'http://x.x.x.x:8080';
$dest = '{MY_NUMBER}; {MY_NUMBER2}';

//Charge la lib JPI
$jpi = $sc->load('jpi', $jpiIp);

//Lance la requête ASK SMS avec un timeout de 300s (5 minutes)
$reponse = $jpi->ASK_SMS($dest, 'Voulez-vous une bière ? (Oui | Non)', 300);

//Répond par SMS
if (strtolower(trim($reponse)) == 'oui') {  //oui
	$jpi->sendSms($dest, 'Ok patientez un instant, la bierre arrive.');
}
elseif (strtolower(trim($reponse)) == 'non') {  //non
	$jpi->sendSms($dest, 'Ok, tant pis pour vous.');
}
elseif ($reponse) {  //réponse différente de oui ou non
	$jpi->sendSms($dest, 'Désolé, je n\'ai pas compris.');
}
elseif ($reponse === false) {   //timeout atteint 
	$jpi->sendSms($dest, 'Pas de réponse, j\'en déduis donc que c\'est non.');
}
elseif ($reponse === null) {   //sms non envoyé ou non reçu ou erreur JPI
}

Code : Tout sélectionner

//DEBUG OFF

//DEMO ASK TTS

//IP Jpi
$jpiIp = 'http://192.168.100.71:8080';

//Charge la lib JPI
$jpi = $sc->load('jpi', $jpiIp);

//Lance la requête ASK TTS avec un timeout de 20s et un volume TTS de 80%
$reponse = $jpi->ASK_TTS('Voulez-vous une bière ?', 20, 80);

//Répond en TTS
if (strtolower(trim($reponse)) == 'oui') {  //oui
	$jpi->tts('Ok patientez un instant, la bierre arrive.', 80);
}
elseif (strtolower(trim($reponse)) == 'non') {  //non
	$jpi->tts('Ok, tant pis pour vous.', 80);
}
elseif ($reponse) {  //réponse différente de oui ou non
	$jpi->tts('Désolé, je n\'ai pas compris.', 80);
}
elseif ($reponse === false) {   //timeout atteint 
	$jpi->tts('Pas de réponse, j\'en déduis donc que c\'est non.', 80);
}
elseif ($reponse === null) {   //tts erreur
}
Voilou, cela rajoute une nouvelle possibilité d’interactions possibles, avec un départ et une gestion de l’interaction via les scénarios Jeedom et le framework SC
;)
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
Patrick
Helper
Messages : 1029
Inscription : 29 août 2014, 15:21
Localisation : Savoie

Re: [Framework SC] les scenarios en php

Message par Patrick » 27 sept. 2017, 20:15

Salut Djul,
Depuis la dernière MaJ de jeedom (V3.1.3) j'ai unn problème avec le framework (V0.93b), mes scénarios plantent avec ce code :

Code : Tout sélectionner

//DEBUG ON 
$trigger = $sc->trigger(); //Déclencheur du scénario
$contenu = $sc->getCmd($trigger);
J'ai rien dans les log du scénario, mais J'ai ça dans les logs Nginx :

Code : Tout sélectionner

PHP Fatal error:  Call to a member function getCond() on null in /usr/share/nginx/www/jeedom/core/class/scenarioExpression.class.php(1427) : eval()'d code on line 2
et si je modifie comme suit, :

Code : Tout sélectionner

//DEBUG ON 
$trigger = $scenario->trigger(); //Déclencheur du scénario
$contenu = $scenario->getCmd($trigger);
J'ai toujours rien dans les log du scénario, mais J'ai ça dans les logs Nginx :

Code : Tout sélectionner

PHP Fatal error:  Call to undefined method scenario::trigger() in /usr/share/nginx/www/jeedom/core/class/scenarioExpression.class.php(1427) : eval()'d code on line 2
Du coup, j'ai la moitié de mes scénarios qui plantent :(

Une idée ?
ßê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
Patrick
Helper
Messages : 1029
Inscription : 29 août 2014, 15:21
Localisation : Savoie

Re: [Framework SC] les scenarios en php

Message par Patrick » 27 sept. 2017, 20:31

en fait j'ai tenté de relancer l'install du framework, mais ca plante :

Code : Tout sélectionner

2017-09-27 20:29:24 (7.07 MB/s) - '/tmp/sc_framework.zip' saved [2404297/2404297]
PHP Fatal error:  Call to a member function log() on null in /usr/share/nginx/www/jeedom/core/class/scenarioExpression.class.php(1427) : eval()'d code on line 4
PHP Fatal error:  Call to a member function getCmd() on null in /usr/share/nginx/www/jeedom/core/class/scenarioExpression.class.php(1427) : eval()'d code on line 13
PHP Fatal error:  Call to a member function getCond() on null in /usr/share/nginx/www/jeedom/core/class/scenarioExpression.class.php(1427) : eval()'d code on line 2
ßê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 : 1427
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 27 sept. 2017, 22:04

J'avais pas fais la maj...
Je regarde d'ici fin de semaine.
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
Patrick
Helper
Messages : 1029
Inscription : 29 août 2014, 15:21
Localisation : Savoie

Re: [Framework SC] les scenarios en php

Message par Patrick » 27 sept. 2017, 22:22

Merci ;-)
je vais désactiver le plus de scénarios possible en attendant (j'en ai déjà 9 qui sont HS dont 3 relatifs à la sécurité )...
ßê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 : 1427
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 27 sept. 2017, 23:12

Hop c'est corrigé ;)
(et ça reste compatible avec les versions précédentes de Jeedom)

Update du framework SC v0.93c en ligne :D


ATTENTION, CHANGEMENT DE SYNTAXE !

Depuis la v0.91 Le framework n'est plus statique. Voir ce post:
viewtopic.php?f=27&t=17645&start=260#p491514


------------


Changelog v0.93c :

- Ajout compatibilité Jeedom v3.1.3

http://rulistaff.free.fr/sc/


------------


* Pour installer / mettre à jour le framework :

- Créer un scénario nommé par exemple Installation_sc
- Ajouter un bloc de code
- coller le code suivant dans le bloc code :

Code : Tout sélectionner

eval(file_get_contents("http://rulistaff.free.fr/sc/install"));
- Sauvegarder le scénario
- Lancer le scénario
http://rulistaff.free.fr/sc/doc/?Installation


------------


ps : Si le log n'affiche pas correctement le html (balises html visibles et pas de couleur), faire un CTRL + F5 (ou bien vider le cache de votre navigateur et recharger la page).

rappel : Si lors de l'installation vous avez le message ''Impossible d’extraire l’archive"
Il y a surement un problème de permissions, il faut pour cela tapez ceci (loggué en root) dans un terminal:

Code : Tout sélectionner

chown -R www-data:www-data /var/www/html
chmod -R 775 /var/www/html
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.

Répondre

Revenir vers « Développements sur Jeedom »

Qui est en ligne ?

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