Grafana dashboard flexibilite/agregation
This commit is contained in:
78
scripts/create_sim_assets.py
Normal file
78
scripts/create_sim_assets.py
Normal file
@@ -0,0 +1,78 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Cariflex - Crée les sensors météo et prix DSO pour la simulation."""
|
||||
|
||||
import json
|
||||
import requests
|
||||
import re
|
||||
import warnings
|
||||
warnings.filterwarnings("ignore")
|
||||
from datetime import datetime, timezone, timedelta
|
||||
|
||||
FM_HOST = "https://cariflex.digitribe.fr"
|
||||
CREDS_FILE = "/tmp/fm_creds.json"
|
||||
|
||||
with open(CREDS_FILE) as f:
|
||||
creds = json.load(f)
|
||||
|
||||
session = requests.Session()
|
||||
session.verify = False
|
||||
|
||||
# Login
|
||||
r = session.get(f"{FM_HOST}/login")
|
||||
match = re.search(r'<input[^>]*csrf_token[^>]*value="([^"]+)"', r.text)
|
||||
csrf = match.group(1)
|
||||
r = session.post(f"{FM_HOST}/login", data={
|
||||
"email": creds["email"], "password": creds["password"],
|
||||
"csrf_token": csrf, "remember": "y"
|
||||
}, allow_redirects=True)
|
||||
print(f"Login: {'OK' if 'dashboard' in r.url else 'FAILED'}")
|
||||
|
||||
# Step 1: Check existing asset types
|
||||
r = session.get(f"{FM_HOST}/api/v3_0/generic_asset_types")
|
||||
print(f"Asset types: HTTP {r.status_code}")
|
||||
types = {}
|
||||
if r.status_code == 200:
|
||||
for t in r.json():
|
||||
types[t["name"]] = t["id"]
|
||||
print(f" {t['id']}: {t['name']}")
|
||||
|
||||
# Step 2: Check existing assets
|
||||
r = session.get(f"{FM_HOST}/api/v3_0/assets")
|
||||
print(f"\nAssets: HTTP {r.status_code}")
|
||||
assets = {}
|
||||
if r.status_code == 200:
|
||||
for a in r.json()[:10]:
|
||||
assets[a["name"]] = a["id"]
|
||||
print(f" {a['id']}: {a['name']} ({a.get('generic_asset_type', {}).get('name', '?')})")
|
||||
|
||||
# Step 3: Create assets for weather and pricing
|
||||
# Use existing asset types or create generic ones
|
||||
print("\n=== Création des assets ===")
|
||||
|
||||
new_assets = [
|
||||
{"name": "Météo Martinique", "type_id": 1, "lat": 14.6091, "lon": -61.2155},
|
||||
{"name": "Marché Énergie", "type_id": 1, "lat": 14.6091, "lon": -61.2155},
|
||||
]
|
||||
|
||||
for asset in new_assets:
|
||||
r = session.post(f"{FM_HOST}/api/v3_0/assets", json={
|
||||
"name": asset["name"],
|
||||
"generic_asset_type_id": asset["type_id"],
|
||||
"latitude": asset["lat"],
|
||||
"longitude": asset["lon"],
|
||||
})
|
||||
print(f" Asset '{asset['name']}': HTTP {r.status_code}")
|
||||
if r.status_code == 201:
|
||||
aid = r.json().get("id")
|
||||
print(f" ID: {aid}")
|
||||
assets[asset["name"]] = aid
|
||||
else:
|
||||
try:
|
||||
err = r.json()
|
||||
print(f" Error: {err.get('message', r.text[:200])}")
|
||||
except:
|
||||
print(f" Error: {r.text[:200]}")
|
||||
|
||||
print(f"\n=== Assets existants ===")
|
||||
for name, aid in assets.items():
|
||||
print(f" {aid}: {name}")
|
||||
Reference in New Issue
Block a user