top of page
RASPBERRY PI PYTHON CODE
import RPi.GPIO as GPIO
import time
import eeml
import os
#Connects to my Xively feed 'Raspberry Pi'
FEED = "1787313445"
API_KEY = "SAo6m7MZnZEPzCrIarFh3fyz3V2UhQ2h4AdDDDNrX5k2ZgF0"
API_URL = '/v2/feeds/{feednum}.xml' .format(feednum = FEED)
DEBUG = 1
LOGGER = 1
#use P1 header pin numbering convention
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
#Setting up of the GPIO channels
GPIO.setup(11, GPIO.IN)
GPIO.setup(13, GPIO.IN)
GPIO.setup(15, GPIO.IN)
GPIO.setup(16, GPIO.IN)
GPIO.setup(18, GPIO.IN)
GPIO.setup(19, GPIO.IN)
GPIO.setup(21, GPIO.IN)
GPIO.setup(23, GPIO.IN)
#GPIO.setup(3, GPIO.OUT) - #SC - Ground
GPIO.setup(5, GPIO.OUT) #RD
GPIO.setup(7, GPIO.OUT) #WR
GPIO.setup(8, GPIO.IN) #INTR
#infinite loop
i = 1
while i == 1:
while ( GPIO.input(8) == 1 ) :
# while intr is true
#Clocking of the ADC
time.sleep(0.0002)
GPIO.output(7, GPIO.LOW)
time.sleep(0.0002)
GPIO.output(7, GPIO.HIGH)
time.sleep(0.0002)
GPIO.output(5, GPIO.LOW)
time.sleep(0.0002)
#Inputs the 8-bit digital input
D0 = str(GPIO.input(11))
D0 = int(D0 == "True")
D0 = str(D0)
D1 = str(GPIO.input(13))
D1 = int(D1 == "True")
D1 = str(D1)
D2 = str(GPIO.input(15))
D2 = int(D2 == "True")
D2 = str(D2)
D3 = str(GPIO.input(16))
D3 = int(D3 == "True")
D3 = str(D3)
D4 = str(GPIO.input(18))
D4 = int(D4 == "True")
D4 = str(D4)
D5 = str(GPIO.input(19))
D5 = int(D5 == "True")
D5 = str(D5)
D6 = str(GPIO.input(21))
D6 = int(D6 == "True")
D6 = str(D6)
D7 = str(GPIO.input(23))
D7 = int(D7 == "True")
D7 = str(D7)
Binary_Input = D7+D6+D5+D4+D3+D2+D1+D0
print "Binary = ", Binary_Input
#Binary to decimal conversion
Decimal_input = int( Binary_Input, 2)
print "Decimal = ", Decimal_input
#Convert input into voltage equivalent
Volts = (5.0000 * Decimal_input) / 256.0000
print "Volts = ", Volts
#zero volts relative to the current is 2.5V
zero = (5.0000 * 132.0000) / 256.0000
ZeroVolts = Volts - zero
#Converting from voltage relative to the current to current
Current = ZeroVolts * 9.6000
print "Current = ", Current
#Calculating Apparent Power
power = Current * 230
print "Apparent power = ", power
#Sending data to Xively
if LOGGER:
pac = eeml.Pachube(API_URL, API_KEY)
pac.update([eeml.Data('Current', Current, unit = eeml.Unit('Ampere','basicSI','A'))])
pac.update([eeml.Data('Apparent_Power', power, unit = eeml.Unit('VoltAmpere','derivedSI','VA'))])
pac.put()
if DEBUG:
print "\n"
print "Sent to Xively"
print"\n-----------------------------------------------------"
#Sleep for 15s as to not flood xively feed and then infinite loop repeats
time.sleep(15)
bottom of page