1
0
mirror of https://github.com/pommi/python-itho-wpu.git synced 2024-12-21 18:43:27 +01:00
Go to file
Pim van den Berg c41b700f13 feat(itho-wpu): support for all datatypes supported by the service tool
* 0x0: integer (1 byte)
* 0x1: 1 decimal float (1 byte)
* 0x2: 2 decimal float (1 byte)
* 0xc: integer (1 byte)
* 0xf: integer/2 (1 byte)
* 0x10: 0 decimal unsigned integer (2 bytes)
* 0x11: 1 decimal unsigned float (2 bytes)
* 0x12: 2 decimal unsigned float (2 bytes)
* 0x13: 3 decimal unsigned float (2 bytes)
* 0x14: 4 decimal unsigned float (2 bytes)
* 0x20: 0 decimal unsigned integer (4 bytes)
* 0x21: 1 decimal unsigned float (4 bytes)
* 0x22: 2 decimal unsigned float (4 bytes)
* 0x23: 3 decimal unsigned float (4 bytes)
* 0x24: 4 decimal unsigned float (4 bytes)
* 0x25: 5 decimal unsigned float (4 bytes)
* 0x5b: unsigned integer (2 bytes)
* 0x6c: integer (max 1) (1 byte)
* 0x80: 0 decimal signed integer (1 byte)
* 0x81: 1 decimal signed float (1 byte)
* 0x82: 2 decimal signed float (1 byte)
* 0x8f: 3 decimal signed float (1 byte)
* 0x90: 0 decimal signed integer (2 bytes)
* 0x91: 1 decimal signed float (2 bytes)
* 0x92: 2 decimal signed float (2 bytes)
* 0xa0: 0 decimal signed integer (4 bytes)
* 0xa1: 1 decimal signed float (4 bytes)
* 0xa2: 2 decimal signed float (4 bytes)
* 0xa3: 3 decimal signed float (4 bytes)
* 0xa4: 4 decimal signed float (4 bytes)
* 0xa5: 5 decimal signed float (4 bytes)
2021-06-10 14:14:46 +02:00
assets docs(readme): add grafana dashboard and demo 2021-03-25 14:56:53 +01:00
.flake8 style: apply flake8 and black formatting 2021-05-30 14:52:24 +02:00
.gitignore feat(gitignore): ignore .envrc, pycache, heatpump.sqlite 2021-03-14 13:43:23 +01:00
.pre-commit-config.yaml style: apply flake8 and black formatting 2021-05-30 14:52:24 +02:00
convert-itho-db.py style: apply flake8 and black formatting 2021-05-30 14:52:24 +02:00
db.py style: apply flake8 and black formatting 2021-05-30 14:52:24 +02:00
itho_export.py style: apply flake8 and black formatting 2021-05-30 14:52:24 +02:00
itho_i2c.py style: apply flake8 and black formatting 2021-05-30 14:52:24 +02:00
itho-wpu.py feat(itho-wpu): support for all datatypes supported by the service tool 2021-06-10 14:14:46 +02:00
pyproject.toml style: apply flake8 and black formatting 2021-05-30 14:52:24 +02:00
README.md docs(readme): save par file from Service Tool as HeatPump.par 2021-05-30 13:52:21 +02:00
requirements.txt feat(convert-itho-db): convert an itho servicetool database to sqlite 2021-01-02 15:53:47 +01:00

python-itho-wpu

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
        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
  4. Reboot the Raspberry Pi

    reboot
    
  5. Install python-itho-wpu

    git clone https://github.com/pommi/python-itho-wpu.git
    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 "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 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.

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

Exporting measurements

InfluxDB

Assuming InfluxDB is running on the Raspberry Pi as well.

  1. Configure a .envrc file

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

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

    ./itho-wpu.py --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
    PATH=/usr/bin:/bin:/usr/sbin:/sbin
    
    */5 * * * * root cd /root/python-itho-wpu && 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