feat: add cli args to insert data script for easier usage
This commit is contained in:
parent
7cfd2dd352
commit
2a8cfdcaed
1 changed files with 51 additions and 10 deletions
|
|
@ -1,8 +1,8 @@
|
||||||
"""
|
"""
|
||||||
Pour ajouter les données et exécuter le script, créer le conteneur :
|
Pour ajouter les données et exécuter le script, créer le conteneur :
|
||||||
docker run --rm --network server_database simugaz/backend:latest insert_data.py
|
docker run --rm --network server_database simugaz/backend:latest insert_dummy_data.py <options>
|
||||||
"""
|
"""
|
||||||
|
import argparse
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from random import random
|
from random import random
|
||||||
from typing import NamedTuple
|
from typing import NamedTuple
|
||||||
|
|
@ -10,11 +10,17 @@ from zoneinfo import ZoneInfo
|
||||||
|
|
||||||
import psycopg2
|
import psycopg2
|
||||||
|
|
||||||
|
TZ = ZoneInfo("Europe/Paris")
|
||||||
INITIAL_CONSUMPTION = 1854.32
|
INITIAL_CONSUMPTION = 1854.32
|
||||||
AVERAGE_DAILY_CONSUMPTION = 2.66
|
AVERAGE_DAILY_CONSUMPTION = 2.66
|
||||||
PULSE_RESOLUTION = 0.010
|
PULSE_RESOLUTION = 0.010
|
||||||
DB_URI = "postgresql://simugaz:simugaz@db/simugaz"
|
DB_URI = "postgresql://simugaz:simugaz@db/simugaz"
|
||||||
|
|
||||||
|
GRANULARITIES = {
|
||||||
|
"hour": 3600,
|
||||||
|
"day": 86400
|
||||||
|
}
|
||||||
|
|
||||||
GRDF_MONTHLY_COEFF = [
|
GRDF_MONTHLY_COEFF = [
|
||||||
2.21, # Janvier
|
2.21, # Janvier
|
||||||
2.05, # Février
|
2.05, # Février
|
||||||
|
|
@ -81,17 +87,52 @@ def write_to_db(points: list[PulseReading]) -> None:
|
||||||
print(f"[DB] {len(points)} lignes insérées")
|
print(f"[DB] {len(points)} lignes insérées")
|
||||||
|
|
||||||
|
|
||||||
|
def parse_args():
|
||||||
|
parser = argparse.ArgumentParser(description="Générateur de données SimuGaz")
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"--start",
|
||||||
|
type=lambda s: datetime.fromisoformat(s).replace(tzinfo=TZ),
|
||||||
|
default=datetime(2025, 1, 1, 0, 0, 0, tzinfo=TZ),
|
||||||
|
help="Date de début (défaut : 2025-01-01)",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--end",
|
||||||
|
type=lambda s: datetime.fromisoformat(s).replace(tzinfo=TZ),
|
||||||
|
default=datetime.now(tz=TZ),
|
||||||
|
help="Date de fin (défaut : maintenant)",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--device-id",
|
||||||
|
type=str,
|
||||||
|
default=None,
|
||||||
|
metavar="UUID",
|
||||||
|
help="UUID du device",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--conso",
|
||||||
|
type=float,
|
||||||
|
default=INITIAL_CONSUMPTION,
|
||||||
|
help=f"Compteur de consommation initial (défaut : {INITIAL_CONSUMPTION})",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--granularity",
|
||||||
|
choices=GRANULARITIES.keys(),
|
||||||
|
default="hour",
|
||||||
|
help="Granularité des points ('hour' par défaut)",
|
||||||
|
)
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
TZ = ZoneInfo("Europe/Paris")
|
args = parse_args()
|
||||||
start = datetime(2025, 1, 1, 0, 0, 0, tzinfo=TZ)
|
|
||||||
end = datetime.now(tz=TZ)
|
|
||||||
|
|
||||||
points = simulate_gas_pulses(
|
points = simulate_gas_pulses(
|
||||||
device_id="60124673-1999-414d-a3c5-723bd6d82a13",
|
device_id=args.device_id,
|
||||||
initial_consumption=INITIAL_CONSUMPTION,
|
initial_consumption=args.conso,
|
||||||
start_date=start,
|
start_date=args.start,
|
||||||
end_date=end,
|
end_date=args.end,
|
||||||
granularity_seconds=3600,
|
granularity_seconds=GRANULARITIES[args.granularity],
|
||||||
)
|
)
|
||||||
|
|
||||||
write_to_db(points)
|
write_to_db(points)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue