Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

homebridge-itho-daalderop

jvandenaardweg44MIT1.1.6TypeScript support: included

This Homebridge plugin exposes your Itho Daalderop mechanical fan unit to Apple HomeKit by using the WiFi Add-on module. So you can use the Home App to control your fan units and integrate into your Home Automations.

apple, homebridge, homebridge-plugin, homebridge plugin, homekit, homekit-accessory, homekit accessory, apple-homekit, apple homekit, homebridge-plugins, homebridge plugins, itho, itho-daalderop, itho daalderop, apple-home, apple home

readme

npm   github   github   github sponsor   mit license

Homebridge plugin for Itho Daalderop mechanical fan units

This verified Homebridge plugin exposes your Itho Daalderop mechanical fan unit to Apple HomeKit by using the WiFi Add-on module. So you can use the Home App to control your fan units and integrate into your Home Automations.

Features

  • Control your mechanical ventilation unit from within the Home App
  • Use your mechanical ventilation unit in your Home Automations
  • Exposes an Air Quality Sensor with CO2, Humidity and Temperature measurements
  • Supports both MQTT and HTTP API. The HTTP API is enabled by default

Requirements

It is required to have installed and configured the WiFi Add-on module for your fan unit. More info about this module and for a complete list on what mechanical ventilation models are supported, please take a look at Arjan Hiemstra's GitHub repository or this forum thread on Tweakers.net (Dutch): Itho Daalderop - open source wifi control add-on module.

MQTT

Using the MQTT API is optional, the plugin will use the HTTP API by default as it requires no additional software to be present in your network.

However, using MQTT is recommended as it does not require polling the API every few seconds, the plugin will just respond to data send to the MQTT broker.

If you want to use the MQTT API, you will need to install and configure a MQTT broker on your local network. I recommend using Mosquitto. The IP address of the MQTT broker is required to configure the plugin in Homebridge and in the WiFi Add-on module.

Installation

This plugin requires Node 14 or higher to be installed.

npm install -g homebridge-itho-daalderop

Or use the Homebridge UI to install the plugin:

  1. Go to your Homebridge UI and click on "Plugins"
  2. Search for Itho Daalderop and select the plugin Homebridge Itho Daalderop from @jvandenaardweg and click "Install"

Configuring the plugin

I recommend using the Homebridge UI to configure the plugin settings, as it gives guidance on what settings are required.

  1. Go the the plugin settings in the Homebridge UI
  2. On the plugin page click on "Settings" for Homebridge Itho Daalderop
  3. Let the plugin know if you have a built-in CO2 sensor in your fan unit or if you have a non-CVE unit like the HRU-350, DemandFlow, QualityFlow or HR
  4. And choose between using MQTT or the HTTP API and fill in the required settings
  5. Save the config
  6. Click the little QR code icon for the plugin and enable the bridge. Save it and restart Homebridge
  7. After restarting Homebridge, click the QR code icon again and scan the QR code with your iPhone using the Home App. This will add the plugin bridge to your Home App
  8. Your Mechanical Ventilation unit should now be available to configure in the Home App

Example config

Below is an example config for the CVE-S Optima Inside with a built-in CO2 sensor and using the MQTT API.

{
  "platform": "HomebridgeIthoDaalderop",
  "name": "Itho Daalderop",
  "api": {
    "protocol": "mqtt",
    "ip": "192.168.1.21",
    "port": 1883
  },
  "device": {
    "co2Sensor": true,
    "nonCve": false
  },
  "verboseLogging": false
}

About manual speed control

The plugin allows full manual speed control from 0% to 100% and everything in between. However, your fan needs to be able to support such speed commands. It is known that speed commands send to CVE unit's with a built-in CO2 sensor (like the CVE-S Optima Inside) are overruled by the internal speed control of the fan. This means you can't have fine grained control over your fan speed, and are limited to "low", "medium" and "high" speed settings.

This also applies to non-CVE devices like HRU-350, DemandFlow, QualityFlow or HRU Eco Fan. These devices do not support manual speed control, we can only use the "low", "medium" and "high" speed settings.

If you have such a device, please add the device configuration option to your config.json file. For a built-in CO2 sensor set the co2Sensor option to true. If you have a non-CVE device set the nonCve option to true. Or use the Homebridge UI to set these options. The plugin will then automatically map the speed in the Home App to the respective virtual remote commands, which will allow you to control the fan speed in 3 steps. The mapping is as follows:

Home App speed Virtual remote command HomeKit Active state
0% low inactive
33% low active
67% medium/auto active
100% high active

The Home App will automatically "snap" to the nearest speed setting, so you don't have to worry about setting the speed to 33% or 67% exactly.

