Example #1
0
def api_leds_control(color):
    if request.method == "POST":
        if color in LEDS:
            mod = (int(request.data.get("state")) + 1) % 2
            GPIO.output(LEDS[color], int(request.data.get("state")))
            time.sleep(0.2)
            GPIO.output(LEDS[color], int(mod))

    return {color: GPIO.input(LEDS[color])}
Example #2
0
def fan_switch(state):
    """
    Switch fan ON or OFF
    """

    try:
        fan_state = int(GPIO.input(PIN))
        # Check if fan is already in the desired state
        if fan_state != state:
            GPIO.output(PIN, state)
    except Exception as gpio_err:
        logging.error('GPIO exception: %s', gpio_err)
Example #3
0
 def do_GET(self):
     global led_state
     # pylint: disable=invalid-name
     """
     Called when a GET request is made
     """
     if self.path == "/on":
         GPIO.output(LED_PIN, GPIO.HIGH)
         led_state = True
         self.send_response(200)
         self.end_headers()
         mqttc.publish(MQTT_STATE, payload=MQTT_ON, retain=True)
     elif self.path == "/off":
         GPIO.output(LED_PIN, GPIO.LOW)
         led_state = False
         self.send_response(200)
         self.end_headers()
         mqttc.publish(MQTT_STATE, payload=MQTT_OFF, retain=True)
     elif self.path == "/toggle":
         if led_state:
             GPIO.output(LED_PIN, GPIO.LOW)
             led_state = False
         else:
             GPIO.output(LED_PIN, GPIO.HIGH)
             led_state = True
         self.send_response(200)
         self.end_headers()
         mqttc.publish(MQTT_STATE, payload=(MQTT_ON if led_state else MQTT_OFF), retain=True)
     elif self.path == "/status":
         self.send_response(200)
         self.send_header('Content-Type', 'application/json')
         self.end_headers()
         json_str = json.dumps({"led": led_state})
         self.wfile.write(json_str.encode(encoding='utf_8'))
Example #4
0
 def run(self):
     global led_state
     """
     Infinite loop waiting on button presses
     """
     print("Starting button thread")
     while True:
         while GPIO.input(BUTTON_PIN) == HIGH:
             time.sleep(0.01)  # wait 10 ms to give CPU chance to do other things
         print("Button Pressed")
         if led_state:
             GPIO.output(LED_PIN, GPIO.LOW)
             led_state = False
         else:
             GPIO.output(LED_PIN, GPIO.HIGH)
             led_state = True
         mqttc.publish(MQTT_STATE, payload=(MQTT_ON if led_state else MQTT_OFF), retain=True)
         while GPIO.input(BUTTON_PIN) == LOW:
             time.sleep(0.01)  # wait 10 ms to give CPU chance to do other things
         print("Button Released")
     print("Exiting button thread")
Example #5
0
def mqtt_on_message(client, userdata, msg):
    """
    Handle commands coming in through MQTT
    """
    global led_state
    # pylint: disable=unused-argument
    print("MQTT Command Received")
    print("MQTT Command:" +msg.topic+" "+msg.payload.decode())
    if msg.payload.decode() == MQTT_ON:
        GPIO.output(LED_PIN, GPIO.HIGH)
        led_state = True
        mqttc.publish(MQTT_STATE, payload=MQTT_ON, retain=True)
    elif msg.payload.decode() == MQTT_OFF:
        GPIO.output(LED_PIN, GPIO.LOW)
        led_state = False
        mqttc.publish(MQTT_STATE, payload=MQTT_OFF, retain=True)
    elif msg.payload.decode() == MQTT_TOGGLE:
        if led_state:
            GPIO.output(LED_PIN, GPIO.LOW)
            led_state = False
        else:
            GPIO.output(LED_PIN, GPIO.HIGH)
            led_state = True
        mqttc.publish(MQTT_STATE, payload=(MQTT_ON if led_state else MQTT_OFF), retain=True)
Example #6
0
var_gpio_in = 81

# GPIO Setup
GPIO.setwarnings(True)
GPIO.setmode(GPIO.ROCK)
GPIO.setup(var_gpio_out, GPIO.OUT, initial=GPIO.HIGH)       # Set up GPIO as an output, with an initial state of HIGH
GPIO.setup(var_gpio_in, GPIO.IN, pull_up_down=GPIO.PUD_UP)  # Set up GPIO as an input, pullup enabled

# Test Output
print("")
print("Testing GPIO Input/Output:")

