Pim van den Berg
112fc4cb04
Note: For some reason no response is given when a manual operation is written to. That's why execute_action() returns succesfully (with None) when its executing the "setmanual" action and the response queue size is 0. |
||
---|---|---|
assets | ||
.flake8 | ||
.gitignore | ||
.pre-commit-config.yaml | ||
convert-itho-db.py | ||
db.py | ||
itho_export.py | ||
itho_i2c.py | ||
itho-wpu.py | ||
pyproject.toml | ||
README.md | ||
requirements.txt |
python-itho-wpu
A python library and a set of command line tools to communicate with an Itho WPU.
Hardware installation
See the pislave project
Software installation
-
Install Raspberry Pi OS Lite
-
Install and configure the required software
apt-get install \ git \ # To clone this repository pigpiod \ # Pigpio daemon to communicate over the I2C bus python3-pigpio \ # Python module to talk to the pigpio daemon python3-pyodbc \ # Python module to access an ODBC database odbcinst1debian2 \ # Library for accessing ODBC config files (odbc-mdbtools dependency) sqlite3 \ # To store a subset of the Itho database in SQLite direnv \ # Environment variable manager to store credentials for InfluxDB python3-influxdb # To export measurements to InfluxDB # Set the sample rate value of pigpiod to 10 microseconds to decrease CPU usage sed -i -e 's/ExecStart=.*/ExecStart=\/usr\/bin\/pigpiod -l -s 10/' /lib/systemd/system/pigpiod.service # Enable pigpiod service systemctl enable pigpiod
Install version 0.9.3-1 of odbc-mdbtools
SOURCE=http://snapshot.debian.org/archive/debian/20210503T151244Z ARCH=$(dpkg --print-architecture) VERSION=0.9.3-1 curl -OL ${SOURCE}/pool/main/m/mdbtools/odbc-mdbtools_${VERSION}_${ARCH}.deb curl -OL ${SOURCE}/pool/main/m/mdbtools/libmdb3_${VERSION}_${ARCH}.deb curl -OL ${SOURCE}/pool/main/m/mdbtools/libmdbsql3_${VERSION}_${ARCH}.deb dpkg -i libmdb3_${VERSION}_${ARCH}.deb libmdbsql3_${VERSION}_${ARCH}.deb odbc-mdbtools_${VERSION}_${ARCH}.deb
When executing
convert-itho-db.py
with mdbtools version ...- 0.7.1-6 (Debian Buster) it fails with:
ValueError: the query contains a null character
- 0.9.1-1 (Debian Bullseye) it fails with:
Segmentation fault
- 0.7.1-6 (Debian Buster) it fails with:
-
Reboot the Raspberry Pi
reboot
-
Install python-itho-wpu
git clone https://github.com/pommi/python-itho-wpu.git cd python-itho-wpu
-
Extract
$_parameters_HeatPump.par
from the Itho Service Tool. This is a Microsoft Access database containing details about all WPU versions.- Download it directly:
curl -o HeatPump.par "https://servicetool.blob.core.windows.net/release/Parameters/\$_parameters_HeatPump.par"
- Or download the Itho Service Tool and execute
AzureBootloader.exe
to retrieve the full Itho Service Tool application.$_parameters_HeatPump.par
is located in theParameters
directory. Save it as HeatPump.par in the python-itho-wpu folder.
- Download it directly:
-
Convert the Microsoft Access database to an SQLite datbase. The SQLite database is used by python-itho-wpu.
./convert-itho-db.py --itho-db HeatPump.par
Example usage of python-itho-wpu
-
Get the NodeID of the WPU
# ./itho-wpu.py --action getnodeid ManufacturerGroup: 1, Manufacturer: HCCP, HardwareType: WPU, ProductVersion: 25, ListVersion: 11
-
Get the Serial number of the WPU
# ./itho-wpu.py --action getserial Serial: 408
-
Get the Datalog of the WPU
# ./itho-wpu.py --action getdatalog Buitentemp (°C): 8.0 Boilertemp Onder (°C): 24.23 Boilertemp Boven (°C): 51.68 Verdamper Temp (°C): 19.84 Zuiggas Temp (°C): 21.7 Persgas Temp (°C): 30.22 Vloeistof Temp (°C): 18.67 Temp Naar Bron (°C): 21.09 Temp Uit Bron (°C): 19.75 ...
-
Retrieve a single setting from the WPU
# ./itho-wpu.py --action getsetting --id 1 1. Hardware Configuratie: 70 (min: 0, max: 65535, step: 1)
-
Retrieve all settings from the WPU
# ./itho-wpu.py --action getsettings 0. Niet Gebruikt: 0 (min: 0, max: 65535, step: 1) 1. Hardware Configuratie: 70 (min: 0, max: 65535, step: 1) 2. Jaar Inbedrijfstelling: 2010 (min: 2004, max: 2099, step: 1) 3. Datum Van Inbedrijfstelling: 101 (min: 0, max: 3112, step: 1) 4. Max Handbedieningstijd (min): 0 (min: 0, max: 600, step: 1) 5. Vorsttemp (°C): 2.0 (min: -10.0, max: 10.0, step: 0.1) 6. Offset Voor Vorst Temp (K): 2.0 (min: 0.0, max: 10.0, step: 0.1) 7. Differentie Van Vorst Om Elektrisch Element Te Starten (K): 1.5 (min: 0.0, max: 10.0, step: 0.1) 8. Fout Reset Tijd (min): 120 (min: 1, max: 1440, step: 1) 9. Loginterval Tijd (sec): 5 (min: 1, max: 300, step: 1) ...
-
Change a setting of the WPU
# ./itho-wpu.py --action setsetting --id 139 --value 48 Current setting: 139. Blokkade Tijd Van Verwarmen Naar Koelen (uur): 24 (min: 0, max: 168, step: 1) Setting `139` will be changed to `48`? [y/N] y Updating setting 139 to `48` Are you really sure? (Type uppercase yes): YES 139. Blokkade Tijd Van Verwarmen Naar Koelen (uur): 48 (min: 0, max: 168, step: 1)
-
Retrieve a manual operation setting from the WPU
# ./itho-wpu.py --loglevel info --action getmanual --id 0 0. Buitentemp (°C): 10.0
Exporting measurements
InfluxDB
Assuming InfluxDB is running on the Raspberry Pi as well.
-
Configure a
.envrc
filecat > .envrc <<EOT export INFLUXDB_HOST=127.0.0.1 export INFLUXDB_USERNAME=user export INFLUXDB_PASSWORD=password export INFLUXDB_DATABASE=itho EOT
-
Allow direnv to load environment variables from the .envrc file
direnv allow
-
Execute
itho-wpu.pu
and export to InfluxDB./itho-wpu.py --action getdatalog --export-to-influxdb
-
Alternatively run this in a 5 minute cronjob (the console output is written to
/var/log/itho.log
)cat > /etc/cron.d/itho <<EOT PATH=/usr/bin:/bin:/usr/sbin:/sbin */5 * * * * root cd /root/python-itho-wpu && DIRENV_LOG_FORMAT='' direnv exec . ./itho-wpu.py --action getdatalog --export-to-influxdb >> /var/log/itho.log EOT
Grafana Dashboard
The measurements collected in InfluxDB can be displayed using a Grafana dashboard.
Download: direct link, grafana.com