Skip to main content

Python library implementing Studer-Innotec Xcom protocol used by Xcom-232i and Xcom-LAN

Project description

xcom-protocol

Python library implementing Studer-Innotec Xcom protocol for Xcom-232i and Xcom-LAN.

NOTE: This lib is still WiP, so functionality is still limited, but feel free to create a pull request if you want to contribute ;)

DISCLAIMER: This library is NOT officially made by Studer-Innotec.

The complete official documentation is available on:
Studer-Innotec Download Center -> Software and Updates -> Communication protocol Xcom-232i

Getting Started

Requirements

Hardware

  • Xcom-232i or Xcom-LAN connected to your installation
  • Xcom-232i connected to PC using USB to RS-232 adapter (1)
  • or PC in same subnet as Xcom-LAN device
  • PC with at least USB2.0 or faster (works on Raspberry Pi 3/4 as well)

(1) I personally am successfully using an adapter with the PL2303 chipset like this one

Software

  • any Linux based OS (x86 / ARM)
  • python3 >= 3.9
  • python3-pip

Installation

pip install xcom-proto

important:

  • make sure you select the USB to RS-232 adapter as the serialDevice, usually on Linux it is /dev/ttyUSB[0-9]
  • when using Xcom-LAN make sure it is set up properly and reachable via a static IP in the local network

Examples

Reading values

from xcom_proto import XcomP as param
from xcom_proto import XcomRS232
from xcom_proto import XcomLAN

xcom = XcomRS232(serialDevice="/dev/ttyUSB0", baudrate=115200)
# OR
xcom = XcomLAN("192.168.178.110")

boostValue = xcom.getValue(param.SMART_BOOST_LIMIT)

pvmode = xcom.getValue(param.PV_OPERATION_MODE)
pvpower = xcom.getValue(param.PV_POWER) * 1000 # convert from kW to W
sunhours = xcom.getValue(param.PV_SUN_HOURS_CURR_DAY)
energyProd = xcom.getValue(param.PV_ENERGY_CURR_DAY)

soc = xcom.getValue(param.BATT_SOC)
battPhase = xcom.getValue(param.BATT_CYCLE_PHASE)
battCurr = xcom.getValue(param.BATT_CURRENT)
battVolt = xcom.getValue(param.BATT_VOLTAGE)

print("|".join(
    [boostValue, pvmode, pvpower, sunhours, energyProd, soc, battPhase, battCurr, battVolt]
))

Writing values

IMPORTANT: setValue() has an optional named parameter propertyID which you can pass either:

  • XcomC.QSP_UNSAVED_VALUE: writes value into RAM only (default when not specified)
  • XcomC.QSP_VALUE: writes value into flash memory; you should write into flash only if you really need it, write cycles are limited!
from xcom_proto import XcomP as param
from xcom_proto import XcomC
from xcom_proto import XcomRS232
from xcom_proto import XcomLAN

xcom = XcomRS232(serialDevice="/dev/ttyUSB0", baudrate=115200)
# OR
xcom = XcomLAN("192.168.178.110")

xcom.setValue(param.SMART_BOOST_LIMIT, 100) # writes into RAM
xcom.setValue(param.FORCE_NEW_CYCLE, 1, propertyID=XcomC.QSP_VALUE) # writes into flash memory

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

xcom_proto-0.2.1.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

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

xcom_proto-0.2.1-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file xcom_proto-0.2.1.tar.gz.

File metadata

  • Download URL: xcom_proto-0.2.1.tar.gz
  • Upload date:
  • Size: 20.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.6 Linux/5.15.0-75-generic

File hashes

Hashes for xcom_proto-0.2.1.tar.gz
Algorithm Hash digest
SHA256 cc43e84927e65e213a964012f69f790ea02a23668524886e3b0d542c29cd5eba
MD5 490f14561254da4dc33a5b7815158dcc
BLAKE2b-256 d2665e5fcd7baf40d4360e6a09e0676ed4a4fd974e41a2baba8163cc3716d4d8

See more details on using hashes here.

File details

Details for the file xcom_proto-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: xcom_proto-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 21.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.6 Linux/5.15.0-75-generic

File hashes

Hashes for xcom_proto-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f860eb50119fa6b503a260c5ee154347398520b8510e8d41efaf605c39c44332
MD5 05618ff8c01c6ad0a0409e545fc36351
BLAKE2b-256 bc42f70f5442a52329c807a48165ac6b7ceedbc075497751c594eadbdca69751

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