• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
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-Buttons] Connect multiple buttons to send configurable notifications

Scheduled Pinned Locked Moved System
40 Posts 15 Posters 32.0k Views 14 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.
  • I Offline
    istepgueu @Mar
    last edited by Feb 6, 2017, 10:56 PM

    @Mar all is here https://forum.magicmirror.builders/topic/211/button

    ;-)

    M 1 Reply Last reply Feb 6, 2017, 11:21 PM Reply Quote 0
    • I Offline
      istepgueu @Mar
      last edited by Feb 6, 2017, 10:58 PM

      @Mar i have same problem. I run my little script button.py before start MM and its solve the problem

      M 1 Reply Last reply Feb 6, 2017, 11:20 PM Reply Quote 0
      • M Offline
        Mar @istepgueu
        last edited by Mar Feb 6, 2017, 11:35 PM Feb 6, 2017, 11:20 PM

        @istepgueu Ive taken your button.py program and modified it for me two buttons 5/6. And while the program reads my button presses perfectly, MM-Buttons doesnt at all. I pretty much have to double click each time to make a button register. It switches my profiles just fine … but just takes lots of clicks to register.

        import RPi.GPIO as GPIO
        import time
        
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP)
        GPIO.setup(6, GPIO.IN, pull_up_down=GPIO.PUD_UP)
        
        tries = 0
        
        while (tries < 200000):
            if GPIO.input(6):
                print("Open 6")
            else:
                print("Close 6")
            if GPIO.input(5):
                print("Open 5")
            else:
                print ("Close 5")
            time.sleep(0.5)
            tries = tries + 1
        
        1 Reply Last reply Reply Quote 0
        • M Offline
          Mar @istepgueu
          last edited by Mar Feb 7, 2017, 12:08 AM Feb 6, 2017, 11:21 PM

          @istepgueu Will take a look through this now, but i already have a 1k resistor between pins 5/6 and the respective button. Hopefully something else comes up here.

          Yes my problem seems a bit opposite of what was posted in your link. I dont have any erroneous button presses, it just takes a few clicks until MMM-Buttons registers the click. You button.py registers every click instantly. So must be something in the buttons code?

          1 Reply Last reply Reply Quote 0
          • J Offline
            Jopyth Moderator
            last edited by Jopyth Feb 7, 2017, 12:58 PM Feb 7, 2017, 12:58 PM

            @Mar @istepgueu The library (onoff) I am currently using does not directly allow configuring pull up and pull down resistors, and I was not able to make it consistently work (see Readme).

            Therefore I myself made use of the “right” pins for my setup, as the readme says:

            The defaults can be seen in Table 6-31 on pages 102 and 103 of the BCM2835 ARM Peripherals documentation.

            There I simply used buttons with the correct default pull-up/pull-down resistor configuration (second column of that table), and I wanted a few pins close together on the board, so I chose GPIO 22,23,24 and 25 (connected 4 buttons), since they all have the default of a low input.

            Helpful sticky: How to troubleshoot

            M 1 Reply Last reply Feb 7, 2017, 3:08 PM Reply Quote 0
            • M Offline
              Mar @Jopyth
              last edited by Feb 7, 2017, 3:08 PM

              @Jopyth Thanks for the response, and that seems to make complete sense. I missed that part in the documentation.

              Though upon trying PINS 22/23 i am still getting the same result. The button.py program detects each individual click properly, but in the MM I have to double (sometimes triple) click the button so that it registers. I can see it registers as it shows up in the pm2 logs and my profile changes.

              Im not sure if its an issue with the buttons as they are a standard 4 pin button and the test script works fine with them?

              J 1 Reply Last reply Feb 7, 2017, 4:15 PM Reply Quote 1
              • J Offline
                Jopyth Moderator @Mar
                last edited by Jopyth Feb 7, 2017, 4:16 PM Feb 7, 2017, 4:15 PM

                @Mar Well its not, as if it were documented anywhere in my readme. :( Should probably add this somewhere.

                How long are you pressing the button? For a very short time? Note, that if the press is longer than 500ms it will not be registered as a (short) press (it is the maxShortPressTime and can be configured).

                If this is not the case, I am sorry, but I have no real idea how to fix it, without having the same situation on my Pi.

                Helpful sticky: How to troubleshoot

                M 3 Replies Last reply Feb 7, 2017, 4:18 PM Reply Quote 1
                • M Offline
                  Mar @Jopyth
                  last edited by Feb 7, 2017, 4:18 PM

                  @Jopyth I thought this also, and set the short time from 0-1000ms and still will only register the second of a double click.

                  Its very consistent though, i can get it to work 100% of the time with a double click like opening a folder on the computer. one click doesnt do anything, and I don’t believe the longPress worked at all (But i wasnt using it so not that bothered with it).

                  Maybe its just the buttons…i just dont have anything else around that i could use to test as a button.

                  1 Reply Last reply Reply Quote 0
                  • M Offline
                    Mar @Jopyth
                    last edited by Feb 7, 2017, 4:26 PM

                    @Jopyth Just tested with buttons ripped out from an old monitor and same issue, needed to double click. I suppose i will slowly go through the code and try break it down and see. any advice on which functions to start with?

                    1 Reply Last reply Reply Quote 0
                    • M Offline
                      Mar @Jopyth
                      last edited by Mar Feb 7, 2017, 4:35 PM Feb 7, 2017, 4:33 PM

                      @Jopyth Fixed!! I switched the 1 and the 0 in the watchHandler function of node_helper.js and solved the issue. Must have been backwards with how the button was being interpreted vs set up?

                      Put the 0 first, then 1.

                      Now the double click makes sense, the time between the clicks seems to have been what was counted as a valid min press time.

                      1 Reply Last reply Reply Quote 1
                      • 1
                      • 2
                      • 3
                      • 4
                      • 2 / 4
                      2 / 4
                      • First post
                        11/40
                        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