import sqlite3
from flask import Flask, jsonify, request
app = Flask(__name__)
DB = "smart_home.db"
def init_db():
conn = sqlite3.connect(DB)
cur = conn.cursor()
cur.execute("""
CREATE TABLE IF NOT EXISTS devices(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
type TEXT,
state TEXT
)
""")
conn.commit()
conn.close()
def add_device(name, dtype):
conn = sqlite3.connect(DB)
cur = conn.cursor()
cur.execute(
"INSERT INTO devices(name,type,state) VALUES(?,?,?)",
(name, dtype, "OFF")
)
conn.commit()
conn.close()
def get_devices():
conn = sqlite3.connect(DB)
cur = conn.cursor()
cur.execute("SELECT * FROM devices")
rows = cur.fetchall()
conn.close()
return rows
def set_state(device_id, state):
conn = sqlite3.connect(DB)
cur = conn.cursor()
cur.execute(
"UPDATE devices SET state=? WHERE id=?",
(state, device_id)
)
conn.commit()
conn.close()
@app.route("/")
def home():
devices = []
for d in get_devices():
devices.append({
"id": d[0],
"name": d[1],
"type": d[2],
"state": d[3]
})
return jsonify(devices)
@app.route("/device/add", methods=["POST"])
def device_add():
data = request.json
add_device(
data["name"],
data["type"]
)
return {"status": "ok"}
@app.route("/device/<int:device_id>/on")
def turn_on(device_id):
set_state(device_id, "ON")
return {"status": "ON"}
@app.route("/device/<int:device_id>/off")
def turn_off(device_id):
set_state(device_id, "OFF")
return {"status": "OFF"}
if __name__ == "__main__":
init_db()
if len(get_devices()) == 0:
add_device("Nappali lámpa", "light")
add_device("Hálószoba lámpa", "light")
add_device("Kazán", "heater")
app.run(
host="0.0.0.0",
port=8123
)
Nincsenek megjegyzések:
Megjegyzés küldése