Listing: Python ermittelt Verbrauchsdaten import requests import json # === 1. Konfiguration === BASE_URL = "http://openmaintserver:8080/openmaint/services/rest/v3" USERNAME = "admin" PASSWORD = "admin" METER_NAME = "Stromzähler Serverraum" # Optional: Zählername für Filter # === 2. Login und Token holen === def login():x url = f"{BASE_URL}/login" payload = {"username": USERNAME, "password": PASSWORD} response = requests.post(url, json=payload) response.raise_for_status() token = response.json()["data"] ["sessionId"] print("Login erfolgreich.") return token # === 3. Zähler (Meter) abfragen === def get_meter(token): headers = {"Authorization": f"Bearer {token}"} url = f"{BASE_URL}/classes/Meter/cards" response = requests.get(url, headers=headers) response.raise_for_status() meters = response.json()["data"] for m in meters: if METER_NAME in m["description"]: print(f"Gefundener Zähler: {m['description']} (ID: {m['id']})") return m["id"] raise ValueError("Zähler nicht gefunden") # === 4. Messwerte zum Zähler abfragen === def get_measurements(token, meter_id): headers = {"Authorization": f"Bearer {token}"} url = f"{BASE_URL}/classes/ Measurement/cards" # Optional: Filter nach Meter-ID params = { "filter": json.dumps({ "attribute": "Meter", "operator": "equals", "value": meter_id }) } response = requests.get(url, headers=headers, params=params) response.raise_for_status() data = response.json()["data"] print(f"Gefundene Messwerte: {len(data)}") for entry in data: print(f" {entry['Date']} | {entry['Value']} {entry.get('Unit', 'kWh')}") return data # === 5. Hauptprogramm === if __name__ == "__main__": try: token = login() meter_id = get_meter(token) get_measurements(token, meter_id) except Exception as e: print("Fehler:", e)