from bottle import route, run
import RPi.GPIO as GPIO
host = '192.168.1.40' # localは0.0.0.0
GPIO.setmode(GPIO.BCM)
led_pins = [17, 27, 22]
led_states = [0, 0, 0]
switch_pin = 23
GPIO.setup(led_pins[0], GPIO.OUT)
GPIO.setup(led_pins[1], GPIO.OUT)
GPIO.setup(led_pins[2], GPIO.OUT)
GPIO.setup(switch_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def switch_status():
state = GPIO.input(switch_pin)
if state:
return 'Up'
else:
return 'Down'
def html_for_led(led): # ボタンが押されれたら・・
l = str(led)
result = " "
return result
def update_leds(): # LEDへ出力する関数
for i, value in enumerate(led_states):
GPIO.output(led_pins[i], value)
@route('/')
@route('/') # webから送られてくるLED番号により処理
def index(led="n"):
print(led)
if led != "n":
led_num = int(led)
led_states[led_num] = not led_states[led_num]
update_leds()
response = ""
response += 'GPIO Control
'
response += 'Button=' + switch_status() + '
'
response += 'LEDs
'
response += html_for_led(0)
response += html_for_led(1)
response += html_for_led(2)
return response
try:
run(host=host, port=8080)
finally:
GPIO.cleanup()