Page 14 sur 20

Re: [Framework SC] les scenarios en php

Publié : 11 juil. 2017, 13:07
par dJuL
Merci pour le retour, je corrige ça ce soir, je sais pourquoi ;)

Re: [Framework SC] les scenarios en php

Publié : 12 juil. 2017, 00:03
par dJuL
Ok, normalement c'est corrigé ;)

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

Correction de l'intégration du framework, maj de la doc rubrique installation manuelle.

Cette version est une refonte totale afin de supporter les scénarios imbriqués en mode synchrones.
Le framework n'est plus statique.

ATTENTION, CHANGEMENT DE SYNTAXE !

Code : Tout sélectionner

sc::getTag('montag');
devient

Code : Tout sélectionner

$sc->getTag('montag');
--------

Code : Tout sélectionner

//Charge la librairie install
sc::load('install');
//Lance la mise à jour/réinstallation du framework sc
sc_install::update_sc();
devient

Code : Tout sélectionner

//Charge la librairie install
$sc->load('install');
//Lance la mise à jour/réinstallation du framework sc
$sc->install->update_sc();

Il faut mettre à jour tous vos scénarios après avoir fait la maj !

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


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

* Refonte de l'installeur / dé-sinstaleur :
- Nouvelles modifications des fichiers de jeedom pour supporter le mode synchrone

* Mise à jour de la documentation :
- Maj des rubriques Installation manuelle / Vérification
- Maj afin d'afficher la nouvelle syntaxe du framework dans toutes les rubriques (textes, images, exemples...)

* Maj des librairies :
- Maj des fichiers pour supporter le mode synchrone et la nouvelle syntaxe
- Suppression de la librairie sc_test

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

* 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


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


Voili voilou ;)

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
@todo : Librairie JPI pour pouvoir facilement interagir avec JPI grâce au framework (support natif de toutes les actions !)

Re: [Framework SC] les scenarios en php

Publié : 12 juil. 2017, 00:39
par nou
Bonsoir,
D'abord bravo et merci pour ce travail !
Une question ou plutôt interrogation : pourquoi ne pas l'avoir mis en plugins ?
Bonne nuit

Re: [Framework SC] les scenarios en php

Publié : 12 juil. 2017, 01:01
par dJuL
Parce-que je ne pense pas que cela soit possible...
Le bloc code des scénarios (et leur exécution) est en dur dans le core de jeedom.
(edit: Et sinon modifier les fichier du core de jeedom via un plugin dispo sur le market je pense pas que ça soit bien vu par la team de jeedom)
;)

Re: [Framework SC] les scenarios en php

Publié : 13 juil. 2017, 21:03
par dJuL
J'ai commencé la libraire JPI
Je comprend pas pourquoi je l'ai pas faite avant...
Ca résout les pb de timeout, permet d'utiliser tous les paramètres et de récupérer failement des valeurs...
1000 fois plus simple que le plugin script, des virtuels...

En attendant d'intéger toutes les fonctions (faut que je fasse le script qui va construire la classe automatiquement)
J'ai fait une fonction générique et ça marche terrible !

ex:

Code : Tout sélectionner

//load librairie JPI avec paramètre autostart
$jpi = $sc->load('jpi', 'http://192.168.0.10:8080');

//Prononce un texte (action tts)
$jpi->ACTION('tts', array(
    'message' => 'La lumière est allumée !',
    'volume' => $sc->getCmd('#[CONFIG][VOLUME TTS][value]#'),
    'voice' => 'voxygen.tts.sorciere',
    'queue' => 1
  )
);

Code : Tout sélectionner

//Send Sms
$jpi->ACTION('sendSms', array(
    'number' => '{MY_NUMBER}',
    'message' => 'Message de test'
  )
);

//Récupère le niveau de la batterie
$battLevel = $jpi->ACTION('getBattLevel');
etc etc...
Du coup on peut tout faire, tout en mixant des tags jeedom, des mots clefs JPI...
On a facilement accès à tous les retours JPI pour récupérer des valeurs ou checker le bon résultat des actions (ex: sms bien envoyé...)

