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.

    working module Raspberry Pi 4 and PIR?

    Scheduled Pinned Locked Moved Forum
    13 Posts 8 Posters 3.9k Views 8 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.
    • bugsounetB Offline
      bugsounet Banned @sdetweil
      last edited by

      @sdetweil because I’m kind ;)

      I purpose to try this

      Work with rpi 3a -> rpi 4
      (not tested with rpi < 3a)
      tested OS : Buster and Bulleyes

      My actual config is:
      ce5e8b4f-7673-489e-8d5c-876dec5e6954-image.png

      My actual modules and plugins are:
      8037b242-a4ae-43b2-8c2e-89c7af1de8de-image.png

      And works since 116 days on Bulleyes with an RPI 4 ;)

      1 Reply Last reply Reply Quote 0
      • H Offline
        hpgraphia @DariBer
        last edited by

        @DariBer

        https://github.com/paviro/MMM-PIR-Sensor
        I’m using it with raspi zero W with sensor and works great

        D 1 Reply Last reply Reply Quote 0
        • D Offline
          DariBer @hpgraphia
          last edited by

          @hpgraphia

          how does your config.js file look like for that module?
          Would you be kind and show it?

          1 Reply Last reply Reply Quote 0
          • E Offline
            eracerhead
            last edited by

            I’ve done this by putting a relay directly in the backlight circuit. Connect the PIR to 5V and a gpio pin, and the relay to 5V and another GPIO pin. Use wiring pi and a simple bash script to get the state of the PIR and energize/de-energize the relay appropriately. It’s really simpler than it sounds and requires little to no knowledge of electronics.

            You need to first install wiring-pi

            sudo wget https://project-downloads.drogon.net/wiringpi-latest.deb
            sudo dpkg -i wiringpi-latest.deb
            
            

            Here’t the script I run at startup to control it - works great.

            #!/bin/bash
            #
            # Runs in the background to switch backlight on or off
            # depending upon the state of the PIR motion sensor.   
            #
            # Usage: nohup backlightd [-r|-f] 0<&- &>/dev/null &
            # 	-r log on loghost
            #	-f log locally (default)
            #
            # Set as configured
            PIR=18		# GPIO BCM number of PIR sensor
            BACKL=15	# GPIO BCM number of backlight relay
            OFF_DEL=60	# Minimum number of seconds to keep backlight om
            ON_DEL=2	# Minimum number of seconds to keep backlight off
            TIMO=3600	# Maximum number of seconds to wait for edge event
            #
            # Set for local policies
            PRIO=local.info 		# if using rsyslog set priority
            TAG=backlightd			# and tag to use on loghost
            LOGFILE=/var/log/backlightd.log	# if using local syslog file
            
            PATH=/bin:/usr/bin
            
            # error handling
            xit() { rlog "Line $1 Err $2 - $3  - exiting"; exit "$2"; }
            die() { rlog "Exit signal received - exiting"; exit 0; }
            
            # logging
            case $1 in
            	-r) rlog() { /usr/bin/logger -p "${PRIO}" -t "${TAG}" "$1"; } ;;
            	 *) rlog() { /bin/echo "$1" >>"${LOGFILE}" ; } ;;
            esac
            
            cd / || xit $LINENO $? "Cannot cd to / ?!?"
            
            reset(){
            	# reset gpio pins, set initial conditions
            	gpio edge "$PIR" both \
            		|| xit $LINENO $? "Cannot set edge GPIO$PIR"
            	gpio export "$BACKL" out \
            		|| xit $LINENO $? "Cannot set export GPIO$BACKL"
            	PIR_STATE=$(gpio -g read "$PIR") \
            		|| xit $LINENO $? "Cannot read GPIO$PIR"
            	gpio -g write "$BACKL" "$PIR_STATE" \
            		|| xit $LINENO $? "Cannot write to GPIO$BACKL"
            }
            
            trap reset SIGUSR1
            trap die   SIGTERM 
            
            reset
            
            while true
            do
            	timeout "$TIMO" gpio -g wfi "$PIR" both ; STAT=$?
            	if [ "$STAT" -eq 124 ]; then
            		rlog "gpio wfi timed out after ${TIMO}s - respawning" 
            		STAT=0
            	fi
            	[ "$STAT" ] || xit $LINENO $STAT "gpio wfi terminated abnormally"
            	PIR_STATE=$(gpio -g read "$PIR") \
            		|| xit $LINENO $? "Cannot read GPIO$PIR"
            	gpio -g write "$BACKL" "$PIR_STATE" \
            		|| xit $LINENO $? "Cannot write GPIO$PIR"
            	if [ "$PIR_STATE"  ]
            		then sleep "$ON_DEL" 
            		else sleep "$OFF_DEL"
            	fi
            done
            
            
            1 Reply Last reply Reply Quote 0
            • pugslyP Offline
              pugsly @DariBer
              last edited by

              @DariBer Please see this document… this is how I use my PIR to turn off the screen when no one is in front of it.

              https://www.thedigitalpictureframe.com/pir-motion-sensor-raspberry-pi-digital-picture-frame/

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