Skip to main content

Control the IPX800 and some of its extensions.

Project description

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_retries retries (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 :)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pypx800-2.5.1.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

pypx800-2.5.1-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

Details for the file pypx800-2.5.1.tar.gz.

File metadata

  • Download URL: pypx800-2.5.1.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pypx800-2.5.1.tar.gz
Algorithm Hash digest
SHA256 a129a5003e4c522724e958a6f8d7eaac3d315904d7e9dcd126e141b3cf304b6d
MD5 f130515164ee7396a3634586d6df3adb
BLAKE2b-256 40ad6446a3280586b8c89e2f58e99a1c2a020ae47295503ccdc44de4e9f059c7

See more details on using hashes here.

File details

Details for the file pypx800-2.5.1-py3-none-any.whl.

File metadata

  • Download URL: pypx800-2.5.1-py3-none-any.whl
  • Upload date:
  • Size: 12.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pypx800-2.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5ed1c0e17780a95d14c79e6b1c1613d55a2a18319aa38756462aaa4ff91d7c8d
MD5 3c059537e847ef645c037c8adc62d1a7
BLAKE2b-256 46c6e5992041a4bf754d34baff5d9930cc1fe4dfc40809b7738bef82f426e209

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page