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])}
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)
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'))
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")
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)
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)
# 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
#!/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)
def Blink_LED(): GPIO.output(LED, GPIO.LOW) time.sleep(0.2) GPIO.output(LED, GPIO.HIGH)
# 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")
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()