Files
cariflex/scripts/asset_location_server.py
Eric F 00462eed40 Upgrade Grafana to 11.3.0, fix geomap bug, add Grid Singularity repos
- Upgrade Grafana from 10.2.0 to 11.3.0 (fixes ExecuteQuery panic with postgres plugin)
- Create complete dashboard with timeseries, table and geomap panels
- Clone Grid Singularity repos (gsy-e, gsy-framework, gsy-e-sdk)
- All panels now display data correctly
2026-06-08 15:03:44 -04:00

43 lines
1.3 KiB
Python

#!/usr/bin/env python3
"""Simple HTTP server that serves FlexMeasures asset locations as JSON."""
import json
import psycopg2
from http.server import HTTPServer, BaseHTTPRequestHandler
def get_assets():
conn = psycopg2.connect(
host="flexmeasures-db",
port=5432,
database="flexmeasures",
user="flexmeasures",
password="Digitribe972"
)
cur = conn.cursor()
cur.execute("""
SELECT g.name, g.latitude, g.longitude, gt.name as type
FROM generic_asset g
JOIN generic_asset_type gt ON g.generic_asset_type_id = gt.id
ORDER BY gt.id, g.id
""")
rows = cur.fetchall()
cur.close()
conn.close()
return [{"name": r[0], "latitude": float(r[1]), "longitude": float(r[2]), "type": r[3]} for r in rows]
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
assets = get_assets()
self.send_response(200)
self.send_header("Content-Type", "application/json")
self.send_header("Access-Control-Allow-Origin", "*")
self.end_headers()
self.wfile.write(json.dumps(assets).encode())
def log_message(self, format, *args):
pass
if __name__ == "__main__":
server = HTTPServer(("0.0.0.0", 8888), Handler)
print("Asset location server running on port 8888")
server.serve_forever()