Navigation

    MagicMirror Forum

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • Donate
    • Discord

    Debugging

    Development
    7
    22
    12648
    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.
    • E
      Eunanibus Module Developer last edited by

      Hi all,

      I’m trying to develop a new module to contribute to the community.

      My question is, I’m trying to develop this thing, and apart from blindly running the npm and seeing the results, I don’t have much in a method of debugging. Does anyone have a technique here to debug whilst running?

      Also, my function requires a height and width to be set; But I’m not seeing anything in any of the other examples where a height and width is set.

      1 Reply Last reply Reply Quote 1
      • KirAsh4
        KirAsh4 Moderator last edited by

        For debugging purposes, I sprinkle 'Log.log("...")' statements in my code which I can then see in the console log. For example, in my calendar_monthly module, I have a 'debugging'flag that I can set which then outputs this bit in the console log:

        = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
        CALENDAR_MONTHLY IS IN DEBUG MODE!
        Remove 'debugging' option from config/config.js to disable.
                     Current moment(): 1466399977889 (11:19:37 pm)
        scheduleUpdate() delay set at: 1466402400000
          nextReload should happen at: 1466402400000 (12:00:00 am)
                          which is in: 40 minutes and 22 seconds.
                      midnight set at: 1466402400000 (12:00:00 am)
        = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
        

        That output helped a great deal when I needed to accurately calculate those values (and I couldn’t figure out why the delay I was setting wasn’t right.)

        Having log notifications like that helps. I tend to put them in places where I need to check for a value, or verify that a condition is being met, before the rest of the code continues on. It’s worth nothing that I load the running mirror remotely on my development desktop machine (through Chrome or Firefox) by going to my rpi’s IP and MM’s port. I don’t touch the actual running task on the rpi itself, once loaded, I leave it alone. When I make a change in the code, I can refresh my browser and see the results immediately without affecting the mirror itself. It’s not till I’m certain the code works that I will restart the npm process on the mirror. This has the added advantage that I can see the current running code on the mirror and compare it with what the new/changed code shows on my remote browser.

        As for the height/width part, those are being set in the main CSS file. Because it’s a fluid layout, there is no exact numbers, it’s all calculated at run-time based on the monitor’s resolution. So you’ll have to use the main layout “box” for the position that your module will be in, and then work within that. Setting fixed sizes will cause problems later down the road with folks who don’t have the same resolution as you.

        1 Reply Last reply Reply Quote 1
        • E
          Eunanibus Module Developer last edited by

          That makes sense. So then I guess I have 2 questions leading on from that:

          1. I’m attempting to create a dynamic 3d model but I need a height and width. Is there any way to retrieve the rendered height and width at runtime based on the resolution?

          2. Using a browser to go to the rip’s IP via the MM port sounds useful. How do I retrieve the rip’s IP/MM port?

          thanks again for the response

          1 Reply Last reply Reply Quote 0
          • KirAsh4
            KirAsh4 Moderator last edited by

            1. Nope, or unknown rather.
            2. Check your router for the IP of the devices connected to it, or on the rpi, type ifconfig at the prompt. If you’re connected wirelessly, look for the wlan0 block. If it’s hard wired, look for the eth0 block.

            And if you have access to your router, it’s worth setting the rpi’s IP to always be the same.

            1 Reply Last reply Reply Quote 0
            • E
              Eunanibus Module Developer last edited by

              Darn. That makes things a little more difficult.

              Any advice on how to approach that then? Since I have a dynamic 3D object that needs a rendering size to construct.

              I can keep it at a static size, allow config files to set it?.. Small, medium and large I guess?

              1 Reply Last reply Reply Quote 0
              • KirAsh4
                KirAsh4 Moderator last edited by

                This might help you: http://www.w3schools.com/jsref/prop_element_offsetwidth.asp

                1 Reply Last reply Reply Quote 0
                • KirAsh4
                  KirAsh4 Moderator last edited by

                  Or if you wish to run your module with jQuery, using .width() and .height() will also give you the size of the element.

                  1 Reply Last reply Reply Quote 0
                  • E
                    Eunanibus Module Developer last edited by

                    Thanks for your response. I’m still working on it (and something else for another member) - I’m still having trouble accessing/finding a log. For the most part, right now, I’m running the npm from my computer directly and using the electron app there.

                    I’m not able to find any log file, or any tool that allows me to debug in real-time. Because of the nature of this app and the modules, it becomes a little more complex than just following instructions that I’ve seen/Any advice?

                    1 Reply Last reply Reply Quote 0
                    • KirAsh4
                      KirAsh4 Moderator last edited by

                      I guess I’m not sure what you mean with ‘real-time debugging’ as there is no real-time anything between the node server and the browser. Everything runs on the browser end, and because of that, you can open the console window and watch what’s happening, in as ‘real-time’ as possible. I’m also not sure what exactly you are trying to debug.

                      As I explained before, when I’m writing code, I watch the console log for errors. I simply refresh the browser when I need to check for things. Remember, I don’t use the actual Raspberry Pi nor the monitor connected to it to debug. I load up the mirror on a regular browser on my computer and debug there. I also write code there.

                      Hrm, it dawned on me that I should explain better how I’m doing this …

                      1 Reply Last reply Reply Quote 0
                      • E
                        Eunanibus Module Developer last edited by

                        Even when writing console.log(’ ') nothing appears in the terminal, so I just assumed it was logging elsewhere.

                        How are you accessing it via your browser?

                        1 Reply Last reply Reply Quote 0
                        • 1
                        • 2
                        • 3
                        • 1 / 3
                        • First post
                          Last post
                        Enjoying MagicMirror? Please consider a donation!
                        MagicMirror created by Michael Teeuw.
                        Forum managed by Paul-Vincent Roll and Rodrigo Ramírez Norambuena.
                        This forum is using NodeBB as its core | Contributors
                        Contact | Privacy Policy