조도 센서(아날로그신호)
import spidev
spi = spidev.SpiDev()
spi.open(0,0)
spi.max_speed_hz = 1000000
def analog_read(portChanner):
adc = spi.xfer2([1, (8+portChanner)<<4, 0])
data = ((adc[1]&3)<<8)+adc[2]
return data
import spidevRead as sr
import time as t
while True:
sensorValue = sr.analog_read(0)
print(sensorValue)
t.sleep(0.5)
gpio.setmode(gpio.BCM)
gpio.setup(18, gpio.OUT)
while True:
sensorValue = sr.analog_read(0)
print(sensorValue)
t.sleep(0.5)
if sensorValue <= 400:
gpio.output(18, gpio.HIGH)
t.sleep(0.5)
else:
gpio.output(18, gpio.LOW)
t.sleep(0.5)
조도센서 값을 DB에 저장
- sudo apt-get install mariadb-server
- root로 마리아DB 들어가기 : sudo mysql -u root
- 권한 만들기 : alter user 'root'@'localhost' identified by '1234';
- DB나오기 : ctrl + c
- mysql -u root -p : 만들어진 유저로 접속
- create database test;
- use test;
- create table 이름(컬럼명 INT,컬럼명 TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
- insert into 테이블 이름(컬럼명) values(값)
- 파이썬에서 사용할수 있도록
- sudo pip3 install PyMySQL
import pymysql as ps
db = ps.connect(
host = "localhost", user = "root", passwd = "1234",
db = "test", charset = "utf8"
)
curs = db.cursor()
def sensorDataInsert(s):
sql = f'insert into sensordb(sensing) values({s})'
curs.execute(sql)
db.commit()
def sensorDataSelect():
sql = 'select * from sensordb'
curs.execute(sql)
result=curs.fetchall()
return result
"""여러줄 주석
r= sensorDataSelect()
print(r)
print(len(r))
print(r[0])
print(r[0][1])
print(type(r[0][1]))
"""
url을 Flask요청 => DB => Flask => 유저
- Flask
- WSGI : 서버가 웹 어플리케이션과 통신하기위한 인터 페이스, 최소한의 기능만 제공됨
from flask import Flask, render_template
import ledCon as lc
import DBCon as dc
app = Flask(__name__)
@app.route("/")
def hello():
return render_template('main.html')
@app.route('/led/on')
def led_on():
lc.ledon()
return render_template('main.html')
@app.route('/led/off')
def led_off():
lc.ledoff()
return render_template('main.html')
@app.route('/sensor')
def getSensor():
result=dc.sensorDataSelect()
r = ','.join(map(str, result))
return r
if __name__ == '__main__' :
app.run(host='172.30.1.41'
)