Traducido del English por IA ·
Hice exactamente esto con las claraboyas sobre el comedor de nuestro taller de pintura hace dos años. Lo que necesitas es la interfaz KLF 200 del fabricante de las ventanas (la pasarela io-homecontrol con puerto LAN). Emparejas cada ventana con ella como harías con un teclado nuevo, y entonces te ofrece una API local en la LAN. En la Pi hay una biblioteca de Python, pyvlx, que se comunica con ella. Actualiza primero la KLF 200 al firmware actual, la versión antigua no tiene API, y conéctala por cable, no a través de su propia Wi-Fi.Después, la Pi se encarga de la lógica de lluvia localmente. No ejecutaría «cerrar si llueve» a través de la nube, tiene que funcionar cuando no hay internet:
if rain_contact_closed() and any_open():
await pyvlx.nodes[n].close(wait_for_completion=False)
# every 30 s, and after each move:
payload = {f"win{n:02d}.pos": node.position.position_percent for n, node in enumerate(nodes)}
mqtt.publish("v1/telemetry", json.dumps(payload), qos=1)
Las posiciones vuelven desde las ventanas, así que tienes retroalimentación real, 0 = cerrada. Para los botones de abrir/cerrar del panel, añade al perfil de dispositivo de la Pi comandos como win.close con un parámetro de número de ventana, gestiónalos en v1/rpc/req/+ y responde con el mismo id. Los controles del panel solo pueden enviar comandos de nivel Basic del catálogo del perfil, lo cual basta para esto. Consulta Control cards.La KLF 200 solo acepta un par de conexiones API a la vez, así que mantén una conexión de larga duración en tu script.
Did exactly this on the roof lights over our paint shop canteen two years ago. What you want is the window maker’s KLF 200 interface (the io-homecontrol gateway with a LAN port). You pair each window into it like you would a new keypad, then it gives you a local API on the LAN. On the Pi there’s a Python library, pyvlx, that talks to it. Update the KLF 200 to the current firmware first, the old one has no API, and connect it by cable, not its own Wi-Fi.
Then the Pi does the rain logic locally, I would not run «close on rain» through the cloud, it has to work when the internet is down:
if rain_contact_closed() and any_open():
await pyvlx.nodes[n].close(wait_for_completion=False)
# every 30 s, and after each move:
payload = {f"win{n:02d}.pos": node.position.position_percent for n, node in enumerate(nodes)}
mqtt.publish("v1/telemetry", json.dumps(payload), qos=1)
Positions come back from the windows so you get real feedback, 0 = closed. For the open/close buttons on the dashboard, add commands like win.close with a window number parameter to the Pi’s device profile, handle them on v1/rpc/req/+ and answer on the same id. Board controls can only send Basic tier commands from the profile’s catalogue, which is fine for this. See Control cards.
The KLF 200 only takes a couple of API connections at a time, so keep one long-lived connection in your script.

