UbiMaker
Published

Control your Raspberry Pi remotely from the Web

Control a PiFace remotely using Ubidots

Full instructions provided5,175
Control your Raspberry Pi remotely from the Web

Things used in this project

Story

Read more

Code

piface_control.py

Python
#!/usr/local/bin/python

import time, sys
import pifacedigitalio                                                                  #Library for pifacedigitalio
from ubidots import ApiClient                                                           #Library for Ubidots

try:
    pifacedigital = pifacedigitalio.PiFaceDigital()                                     #Declare piface object
except:
    print "PiFace not connected"
    sys.exit(0)

def setPin(pin, value):
    for a in value:
        if(a['value']):                                                                  
                pifacedigital.output_pins[pin].turn_on()
        else:
                pifacedigital.output_pins[pin].turn_off()

#Connect to Ubidots

try:
    print "Requesting Ubidots token"
    api = ApiClient('c7a8237e424cd1135247b46f31e2375de2e90468')                           # Replace with your Ubidots API Key here
except:
    print "No internet connection"
    sys.exit(0)

print "Getting variables"
try:
    output2_control = api.get_variable('54f64a7d7625423e08fa4b50')                         #Put here your output2 variable ID
    relay0_control = api.get_variable('54f64a9d76254241ebedf98c')                          #Put here your R0 control variable ID
    relay1_control = api.get_variable('54f64a8c762542430c970ae2')                          #Put here your R1 control variable ID
    output2_status = api.get_variable('54f64ac37625423f200e9bbf')                          #Put here your output2 status variable ID
    relay0_status = api.get_variable('54f64ad776254241364bd9fc')                           #Put here your relay0 status variable ID
    relay1_status = api.get_variable('54f64acc762542430c970afe')                           #Put here your relay1 status variable ID
    print "Connected to Ubidots"

except:
    print "No internet connection or no variables found"
    sys.exit(0)

while(True):
    # Read control variables

    lastValue0 = relay0_control.get_values(1)
    lastValue1 = relay1_control.get_values(1)
    lastValue2 = output2_control.get_values(1)

    # Set pins to the values received

    setPin(0,lastValue0)
    setPin(1,lastValue1)
    setPin(2,lastValue2)

    # Read pin status and send them to ubidots

    relay0 = pifacedigital.relays[0].value
    relay1 = pifacedigital.relays[1].value
    output2 = pifacedigital.output_pins[2].value

    relay0_status.save_value({'value':relay0})
    relay1_status.save_value({'value':relay1})
    output2_status.save_value({'value':output2})

Credits

UbiMaker
53 projects • 232 followers
Maker @ ubidots.com

Comments