var_gpio_state = GPIO.input(var_gpio_out)                   # Return state of GPIO
print("Output State : " + str(var_gpio_state))              # Print results
sleep(1)
GPIO.output(var_gpio_out, GPIO.LOW)                         # Set GPIO to LOW

# Test PWM Output
p=GPIO.PWM(var_gpio_out, 60)                                # Create PWM object/instance

print("")
print("Testing PWM Output - DutyCycle - High Precision:")
print("60Hz at 50% duty cycle for 1 second")
p.start(50)
sleep(1)
print("60Hz at 25% duty cycle for 1 second")
p.ChangeDutyCycle(25)
sleep(1)
print("60Hz at 10% duty cycle for 1 second")
p.ChangeDutyCycle(10)
sleep(1)
Example #7
0
# The RockPro version of the library seems to return strings not ints - is this
# intended behavior?
HIGH = "1"
LOW = "0"

#LED_PIN = 27
#BUTTON_PIN = 4
LED_PIN = 16
BUTTON_PIN = 13

GPIO.setmode(GPIO.BOARD)
GPIO.setrock('ROCKPRO64')
GPIO.setwarnings(False);

GPIO.setup(LED_PIN, GPIO.OUT)
GPIO.output(LED_PIN, GPIO.LOW)
led_state = False

time.sleep(1)

GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)

class MyHandlerForHTTP(BaseHTTPRequestHandler):
    """
    Handler for HTTP messages
    """
    def do_GET(self):
        global led_state
        # pylint: disable=invalid-name
        """
        Called when a GET request is made
Example #8
0
#!/usr/bin/env python

# Allison Creely, 2018, LGPLv3 License
# Rock 64 GPIO Library for Python

import R64.GPIO as GPIO
from time import sleep

# Set Variables
var_gpio_out = 16

# GPIO Setup
GPIO.setwarnings(True)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(var_gpio_out, GPIO.OUT, initial=GPIO.HIGH
           )  # Set up GPIO as an output, with an initial state of HIGH

# Test Output
print("")
print("Testing GPIO Input/Output:")

while True:
    print("On")
    GPIO.output(var_gpio_out, GPIO.HIGH)
    sleep(1)
    print("Off")
    GPIO.output(var_gpio_out, GPIO.LOW)
    sleep(1)
Example #9
0
def Blink_LED():
	GPIO.output(LED, GPIO.LOW)
	time.sleep(0.2)
	GPIO.output(LED, GPIO.HIGH)
Example #10
0
# Tell the script if this is running on a ROCK64 or ROCKPRO64
GPIO.setrock("ROCK64")

# Setup 
GPIO.setup(PCB, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(RESET, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(POWER, GPIO.IN)
GPIO.setup(LED, GPIO.OUT)
GPIO.setup(FAN, GPIO.OUT)
IGNORE_PWR_OFF = False
if(GPIO.input(POWER) == "0"):
	# System was started with power switch off
	IGNORE_PWR_OFF = True

# Turn on LED AND FAN
GPIO.output(LED, GPIO.HIGH)
GPIO.output(FAN, GPIO.HIGH)

# Function that blinks LED once when button press is detected
def Blink_LED():
	GPIO.output(LED, GPIO.LOW)
	time.sleep(0.2)
	GPIO.output(LED, GPIO.HIGH)
			
# Monitor for Inputs
while True:
	if(GPIO.input(PCB) == "0"):
		if(GPIO.input(RESET) == "0"):
			print("Rebooting...")
			Blink_LED()
			os.system("reboot")
Example #11
0
from time import sleep

print("Output Test R64.GPIO Module...")

# Set Variables
var_gpio_out = 36 # Pin 16 - 148 is Pin 8, 149 is Pin 18
#var_gpio_in = 18


# GPIO Setup
GPIO.setwarnings(True)
GPIO.setmode(GPIO.ROCK)
GPIO.setup(var_gpio_out, GPIO.OUT, initial=GPIO.HIGH)       # Set up GPIO as an output, with an initial state of HIGH
#GPIO.setup(var_gpio_in, GPIO.IN, pull_up_down=GPIO.PUD_UP)  # Set up GPIO as an input, pullup enabled

# Test Output
print("")
print("Testing GPIO Input/Output:")

while True:
        var_gpio_state = GPIO.input(var_gpio_out)       # Return State of GPIO
        print("Output State: " + str(var_gpio_state))
        if var_gpio_state == 1:
                GPIO.output(var_gpio_out,0)                         # Set GPIO to LOW
                print("Turning off")              # Print results
        else:
                GPIO.output(var_gpio_out,1)                         # Set GPIO to LOW
                print("Turning on")
        sleep(1.0)
exit()