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.

    [MMM-ValuesByNotification] Display the payloads of notifications with titles and icons

    Scheduled Pinned Locked Moved Utilities
    25 Posts 3 Posters 6.4k Views 2 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.
    • BKeyportB Offline
      BKeyport Module Developer @wishmaster270
      last edited by

      @wishmaster270

      Hey, Tom - Trying to use this module to decode the json output by my weatherstation - Like https://forum.magicmirror.builders/topic/17396/json-request-module

      What I’m getting from Command to notification module is:

      WEATHERLINK {"data":{"did":"001D0A71573B","ts":1675287003,"conditions":[{"lsid":434637,"data_structure_type":1,"txid":1,"temp": 47.4,"hum":52.8,"dew_point": 31.0,"wet_bulb": 38.4,"heat_index": 46.4,"wind_chill": 47.4,"thw_index": 46.4,"thsw_index":null,"wind_speed_last":2.00,"wind_dir_last":31,"wind_speed_avg_last_1_min":2.62,"wind_dir_scalar_avg_last_1_min":6,"wind_speed_avg_last_2_min":2.81,"wind_dir_scalar_avg_last_2_min":358,"wind_speed_hi_last_2_min":5.00,"wind_dir_at_hi_speed_last_2_min":340,"wind_speed_avg_last_10_min":1.43,"wind_dir_scalar_avg_last_10_min":36,"wind_speed_hi_last_10_min":5.00,"wind_dir_at_hi_speed_last_10_min":336,"rain_size":1,"rain_rate_last":0,"rain_rate_hi":0,"rainfall_last_15_min":0,"rain_rate_hi_last_15_min":0,"rainfall_last_60_min":0,"rainfall_last_24_hr":0,"rain_storm":0,"rain_storm_start_at":null,"solar_rad":null,"uv_index":null,"rx_state":0,"trans_battery_flag":0,"rainfall_daily":0,"rainfall_monthly":0,"rainfall_year":1750,"rain_storm_last":4,"rain_storm_last_start_at":1674798601,"rain_storm_last_end_at":1675000860},{"lsid":434634,"data_structure_type":4,"temp_in": 79.4,"hum_in":20.5,"dew_point_in": 35.5,"heat_index_in": 77.4},{"lsid":434633,"data_structure_type":3,"bar_sea_level":30.125,"bar_trend":-0.013,"bar_absolute":29.660}]},"error":null}
      

      yes, the weather station dumps a mess. :)

      my current config for the values by notification is just the basics, but should be grabbing the “hum” value for testing:

      		{
      			module: "MMM-ValuesByNotification",
      			position: "top_left",
      			header: "Module-1",
      			config: {
      				groups: [
      					{
      						items: [
      							{
      								notification: "WEATHERLINK",
      								itemTitle: "Item-1",
      								values: [
      									{
      										valueTitle: "Value-1",
      										jsonpath: "hum",
      									},
      								]
      							},
      						]
      					},
      				]
      			},
      		},
      

      I get initally “NA” as a value, then it flips to “Undefined”

      7bbe0a14-2297-4717-a081-bda12de9457f-image.png

      Any clue on what I’m doing wrong, or is the feed from the weather station needing more of a massage to be useful?

      thanks!

      The "E" in "Javascript" stands for "Easy"

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

        @BKeyport Hi,
        i formatted your output to understand the JSON structure you are using:

        {
            "data": {
                "did": "001D0A71573B",
                "ts": 1675287003,
                "conditions": [
                    {
                        "lsid": 434637,
                        "data_structure_type": 1,
                        "txid": 1,
                        "temp": 47.4,
                        "hum": 52.8,
                        "dew_point": 31.0,
                        "wet_bulb": 38.4,
                        "heat_index": 46.4,
                        "wind_chill": 47.4,
                        "thw_index": 46.4,
                        "thsw_index": null,
                        "wind_speed_last": 2.00,
                        "wind_dir_last": 31,
                        "wind_speed_avg_last_1_min": 2.62,
                        "wind_dir_scalar_avg_last_1_min": 6,
                        "wind_speed_avg_last_2_min": 2.81,
                        "wind_dir_scalar_avg_last_2_min": 358,
                        "wind_speed_hi_last_2_min": 5.00,
                        "wind_dir_at_hi_speed_last_2_min": 340,
                        "wind_speed_avg_last_10_min": 1.43,
                        "wind_dir_scalar_avg_last_10_min": 36,
                        "wind_speed_hi_last_10_min": 5.00,
                        "wind_dir_at_hi_speed_last_10_min": 336,
                        "rain_size": 1,
                        "rain_rate_last": 0,
                        "rain_rate_hi": 0,
                        "rainfall_last_15_min": 0,
                        "rain_rate_hi_last_15_min": 0,
                        "rainfall_last_60_min": 0,
                        "rainfall_last_24_hr": 0,
                        "rain_storm": 0,
                        "rain_storm_start_at": null,
                        "solar_rad": null,
                        "uv_index": null,
                        "rx_state": 0,
                        "trans_battery_flag": 0,
                        "rainfall_daily": 0,
                        "rainfall_monthly": 0,
                        "rainfall_year": 1750,
                        "rain_storm_last": 4,
                        "rain_storm_last_start_at": 1674798601,
                        "rain_storm_last_end_at": 1675000860
                    },
                    {
                        "lsid": 434634,
                        "data_structure_type": 4,
                        "temp_in": 79.4,
                        "hum_in": 20.5,
                        "dew_point_in": 35.5,
                        "heat_index_in": 77.4
                    },
                    {
                        "lsid": 434633,
                        "data_structure_type": 3,
                        "bar_sea_level": 30.125,
                        "bar_trend": -0.013,
                        "bar_absolute": 29.660
                    }
                ]
            },
            "error": null
        }
        

        The hum value is part of the first element with index 0 of the conditions object which is part of the data object.
        This results in a more advanced jsonpath…

        		{
        			module: "MMM-ValuesByNotification",
        			position: "top_left",
        			header: "Module-1",
        			config: {
        				groups: [
        					{
        						items: [
        							{
        								notification: "WEATHERLINK",
        								itemTitle: "Item-1",
        								values: [
        									{
        										valueTitle: "Value-1",
        										jsonpath: "data.conditions[0].hum",
        									},
        								]
        							},
        						]
        					},
        				]
        			},
        		},
        

        This config works out of the box ;-)

        Edit:

        If the order of the elements of conditions varies you can use

        jsonpath: "data.conditions..hum"
        

        This one selects the hum value of any element of conditions.

        BKeyportB 1 Reply Last reply Reply Quote 0
        • BKeyportB Offline
          BKeyport Module Developer @wishmaster270
          last edited by

          @wishmaster270 Brilliant. Thank you. JSON is still quite the mystery to me sometimes. :)

          The "E" in "Javascript" stands for "Easy"

          BKeyportB 1 Reply Last reply Reply Quote 0
          • BKeyportB Offline
            BKeyport Module Developer @BKeyport
            last edited by

            One last thing - where in the CSS do I adjust the font size for the module? I want it to use the MM “Large” font, as it’s on a wall display across from my desk. Can’t seem to find it.

            The "E" in "Javascript" stands for "Easy"

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

              @BKeyport
              Hi, great that it works now.
              There are two different ways of how to change the font-size.
              Either by using the classes option and add large to the element you want the font-size to be changed. i.e.:

              {
              			module: "MMM-ValuesByNotification",
              			position: "top_left",
              			header: "Module-1",
              			config: {
              				groups: [
              					{
              						items: [
              							{
              								notification: "WEATHERLINK",
              								itemTitle: "Item-1",
              								values: [
              									{
              										classes: "large",
              										valueTitle: "Value-1",
              										jsonpath: "data.conditions..hum",
              									},
              								]
              							},
              						]
              					},
              				]
              			},
              		},
              

              The main problem with this solution is that the font-size of the valueTitle and the value itself is changed.

              Or you can use custom.css to do the job:

              .MMM-ValuesByNotification .vbn .groupTitle,
              .MMM-ValuesByNotification .vbn .itemTitle,
              .MMM-ValuesByNotification .vbn .value,
              .MMM-ValuesByNotification .vbn .valueTitle {
                font-size: var(--font-size-large);
                line-height: 1;
              }
              

              In this example the font-size of all titles and the value is changed. I use the font-size-large CSS variable of the main.css for this job.

              BKeyportB 1 Reply Last reply Reply Quote 0
              • BKeyportB Offline
                BKeyport Module Developer @wishmaster270
                last edited by

                Thanks again, man. :)

                I might not have to work up my own module to get the notifications. 🤣

                The "E" in "Javascript" stands for "Easy"

                BKeyportB 1 Reply Last reply Reply Quote -1
                • BKeyportB Offline
                  BKeyport Module Developer @BKeyport
                  last edited by BKeyport

                  I’m using the example scripts in CommandToNotification using a BME280. I’m trying to keep the temperature in F to two digits, as the script or BME module is producing LONG temperature values. (76.0000000000000000000000001)

                  Using the configuration below, I’m not getting any rounding on output. The “valueFormat” is directly from your README.md.

                  		{
                  			module: "MMM-ValuesByNotification", // https://github.com/Tom-Hirschberger/MMM-ValuesByNotification
                  			position: "top_bar",
                  			config: {
                  				animationSpeed: 0,
                  				updateInterval: 15,
                  				groups: [
                  					{
                  						items: [
                  							{
                  								notification: "WEATHERLINK", 
                  								values: [
                  									{
                  										valueTitle: "Closet",
                  										valueUnit: "°F",
                  										jsonpath: "data.conditions[1].temp_in",
                  										naValue: "0",
                  									},
                  								]
                  							},
                  						]
                  					},
                  					{
                  						items: [
                  							{
                  								notification: "TEMPROOM",
                  								itemTitle: "Room",
                  								values: [
                  									{
                  										valueTitle: "Temp",
                  										valueUnit: "°F",
                  										naValue: "0",
                  										valueFormat: "Number(${value}).toFixed(2)",
                  										jsonpath: "temperature_f",
                  									},
                  								],
                  							},
                  						]
                  					}, 
                  				]
                  			},
                  		},
                  

                  The "E" in "Javascript" stands for "Easy"

                  wishmaster270W 2 Replies Last reply Reply Quote 0
                  • wishmaster270W Offline
                    wishmaster270 Module Developer @BKeyport
                    last edited by

                    @BKeyport
                    Hi,

                    that’s definitly a bug. It is related to the problem you described in the issue on github.
                    I found a fix already but i need a moment to solve it proper.
                    As a quickfix you can change line 299 in MMM-ValuesByNotification.js from

                    						value = value.replace(/(?:\r\n|\r|\n)/g, newlineReplacement)
                    

                    to

                    						value = String(value).replace(/(?:\r\n|\r|\n)/g, newlineReplacement)
                    
                    1 Reply Last reply Reply Quote 0
                    • wishmaster270W Offline
                      wishmaster270 Module Developer @BKeyport
                      last edited by

                      @BKeyport
                      Just released version 0.0.8 of the module which should fix both issues

                      BKeyportB 1 Reply Last reply Reply Quote 0
                      • BKeyportB Offline
                        BKeyport Module Developer @wishmaster270
                        last edited by

                        @wishmaster270 Submitted a pull - please tell me what you think… I didn’t update the documentation however. I figured you could handle that, as I’m a horrible documentation writer.

                        🤣🤣🤣

                        The "E" in "Javascript" stands for "Easy"

                        wishmaster270W 1 Reply Last reply Reply Quote 0
                        • 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