Suranga Premakumara
Suranga Premakumara

Reputation: 33

PIR sensor Motion Detection count Write to Text File in python

I need to Write "pir sensor" motion detection COUNT to text file.

I tried with this code and this is work without writing to text file. when I put write to file it gives an error file = open("textFile.txt", "w") IndentationError: unindent does not matchanyouter indentation level. Expected Output is last motion count number in text file.

code is

    # Import required Python libraries
    import time
    import RPi.GPIO as GPIO
    GPIO.setmode(GPIO.BCM)
    # Define GPIO to use on Pi
    GPIO_PIR = 7
 # Set pin as input

  GPIO.setup(GPIO_PIR,GPIO.IN) 


  Current_State  = 0

Previous_State = 0

    # I put  Variable= 0 for the motion Count
 Variable= 0
       try:
               print "Waiting for PIR to settle ..."

      # Loop until PIR output is 0
      while GPIO.input(GPIO_PIR)==1:
        Current_State  = 0
           print "  Ready"
 # Loop until users quits with CTRL-C
  while True :

    # Read PIR state
    Current_State = GPIO.input(GPIO_PIR)

    if Current_State==1 and Previous_State==0:
      # PIR is triggered
      start_time=time.time()
      print "  Motion detected!"

      # here I need to write numbers for the text file.
      file = open("textFile.txt", "w")
      file.write(Variable)
      file.close()
      Variable+=1

      # Record previous state
      Previous_State=1
    elif Current_State==0 and Previous_State==1:
      # PIR has returned to ready state
      stop_time=time.time()
      print "  Ready ",
      elapsed_time=int(stop_time-start_time)
      print " (Elapsed time : " + str(elapsed_time) + " secs)"
      Previous_State=0

except KeyboardInterrupt:
  print "  Quit"
  # Reset GPIO settings
  GPIO.cleanup()

Upvotes: 1

Views: 2255

Answers (2)

glok
glok

Reputation: 1

You need to use a string with file.write, here is an example:

file = open("textfile.txt", "rw+") 
file.write(str(Variable))
file.close()

Upvotes: 0

sonny
sonny

Reputation: 191

import RPi.GPIO as GPIO
import time

# Use BCM GPIO references
# instead of physical pin numbers
GPIO.setmode(GPIO.BCM)

# Define GPIO to use on Pi
GPIO_PIR = 7

print "PIR Module Test (CTRL-C to exit)"

# Set pin as input
GPIO.setup(GPIO_PIR,GPIO.IN)      # Echo

Current_State  = 0
Previous_State = 0
Variable=0 

try:

  print "Waiting for PIR to settle ..."

  # Loop until PIR output is 0
  while GPIO.input(GPIO_PIR)==1:
    Current_State  = 0    

  print "  Ready"    

  # Loop until users quits with CTRL-C
  while True :

    # Read PIR state
    Current_State = GPIO.input(GPIO_PIR)

    if Current_State==1 and Previous_State==0:
      # PIR is triggered
      print "  Motion detected!"
      # Record previous state
      Previous_State=1
      file = open("textFile.txt", "w")
      file.write(Variable)
      file.close()
      Variable+=1
    elif Current_State==0 and Previous_State==1:
      # PIR has returned to ready state
      print "  Ready"
      Previous_State=0

    # Wait for 10 milliseconds
    time.sleep(0.01)      

except KeyboardInterrupt:
  print "  Quit"
  # Reset GPIO settings

This is my friend's code. (I believe nothing is wrong with your code but a few Indentation Error(e.g. spacing Error) For that you can use some sort of text editor (I use sublime text)

Upvotes: 1

Related Questions