64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
"""Seed the database with sample sensor data."""
|
|
|
|
import random
|
|
from datetime import datetime, timedelta, timezone
|
|
|
|
from app import create_app
|
|
from models import Sensor, SensorReadout, db
|
|
|
|
|
|
def seed():
|
|
app = create_app()
|
|
with app.app_context():
|
|
sensors = [
|
|
Sensor(name="outdoor-station"),
|
|
Sensor(name="indoor-unit"),
|
|
Sensor(name="greenhouse-probe"),
|
|
]
|
|
db.session.add_all(sensors)
|
|
db.session.flush()
|
|
|
|
types = ["temperature", "pressure", "humidity"]
|
|
base_time = datetime.now(timezone.utc) - timedelta(seconds=30 * 300)
|
|
|
|
readouts = []
|
|
for sensor in sensors:
|
|
t = base_time
|
|
for i in range(300):
|
|
readouts.append(
|
|
SensorReadout(
|
|
sensor_id=sensor.id,
|
|
type="temperature",
|
|
value=round(random.uniform(18.0, 28.0), 2),
|
|
timestamp=t,
|
|
)
|
|
)
|
|
readouts.append(
|
|
SensorReadout(
|
|
sensor_id=sensor.id,
|
|
type="pressure",
|
|
value=round(random.uniform(1008.0, 1018.0), 2),
|
|
timestamp=t,
|
|
)
|
|
)
|
|
readouts.append(
|
|
SensorReadout(
|
|
sensor_id=sensor.id,
|
|
type="humidity",
|
|
value=round(random.uniform(35.0, 65.0), 2),
|
|
timestamp=t,
|
|
)
|
|
)
|
|
t += timedelta(seconds=30)
|
|
|
|
db.session.add_all(readouts)
|
|
db.session.commit()
|
|
|
|
sensor_count = Sensor.query.count()
|
|
readout_count = SensorReadout.query.count()
|
|
print(f"Seeded {sensor_count} sensors and {readout_count} readouts.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
seed()
|