ラズパイに接続したタクトスイッチを押すと、その履歴をsqliteに保存しつつ、押された回数をカウントして、
htmlでwebブラウザに値を返すようなプログラムを考えております。
下記サイトを参考にしております。
https://reerishun.com/makerblog/?p=653
下記コードのように「@app.route部分」を追記し、押された回数をwebブラウザに反映しようと試みましたが、下記エラーが出力されます。
ググりましたが理解できず、このエラーの意味を教えて頂けないでしょうか。
またそもそも@app.routeを記載する場所が正しいのかも疑問です。
table writer内のどこに@app.route部分を記載するのがよろしいのでしょうか。
python
1# -*- encoding:utf-8 -*- 2from flask import Flask, render_template 3import RPi.GPIO as GPIO 4import time 5import sys 6import os 7import sqlite3 8import datetime 9# commandline argument 10args = sys.argv 11GPIO.setmode(GPIO.BCM) 12GPIO.setup(17, GPIO.IN, GPIO.PUD_DOWN) 13app = Flask(__name__) 14countup = 0 15count=0 16# table writer 17def table_wrt(): 18 # switch setup 19 GPIO.setmode(GPIO.BCM) 20 GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) 21 # connect DB 22 conn = sqlite3.connect('pushswitch.db') 23 c = conn.cursor() 24 # count variable 25 i = 0 26 # create table 27 c.execute('select count(*) from sqlite_master where type="table" and name="data"') 28 if c.fetchone() == (0,): 29 c.execute('create table data(time text)') 30 try: 31 while True: 32 if GPIO.input(17) == 1: 33 while GPIO.input(17) == 1: 34 continue 35 # get date and time 36 dt_now = datetime.datetime.now() 37 sql = 'insert into data values (?)' 38 params = (dt_now.strftime('%Y/%m/%d %H:%M:%S'),) 39 # insert table 40 c.execute(sql, params) 41 i += 1 42 print("pushed:", i, "time") 43 44 **@app.route("/") 45 def index(): 46 print(str(os.getpid()) + ": index(): count=" + str(count)) 47 return render_template("index1.html", testcount = count) 48** 49 except KeyboardInterrupt: 50 # data commit 51 conn.commit() 52 # fin 53 conn.close() 54 GPIO.cleanup() 55 sys.exit(0) 56 # data commit 57 conn.commit() 58 # fin 59 conn.close() 60 GPIO.cleanup()
<エラー内容>
pi@raspberrypi:~/dev/flask/countup5 $ python3 countupcustom.py -w
pushed: 1 time
pushed: 2 time
Traceback (most recent call last):
File "countupcustom.py", line 131, in <module>
table_wrt()
File "countupcustom.py", line 62, in table_wrt
@app.route("/")
File "/usr/lib/python3/dist-packages/flask/app.py", line 1250, in decorator
self.add_url_rule(rule, endpoint, f, **options)
File "/usr/lib/python3/dist-packages/flask/app.py", line 66, in wrapper_func
return f(self, *args, **kwargs)
File "/usr/lib/python3/dist-packages/flask/app.py", line 1221, in add_url_rule
'existing endpoint function: %s' % endpoint)
AssertionError: View function mapping is overwriting an existing endpoint function: index
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。