You can also remove the CO2 sensor from the device itself. Just unplug it from the internal board. This will allow you to use the full manual speed control, but you don't receive any Carbon Dioxide reading from this sensor anymore in the Home App for the Air Quality Sensor. Make sure you have removed the device configuration option completely.

Troubleshooting

If you have any issues with the plugin, please enable the verboseLogging configuration option in the Homebridge plugin and check the Homebridge logs for any errors and debug messages.

Feel free to open an issue on GitHub if you have any questions or problems.

changelog

Changelog

All notable changes to this project will be documented in this file. Dates are displayed in UTC.

Generated by auto-changelog.

1.1.6

  • chore: update dependencies 659dd4a
  • chore(deps-dev): bump vitest from 0.28.4 to 0.28.5 e035ff7
  • chore(deps-dev): bump @typescript-eslint/eslint-plugin fff55d9
  • chore(deps-dev): bump @vitest/coverage-istanbul from 0.28.4 to 0.28.5 47e68ad
  • chore(deps-dev): bump @typescript-eslint/eslint-plugin b5edfad
  • chore(deps-dev): bump @typescript-eslint/eslint-plugin bbd9eb8
  • chore(deps-dev): bump @typescript-eslint/parser from 5.51.0 to 5.52.0 2d63f51
  • chore(deps-dev): bump vitest from 0.28.1 to 0.28.3 96f3677
  • chore(deps-dev): bump vitest from 0.28.3 to 0.28.4 1f9f034
  • chore(deps-dev): bump resolve-tspaths from 0.8.3 to 0.8.8 ce053c9
  • chore: update dependencies 66ee1d7
  • chore(deps): bump validator and @types/validator 9a66d13
  • chore(deps): bump undici from 5.18.0 to 5.19.1 f3b9b91
  • chore(deps-dev): bump lint-staged from 13.1.1 to 13.1.2 ac00740
  • chore(deps): bump zod from 3.20.2 to 3.20.6 6c5d996
  • chore(deps-dev): bump eslint from 8.33.0 to 8.34.0 b1e6195
  • chore(deps-dev): bump prettier from 2.8.3 to 2.8.4 a187fbe
  • chore(deps): bump cacheable-request from 10.2.3 to 10.2.7 90d9f96
  • chore(deps): bump undici from 5.16.0 to 5.18.0 adb75d7
  • chore(deps-dev): bump @types/validator from 13.7.10 to 13.7.11 f50bb3b
  • chore(deps-dev): bump rimraf from 4.1.1 to 4.1.2 7924dc4
  • chore(deps-dev): bump eslint from 8.31.0 to 8.33.0 d7b8474
  • chore(deps): bump http-cache-semantics from 4.1.0 to 4.1.1 eaabe5f
  • chore: run dependabot monthly 51f1f3e
  • docs: add homebridge verified badge 0a85e0e
  • docs: update homebridge verified badge url bc94eaf
  • chore: only run test coverage report in console 3902300

1.1.5

24 January 2023

  • chore(deps-dev): bump vitest from 0.27.0 to 0.27.1 1bd940e
  • chore(deps-dev): bump vitest from 0.26.3 to 0.27.0 6705a5c
  • chore(deps-dev): bump @vitest/coverage-istanbul from 0.26.2 to 0.26.3 af02f55
  • chore(deps-dev): bump @typescript-eslint/eslint-plugin f752c5a
  • chore(deps-dev): bump @typescript-eslint/parser from 5.48.0 to 5.48.1 18af46c
  • chore(deps-dev): bump @typescript-eslint/eslint-plugin 4cd9ca0
  • chore(deps-dev): bump vitest from 0.27.1 to 0.28.1 2b3d011
  • chore(deps-dev): bump @typescript-eslint/eslint-plugin d143429
  • chore(deps-dev): bump @typescript-eslint/parser from 5.48.2 to 5.49.0 839c846
  • chore(deps-dev): bump @typescript-eslint/parser from 5.48.1 to 5.48.2 fdbb324
  • chore(deps-dev): bump @typescript-eslint/parser from 5.47.1 to 5.48.0 afb780c
  • chore(deps-dev): bump @vitest/coverage-istanbul from 0.26.3 to 0.27.0 a37c0dc
  • chore(deps-dev): bump release-it from 15.5.1 to 15.6.0 e23818a
  • chore(deps-dev): bump rimraf from 3.0.2 to 4.0.7 9f153a3
  • chore: release v1.1.5 0924037
  • chore: update dependencies d3bd6c7
  • chore(deps-dev): bump eslint from 8.30.0 to 8.31.0 ed90860
  • chore(deps): bump undici from 5.15.0 to 5.16.0 6d45fc4
  • chore(deps-dev): bump rimraf from 4.0.7 to 4.1.1 215ac6b
  • chore(deps-dev): bump prettier from 2.8.2 to 2.8.3 d44ec76
  • chore(deps): bump undici from 5.14.0 to 5.15.0 97cfc7b
  • chore(deps-dev): bump prettier from 2.8.1 to 2.8.2 12e6fb9
  • refactor: use shorter timeout on http calls a4516fd
  • fix: handle http api error correctly when setting rotation speed 946c374
  • feat: return last known speed value when http api is not reachable 316dfa9
  • chore: remove dev throw error 870834f
  • chore: update dependabot.yml 5dc9854

