Skip to main content

A Python wrapper to read out sensors from Technische Alternative using the C.M.I.

Project description

TA-CMI

A Python wrapper to read out sensors from Technische Alternative using the C.M.I.

How to use package

Json API

import asyncio

from ta_cmi import CMI, Languages, ApiError, RateLimitError, InvalidCredentialsError, InvalidDeviceError, ChannelType


async def main():
    try:
        cmi = CMI("http://192.168.1.101", "admin", "admin")

        devices = await cmi.get_devices()

        device = devices[0]

        # Set type automatically
        await device.fetch_type()

        # Set type manually
        device.set_device_type("UVR16x2")

        await device.update()

        print(str(device))

        inputChannels = device.get_channels(ChannelType.INPUT)
        outputChannels = device.get_channels(ChannelType.OUTPUT)
        analogLogging = device.get_channels(ChannelType.ANALOG_LOGGING)

        for i in inputChannels:
            ch = inputChannels.get(i)
            print(str(ch))

        for o in outputChannels:
            ch = outputChannels.get(o)
            print(f"{str(ch)} - {ch.get_unit(Languages.DE)}")

        for al in analogLogging:
            ch = analogLogging.get(al)
            print(f"{str(ch)} - {ch.get_unit(Languages.DE)}")

    except (ApiError, RateLimitError, InvalidCredentialsError, InvalidDeviceError) as error:
        print(f"Error: {error}")


loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()

Supported data types

Device type Inputs Outputs DL-inputs System-values: General System-values: Date System-values: Time System-values: Sun System-values: Electrical power Analog network inputs Digital network inputs M-Bus Modbus KNX Analog logging Digital logging
UVR1611
UVR16x2
RSM610
CAN-I/O45
CAN-EZ2
CAN-MTx2
CAN-BC2
UVR65
CAN-EZ3
UVR610
UVR67

Note The supported data types may differ from the official API. If a device type supports other data types than listed here, please create an issue.

CoE Server

Data can be retrieved using this CoE to HTTP server

import asyncio

from ta_cmi import (
    ApiError,
    ChannelMode,
    CoE,
    InvalidCredentialsError,
    InvalidDeviceError,
    Languages,
    RateLimitError,
)


async def main():
    try:
        coe = CoE("http://192.168.2.201:9000")
        
        can_id = 42

        await coe.update(can_id)

        analog_channels = coe.get_channels(can_id, ChannelMode.ANALOG)
        digital_channels = coe.get_channels(can_id, ChannelMode.DIGITAL)

        for i in analog_channels:
            ch = analog_channels.get(i)
            print(str(ch))

        for o in digital_channels:
            ch = digital_channels.get(o)
            print(f"{str(ch)} - {ch.get_unit(Languages.DE)}")

    except (ApiError, RateLimitError, InvalidCredentialsError, InvalidDeviceError) as error:
        print(f"Error: {error}")


loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()

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

ta_cmi-3.5.0.tar.gz (17.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ta_cmi-3.5.0-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

Details for the file ta_cmi-3.5.0.tar.gz.

File metadata

  • Download URL: ta_cmi-3.5.0.tar.gz
  • Upload date:
  • Size: 17.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.22

File hashes

Hashes for ta_cmi-3.5.0.tar.gz
Algorithm Hash digest
SHA256 193c01cf360fe34f0afa235c6f519d1ce5a5075db40b8636e9717c759af05c9f
MD5 39e8bafc3f61c0828f45c4c01dd378e6
BLAKE2b-256 ef867f35fa59f9512b37134dce9c438fceb2af3027ac433c9d243b4f755312da

See more details on using hashes here.

File details

Details for the file ta_cmi-3.5.0-py3-none-any.whl.

File metadata

  • Download URL: ta_cmi-3.5.0-py3-none-any.whl
  • Upload date:
  • Size: 14.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.22

File hashes

Hashes for ta_cmi-3.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3f1d77d45c5e89c4302a17f6c12aa9c97189a7420f6879b5f864fe5950f028ab
MD5 026e677cf4b2a22f098ac0388adf05ac
BLAKE2b-256 7420e8ec9c04b4d365b4fce782f42a75d5873477eea0fb5c6633538d0643b1fd

See more details on using hashes here.

Supported by

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