#!/usr/bin/env python3
"""POLUX Home V3.6.1 - agente mínimo de heartbeat de red.
No controla dispositivos. Solo confirma por HTTPS que el bridge local del apartamento está activo.
Configura POLUX_URL, APARTMENT_ID y BRIDGE_TOKEN antes de ejecutar.
"""
import json, socket, time, urllib.request, urllib.error

POLUX_URL = "https://polux.redesctcm.com/api/bridge-heartbeat-v35.php"
APARTMENT_ID = "serranias-605"
BRIDGE_TOKEN = "PEGAR_AQUI_LA_CLAVE_GENERADA_EN_POLUX"
INTERVAL_SECONDS = 60

def local_ip():
    try:
        s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
        s.connect(("8.8.8.8",80)); ip=s.getsockname()[0]; s.close(); return ip
    except Exception:
        return ""

def send_heartbeat():
    body=json.dumps({
        "apartment_id": APARTMENT_ID,
        "token": BRIDGE_TOKEN,
        "meta": {"agent":"POLUX Network Bridge Heartbeat","version":"1.1","local_ip":local_ip()}
        # "devices": [{"id":"ID_REAL_DEL_EQUIPO","online": True}],
        # Añadir devices SOLO cuando el bridge/adaptador haya verificado físicamente cada equipo.
    }).encode("utf-8")
    req=urllib.request.Request(POLUX_URL,data=body,headers={"Content-Type":"application/json","User-Agent":"POLUX-Bridge/1.0"},method="POST")
    with urllib.request.urlopen(req,timeout=15) as r:
        return json.loads(r.read().decode("utf-8"))

if __name__ == "__main__":
    if "PEGAR_AQUI" in BRIDGE_TOKEN:
        raise SystemExit("Configura BRIDGE_TOKEN antes de ejecutar.")
    print("POLUX Bridge heartbeat iniciado para", APARTMENT_ID)
    while True:
        try:
            print(time.strftime("%Y-%m-%d %H:%M:%S"), send_heartbeat())
        except Exception as exc:
            print(time.strftime("%Y-%m-%d %H:%M:%S"), "ERROR", exc)
        time.sleep(INTERVAL_SECONDS)