1.1.4

31 December 2022

  • chore: remove target fan state code 8b22d41
  • chore: release v1.1.4 b024fc4
  • fix: speed resetting when active state is already set 5925ff5

1.1.3

30 December 2022

  • test: increase test coverage on fan accessory 2a0f6ae
  • test: increase test coverage on fan accessory 49f5940
  • chore: release v1.1.3 f510c02
  • feat: use ReqFanspeed for non-cve devices d8e1a35
  • docs: update on actual mode 24 auto mode 75a45a7
  • docs: improve example config in readme 3eb18f0
  • docs: improve example config in readme 0214157
  • docs: improve readme 7f02418
  • docs: reverted improve example config in readme db0122d
  • docs: improve example config in readme 6363e25

1.1.2

30 December 2022

  • docs: update docs on api utils 550ce57
  • chore: release v1.1.2 14771b7
  • test: increase test coverage on config.schema 354326d
  • chore: update issue templates f405f8e
  • refactor: set version of package on build in dist files ffee695
  • chore: set version on after:bump e865758
  • docs: improve readme on configuring plugin fb5b2df
  • docs: remove typo ecfedd2
  • docs: clarify setProps on rotation speed a77713c

1.1.1

30 December 2022

  • fix: vremote speed controls not working due to config changes fc3792d
  • chore: release v1.1.1 60e8786
  • docs: update readme about speed control d66d296

1.1.0

30 December 2022

  • feat: add better support for non-cve devices 9fb1d1c
  • refactor: getRotationSpeedForVirtualRemoteCommand to getRotationSpeedFromFanInfo 93e429a
  • test: increase test coverage on config.schema 9c48435
  • chore: release v1.1.0 0119904
  • refactor: move types around and handle auto faninfo c20b897
  • test: increase test coverage on config schema 09c32dd
  • refactor: handle auto faninfo 3bacbfd
  • docs: update readme about mqtt 3136399
  • chore: improve description on username and password 3eeeb9d

1.0.0

30 December 2022

0.3.0

30 December 2022

  • feat: use virtual remote commands when device has build-in co2 sensor 610ce0c
  • refactor: prepare code for target fan state ea8d4e7
  • refactor: move platform handlers in own method bc071c0
  • docs: update readme 947441a
  • feat: handle identify properly eb7547a
  • chore: release v0.3.0 9710b37
  • refactor: use active speed threshold 0d0d6eb
  • docs: remove docs dir fdb7177

0.2.0

28 December 2022

  • feat: use CurrentFanState characteristic fff0e99
  • test: increase coverage 411dd1c
  • refactor: set speed using mqtt client method c377c9d
  • refactor: use uuid as serial for accessory df01c74
  • chore: release v0.2.0 ce55e61
  • docs: update readme c6258b0
  • chore: code cleanup 350ed09
  • docs: update readme fdef28b
  • docs: update readme aedb730
  • refactor: only use CurrentFanState from status response b09eb72
  • refactor: make serial number a string 9a5bcda

0.1.3

27 December 2022

  • chore: code cleanup eb1f7c8
  • feat: add verbose logging option to allow or suppress debug messages 450573d
  • test: increase coverage 137933b
  • refactor: code cleanup b117a0a
  • refactor: code cleanup d74f4fb
  • chore: release v0.1.3 3f23c61

0.1.2

27 December 2022

0.1.1

27 December 2022

  • chore(deps-dev): bump @typescript-eslint/eslint-plugin 68fd9b5
  • fix: rotation speed switching around when setting 3ce540c
  • refactor: validate config for api values d78df62
  • chore(deps-dev): bump @typescript-eslint/parser from 5.47.0 to 5.47.1 c6f01c1
  • chore: update dependencies 45983b2
  • refactor: prepare code for username password setting a72514c
  • refactor: set mqtt client ids 1d2d792
  • chore: release v0.1.1 7c27f1c
  • chore(deps-dev): bump @types/node from 18.11.17 to 18.11.18 da0b1a6

0.1.0

26 December 2022