Skip to content

Latest commit

 

History

History
96 lines (77 loc) · 4.58 KB

README.md

File metadata and controls

96 lines (77 loc) · 4.58 KB

OpenFlow

OpenFlow is a ventilation system built around Itho Daalderop's DemandFlow/QualityFlow ventilation system.

In a nutshell, the DF/QF system works as follows: each room has an exhaust duct connected to a central box up in the attic (the "plenum"). A ventilation unit exhausts air through these ducts into the plenum and to the outside of the house. Fresh air is pumped into the house in the staircase at the highest point (typically close to the ventilation system). Instead of one CO2 sensor for every room, the system uses a centralised CO2 sensor that sits in the plenum. To determine which rooms need ventilating, the system continuously samples the CO2 levels, adjusting ventilation accordingly.

While this setup sounds interesting on paper, in practise it leaves a lot to be desired. Most notably, the use of a single centralised CO2 sensor results in skewed CO2 levels, which in turn results in the system ventilating the wrong rooms or not ventilating them on time. In particular I found that if CO2 levels rise in one room, the system has a tendency to think the levels are also increasing in other rooms, even if those rooms haven't been used for hours. As the ventilation speed is based on the CO2 levels, this also leads to higher exhaust speeds than should be necessary, and thus more noise.

Enter "OpenFlow": a program written in Inko that takes over control of the DF/QF system in an attempt to work around these issues. Instead of using a single CO2 sensor, it uses MoreSense CO2 sensors for each room, and Philips Hue motion sensors for bathrooms and toilets. OpenFlow also takes care to ventilate at lower speeds whenever possible, reducing the amount of noise produced.

Requirements

If your Itho WiFi add-on has a CC1101 module attached, you can also use the official Itho Daalderop RF remotes to control ventilation in rooms. This requires that you set it up per the add-on's documentation, then add it to your config.json; see config.example.json for an example.

Installation

Assuming the WiFi module is set up, you'll need to determine what the setting indexes are to control the exhaust valves of the rooms you want to ventilate. To obtain these indexes, go to the "Itho settings" page of the WiFi module and click "Retrieve settings". The settings you need will be called something along the lines of "Flap position XXX with manual control" or "Damper position of XXX with manual control". The indexes are in the "Index" column.

Next you'll need to find the settings indexes that enable the manual control setting (most likely called "manual control") and the exhaust fan speed ("Ventilation requirement for exhaust air fan in manual mode (%)" or something along those lines).

Third, you'll need to determine the IP addresses of the WiFi module and the Philips Hue bridge. OpenFlow doesn't have support for service discovery of any kind, nor can it resolve host names, so make sure to assign these devices a static IP address. For the Hue bridge you'll also need a user/API token. You can find more information on how to do this on this page.

With all the information gathered, copy config.example.json to /etc/openflow.json and adjust it accordingly.

You can then build and run OpenFlow as follows:

inko pkg sync
inko build src/main.inko -o openflow # Compile the code
./openflow                           # Start using /etc/openflow.json as the config file

You can also use the container built from main:

docker pull ghcr.io/yorickpeterse/openflow:main
docker run yorickpeterse/openflow:main openflow --help

For more information on how to use the executable, run openflow --help.

License

All source code in this repository is licensed under the Mozilla Public License version 2.0, unless stated otherwise. A copy of this license can be found in the file "LICENSE".