Je vais essayer dans le WE de faire le script qui va générer automatiquement toutes les fonctions et la doc de la librairie, ensuite je mettrai en ligne.
;)

Ex de log:
Image

Re: [Framework SC] les scenarios en php

Publié : 13 juil. 2017, 21:32
par Theduck38
Rien à voir, mais comment fais-tu pour encore utiliser Voxygen ? Tu as installé le TTS Web server ?

Re: [Framework SC] les scenarios en php

Publié : 14 juil. 2017, 02:39
par dJuL
Non jpi supporte tous les moteurs de voix en natif

Re: [Framework SC] les scenarios en php

Publié : 15 juil. 2017, 11:26
par dJuL
Bon J'ai a peu près fini, encore 2-3 babioles à finir.
Je vais implémenter la fonction ASK pour l'action SendSms dans JPI.
Cela permettra de facilement gérer des requêtes ASK avec le framework et / ou avec le plugin de Jérôme.
Il y aura une clef de scénario dédiée au ASK dans l'événement Sms reçu de JPI, et des actions toutes faites pour répondre au framework ou au plugin.

Re: [Framework SC] les scenarios en php

Publié : 18 juil. 2017, 00:41
par dJuL
J'ai pris du retard à cause du boulot.
Mais je vais essayer de sortir tout ça d'ici la fin de la semaine (Maj de JPI + Framework)

Re: [Framework SC] les scenarios en php

Publié : 18 juil. 2017, 11:04
par dJuL
Voici comment on pourra faire un Ask sms dans le framework et récupérer la réponse:

Code : Tout sélectionner

$reponse = $sc->jpi->ASK_SMS('{MY_NUMBER}', 'Voulez-vous une bière ? (Oui | Non)', 300);

if (strtolower(trim($reponse)) == 'oui') {  //oui
}
elseif (strtolower(trim($reponse)) == 'non') {  //non
}
elseif ($reponse) {  //réponse différente de oui ou non
}
elseif ($reponse === false) {   //timeout atteint 
}
elseif ($reponse === null) {   //sms non envoyé ou non reçu ou erreur JPI
}
Il n'y aura strictement rien à configurer côté JPI (avec la prochaine version), ce code marchera tel quel directement.
On ne passe pas par une variable Jeedom, la réponse est directement retournée par la fonction (qui s'assure que le sms a bien été reçu avant d'attendre une réponse).

edit: et le ask pourra être utiliser en simultané sur plusieurs scénarios sans conflits (avec des destinataires différents)

:)

Re: [Framework SC] les scenarios en php

Publié : 18 juil. 2017, 11:22
par mutmut
$reponse = 'oui'
par contre, elle est où l'action suivante ? :p

en tout cas, super ton taf ! je ne comprends pas tout (je ne suis pas dev) mais BRAVO !!

Re: [Framework SC] les scenarios en php

Publié : 18 juil. 2017, 11:47
par dJuL
Merci ;)

L'action suivante c'est d'en recommander une autre :D

En fait les actions sont à placer entre les accolades ' { ' et ' } ' du test.

ex:

Code : Tout sélectionner

if (strtolower(trim($reponse)) == 'oui') {  //'oui'  'Oui'  'OUI'  '  Oui '

   //Commande une bierre
  $sc->setCmd('#[MON_BAR][BARMAN][UNE_BIERE]#');
  
  //pause 5 minutes
  $sc->pause(300);

  //Commande une autre
  $sc->setCmd('#[MON_BAR][BARMAN][UNE_AUTRE]#');

}

Re: [Framework SC] les scenarios en php

Publié : 18 juil. 2017, 14:32
par mutmut
merci dJuL pour la suite d'actions !
par contre je laisserai une pause de 15mn sinon en 1h on est cuit :p

Re: [Framework SC] les scenarios en php

