Elle se base entre autre sur ce code
Donc tte facon faut reussir a le faire fonctionner
New try entre 2 courses !
Elle se base entre autre sur ce code
Donc tte facon faut reussir a le faire fonctionner
New try entre 2 courses !
ok bin je teste tout ce que tu veux m’envoyer en code
remarque (ou constat) : par le plugin cocher l’option Actif est immédiate dés que tu sauvegardes…
si je lance le scénario et que je vais dans le plugin :
Assistant configuration
->Sauvegarder
le menu (id du scénario) se cache
si ça peut t’aider !!
Evidemment !
C est le fonctionnement qu on attend depuis fort longtemps
Mais la on est pas du tout dans le meme process donc besoin de faire differemment.
T as testé avec ma derniere modif ?
désolé p’tite pause déjeuner
c’est la petite chose qui manquait…
ça fonctionne direct pas de latence dès la fin du scénario le menu s’efface.
ça fonctionne pour un menu haut ou bas sans souci.
j’ai modifié ton code pour avoir la fonction afficher.
require_once dirname(__FILE__) . '/../../plugins/JeedomConnect/core/class/JeedomConnect.class.php';
//************ A CHANGER **********************
$enablePageJC = 24;
$equipmentApiKey = 'abcdefgh1234567890';
//*********************************************
$hasChange = false;
$eqLogicJC = eqLogic::byLogicalId($equipmentApiKey, 'JeedomConnect');
if (!is_object($eqLogicJC)) {
$scenario->setLog("Cet équipement JC n'existe pas !");
return;
}
$conf = $eqLogicJC->getConfig();
//$scenario->setLog("conf => " . json_encode($conf));
// check "menu haut"
if (key_exists('payload', $conf) && key_exists('tabs', $conf['payload'])) {
foreach ($conf['payload']['tabs'] as $key => $menu) {
if (key_exists('id', $menu) && $menu['id'] == $enablePageIdJC) {
$menu['enable'] = true;
$conf['payload']['tabs'][$key] = $menu;
$hasChange = true;
}
}
}
// check "menu bas"
if (key_exists('payload', $conf) && key_exists('sections', $conf['payload'])) {
foreach ($conf['payload']['sections'] as $key => $menu) {
if (key_exists('id', $menu) && $menu['id'] == $enablePageIdJC) {
$menu['enable'] = true;
$conf['payload']['sections'][$key] = $menu;
$hasChange = true;
}
}
}
if ($hasChange) {
$configVersion = $conf['payload']['configVersion'] + 1;
$conf['payload']['configVersion'] = $configVersion;
$scenario->setLog("saving new conf => " . json_encode($conf));
$eqLogicJC->saveConfig($conf);
$eqLogicJC->setConfiguration('configVersion', $configVersion);
$eqLogicJC->getConfig(true, true);
$eqLogicJC->save();
}
else{
$scenario->setLog("nothing to change...");
}
ça fonctionne, en espérant pas avoir fait de bêtise
Plus simplement, a appeler avec 3 tags :
pageId
: numero de page a afficher/masquer sur l equipementapiKey
: la clé api de l equipement a modifiervisible
: true pour afficher, false pour masquerrequire_once dirname(__FILE__) . '/../../plugins/JeedomConnect/core/class/JeedomConnect.class.php';
$tags = $scenario->getTags();
$pageId = $tags['#pageId#'];
$equipmentApiKey = $tags['#apiKey#'];
$setVisible = $tags['#visible#'] == 'true'? true: false; // true : afficher ; false : masquer
$hasChange = false;
$eqLogicJC = eqLogic::byLogicalId($equipmentApiKey, 'JeedomConnect');
if (!is_object($eqLogicJC)) {
$scenario->setLog("Cet équipement JC n'existe pas !");
return;
}
$conf = $eqLogicJC->getConfig();
//$scenario->setLog("conf => " . json_encode($conf));
// check "menu haut"
if (key_exists('payload', $conf) && key_exists('tabs', $conf['payload'])) {
foreach ($conf['payload']['tabs'] as $key => $menu) {
if (key_exists('id', $menu) && $menu['id'] == $pageId) {
$menu['enable'] = $setVisible;
$conf['payload']['tabs'][$key] = $menu;
$hasChange = true;
}
}
}
// check "menu bas"
if (key_exists('payload', $conf) && key_exists('sections', $conf['payload'])) {
foreach ($conf['payload']['sections'] as $key => $menu) {
if (key_exists('id', $menu) && $menu['id'] == $pageId) {
$menu['enable'] = $setVisible ;
$conf['payload']['sections'][$key] = $menu;
$hasChange = true ;
}
}
}
if ($hasChange) {
$configVersion = $conf['payload']['configVersion'] + 1;
$conf['payload']['configVersion'] = $configVersion;
$scenario->setLog("saving new conf => " . json_encode($conf));
$eqLogicJC->saveConfig($conf);
$eqLogicJC->setConfiguration('configVersion', $configVersion);
$eqLogicJC->getConfig(true, true);
$eqLogicJC->save();
}
else{
$scenario->setLog("nothing to change...");
}
on pourrait même mettre des tags dans la partie à changer afin de le rendre générique
//************ A CHANGER **********************
$disablePageIdJC = 24;
$equipmentApiKey = 'abcdefgh1234567890';
$setVisible = true ; // true : afficher ; false : masquer
//*********************************************
et juste pour que ça soit plus cosmétique au lieu de disablePageIdJC, je mettrai changePageIdJC ou truefalsePageIdJC ou quelque chose de ce genre
C est modifié
super merci…
heu autre question : tu fais le café ??
Rien que l odeur me degoute !
Je bois des cocktails ou du (bon!) vin par contre
merci pour le code…
yop yop,
j’ai un comportement bizarre avec les tags… j’en ai testé un à la fois pour être sûr de la connerie…
quand je passe le tag visible à false
→ le scénario se lance et se termine normalement mais dans l’appli le menu ne disparait pas!
quand je fais l’inverse (avec désactivation du menu via le plugin)
→ le scénario se lance et se termine et le menu réapparait bien !
par contre si tu utilises les autres tags mais en mettant directement la valeur setVisible à false dans le scénario ça fonctionne…
Jai rien compris
Dans tous les cas, les 3 tags sont a indiquer systématiquement
je reprends ça marche pas avec les tags enfin à moitié…
plus sérieusement :
masquer menu
ltags renseignés en action avant le code
tag → pageId → 84
tag → apikey → 0123456789
tag → visible → false
exécution du scénario → ok
log du scénario → je vois bien qu’il désactive l’Id demandé mais dans l’appli le menu est toujours là !
afficher menu
si je désactive via scénario (ancien code) ou via le plugin le menu que je veux cacher et que :
tags renseignés en action avant le code
tag → pageId → 84
tag → apikey → 0123456789
tag → visible → true
exécution du scénario → ok
log du scénario → je vois bien qu’il désactive l’Id demandé et dans l’appli le menu n’est plus là !
Si je veux masquer le menu via le scénario (tag)
masquer menu sans le tag visible
tags renseignés en action avant le code
tag → pageId → 84
tag → apikey → 0123456789
exécution du scénario → ok
log du scénario → je vois bien qu’il désactive l’Id demandé et dans l’appli le menu n’est plus là !
c’est comme si il ne prenait pas le tag visible en compte !
J ai fait une modif, tente
ça fonctionne nickel…
tu as fais si c’est pas true c’est automatiquement false et tu forces la réponse.
J ai surtout transformé une chaine de caractere (recu par le tag!) en booleen
"true"
n’est pas identique a true
c’est marrant qu’il reconnaisse l’un et pas l’autre en tag