MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    JSON request module

    Scheduled Pinned Locked Moved Solved Requests
    41 Posts 3 Posters 15.9k Views 4 Watching
    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.
    • wishmaster270W Offline
      wishmaster270 Module Developer @ELMAGO
      last edited by

      @ELMAGO Sorry, but i do not understand exactly what you mean. You can override the “na” value which is the one displayed if no value could be parsed in the JSON.

      The config option is:

      naValue: "NON"
      

      There might also be a chance to do add a valueFormat which checks for the “false” value in the JSON but that would be a little more complex and i need to know the exact format of the output.

      E 1 Reply Last reply Reply Quote 0
      • E Offline
        ELMAGO @wishmaster270
        last edited by

        @wishmaster270
        Hello

        No, not al all.
        the returned value will be “false” or “true” and I would like to replace it with “Non” or “Oui” in French.

        wishmaster270W 1 Reply Last reply Reply Quote 0
        • wishmaster270W Offline
          wishmaster270 Module Developer @ELMAGO
          last edited by

          @ELMAGO
          You can use valueFormat for this purpose.

          valueFormat: "\"${value}\".replace(\"false\",\"Non\").replace(\"true\",\"Oui\")",
          

          This will convert the value to a string (if needed) and replaces all “false” with “Non” and “true” with “Oui”.

          E 1 Reply Last reply Reply Quote 0
          • E Offline
            ELMAGO @wishmaster270
            last edited by

            @wishmaster270

            great, thank you.
            Is there a “lexicon” with these commands?

            wishmaster270W 1 Reply Last reply Reply Quote 0
            • wishmaster270W Offline
              wishmaster270 Module Developer @ELMAGO
              last edited by

              @ELMAGO
              I added some to the [documentation] (https://github.com/Tom-Hirschberger/MMM-ValuesByNotification/blob/main/doc/value.md) of the module.
              As there can be used any build-in JavaScript function in valueFormat there are nearly endless possibilities.

              E 1 Reply Last reply Reply Quote 0
              • E Offline
                ELMAGO @wishmaster270
                last edited by

                @wishmaster270

                good evening,

                I tested the replace function:

                {
                		module: "MMM-ValuesByNotification",
                		position: "top_right",
                		header: "INFORMATION MÉGANE",
                		config: {
                			updateInterval: 300,
                			reuseCount: 100,
                			addClassesRecursive: true,
                			valueFormat: "\"${value}\".replace(\"false\",\"Non\").replace(\"true\",\"Oui\")",
                			groups: [
                				{
                					items: [
                						
                						{
                							notification: "AUTBATTMEGANE",
                							itemTitle: "Autonomie  ",
                							values: [
                								{
                									valueUnit: " Km",
                									valueFormat: "Number(${value}).toFixed(2)",
                									jsonpath: "data",
                								},
                							]
                						},
                						{
                							notification: "BATTMEGANE",
                							itemTitle: "Charge batterie  ",
                							values: [
                								{
                									valueUnit: " %",
                									valueFormat: "Number(${value}).toFixed(2)",
                									jsonpath: "data",
                								},
                							]
                						},
                						{
                							notification: "PLUGMEGANE",
                							itemTitle: "Voirture branchée ",
                							classes: "withIcons",
                							valueFormat: "\"${value}\".replace(\"false\",\"Non\").replace(\"true\",\"Oui\")",
                							values: [
                								{
                									
                									valueFormat: "Number(${value}).toFixed(2)",
                									jsonpath: "data",
                								},
                							]
                						},
                						
                					]
                				},
                			]
                		},
                	},
                
                
                

                But unfortunately it doesn’t work.

                504f3bb6-cb32-49fa-97b6-c872e2b1aa31-image.png

                Would you know why?

                Thanks

                wishmaster270W 1 Reply Last reply Reply Quote 0
                • wishmaster270W Offline
                  wishmaster270 Module Developer @ELMAGO
                  last edited by

                  @ELMAGO As valueFormat settings further down in the hierarchy override setting further up you only have to much valueFormat settings.

                  This config should do the trick:

                  	{
                  		module: "MMM-ValuesByNotification",
                  		position: "top_right",
                  		header: "INFORMATION MÉGANE",
                  		config: {
                  			updateInterval: 300,
                  			reuseCount: 100,
                  			addClassesRecursive: true,
                  			groups: [
                  				{
                  					items: [
                  						
                  						{
                  							notification: "AUTBATTMEGANE",
                  							itemTitle: "Autonomie  ",
                  							values: [
                  								{
                  									valueUnit: " Km",
                  									valueFormat: "Number(${value}).toFixed(2)",
                  									jsonpath: "data",
                  								},
                  							]
                  						},
                  						{
                  							notification: "BATTMEGANE",
                  							itemTitle: "Charge batterie  ",
                  							values: [
                  								{
                  									valueUnit: " %",
                  									valueFormat: "Number(${value}).toFixed(2)",
                  									jsonpath: "data",
                  								},
                  							]
                  						},
                  						{
                  							notification: "PLUGMEGANE",
                  							itemTitle: "Voirture branchée ",
                  							classes: "withIcons",
                  							values: [
                  								{
                  									valueFormat: "\"${value}\".replace(\"false\",\"Non\").replace(\"true\",\"Oui\")",
                  									jsonpath: "data",
                  								},
                  							]
                  						},
                  						
                  					]
                  				},
                  			]
                  		},
                  	},
                  
                  1 Reply Last reply Reply Quote 0
                  • E Offline
                    ELMAGO
                    last edited by

                    Hi @wishmaster270

                    I come back here, it will be simpler.

                    My code is:

                    //INFORMATION HOMEY EUFY
                    
                    {
                       module: "MMM-CommandToNotification",
                       disabled: false,
                       config: {
                        updateInterval: 300,
                        commands: [
                         
                    
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/ETATEUFY",
                               timeout: 1000,
                    			
                               notifications: [
                                "ETATEUFY",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/CAMSALLE",
                               timeout: 1000,
                    			
                               notifications: [
                                "CAMSALLE",
                                ],
                              },
                    
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/CAMPALIER",
                               timeout: 1000,
                    			
                               notifications: [
                                "CAMPALIER",
                                ],
                              },
                    
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/CAMARRIERE",
                               timeout: 1000,
                    			
                               notifications: [
                                "CAMARRIERE",
                                ],
                              },
                    
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/CAMGARAGE",
                               timeout: 1000,
                    			
                               notifications: [
                                "CAMGARAGE",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/CAMGAUCHE",
                               timeout: 1000,
                    			
                               notifications: [
                                "CAMGAUCHE",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/CAMAVANT",
                               timeout: 1000,
                    			
                               notifications: [
                                "CAMAVANT",
                                ],
                              },
                    {
                          script: "/usr/bin/curl",
                          args: "-s  http://192.168.100.244:3000/TEMPSALLE",
                          timeout: 1000,
                          notifications: [
                           "TEMPSALLE",
                           ],
                         },
                    
                         {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/TEMPBUREAU",
                               timeout: 1000,
                               notifications: [
                                "TEMPBUREAU",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/TEMPCHELENA",
                               timeout: 1000,
                               notifications: [
                                "TEMPCHELENA",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/TEMPCHLOUCA",
                               timeout: 1000,
                               notifications: [
                                "TEMPCHLOUCA",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/TEMPCHALAN",
                               timeout: 1000,
                               notifications: [
                                "TEMPCHALAN",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/TEMPCHPARENT",
                               timeout: 1000,
                               notifications: [
                                "TEMPCHPARENT",
                                ],
                              },
                    {
                          	script: "/usr/bin/curl",
                          	args: "-s  http://192.168.100.244:3000/AUTBATTMEGANE",
                          	timeout: 1000,
                          	notifications: [
                           	"AUTBATTMEGANE",
                           	  ],
                         		},
                    
                         {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/BATTMEGANE",
                               timeout: 1000,
                               notifications: [
                                "BATTMEGANE",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/PLUGMEGANE",
                               timeout: 1000,
                    			
                               notifications: [
                                "PLUGMEGANE",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/CHARGEMEGANE",
                               timeout: 1000,
                    			
                               notifications: [
                                "CHARGEMEGANE",
                                ],
                              },
                    
                         ]
                       },
                      },
                    

                    So I think it launches all requests at the same time, because my server which must answer crashes.

                    I wanted to split it like this:

                    //INFORMATION HOMEY EUFY
                    
                    {
                       module: "MMM-CommandToNotification",
                       disabled: false,
                       config: {
                        updateInterval: 300,
                        commands: [
                         
                    
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/ETATEUFY",
                               timeout: 1000,
                    			
                               notifications: [
                                "ETATEUFY",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/CAMSALLE",
                               timeout: 1000,
                    			
                               notifications: [
                                "CAMSALLE",
                                ],
                              },
                    
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/CAMPALIER",
                               timeout: 1000,
                    			
                               notifications: [
                                "CAMPALIER",
                                ],
                              },
                    
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/CAMARRIERE",
                               timeout: 1000,
                    			
                               notifications: [
                                "CAMARRIERE",
                                ],
                              },
                    
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/CAMGARAGE",
                               timeout: 1000,
                    			
                               notifications: [
                                "CAMGARAGE",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/CAMGAUCHE",
                               timeout: 1000,
                    			
                               notifications: [
                                "CAMGAUCHE",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/CAMAVANT",
                               timeout: 1000,
                    			
                               notifications: [
                                "CAMAVANT",
                                ],
                              },
                         ]
                       },
                      },
                    
                    
                    

                    and

                    //INFORMATION HOMEY EUFY
                    
                    {
                       module: "MMM-CommandToNotification",
                       disabled: false,
                       config: {
                        updateInterval: 300,
                        commands: [
                         
                    
                    
                    {
                          script: "/usr/bin/curl",
                          args: "-s  http://192.168.100.244:3000/TEMPSALLE",
                          timeout: 1000,
                          notifications: [
                           "TEMPSALLE",
                           ],
                         },
                    
                         {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/TEMPBUREAU",
                               timeout: 1000,
                               notifications: [
                                "TEMPBUREAU",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/TEMPCHELENA",
                               timeout: 1000,
                               notifications: [
                                "TEMPCHELENA",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/TEMPCHLOUCA",
                               timeout: 1000,
                               notifications: [
                                "TEMPCHLOUCA",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/TEMPCHALAN",
                               timeout: 1000,
                               notifications: [
                                "TEMPCHALAN",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/TEMPCHPARENT",
                               timeout: 1000,
                               notifications: [
                                "TEMPCHPARENT",
                                ],
                              },
                    
                    
                         ]
                       },
                      },
                    
                    
                    

                    and :

                    //INFORMATION HOMEY EUFY
                    
                    {
                       module: "MMM-CommandToNotification",
                       disabled: false,
                       config: {
                        updateInterval: 300,
                        commands: [
                         
                    
                    
                    
                    {
                          	script: "/usr/bin/curl",
                          	args: "-s  http://192.168.100.244:3000/AUTBATTMEGANE",
                          	timeout: 1000,
                          	notifications: [
                           	"AUTBATTMEGANE",
                           	  ],
                         		},
                    
                         {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/BATTMEGANE",
                               timeout: 1000,
                               notifications: [
                                "BATTMEGANE",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/PLUGMEGANE",
                               timeout: 1000,
                    			
                               notifications: [
                                "PLUGMEGANE",
                                ],
                              },
                    {
                               script: "/usr/bin/curl",
                               args: "-s  http://192.168.100.244:3000/CHARGEMEGANE",
                               timeout: 1000,
                    			
                               notifications: [
                                "CHARGEMEGANE",
                                ],
                              },
                    
                         ]
                       },
                      },
                    
                    
                    

                    But it doesn’t work, only the last element appears.

                    wishmaster270W 1 Reply Last reply Reply Quote 0
                    • wishmaster270W Offline
                      wishmaster270 Module Developer @ELMAGO
                      last edited by

                      @ELMAGO Hi,

                      thats right. The module does not support multi instance configurations.
                      You will need to copy the complete module folder and change some things to get it work.
                      But to me it looks like your server is stressed with the 16 calls straight after each other. So you do not need more parallelism but less.
                      So i will check if i can at a configurable delay after each command to stretch the time the calls get made to your server a little bit.

                      E S 2 Replies Last reply Reply Quote 0
                      • E Offline
                        ELMAGO @wishmaster270
                        last edited by

                        @wishmaster270

                        good morning

                        I don’t mind doing it by hand if you explain to me what I need to change

                        wishmaster270W 1 Reply Last reply Reply Quote 0
                        • wishmaster270W Offline
                          wishmaster270 Module Developer @ELMAGO
                          last edited by

                          @ELMAGO Hi,

                          i just released a new version of the module which has a new option delayNext that can be added to each command.
                          The module then starts the command and waits this amount of milliseconds before the next one is processed.
                          So in your case you can add a delayNext: 1000 to each of the commands to give your server some time between the calls.

                          E 1 Reply Last reply Reply Quote 0
                          • S Do not disturb
                            sdetweil @wishmaster270
                            last edited by

                            @wishmaster270 you could make it support multi instance easily

                            in the modulename.js when u sendSocketNotification… add the module id to the data

                            in the node_helper, send the id back

                            in the modulename.js in receiveSocketNotification
                            check that the returned id matches this instances id

                            sendSocketNotification from the node_helper is a broadcast , all instances get it at the same time, thus the need for the check.

                            Sam

                            How to add modules

                            learning how to use browser developers window for css changes

                            wishmaster270W 1 Reply Last reply Reply Quote 0
                            • wishmaster270W Offline
                              wishmaster270 Module Developer @sdetweil
                              last edited by

                              @sdetweil Hi Sam, I will check that for the next release.
                              I already added something similar to one of my other modules but did not know that there is a module id already and added a uuid instead.

                              S 1 Reply Last reply Reply Quote 0
                              • S Do not disturb
                                sdetweil @wishmaster270
                                last edited by

                                @wishmaster270 this.indentifier

                                https://docs.magicmirror.builders/development/core-module-file.html#available-module-instance-properties

                                Sam

                                How to add modules

                                learning how to use browser developers window for css changes

                                1 Reply Last reply Reply Quote 1
                                • E Offline
                                  ELMAGO @wishmaster270
                                  last edited by

                                  @wishmaster270

                                  ok, i test

                                  1 Reply Last reply Reply Quote 0
                                  • BKeyportB BKeyport referenced this topic on

                                  Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                  Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                  With your input, this post could be even better 💗

                                  Register Login
                                  • 1
                                  • 2
                                  • 3
                                  • 2 / 3
                                  • First post
                                    Last post
                                  Enjoying MagicMirror? Please consider a donation!
                                  MagicMirror created by Michael Teeuw.
                                  Forum managed by Sam, technical setup by Karsten.
                                  This forum is using NodeBB as its core | Contributors
                                  Contact | Privacy Policy