Skip to content

Instantly share code, notes, and snippets.

@liamcottle
Last active October 22, 2024 22:14
Show Gist options
  • Save liamcottle/13eac359195d6976e0fc7d7c2c186bec to your computer and use it in GitHub Desktop.
Save liamcottle/13eac359195d6976e0fc7d7c2c186bec to your computer and use it in GitHub Desktop.
Raspberry Pi Pico - WiFi Controlled Relays
from machine import Pin
from phew import server, connect_to_wifi
# define relays
relays = {
1: machine.Pin(1, machine.Pin.OUT),
2: machine.Pin(2, machine.Pin.OUT),
3: machine.Pin(3, machine.Pin.OUT),
4: machine.Pin(4, machine.Pin.OUT),
5: machine.Pin(5, machine.Pin.OUT),
6: machine.Pin(6, machine.Pin.OUT),
7: machine.Pin(7, machine.Pin.OUT),
8: machine.Pin(8, machine.Pin.OUT),
}
# function to turn on or off relay
def set_relay_state(pin, turn_on):
if turn_on:
relays[pin].low()
else:
relays[pin].high()
# turn off all relays by default
set_relay_state(1, False)
set_relay_state(2, False)
set_relay_state(3, False)
set_relay_state(4, False)
set_relay_state(5, False)
set_relay_state(6, False)
set_relay_state(7, False)
set_relay_state(8, False)
# connect to wifi
print("Connecting to WiFi")
wifi_result = connect_to_wifi("ssid", "password")
print(wifi_result)
# define api route
@server.route("/set-relay-state", methods=["GET"])
def api_set_relay_state(request):
set_relay_state(1, request.query.get("1") == "1")
set_relay_state(2, request.query.get("2") == "1")
set_relay_state(3, request.query.get("3") == "1")
set_relay_state(4, request.query.get("4") == "1")
set_relay_state(5, request.query.get("5") == "1")
set_relay_state(6, request.query.get("6") == "1")
set_relay_state(7, request.query.get("7") == "1")
set_relay_state(8, request.query.get("8") == "1")
return "ok"
# respond to unknown routes
@server.catchall()
def catchall(request):
return "API Usage: /set-relay-state?1=1&2=0", 404
# run the http server
server.run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment