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-Navigate, Navigation inside MagicMirror with Rotary Encoder

    Scheduled Pinned Locked Moved System
    45 Posts 6 Posters 21.8k Views 5 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.
    • K Offline
      keineAhnung123
      last edited by

      Hello @AxLed , thanks for your reply

      first

      • rotation works fine but the button press does not
      • i use your standard configuration so it seems to be BCM 19
      • PI 3 B+, stretch, MM 2.14.0

      I tried MMM-Buttons too. Same problem there. I first have to run a sample script with python and after that the button works in MM too. It uses the onoff library too.

      I found a strange behaviour:
      I start MM -> button click doesnt work
      I start python test script and after that MM -> button click works
      When i restart the Raspberry PI and start MM (without the python test script) -> button click works
      When i shutdown the Raspberry PI and cut off the connection to an electricity source and restart the PI after that -> button click doesnt work

      Thats strange isnt it?

      second

      I changed the hiding time from 10000 to 2000 cause i prefer a shorter time.
      Is there a way to start the module hidden?
      I tried following:

          // Define start sequence.
      
          start: function() {
      
              Log.info("Starting module: " + this.name);
      
              this.sendConfig();//pass config to node_helper.js
      
              this.hide();
      
          },
      

      and this

          //Helper, to use module without Rotary Encoder and without GPIO Pins, like developing in Pixel VM
      
          notificationReceived: function(notification, payload) {
      
              if(notification === "CW" || notification === "CCW" || notification === "PRESSED"){
      
                  this.naviaction({inputtype: ""+ notification +""});
      
              }
      
              if(notification === "SHELLCOMMAND"){
      
                   this.sendSocketNotification(notification, payload);
      
              } 
      
              if(notification === "MODULE_DOM_CREATED"){
      
                   this.hide();
      
              }
      
          },
      

      but both didnt take effect :(

      third

      I found an reproducable error:
      When i start MM and first rotate counterclockwise there is an error in the MM console:

      [09.01.2021 09:11.07.337] [LOG]   MMM-Navigate, listen on GPIO PINs (BCM): 26,20,19
      
      [09.01.2021 09:11.18.306] [ERROR] Whoops! There was an uncaught exception...
      [09.01.2021 09:11.18.321] [ERROR] ReferenceError: lastdir is not defined
          at tick (/home/pi/MagicMirror/modules/MMM-Navigate/node_helper.js:92:39)
          at /home/pi/MagicMirror/modules/MMM-Navigate/node_helper.js:66:4
          at /home/pi/MagicMirror/modules/MMM-Navigate/node_modules/onoff/onoff.js:135:9
          at Array.forEach (<anonymous>)
          at pollerEventHandler (/home/pi/MagicMirror/modules/MMM-Navigate/node_modules/onoff/onoff.js:134:32)
      

      It doesnt effect the functionality but just wanted to mention it… ;)

      1 Reply Last reply Reply Quote 0
      • A Offline
        AxLed Module Developer
        last edited by

        @keineAhnung123,

        thanks for feedback.
        first:
        Idea A:

        • maybe the pin 19 is the problem, because it is not only a GPIO pin rather it has SPI features. Can you change to BCM16 (and change it in config.js as well) and try it?

        Idea B:

        • Do you use capacitors for debouncing? If not, you can change debouncing value of following line: https://github.com/Ax-LED/MMM-Navigate/blob/master/node_helper.js#L37

        second:

        • Which module should start hidden? MMM-Navigate?

        third:
        I tried to reproduce on my pi 3 and get no error, so i checked the code.
        You can add following line as new line 19 in node_helper.js
        var lastdir = '';

        AxLED

        1 Reply Last reply Reply Quote 0
        • K Offline
          keineAhnung123
          last edited by

          @AxLed
          I will try that later. Thanks
          And yes, i want to start MMM-Navigate hidden. Is that possible?

          1 Reply Last reply Reply Quote 0
          • A Offline
            AxLed Module Developer
            last edited by

            @keineAhnung123 ,

            informations to your second issue:
            Your request is not provided by MMM-Navigate, maybe it is possible with one of the following modules (untested):

            • MMM-ModuleScheduler
            • MMM-ModuleToggle

            AxLED

            1 Reply Last reply Reply Quote 0
            • K Offline
              keineAhnung123
              last edited by

              Hello @AxLed

              first

              • Idea A: didnt solve the problem. Still no click
              • Idea B: I tried capacitors and software debouncing. Still no click

              I will use this python script to get the click working:

              import RPi.GPIO as GPIO
              GPIO.setmode(GPIO.BCM)
              BUTTON_PIN = 16
              GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)
              

              and start it within node_helper.js:

              var child_process = require('child_process');
              
              module.exports = NodeHelper.create({
              	// Subclass start method.
                start: function() {
              		var self = this;
              		this.loaded = false;
              		this.createRoutes();
              		child_process.execFile('python', ['/home/pi/MagicMirror/modules/MMM-Navigate/ky-040-initialisieren.py']);
              	},
              

              Now it works.

              Btw: In intializeRotary-function (node_helper.js) there ist a CLK and DT.read and also a CLK and DT.watch instruction. For the SW there is only a SW.watch but not a read instruction. Is that right? Just wanted to mention. Im not an expert in programming.

              third
              Yes, the error is gone :)

              1 Reply Last reply Reply Quote 0
              • A Offline
                AxLed Module Developer
                last edited by

                @keineAhnung123 ,

                thanks for your patience.
                to first:
                it seems to be something with the pullup / pulldown resistors, see also https://github.com/fivdi/onoff#configuring-pullup-and-pulldown-resistors
                See also the new “gpio” config command (https://www.raspberrypi.org/forums/viewtopic.php?f=117&t=208748)
                So here is another idea, can you try (based on informations mentione above):

                • (i suppose your SW pin is 16)
                • add following line in /boot/config.txt
                  gpio=16=ip,pu
                  Meaning: sets your GPIO 16 as input (ip) and pull up (pu)
                • if this doesnt work try:
                  gpio=16=ip,pd
                  Meaning: sets your GPIO 16 as input (ip) and pull down (pd)

                Maybe this way MMM-Navigate works without the python script.

                To SW.watch you mentioned, this is ok, as i dont need to know the initial state of SW.

                to third:

                • i added the line in node_helper.js in the github repo.

                Regards

                AxLED

                1 Reply Last reply Reply Quote 0
                • K Offline
                  keineAhnung123
                  last edited by

                  @AxLed Now it works with gpio=16=ip,pu
                  Do the changes in boot.txt affect the Raspberry Pi in any way i have to know?

                  Thanks a lot so far :)

                  1 Reply Last reply Reply Quote 0
                  • A Offline
                    AxLed Module Developer
                    last edited by AxLed

                    @keineAhnung123,

                    great to hear it works, i will update the readme at github.
                    The line in config.txt only tells the pi at boottime, that GPIO16 is set to input and the internal resistor is set to pullup. So there is nothing else to know unless you change your GPIO Pins for something else.
                    @Eisblume maybe this is a solution for your issue.

                    AxLED

                    R 1 Reply Last reply Reply Quote 0
                    • R Offline
                      robiv8 @AxLed
                      last edited by

                      @AxLed
                      also a great modul from you :-)

                      I have tested and works fine. Two questions.

                      When I press any selection, the module disappears.
                      It fades out and the module below it jumps up. Why?

                      Is it possible to control the MMM-Dreambox module with it? That would be great, of course.

                      Thanks in advance

                      1 Reply Last reply Reply Quote 0
                      • A Offline
                        AxLed Module Developer
                        last edited by

                        @robiv8

                        the modul MMM-Navigate disappears by design. If it is faded out and you use rotary or button it comes back on (fades in).

                        Yes MMM-Dreambox can be controlled bei MMM-Navigate, see https://github.com/Ax-LED/MMM-Dreambox#further-options

                        AxLED

                        R 1 Reply Last reply Reply Quote 0
                        • 1
                        • 2
                        • 3
                        • 4
                        • 5
                        • 3 / 5
                        • 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