スマートフォンでLEDを光らすor消すがしたい
ラズベリーパイゼロWを用いてiotしたいので、簡単にできるツールを探した結果bottleにたどりつき、HelloWorldはできました。
しかし、JavaScriptの実装やボタンの配置などをしようとコードを書いて表示させようとしたときに以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
n 127.0.0.1 - - [29/Aug/2019 15:46:08] "GET / HTTP/1.1" 200 291 favicon.ico Traceback (most recenr call last): File "/usr/lib/python2.7/dist-packages/bottle.py", line 862, in _handle return route.call(**args) File "/usr/lib/python2.7/dist-packages/bottle.py", line 1740, in wrapper rv = callback(*a, **ka) File "/home/pi/Documents/controlLED_on_web.py", line 37, in index led_num = int(led) ValueError: invalid literal for int() with base 19: 'favicon.ico' 127.0.0.1 - - [29/Aug/2019 15:46:12] "GET /favicon.ico HTTP/1.1" 500 745
該当のソースコード
Python
1from bottle import route, run 2import RPi.GPIO as GPIO 3 4host = '192.168.1.8' 5 6GPIO.setmode(GPIO.BCM) 7led_pins = [2, 4, 5] 8led_states = [0, 0, 0] 9switch_pin = 17 10 11GPIO.setup(led_pins[0], GPIO.OUT) 12GPIO.setup(led_pins[1], GPIO.OUT) 13GPIO.setup(led_pins[2], GPIO.OUT) 14GPIO.setup(switch_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) 15 16def switch_status(): 17 state = GPIO.input(switch_pin) 18 if state: 19 return 'Up' 20 else: 21 return 'Down' 22 23def html_for_led(led): 24 l = str(led) 25 result = " <input type='button' onClick='changed(" + l + ")' value='LED " + l + "'/>" 26 return result 27 28def update_leds(): 29 for i, value in enumerate(led_states): 30 GPIO.output(led_pins[i], value) 31 32@route('/') 33@route('/<led>') 34def index(led="n"): 35 print(led) 36 if led != "n": 37 led_num = int(led) 38 led_states[led_num] = not led_states[led_num] 39 update_leds() 40 response = "<script>" 41 response += "function changed(led)" 42 response += "{" 43 response += " window.location.href='/' + led" 44 response += "}" 45 response += "</script>" 46 47 response += '<h1>GPIO Control</h1>' 48 response += '<h2>Button=' + switch_status() + '</h2>' 49 response += '<h2>LEDs</h2>' 50 response += html_for_led(0) 51 response += html_for_led(1) 52 response += html_for_led(2) 53 return response 54 55run(host='0.0.0.0', port=80) 56
試したこと
favicon.icoと書いてあったため https://www.favicon.cc/?action=icon&file_id=14586 のアイコンをダウンロードし上記の@route('/')の下に下記のコードを書いてみたりしました(変数の型が違うみたいなことを言われたためやめた)。どうにかしてfavicon.icoを送れればいいと思ってますがあってますか?
@route('/favicon.ico') def favcon(): fav=None return fav('favicon.ico', root='./static')
またこのサイトを見て.icoが送れそうなところを抜粋して書いたりしました。
補足情報(FW/ツールのバージョンなど)
使っているラズベリーパイはRasPizeroWでアプリはPython3(IDLE)です。
なお、python-bottleのバージョンが古いのかと思いコマンドでインストールするやつをやったところ最新のやつでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/08/29 09:45
2019/08/29 09:52 編集
2019/08/29 09:52
退会済みユーザー
2019/08/29 10:07
退会済みユーザー
2019/08/29 10:17
2019/08/29 11:01 編集
退会済みユーザー
2019/08/29 14:10