Bugsounet Coding

    • Register
    • Login
    • Search
    This Forum is now reserved to registred users!

    Recipe and plugin

    Recipes
    2
    28
    213
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • V
      venditti69500 Donators last edited by venditti69500

      hello everyone, I want to create a recipe using the “onNotificationReceived” plugin. here is the recipe

      var recipe = {
       commands: {
        "SHOW_EYE": {
         moduleExec: {
          module: () => {
           MM.getModules().enumerate((m)=> {
            if (m.name == "MMM-EyeCandy") m.show(1000, {lockString: "RECIPE_LOCKED"})
            setTimeout(() => {m.hide(1000, {lockString: "RECIPE_LOCKED"}) }, 1000 * 3)
           }
          })
         }
        }
       }
       plugins: {
        onNotificationReceived: (notification,payload)  {
         if (notification == "SHOOT") {
          this.sendSocketNotification("SHOW_EYE")
         }
        }
       }
      }	
      
      exports.recipe = recipe
      
      
      

      i think i’m not so far, but i’m still wrong, if someone can help me to find where is my bullshit

      Or @bugsounet , if you pass by hère, when you’ve one minute, report me what stings your eyes🙏🏼.
      My respects.

      1 Reply Last reply Reply Quote 0
      • V
        venditti69500 Donators last edited by

        Bonjour à vous, je suis convaincu que vous n’avez le temps de faire professeur pour débutants, je souhaite concevoir mon propre module basé sur le module “Selfie”, mais il me semble plus judicieux de commencer par adapter des recettes de votre module qui est très bien détaillé dans le wiki.
        Pour cette recette la partie commande me semble juste car elle est copiée d’un de vos poste antecedent, l’erreur est très certainement dans la structure de notification.

        onNotificationReceived: () => {
        if (notification == “SHOOT_RESULT”) {
        this.sendNotification(‘SHOW_EYE’, {foo:bar});
        Suis je en bonne voie ou complément à côté de la plaque ?

        1 Reply Last reply Reply Quote 0
        • bugsounet
          bugsounet Main Coder last edited by

          Bonjour, désolé pas eu le temps hier soir, je regarde ce soir

          1 Reply Last reply Reply Quote 0
          • V
            venditti69500 Donators last edited by

            Merci beaucoup, pas d’urgence ça me laisse encore le temps de chercher mon erreur 😉

            1 Reply Last reply Reply Quote 0
            • V
              venditti69500 Donators last edited by

              J’ai vraiment essayé de tourner ça de plusieurs façon, en vain. Mais il me semble que les notifications d’appel que j’ai choisi sont internes au propre module Selfieshot (socketnotitication) et non à l’ensemble des modules. Cependant le résultat reste identique même avec “SELFIE_SHOOT” ou “LAST_SELFIE”

              1 Reply Last reply Reply Quote 0
              • bugsounet
                bugsounet Main Coder last edited by bugsounet

                @venditti69500 :

                un truc de ce style ?

                var recipe = {
                  commands: {
                    "SHOW_EYE": {
                      moduleExec: {
                        module: (params) => {
                          if (params.notification == "SHOOT") {
                            MM.getModules().enumerate((m)=> {
                              if (m.name == "MMM-EyeCandy") m.show(1000, {lockString: "RECIPE_LOCKED"})
                              setTimeout(() => {
                                m.hide(1000, {lockString: "RECIPE_LOCKED"})
                              }, 1000 * 3)
                            })
                          }
                        }
                      }
                    }
                  },
                  plugins: {
                    onNotificationReceived: "SHOW_EYE"
                  }
                }
                
                exports.recipe = recipe
                

                onNotificationReceived: “SHOW_EYE” <— appel le nom de la commande (qui sera executée a chaque notification reçu)
                Dans la commande “SHOW_EYE” : on fait le tri des notifications
                params.notification => nom de la notification
                params.payload => si il y a une valeur a lire a l’interieur de la notification reçu (non utilisé ici)

                V 1 Reply Last reply Reply Quote 0
                • V
                  venditti69500 Donators last edited by

                  @bugsounet Merci pour ces précieuses explications, sorti de votre bouche cela a l’air si simple. Pour le coup je comprends mieux le fil a suivre, je prendrai le temps d’analyser ça correctement, je vais d’abord tester et vous fais un retour très rapidement mais cela semble correspondre parfaitement à ce que je souhaite.
                  Sincères remerciements.

                  1 Reply Last reply Reply Quote 0
                  • V
                    venditti69500 Donators @bugsounet last edited by venditti69500

                    @bugsounet la recette est testé, en effet plus de message error lors du chargement de la recette.
                    Le module SelfieShot fait correctement son travail au premier plan lors de l’appel, cependant rien ne se passe coté module MMM-EyeCandy, il reste figé à l’ecran.
                    si je fusionne ma recette suivante avec la votre, c’est le contraire, le module Eye-Candy s’affiche le temps du chargement et disparaît bien lorsque magicmirror est pret, mais Eye-Candy ne s’affichera pas 3 secondes comme convenu. petit conflit dont je m’attendais. pour mieux visualiser l’ensemble :

                    var recipe = {
                      commands: {
                        "SHOW_EYE": {
                          moduleExec: {
                            module: (params) => {
                    	  if (params.notification == "SHOOT") {
                    	    MM.getModules().enumerate((m)=> {
                    	      if (m.name == "MMM-EyeCandy") m.show(1000, {lockString: "RECIPE_LOCKED"})
                    	      setTimeout(() => { m.hide(1000, {lockString: "RECIPE_LOCKED"}) }, 1000 * 3)
                    	      })
                    	    }
                    	  }
                    	}
                          },
                          "HIDE_BACKGROUNG": {
                    	moduleExec: {
                    	  module: (params) => {
                    	    if (params.notification == "SHOOT") {
                    	      MM.getModules().enumerate((m)=> {
                    		if (m.name == "MMM-BackgroundSlideshow") m.hide(1000, {lockString: "RECIPE_LOCKED"})
                    		setTimeout(() => { m.show(1000, {lockString: "RECIPE_LOCKED"}) }, 1000 * 3)
                    	      })
                                }
                    	  }
                    	}
                          },
                          "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",
                          onNotificationReceived: ["SHOW_EYE", "HIDE_BACKGROUND"]
                        }
                    }
                    
                    exports.recipe = recipe
                    
                    

                    Le but etant d’avoir MMM-BackgroundSlideshow sur l’ecran MM, à l’appel du selfie, (masquer tout les modules sauf MMM-SelfieShot évidement), afficher ponctuellement 3 secondes MMM-EyeCandy, et une fois le SelfieResult affiché, retour au “mode veille” qui affiche uniquement MMM-BackgroundSlideshow.
                    Je pensais que remplacer {lockString: RECIPE_LOCKED"} par {force: true} aiderai mais cela ne change point.
                    merci pour votre attention.

                    1 Reply Last reply Reply Quote 0
                    • V
                      venditti69500 Donators last edited by

                      J’ai trouvé une bonne Doc qui devrait m’aider à terminer, je vais devoir jouer avec quelques choses de ce style :
                      moduleA.show(0, {lockString: “module_c_identifier”});
                      Le lockString sera supprimé du tableau de verrous du moduleA, et comme cela se traduira par un tableau de verrous vide, le module sera visible :

                      moduleA.lockStrings == []
                      moduleA.hidden == false
                      Remarque : Le mécanisme de verrouillage peut être écrasé à l’aide de la balise de force :

                      moduleA.show(0, {force: true});
                      Cela réinitialisera le tableau lockstring et affichera le module.

                      moduleA.lockStrings == []
                      moduleA.hidden == false
                      Utilisez cette forceméthode avec prudence. Voir show()la méthode pour plus d’informations.

                      1 Reply Last reply Reply Quote 0
                      • bugsounet
                        bugsounet Main Coder last edited by

                        bah c’est pas du tout ça 😛

                        1. onNotificationReceived: [“SHOW_EYE”, “HIDE_BACKGROUND”]
                          ne fonctionnera pas

                        tu peux appeler une seul fonction, pas un tableau
                        il faut donc modifier “ßHOW_EYE” en consequence en y mettant les 2 fonctions
                        puis en plus j’ai vu que j’ai fait un gourde dans ce que j’avais donné:
                        setTimeout(() => { m.show(1000, {lockString: "RECIPE_LOCKED"}) }, 1000 * 3) est executé a chaque module trouvé et non pas uniquement si le module == “MMM-EyeCandy”

                        Je ne sais pas si j’aurai le temps ce soir d’y regarder
                        bref… Je reviens vers toi des que possible

                        en ce qui concerne la doc que tu as collé, c’est simplement ce que l’on utilise dans le recipe 🙂

                        1 Reply Last reply Reply Quote 0
                        • V
                          venditti69500 Donators last edited by

                          Okay, super pour les explications je vais donc commencer par là.
                          Pour le 1: “onNotificationReceived : [“SHOW_EYE”, “HIDE_BACKGROUND”]” je vois ce que vous voulez dire je vais y corriger rapidement j’ai déjà vu une recette telegrambot que vous avez fourni avec cette syntaxe double fonction 👌🏼
                          Et en ce qui concerne la cible du module à masquer je vais voir ce que je trouve là dessus mais j’ai de quoi m’occuper avec ce que vous m’apportez là.
                          Vous êtes généreux, je tâche de l’être cette fin de semaine avec vous. Merci encore

                          1 Reply Last reply Reply Quote 0
                          • bugsounet
                            bugsounet Main Coder last edited by bugsounet

                            ou un truc de ce genre

                            V 2 Replies Last reply Reply Quote 0
                            • V
                              venditti69500 Donators last edited by venditti69500

                              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.

                              1 Reply Last reply Reply Quote 0
                              • V
                                venditti69500 Donators @bugsounet last edited by

                                This post is deleted!
                                1 Reply Last reply Reply Quote 0
                                • V
                                  venditti69500 Donators @bugsounet last edited by

                                  @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

                                  1 Reply Last reply Reply Quote 0
                                  • bugsounet
                                    bugsounet Main Coder last edited by bugsounet

                                    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 correct

                                    exceptWithClass fait une exception sur les modules

                                    Donc 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 tard

                                    c’est ce que tu veux je crois ?

                                    V 1 Reply Last reply Reply Quote 0
                                    • V
                                      venditti69500 Donators @bugsounet last edited by

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

                                      1 Reply Last reply Reply Quote 0
                                      • bugsounet
                                        bugsounet Main Coder last edited by

                                        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:

                                        1. cacher “MMM-BackgroundSlideshow”
                                        2. afficher “MMM-EyeCandy”

                                        quand la noti “SELFIE_RESULT” arrive (si la noti est s’appel comme ça)

                                        1. afficher “MMM-BackgroundSlideshow”
                                        2. cacher “MMM-EyeCandy”

                                        Il me faut un schéma de ce style c’et mieux pour traduire en JS

                                        V 1 Reply Last reply Reply Quote 0
                                        • V
                                          venditti69500 Donators @bugsounet last edited by

                                          @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

                                          1 Reply Last reply Reply Quote 0
                                          • bugsounet
                                            bugsounet Main Coder last edited by bugsounet

                                            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
                                            
                                            V 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Powered by NodeBB | @bugsounet ©2022