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

Re: [Framework SC] les scenarios en php

Message par dJuL » 11 juil. 2017, 13:07

Merci pour le retour, je corrige ça ce soir, je sais pourquoi ;)
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 » 12 juil. 2017, 00:03

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 !)
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 » 12 juil. 2017, 00:39

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

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 » 12 juil. 2017, 01:01

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)
;)
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 » 13 juil. 2017, 21:03

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
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 : 2714
Inscription : 22 févr. 2015, 17:32
Localisation : Près de Grenoble
Contact :

Re: [Framework SC] les scenarios en php

Message par Theduck38 » 13 juil. 2017, 21:32

Rien à voir, mais comment fais-tu pour encore utiliser Voxygen ? Tu as installé le TTS Web server ?
-- 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 : 1427
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 14 juil. 2017, 02:39

Non jpi supporte tous les moteurs de voix en natif
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 » 15 juil. 2017, 11:26

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.
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 » 18 juil. 2017, 00:41

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)
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 » 18 juil. 2017, 11:04

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)

:)
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.

mutmut
Actif
Messages : 609
Inscription : 10 nov. 2014, 17:09
Localisation : Stutzheim

Re: [Framework SC] les scenarios en php

Message par mutmut » 18 juil. 2017, 11:22

$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 !!
Odroid C2 / Jeedom stable
Zwave.me UZB1 / RFXtrx433E / HEM2 / Orvibo / Connexoon / Netatmo
Synology DS1512+ / FBX6


Un grand MERCI à l'équipe 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 » 18 juil. 2017, 11:47

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]#');

}
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.

mutmut
Actif
Messages : 609
Inscription : 10 nov. 2014, 17:09
Localisation : Stutzheim

Re: [Framework SC] les scenarios en php

Message par mutmut » 18 juil. 2017, 14:32

merci dJuL pour la suite d'actions !
par contre je laisserai une pause de 15mn sinon en 1h on est cuit :p
Odroid C2 / Jeedom stable
Zwave.me UZB1 / RFXtrx433E / HEM2 / Orvibo / Connexoon / Netatmo
Synology DS1512+ / FBX6


Un grand MERCI à l'équipe Jeedom !

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

Re: [Framework SC] les scenarios en php

Message par nou » 19 juil. 2017, 11:27

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

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 » 19 juil. 2017, 12:30

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.
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 » 19 juil. 2017, 14:36

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

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 » 19 juil. 2017, 14:43

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.
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 » 19 juil. 2017, 14:47

f...k !
il me semblait avoir fait le tour
je (re)check !

Merci

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 » 19 juil. 2017, 17:11

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
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, 11:06

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.
:(

Répondre

Revenir vers « Développements sur Jeedom »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités