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

[tuto] bloc code PHP scénario (petite commande simple)

Réservé à la création de scénarios dans JEEDOM
Avatar de l’utilisateur
tomdom
Actif
Messages : 925
Inscription : 14 nov. 2016, 05:46

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par tomdom » 27 avr. 2018, 06:26

Bonjour,

Juste par sécurité (dans le cas où il n'y a qu'une valeur), la dernière ligne devrait être :

Code : Tout sélectionner

$avdervalue = count($all) >=2 ? $all[count($all) - 2]->getValue() : null;
Il y a 10 catégories de personnes, celles qui connaissent le binaire et les autres
.

Avatar de l’utilisateur
Jeandhom
Actif
Messages : 1385
Inscription : 20 oct. 2015, 17:32

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par Jeandhom » 27 avr. 2018, 09:13

Merci tomdom, j'ai édité mon post.

Avatar de l’utilisateur
Jeandhom
Actif
Messages : 1385
Inscription : 20 oct. 2015, 17:32

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par Jeandhom » 20 mai 2018, 11:30

Chez moi les encombrants passent le dernier jeudi du mois.
Pour ne pas oublier de les sortir le mercredi soir.
Le scénario est lancé tous les mercredis puis il vérifie que le lendemain est bien le dernier jeudi du mois pour continuer.

Code : Tout sélectionner

$demain = mktime(0, 0, 0, date("n"), date("j") + 1, date("Y"));
$premierjourmoissuivant = mktime(0, 0, 0, date("n") + 1, 1, date("Y"));
$dernierjeudidumois = strtotime('last thursday', $premierjourmoissuivant);
soit :

Code : Tout sélectionner

mktime(0, 0, 0, date("n"), date("j") + 1, date("Y")) == strtotime('last thursday', mktime(0, 0, 0, date("n") + 1, 1, date("Y")))
Pièces jointes
Encombrants.png
Encombrants.png (17.15 Kio) Consulté 1699 fois

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

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par nou » 15 juil. 2018, 09:40

Bonjour tout le monde.
je cherche (sans réussir à trouver) le moyen d'utiliser la fonctionnalité 'ask'(celle des scénarios) mais en code
je ne trouve pas...
Merci & bon we

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

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par nou » 15 juil. 2018, 10:08

nou a écrit :
15 juil. 2018, 09:40
Bonjour tout le monde.
je cherche (sans réussir à trouver) le moyen d'utiliser la fonctionnalité 'ask'(celle des scénarios) mais en code
je ne trouve pas...
Merci & bon we
Je crois que j’ai trouvé
Je teste et je vous dis

Avatar de l’utilisateur
fredlamour
Timide
Messages : 260
Inscription : 31 janv. 2016, 11:38
Localisation : Brissac Loire Aubance

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par fredlamour » 16 juil. 2018, 09:59

Bonjour,
Peut être quelqu'un sur ce topic peut m'aider. Je pense que le code PHP pourrait être la solution à ma demande.
J'ai ouvert un autre topic (viewtopic.php?f=32&t=38519) mais je vais copier coller ici si quelqu'un peut m'aider :

J'ai un SmartLedMessenger devant la télévision et je souhaiterais l'utiliser pour afficher des informations.
Mon idée est d'afficher un message du style : Vous regardez "Nom du programme en cours" sur la chaine "Nom de la chaine".
J'ai un décodeur TV Orange contrôlé avec le plugin JeeOrangeTV et je récupère les programme TV avec le plugin TeleJee.
Je suis capable de récuperer et afficher la chaine actuellement diffusé via la commande "Chaine actuelle" de TeleJee.
Exemple : #[Multimédia][OrangeSAT][Chaine Actuelle]# affichera "m6"
Maintenant pour connaitre le programme en cours, je peux le faire avec Telejee et la commande "En ce moment" de l'objet dont le nom est la chaine
Exemple : #[Aucun][[Multimédia][OrangeSAT][m6]#][En ce moment]