Publié : 19 juil. 2017, 11:27
par nou
Hello
MAJ faite (involontairement...). Je suis repassé sur mes codes pour faire la modif sc:: ==> $sc->

voilà un constat un peu facheux de mon coté :
il semblerait qu'on ne puisse pas créer de fonction dans le code et appeler la classe

j'ai ça comme erreur :

Code : Tout sélectionner

PHP Notice:  Undefined variable: sc in /tmp/sc-scenario #75# Bloc code n°1 on line 24
PHP Fatal error:  Call to a member function setInfo() on null in /tmp/sc-scenario #75# Bloc code n°1 on line 24
et en fait, dans ce scénario, la ligne correspondante :

Code : Tout sélectionner

function test(){
		$sc->setInfo('test'); //Écrit un commentaire dans le log
}
any idea ?

Nou

Re: [Framework SC] les scenarios en php

Publié : 19 juil. 2017, 12:30
par dJuL
Oui, il faut passer la variable $sc dans ta fonction car elle n'est pas globale.

Code : Tout sélectionner

function test($sc) {
  $sc->setInfo('test'); //Écrit un commentaire dans le log
}

....

test($sc);
Sinon ça peut passer avec un global $sc, mais je déconseille car en cas d'exécutions de scénarios en mode synchrone cela peut créer des conflits.

Re: [Framework SC] les scenarios en php

Publié : 19 juil. 2017, 14:36
par nou
ok, merci, je vais m'atteler à corriger mes codes

par contre, une erreur de plus dans le log scenario_execution

Code : Tout sélectionner

PHP Fatal error:  Using $this when not in object context in /var/www/html/sc/sc.class.php on line 721

Re: [Framework SC] les scenarios en php

Publié : 19 juil. 2017, 14:43
par dJuL
Tu dois encore avoir un 'sc::' qui traine dans ton scénario (sc::getCmd même je dirais d'après le numéro de ligne), c'est ça qui engendre cette erreur fatale.

Re: [Framework SC] les scenarios en php

Publié : 19 juil. 2017, 14:47
par nou
f...k !
il me semblait avoir fait le tour
je (re)check !

Merci

Re: [Framework SC] les scenarios en php

Publié : 19 juil. 2017, 17:11
par dJuL
Update du framework SC v0.92 en ligne :D


ATTENTION, CHANGEMENT DE SYNTAXE !

Le framework n'est plus statique.

Code : Tout sélectionner

sc::getTag('montag');
devient

Code : Tout sélectionner

$sc->getTag('montag');
--------

Code : Tout sélectionner

//Charge la librairie install
sc::load('install');
//Lance la mise à jour/réinstallation du framework sc
sc_install::update_sc();
devient

Code : Tout sélectionner

//Charge la librairie install
$sc->load('install');
//Lance la mise à jour/réinstallation du framework sc
$sc->install->update_sc();

Il faut mettre à jour tous vos scénarios après avoir fait la maj !

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


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

Changelog v0.92 :

- Améliorations de l'installeur / dé-sinstaleur
- Nombreuses refontes
- Mise à jour de la documentation
- Correction de petits bugs
- Ajout de la librairie jpi
http://rulistaff.free.fr/sc/doc/?class-sc_jpi

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

* 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


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


Voili voilou ;)

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

Re: [Framework SC] les scenarios en php

Publié : 20 juil. 2017, 11:06
par nou
Hello

depuis la nouvelle version, j'ai des problèmes sur d'anciens codes (non modifiés depuis très très longtemps)
Dans le log 'scenario_execution'

Code : Tout sélectionner

PHP Notice:  Undefined variable: scenario in /tmp/sc-scenario #28# Bloc code n°1 on line 25
PHP Fatal error:  Call to a member function setData() on null in /tmp/sc-scenario #28# Bloc code n°1 on line 25
et dans le scenario concerné :

Code : Tout sélectionner

$scenario->setData($Variable_Lever, $lever);
j'ai vérifié. la syntaxe est bonne.
:(