Script Python pour interroger le courant/tension/puissance/consommation d'un Shelly Pro1PM

Le script suivant interroge un appareil Shelly Pro1PM pour ses statistiques de courant, tension, puissance et consommation d’énergie. Il utilise la bibliothèque httpx pour faire des requêtes HTTP GET vers l’API de l’appareil Shelly.

shelly_query.py
import httpx

# Adresse IP de l'appareil Shelly
device_ip = "192.168.33.1"
base_url = f"http://{device_ip}"

# Endpoint pour les paramètres de puissance (suppose un appareil Gen2 avec API RPC)
power_url = f"{base_url}/rpc/Switch.GetStatus?id=0"

try:
    # Envoyer la requête GET à l'endpoint de puissance
    response = httpx.get(power_url, timeout=5.0)
    response.raise_for_status()

    data = response.json()

    print("Shelly Pro 1PM Power Parameters:")
    print(f"  Output On: {data.get('output')}")
    print(f"  Power: {data.get('apower')} W")
    print(f"  Voltage: {data.get('voltage')} V")
    print(f"  Current: {data.get('current')} A")
    print(f"  Power Factor: {data.get('pf')}")
    print(f"  Frequency: {data.get('freq')} Hz")
    print(f"  Energy: {data.get('aenergy', {}).get('total', 0)} Wh")

except httpx.RequestError as e:
    print(f"Request error: {e}")
except httpx.HTTPStatusError as e:
    print(f"HTTP error: {e.response.status_code} - {e.response.text}")
except Exception as e:
    print(f"Unexpected error: {e}")

Exemple de sortie

shelly_output.txt
Shelly Pro 1PM Power Parameters:
  Output On: True
  Power: -36.8 W
  Voltage: 234.3 V
  Current: 0.927 A
  Power Factor: 0.7
  Frequency: 50.0 Hz
  Energy: 14169.316 Wh

Check out similar posts by category: Python, Embedded