Recipe and plugin
-
ou un truc de ce genre
-
Cetait sur votre recette show/hide et non Telegrambot que j’ai vu quelque chose de similaire mais oui en effet la structure est bien épuré, je regarde comment adapter ça, merci.
-
This post is deleted! -
@bugsounet j’avais pensé à cela, la recette se charge sans erreur à ma grande surprise. cependant le résultat reste identique.
var recipe = { commands: { "SHOW_EYE": { moduleExec: { module: (params) => { if (params.notification == "SHOOT" && module.id == "MMM-EyeCandy") { this.sendNotification (MM.getModules().enumerate((m)=> { m.show(1000, {lockString: "RECIPE_LOCKED"}) setTimeout(() => {m.hide(1000, {lockString: "RECIPE_LOCKED"}) }, 1000 * 5) })) } if (params.notification == "SHOOT" && module.id == "MMM-BackgroundSlideshow") { this.sendNotification (MM.getModules().enumerate((m)=> { m.hide(1000, {lockString: "RECIPE_LOCKED"}) setTimeout(() => {m.show(1000, {lockString: "RECIPE_LOCKED"}) }, 1000 * 5) })) } } } } }, plugins: { onNotificationReceived: "SHOW_EYE" } } exports.recipe = recipe
En vous souhaitant un bon week-end
-
Peux tu tester ceci ?
var recipe = { commands: { "SHOW_EYE": { moduleExec: { module: (params) => { if (params.notification == "SHOOT") { MM.getModules().exceptWithClass(["MMM-EyeCandy","MMM-BackgroundSlideshow"]).enumerate(m => { m.hide(1000, {lockString: "RECIPE_LOCKED"}) setTimeout(() => { m.show(1000, {lockString: "RECIPE_LOCKED"}) }, 5000) }) } } } } }, plugins: { onNotificationReceived: "SHOW_EYE" } } exports.recipe = recipe
J’ai pas de GA fonctionnel sur cette ordi donc pas tester le recipe
Mais j’ai tester la regle de getModules() dans un de mes modules, cela semble etre correctexceptWithClass
fait une exception sur les modulesDonc on demande que lorsque il y a une notification qui s’appel “SHOOT” de faire la liste des modules sauf “MMM-EyeCandy” et “MMM-BackgroundSlideshow”
et sur les modules restant les cacher puis les faire apparaitre 5 sec plus tardc’est ce que tu veux je crois ?
-
@bugsounet vous bossez vraiment 7j/7 mon objectif était de finir cela avant début décembre j’ai encore le temps merci beaucoup.
Je teste cela dès que je rentre d’ici 2 petites heures.
La fonction n’est pas tout à fait cela, mais je pense qu’une fois la bonne syntaxe trouvé je pourrai l’adapter.
Le module MMM-EyeCandy doit être masquer en permanence, (d’où l’idée plugins onReady : hide_on_start)
A l’appel de la notification Selfie, le module MMM-BackgroundSlideshow se cache (le temps du selfie, selfieresult) puis ré apparaît.
Et d’autres part, a l’inverse sur cette même notification, le module MMM-EyeCandy s’affiche (pour une durée de 3/4 secondes) et se remasque comme au démarrage. -
A l’appel de la notification Selfie
Selfie ?
MMM-BackgroundSlideshow se cache (le temps du selfie, selfieresult)
selfieresult ?
etes vous reelement sur sur le nom des notification envoyé ?
j’ai besoin des notification exacte, au cas ou il me faudrait un lien vers le module que je regarde quel notification est envoyé ?
donc je résume:
Le module MMM-EyeCandy doit être masquer en permanence, (d’où l’idée plugins onReady : hide_on_start)
ok pour ça
Quand la noti Shoot arrive:
- cacher “MMM-BackgroundSlideshow”
- afficher “MMM-EyeCandy”
quand la noti “SELFIE_RESULT” arrive (si la noti est s’appel comme ça)
- afficher “MMM-BackgroundSlideshow”
- cacher “MMM-EyeCandy”
Il me faut un schéma de ce style c’et mieux pour traduire en JS
-
@bugsounet Dans le MMM-Selfieshot.js et son node_helper je vois
“this.sendNotification(“SELFIE_RESULT”, result);” et “if (noti == “SHOOT”)” je pense donc possible d’utiliser ces notifications.
voir link text pour confirmation.Votre schema est bon pour le coup, si les notif sont correctes
MASQUER MMM-EyeCandy au démarrage MM
-
Quand la notification SHOOT arrive
1- cacher “MMM-BackgroundSlideshow”
2- faire apparaître MMM-EyeCandy x seconde et le masquer -
Quand la notification SELFIE_RESULT arrive
1- Apres x seconde, afficher MMM-BackgroundSlideshow
-
-
et les autres modules sont caché lors du “SHOOT” ?
sinon d’apres ce que vous avez demandé:
var recipe = { commands: { "SHOW_EYE": { moduleExec: { module: (params) => { MM.getModules().enumerate(m => { if (params.notification == "SHOOT") { if (m.name == "MMM-BackgroundSlideshow") { m.hide(1000, {lockString: "RECIPE_LOCKED"}) } if (m.name == "MMM-EyeCandy") { m.show(1000, {lockString: "RECIPE_LOCKED"}) setTimeout(() => { m.hide(1000, {lockString: "RECIPE_LOCKED"}) }, 5000) } } if (params.notification == "SELFIE_RESULT") { if (m.name == "MMM-BackgroundSlideshow") { setTimeout(() => { m.show(1000, {lockString: "RECIPE_LOCKED"}) }, 5000) } } }) } } } }, plugins: { onNotificationReceived: "SHOW_EYE" } } exports.recipe = recipe
-
@bugsounet je n’ai aucun autre module pour l’instant, j’en ajouterai mais sur une autre page specifique.
votre derniere recette est testé mais les modules restent tout de même afficher, selfieresult affiche la photo en premier plan mais EyeCandy et BackgroundSlideshow reste bien en arriere plan.
et ajoutant :“hide_on_start”: {
moduleExec: {
module: () => {
MM.getModules().enumerate((m)=> {
if (m.name == “MMM-EyeCandy”) m.hide(1000, {lockString: “RECIPE_LOCKED”})
})
}
}
}
},
plugins: {
onReady: “hide_on_start”Cela masque EyeCandy définitivement mais ne re-apparait pas à la notification SHOOT.
Cette fonction que je vous demande m’a l’air toutes fois un peu complexe, ne vous embêter pas d’avantage. Je ne sais pas si intégrer ces quelques lignes de code directement au module MMM-Selfieshot en tant que fonction ne serait pas plus simple ? -
C’est la noti SHOOT qui me semble chelou, je ne vois pas d’où vous l’avais vu. Car dans le module elle est pas utilisée
Je vois plus SELFIE_SHOOT a la place de SHOOT
Comme je vous fait confiance sur les noti… Donc, J’applique les règles en concequenceLe node_helper est un calculateur et n’as pas la capacité de dialoguer avec les autre modules. Il dialogue uniquement avec son propre module et pas avec les autre.
Par contre le MMM-Module.js lui peux dialoguer avec les autre module via sendNotification et notificationReceivedsendNotification : informe les autres modules via noti
notificationReceived: reçois les notification des autres modules -
@bugsounet oui je pense que ce sont des notifications émises en interne du module, pas plus de resultat avec les notifications “SHOOT”, “SELFIE_LAST” ni même “SELFIE_SHOOT”.
-
oui, j’ai relu le code uniquement “SELFIE_RESULT” est envoyé
donc cette partie manque. j’ai demandé d’ajouter “SELFIE_START”ensuite ce recipe fonctionnera: (testé)
var recipe = { commands: { "SHOW_EYE": { moduleExec: { module: (params) => { if (params.notification == "CLOCK_SECOND") return if (params.notification == "SELFIE_START") { MM.getModules().withClass("MMM-BackgroundSlideshow").enumerate(m => { m.hide(1000, {lockString: "RECIPE_LOCKED"}) }) MM.getModules().withClass("MMM-EyeCandy").enumerate(m => { m.show(1000, {lockString: "RECIPE_LOCKED"}) setTimeout(() => { m.hide(1000, {lockString: "RECIPE_LOCKED"}) }, 5000) }) } if (params.notification == "SELFIE_RESULT") { MM.getModules().withClass("MMM-BackgroundSlideshow").enumerate(m => { setTimeout(() => { m.show(1000, {lockString: "RECIPE_LOCKED"}) }, 5000) }) } } } }, "hide_on_start": { moduleExec: { module: () => { MM.getModules().withClass("MMM-EyeCandy").enumerate(m => { m.hide(1000, {lockString: "RECIPE_LOCKED"}) }) } } } }, plugins: { onNotificationReceived: "SHOW_EYE", onReady: "hide_on_start" } } exports.recipe = recipe
-
D’accord il y avait avant tout un problème de notification je comprends mieux. La recette à l’air énorme je n’ai aucun doute sur son fonctionnement, je teste cela aujourd’hui avec hâte.
Merci beaucoup pour votre aide précieuse. -
@bugsounet j’ai testé en ajoutant la sendNotification dans le MMM-Selfieshot, cela fonctionne parfaitement. Merci à vous c’est super.
-
Salut, j’ai vu que l’auteur a accepté ma modif
-
Bonjour, c’est super, du coup une simple MAJ du module fera l’affaire ? Je vous remercie encore énormément. Bonne journée à vous