pypx800 - Python GCE IPX800 v4
Control the IPX800 v4 ans its extensions: X-PWM, X-THL, X-4VR, X-4FP, X-8R, X-8D, X-24D and X-Dimmer trough:
- Relay
- Virtual output
- Virtual input
- Digital input
- Analog input
- Counter
- X-Dimmer output
- X-PWM channel
- X-THL (temp, hum, lux)
- X-4VR output
- X-4FP zone
IPX800 parameters
- host: ip or hostname (mandatory)
- port: (default:
80) - api_key: (mandatory)
- user: name of user or admin (for X-PWM only)
- password: password of user or admin (for X-PWM only)
- specific_devices_types: add specific devices types for custom api request (supported: ["counter"])
- request_retries: number of request retries on error (default:
3) - request_timeout: timeout for request (default:
5) - request_checkstatus: true to raise error if IPX800 return no success result like partial result, after
request_retriesretries (default:True) - session: aiohttp.client.ClientSession
Example
import asyncio
from pypx800 import (IPX800, X4FP, X4VR, XPWM, XTHL, AInput, VAInput, DInput, Relay,
VInput, VOutput, XDimmer)
async def main():
async with IPX800(host='192.168.1.123', api_key='xxx') as ipx:
data = await ipx.global_get()
print("all values:", data)
print("## Relay ##")
r15 = Relay(ipx, 15)
print(await r15.status)
await r15.on()
await r15.off()
print("## X-Dimmer ##")
g1 = XDimmer(ipx, 1)
await g1.on() # default 500 milliseconds
await g1.set_level(80) # default 500 milliseconds delay
await g1.set_level(20, 0) # 0 milliseconds delay
await g1.off(2000) # 2 seconds delay
print(await g1.level)
print(await g1.status)
print("## X-PWM ##")
pwm1 = XPWM(ipx, 1)
await pwm1.on() # default 500 milliseconds delay
await pwm1.on(1000) # 1 second delay
await pwm1.set_level(50) # default 500 milliseconds delay
await pwm1.set_level(20, 0) # 0 millisecond delay
print(await pwm1.status)
await pwm1.off()
print("## Analog Input ##")
print(await AInput(ipx, 1).value)
print("## Virtual Analog Input ##")
print(await VAInput(ipx, 1).value)
print("## Digital Output ##")
d1 = DInput(ipx, 1)
print(await d1.value)
print("## Virtual Input ##")
vi = VInput(ipx, 3)
await vi.on()
print(await vi.status)
print("## Virtual Output ##")
vo = VOutput(ipx, 12)
await vo.on()
print(await vo.status)
print("## X-THL ##")
sensor = XTHL(ipx, 1)
print(await sensor.temp)
print(await sensor.hum)
print(await sensor.lum)
print("## X-4VR ##")
vr = X4VR(ipx, 1, 3) # Extension number, VR number
await vr.on()
await vr.set_level(30)
await vr.set_pulse_up(5)
print(await vr.status)
print(await vr.level)
print("## X-4FP ##")
fp = X4FP(ipx, 1, 3) # Extension number, Zone number
# 0 confort, 1 Eco, 2 Hors Gel, 3 Stop, 4 Confort -1, 5 Confort -2
print(await fp.status)
await fp.set_mode(1)
await fp.set_mode_all(1) # set for all zones
print(await fp.status)
print("## Counter ##")
counter = Counter(ipx, 1)
print(await counter.value)
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Credits
Thank to d3mi1 and marcaurele for inspiration :)
Metadata
Release files for pypx800 2.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pypx800-2.6.0.tar.gz | 8.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pypx800-2.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.9 kB
Release files / pypx800-2.6.0.tar.gz
| Download URL | pypx800-2.6.0.tar.gz |
|---|---|
| Size | 8.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d6c8dd637adfa1e590fd9af54eb13d31b69d24ea51204d2fc5318b9574574951
|
|
BLAKE2b-256 checksum How to use checksums |
de167d7da16ea51a21e411e48dcf0d34448461ea675cfe4655c7ca1a4fa5292f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency logRelease files / pypx800-2.6.0-py3-none-any.whl
| Download URL | pypx800-2.6.0-py3-none-any.whl |
|---|---|
| Size | 12.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5a19b2bcb77b7a277ac8e3872a44b3b46d80a992d48c1373a182a780be0a9005
|
|
BLAKE2b-256 checksum How to use checksums |
68a6c47f3e7c31e77b9e4e481fbe514709042d6a545c30d624514045ffe812a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.
Transparency log