Mon problème est donc que je dois concatener 2 informations pour lancer la récupération du programme "En Ce Moment" de la "Chaine Actuelle" :
la commande est : [Aucun][#[Multimédia][OrangeSAT][#[Multimédia][OrangeSAT][Chaine Actuelle]#][En ce moment]#
L'idée est de concatener la chaine texte "#[Aucun][Multimédia][OrangeSAT][" + résultat de #[Multimédia][OrangeSAT][Chaine Actuelle]# + la chaine texte "][En ce moment]#" dans une variable pour afficher le résultat.

Je vais évaluer : #[Aucun][#[Multimédia][OrangeSAT][Chaine Actuelle]#][En ce moment]#
Résultat : #[Aucun][#[Multimédia][OrangeSAT][Chaine Actuelle]#][En ce moment]#
[iPas de prise en compte d'une commande dans une commande[/i]

varProgrammeTV = #[Multimédia][OrangeSAT][Chaine Actuelle]#
Test de : #[Aucun][variable(varProgrammeTV)][En ce moment]#
Je vais évaluer : #[Aucun]["tf1"][En ce moment]#
Résultat : #[Aucun]["tf1"][En ce moment]#
Dommage, il ajoute des guillemets dans la variable alors que ces guillemets ne sont pas là si on requête la variable seul et pas non plus dans le résultat de chaîne actuelle

laaubert
Timide
Messages : 65
Inscription : 08 oct. 2017, 10:20

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par laaubert » 07 août 2018, 18:39

Salut Nou,

Peux-tu poster ce que tu as trouvé. Je souhaiterais aussi utiliser la commande ask dans un bloc code mais je ne trouve aucun exemple.

Merci !!
JEEDOM sur Docker (mode host) sur NAS Synology
STICK ZWAVE AEON GEN5 + RFXCOM

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

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par nou » 07 août 2018, 22:25

Voilà, n'hésites à me dire si tu as des questions

Code : Tout sélectionner

$name_variable = xxxx; // nom de la variable qui stockera la réponse
$time_limit = yy; // time out pour la réponse 
$cmd_ask = '#[zzzzzzz][zzzzzzzzzzz][Notification]#'; // nom de la commande
$scenario->setData($name_variable,'');
$options_cmd = array('title' => 'Un titre à la notif', 
							'message' => 'Un message ou question ? ', 
							'answer' => explode(';', 'Oui;Non'), 
							'timeout' => $time_limit, 
							'variable' =>$name_variable);
$cmd = cmd::byString($cmd_ask);
$cmd->setCache('ask::variable', $name_variable);
$cmd->setCache('ask::endtime', strtotime('now') + $time_limit);
$cmd->execCmd($options_cmd);
$scenario->setLog('Notification envoyée. Maintenant on surveille le retour...');
$occurence = 0;
$value = '';
$txt_log='';
 while (true) 
       	{
		$dataStore = dataStore::byTypeLinkIdKey('scenario', -1, $name_variable);
		if (is_object($dataStore)) 
			{
				$value = $dataStore->getValue();
 			}                          
                $txt_log += '...'.$value ;
                if ($value != '') 
                       	{
                            	break;
                         }
                if ($occurence > $time_limit) 
                         {
                                break;
                         }
                $occurence++;
                 sleep(1);
         }
$scenario->setLog($txt_log);
if ($value == '') 
	{
		$value = 'Aucune réponse';
		$cmd->setCache('ask::variable', 'none');
		$dataStore = dataStore::byTypeLinkIdKey('scenario', -1, $name_variable);
		$dataStore->setValue($value);
		$dataStore->save();
         }

laaubert
Timide
Messages : 65
Inscription : 08 oct. 2017, 10:20

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par laaubert » 07 août 2018, 23:09

Merci !!!

Qu’est-ce qui t’as mis sur la voie pour trouver les bonnes commandes ?
JEEDOM sur Docker (mode host) sur NAS Synology
STICK ZWAVE AEON GEN5 + RFXCOM

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

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par nou » 07 août 2018, 23:32

Du rétro engineering
0 mérite quoi

Nykokolas
Timide
Messages : 3
Inscription : 09 mai 2018, 23:33

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par Nykokolas » 13 août 2018, 17:18

Bonjour,

Bravo pour tout ce travail et ces précieuses informations.
J'ai testé ce code qui permet de masquer une info ou non via un scénario :

Code : Tout sélectionner

$o=cmd::byId(1647);
$o->setIsVisible(0); // valeur à 1 pour rendre visible
$p=$o->save();
Pour le dashboard ça fonctionne bien :
dash clim.jpg
dash clim.jpg (102.9 Kio) Consulté 1519 fois
Mais sur le design l'info reste apparente :
design clim.jpg
design clim.jpg (50.22 Kio) Consulté 1519 fois
Est-ce que quelqu'un aurait une idée ?

Merci et encore bravo.

winhex
Actif
Messages : 3793
Inscription : 23 janv. 2015, 01:41

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par winhex » 13 août 2018, 21:58

via html (jquery )

je préfère que tu créé un sujet si tu veux plus d'info

en gros une info que tu mets dans le design
ex : montrer temps 0/1
celle ci sera cacher via fonction jquery hide
et si state 1
display none widget temp
sinon
display true widget temp

tu as plein de variantes jquery pour cacher
hide/show, display, visibilité,toggle,déplacer hors design ,...
avec leur lot de differences

cette méthode c'est pour scénarisé sinon un bouton html de ton choix qui montre ton widget temps

winhex
Actif
Messages : 3793
Inscription : 23 janv. 2015, 01:41

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par winhex » 28 oct. 2018, 02:02

j'ai fouiné voici la procédure de recherche et de mise en fonctionnement pour cacher un element sur le design
via code

Code : Tout sélectionner

//$o=cmd::byId(2819);
$o=cmd::byString("#[présence][Presence Mireille][Rssi]#");

//$o=eqLogic::byId(277);
//$o=plan::byId(10);
//$o=objet::byId(40);

//$o->setIsVisible('0'); // valeur à 1 pour rendre visible
//$o->getConfiguration();
//$o->setConfiguration('showOnplan','1'); // valeur à 1 pour rendre visible

//$o->setDisplay('showOnplan','1'); // valeur à 1 pour rendre visible
//$p=$o->save();

//$o->getDisplay();

//$o->health();
$scenario->setLog(print_r($o, true));
j'obtiens
[2018-11-03 01:47:59][SCENARIO] Start : Scenario lance manuellement.
[2018-11-03 01:47:59][SCENARIO] Exécution du sous-élément de type [action] : code
[2018-11-03 01:47:59][SCENARIO] Exécution d'un bloc code
[2018-11-03 01:47:59][SCENARIO] virtualCmd Object
(
[id:protected] => 2819
[logicalId:protected] =>
[generic_type:protected] =>
[eqType:protected] => virtual
[name:protected] => Rssi
[order:protected] => 2
[type:protected] => info
[subType:protected] => binary
[eqLogic_id:protected] => 179
[isHistorized:protected] => 1
[unite:protected] =>
[configuration:protected] => {"calcul":"#1949#>-199?1:0
","returnStateValue":"","returnStateTime":"","minValue":"","maxValue":"","calculValueOffset":"","jeedomCheckCmdOperator":"==","jeedomCheckCmdTest":"","jeedomCheckCmdTime":"","historizeMode":"none","historyPurge":"-7 days","repeatEventManagement":"never","jeedomPushUrl":"","actionCheckCmd":[],"jeedomPreExecCmd":[],"jeedomPostExecCmd":[],"timeline::enable":"0","interact::auto::disable":"0","denyValues":"","showOnplan":"1"}
[template:protected] => {"dashboard":"default","mobile":"default"}
[display:protected] => {"invertBinary":"0","generic_type":"","icon":"","showOndashboard":"1","showOnplan":"1","showOnview":"1","showOnmobile":"1","showNameOndashboard":"1","showNameOnplan":"1","showNameOnview":"1","showNameOnmobile":"1","showStatsOndashboard":"1","showStatsOnplan":"1","showStatsOnview":"1","showStatsOnmobile":"1","forceReturnLineBefore":"0","forceReturnLineAfter":"0","parameters":[],"showIconAndNamedashboard":"0","showIconAndNameplan":"0","showIconAndNameview":"0","showIconAndNamemobile":"0"}
[html:protected] => {"enable":"0","dashboard":"","dview":"","dplan":"","mobile":"","mview":""}
[value:protected] => #1949#
[isVisible:protected] => 1
[alert:protected] => {"warningif":"","warningduring":"","dangerif":"","dangerduring":""}
[_collectDate:protected] =>
[_valueDate:protected] =>
[_eqLogic:protected] =>
[_needRefreshWidget:protected] =>
[_needRefreshAlert:protected] =>
[_templateArray] => Array
(
)
)
[2018-11-03 01:47:59][SCENARIO] Fin correcte du scénario
on fait avec l'affichage design visible et invisible
et j'y vois une différence "showOnplan"
c'est le même nom en html (ça peut aidé)
showOnplan.png
showOnplan.png (69.7 Kio) Consulté 1390 fois
donc je test avec setDisplay et voilou

Code : Tout sélectionner

$o=cmd::byString("#[présence][Presence Mireille][Rssi]#");
//$o->getDisplay();
$o->setDisplay('showOnplan','0'); // valeur à 1 pour rendre visible
$p=$o->save();

$scenario->setLog(print_r($o, true));
pas besoin de faire une mise à jour de la page design elle se fait toutes seules

avec un setDisplay tous un tas d'info (à vous de voir l'historique) :
de la cathégorie au nom, de la couleur aux dates (de creation et plus) ...

Avatar de l’utilisateur
dric
Timide
Messages : 188
Inscription : 12 juil. 2016, 15:53

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par dric » 09 nov. 2018, 08:13

Bonjour,

Savez-vous comment lancer un scénario avec un tag en paramètre ?

Merci.

Avatar de l’utilisateur
dric
Timide
Messages : 188
Inscription : 12 juil. 2016, 15:53

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par dric » 09 nov. 2018, 08:22

dric a écrit :
09 nov. 2018, 08:13
Bonjour,

Savez-vous comment lancer un scénario avec un tag en paramètre ?

Merci.
J'ai trouvé :
viewtopic.php?f=32&t=20037&p=520891&hil ... ag#p520921

thekingsky
Timide
Messages : 45
Inscription : 01 avr. 2015, 22:01

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par thekingsky » 17 déc. 2018, 20:25

Bonjour,

J'essaie de récupérer une valeur d'un scénario virtuel dans un script PHP mais pas moyen, j'ai l'erreur "Erreur dans l'exécution du terminal, la valeur retournée est : 255. Détails : Array ( [0] => PHP Fatal error: Uncaught Error: Class 'object' not found in /var/www/html/plugins/script/core/ressources/getWattUsedOpenEVSE.php:3 Stack trace: #0 {main} thrown in /var/www/html/plugins/script/core/ressources/getWattUsedOpenEVSE.php on line 3 )"

J'ai essayé :
$retourOpenEVSE = object::byId(760);
et
$retourOpenEVSE = cmd::byString("#[Terrain][OpenEvse out][out]#");

Même erreur "object" ou "cmd" not found.

Il y a des imports à faire dans le script php ?

Merci
Jeedom Docker sur DS918+ et modem téléinfo USB

Avatar de l’utilisateur
tomdom
Actif
Messages : 925
Inscription : 14 nov. 2016, 05:46

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par tomdom » 17 déc. 2018, 20:42

Bonjour,

Oui.

Code : Tout sélectionner

require_once '/var/www/html/core/php/core.inc.php';
Il y a 10 catégories de personnes, celles qui connaissent le binaire et les autres
.

winhex
Actif
Messages : 3793
Inscription : 23 janv. 2015, 01:41

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par winhex » 17 déc. 2018, 20:52

pour un script aide toi du market script
une piste as-tu inscéré

Code : Tout sélectionner

require_once '/var/www/html/core/php/core.inc.php';
ou

Code : Tout sélectionner

require_once dirname(__FILE__) . '/../../../../core/php/core.inc.php';
viewtopic.php?f=31&t=40790&p=666676&hil ... pt#p666391
Dernière édition par winhex le 17 déc. 2018, 20:58, édité 2 fois.

thekingsky
Timide
Messages : 45
Inscription : 01 avr. 2015, 22:01

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par thekingsky » 17 déc. 2018, 20:53

Un grand merci !
Jeedom Docker sur DS918+ et modem téléinfo USB

thekingsky
Timide
Messages : 45
Inscription : 01 avr. 2015, 22:01

Re: [tuto] bloc code PHP scénario (petite commande simple)

Message par thekingsky » 17 déc. 2018, 21:11

Pas simple tout ça !

Now que j'ai mon objet avec $retourOpenEVSE = object::byId(760);

Comment je récupère la valeur de cette commande de type action ?
Jeedom Docker sur DS918+ et modem téléinfo USB

Répondre

Revenir vers « Scénarios »

Qui est en ligne ?

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