Package: proconip
Python package for the ProCon.IP Pool ControllerOverviewIntroduction (What is this library for?)InstallationUsageReading the current stateSwitching relaysA brief description of the ProCon.IP pool controllerGet supportGive supportDisclaimerIntroductionThe name of this library refers to theProCon.IP pool controller.
It is somehow a port of myprocon-ipTypeScript library (available asNPM Package).
As the TypeScript library was a byproduct of my ioBroker adapter for the pool
controller unit, this library is primary intended for the implementation of a
Home Assistant integration.Documentation might follow. Until this please take a look at the sources. I
tried to keep it simple and readable. An IDE with proper auto-completion should
help understand and use the library without further documentation.Feel free to ask questions by using github's issues system, so others can take
advantage, contribute and are able to find the answer if they have a similar
question. Thanks! :)InstallationThis library is available onPyPI. So you
can easily install it with pip:pipinstallproconiporpython-mpipinstallproconipIn both cases you can add--upgradeto update to the latest version.Usage examplesReading the current stateimportasyncioimportaiohttpfromproconip.definitionsimportConfigObjectfromproconip.apiimportGetStateasyncdefreading_data_example():client_session=aiohttp.ClientSession()config=ConfigObject("http://192.168.2.3","admin","admin")get_state_api=GetState(client_session,config)data=awaitget_state_api.async_get_state()awaitclient_session.close()print(f"Redox (Chlor):{data.redox_electrode.display_value}")print(f"pH:{data.ph_electrode.display_value}")forrelayin(relayforrelayindata.relays()ifrelay.name!="n.a."):print(f"{relay.name}:{relay.display_value}")fortempin(tempfortempindata.temperature_objectsiftemp.name!="n.a."):print(f"{temp.name}:{temp.display_value}")asyncio.run(reading_data_example())Switching relaysimportasyncioimportaiohttpfromproconip.definitionsimportConfigObjectfromproconip.apiimportGetState,RelaySwitchasyncdefrelay_switching_example():client_session=aiohttp.ClientSession()config=ConfigObject("http://192.168.2.3","admin","admin")get_state_api=GetState(client_session,config)relay_switch=RelaySwitch(client_session,config)data=awaitget_state_api.async_get_state()print(f"Relay no. 2:{data.get_relay(1).display_value}")print(f"Relay no. 3:{data.get_relay(2).display_value}")awaitrelay_switch.async_set_auto_mode(data,1)data=awaitget_state_api.async_get_state()print(f"Relay no. 2:{data.get_relay(1).display_value}")awaitrelay_switch.async_switch_on(data,2)data=awaitget_state_api.async_get_state()print(f"Relay no. 3:{data.get_relay(2).display_value}")awaitrelay_switch.async_switch_off(data,1)data=awaitget_state_api.async_get_state()print(f"Relay no. 2:{data.get_relay(1).display_value}")awaitrelay_switch.async_switch_off(data,2)data=awaitget_state_api.async_get_state()print(f"Relay no. 3:{data.get_relay(2).display_value}")awaitclient_session.close()asyncio.run(relay_switching_example())Starting manual dosageManual dosage depends on the same factors as if started from the web interface
of the pool control itself.importasyncioimportaiohttpfromproconip.definitionsimportConfigObjectfromproconip.apiimportDosageControlasyncdefmanual_dosage_example():client_session=aiohttp.ClientSession()config=ConfigObject("http://192.168.2.3","admin","admin")dosage_control=DosageControl(client_session,config)awaitdosage_control.async_chlorine_dosage(3600)# start for 1 hourawaitdosage_control.async_ph_minus_dosage(60)# start for 1 minuteawaitclient_session.close()asyncio.run(reading_data_example())A brief description of the ProCon.IP pool controllerThe ProCon.IP pool controller is a low budget network attached control unit for
home swimming pools. With its software switched relays, it can control
multiple pumps (for the pool filter and different dosage aspects) either
simply planned per time schedule or depending on a reading/value from one of
its many input channels for measurements (eg. i/o flow sensors, Dallas 1-Wire
thermometers, redox and pH electrodes). At least there is also the option to
switch these relays on demand, which makes them also applicable for switching
lights (or anything else you want) on/off.
Not all of its functionality is reachable via API. In fact there is one
documented API for reading (polling) values as CSV (/GetState.csv). In my
memories there was another one for switching the relays on/off and on with
timer. But I cannot find the second one anymore. So not even pretty, but
functional: The ProCon.IP has two native web interfaces, which can be
analyzed, to some kind of reverse engineer a given functionality (like
switching the relays).For more information see the following links (sorry it's only in german;
haven't found an english documentation/information so far):pooldigital.de webshoppooldigital.de forumGet supportNeed help? Please use thegithub issues systemto ask your question. This way others can contribute or at least take advantage of the final solution.Give supportIf you want to support this project or my work in general, you can do so without having any coding abilities.
Because programmers are described as machines that convert coffee (their habitual input) into code (their habitual
output), there is a really simple way to support me:DisclaimerJust to be clear: I have nothing to do with the development, selling, marketing or support of the pool controller
unit itself.I just developed small TypeScript/JS and Python libraries as by-products of an ioBroker adapter and a Home Assistant
integration for integrating the pool controller unit with common smart home solutions.