You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4.9 KiB


A python library and a set of command line tools to communicate with an Itho WPU.

Itho WPU Grafana Demo

Hardware installation

See the pislave project

Software installation

  1. Install Raspberry Pi OS Lite

  2. Enable SSH and I2C using raspi-config

  3. 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

    ARCH=$(dpkg --print-architecture)
    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 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
  4. Reboot the Raspberry Pi

  5. Install python-itho-wpu

    git clone
    cd python-itho-wpu
  6. 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 "\$_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 the Parameters directory. Save it as HeatPump.par in the python-itho-wpu folder.
  7. Convert the Microsoft Access database to an SQLite datbase. The SQLite database is used by python-itho-wpu.

    ./ --itho-db HeatPump.par

Example usage of python-itho-wpu

  • Get the NodeID of the WPU

    # ./ --action getnodeid
    ManufacturerGroup: 1, Manufacturer: HCCP, HardwareType: WPU, ProductVersion: 25, ListVersion: 11
  • Get the Serial number of the WPU

    # ./ --action getserial
    Serial: 408
  • Get the Datalog of the WPU

    # ./ --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

Exporting measurements


Assuming InfluxDB is running on the Raspberry Pi as well.

  1. Configure a .envrc file

    cat > .envrc <<EOT
    export INFLUXDB_HOST=
    export INFLUXDB_USERNAME=user
    export INFLUXDB_PASSWORD=password
    export INFLUXDB_DATABASE=itho
  2. Allow direnv to load environment variables from the .envrc file

    direnv allow
  3. Execute itho-wpu.pu and export to InfluxDB

    ./ --action getdatalog --export-to-influxdb
  4. Alternatively run this in a 5 minute cronjob (the console output is written to /var/log/itho.log)

    cat > /etc/cron.d/itho <<EOT
    */5 * * * * root cd /root/python-itho-wpu && DIRENV_LOG_FORMAT='' direnv exec . ./ --action getdatalog --export-to-influxdb >> /var/log/itho.log

Grafana Dashboard

The measurements collected in InfluxDB can be displayed using a Grafana dashboard.

Download: direct link,