NL - IT - RF - Marstek Venus E - Home Assistant
De nrf905 werkt bij mij niet langdurig stabiel. Om de paar weken valt het uit. Ik heb nu een dagelijkse reboot wat lijkt te helpen maar ik denk dat ik uiteindelijk toch naar een 1-10v oplossing zal gaan. De esp32 oplossing met nrf905 vergt teveel tijd/aandacht.
Gebruik je de ESPHome setup?wian schreef op zondag 10 augustus 2025 @ 16:01:
De nrf905 oplossing werkt prima samen met de vochtsensor in de ventilator. Standaard stand (low) is bij mijn dipswitch configuratie 30% vermogen en bij vochtige lucht gaat ie naar 40% procent. Via de nrf905 gaat ie naar 100%, dat hoor je dan ook duidelijk. Ik vermoed dat de 1-10v oplossing ook goed werkt. Afgaande op wat hier gemeld wordt, reageert de ventilator altijd op de hoogste vraag.
De nrf905 werkt bij mij niet langdurig stabiel. Om de paar weken valt het uit. Ik heb nu een dagelijkse reboot wat lijkt te helpen maar ik denk dat ik uiteindelijk toch naar een 1-10v oplossing zal gaan. De esp32 oplossing met nrf905 vergt teveel tijd/aandacht.
Om dezelfde reden ben ik ook overgestapt naar de dimmer. Dagelijks rebooten helpt iets, maar nog steeds was het niet stabiel. 0-10v werkt superfijn.wian schreef op zondag 10 augustus 2025 @ 16:01:
De nrf905 werkt bij mij niet langdurig stabiel. Om de paar weken valt het uit. Ik heb nu een dagelijkse reboot wat lijkt te helpen maar ik denk dat ik uiteindelijk toch naar een 1-10v oplossing zal gaan. De esp32 oplossing met nrf905 vergt teveel tijd/aandacht.
Code is hier te vinden: https://github.com/srslynow/esphome-zehnder
Tot dusver werkt deze prima, wellicht dat ik iemand er een plezier mee doe.
Ooh interessant om ook deze eens te checken. Hoe vergelijkt dit met de bestaande ESPHome oplossing?kvs schreef op zondag 17 augustus 2025 @ 22:08:
Ha mede-tweakers, ik heb een ESPHome implementatie gemaakt voor de Zehnder Comfofan o.b.v. de code van https://github.com/eelcohn/nRF905-API
Code is hier te vinden: https://github.com/srslynow/esphome-zehnder
Tot dusver werkt deze prima, wellicht dat ik iemand er een plezier mee doe.
Geen idee. Ik heb een versie die eerder in dit topic voorbij kwam geprobeerd en die crashde. De Arduino C++ code van Eelcohn werkte wel, maar ongeveer ~24h tot een reset nodig was. Toen ben ik aan mijn eigen variant begonnen. Een geforkte ESPHome die ik hier in de laatste comments voorbij zie komen heb ik nooit geprobeerd.JPtjeeNL schreef op maandag 18 augustus 2025 @ 07:05:
[...]
Ooh interessant om ook deze eens te checken. Hoe vergelijkt dit met de bestaande ESPHome oplossing?
Uitgangspunt van mijn code: zo simpel en minimaal mogelijk. Er zijn eigenlijk maar twee controls: pairing en fan speed settings. Geavanceerder gebruik zoals fan-speed na een bepaalde tijd terugzetten regel ik via Home Assistant automations.
Wat screenshots:
:strip_exif()/f/image/WIh15grUIbA6v2avBuf7Wurq.png?f=user_large)
Ik probeer de code aan de praat te krijgen maar krijg steeds de melding:
1
2
3
4
5
6
7
8
| [00:06:21][D][button:010]: 'Pair with Fan' Pressed. [00:06:21][I][zehnder_fan:479]: Pairing service called. Attempting to discover and pair with fan... [00:06:21][D][zehnder_fan:131]: Starting fan pairing discovery... [00:06:22][D][zehnder_fan:234]: Radio timeout, retrying (1/50) ........... [00:06:46][D][zehnder_fan:234]: Radio timeout, retrying (49/50) [00:06:47][W][zehnder_fan:237]: Radio operation failed after 50 retries [00:06:47][E][zehnder_fan:518]: Pairing failed. |
Mijn vermoeden is dat dit komt doordat ik de module niet goed aan heb gesloten. Ik heb hem als volgt aangesloten:
VCC 3.3V
TXEN GPIO40
PWR GPIO41
CE GPIO42
CSN GPIO39
MISO GPIO37
SCK GPIO36
MOSI GPIO35
DR GPIO38
GND GND
De "NRF905" is die van een eerdere link: https://nl.aliexpress.com/item/33058039894.html
/f/image/9yhaYSVZu2fCRpmjrkH5H48I.png?f=fotoalbum_large)
Het ESP boardje dat ik gebruik is de ESP32-S3 DevKitC-1 https://randomnerdtutoria...-s3-devkitc-pinout-guide/
Ik had een schematje gevonden via https://github.com/nopnop2002/esp-idf-nrf905 om hem aan te sluiten maar dat lijkt hem niet te worden.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| esphome:
name: esphome-zehndercontrol
friendly_name: ZehnderControl
min_version: 2025.5.0
name_add_mac_suffix: false
esp32:
board: esp32-s3-devkitc-1
framework:
type: esp-idf
# Enable logging
logger:
# Enable Home Assistant API
api:
# Allow Over-The-Air updates
ota:
- platform: esphome
wifi:
ssid: <REDACTED>
password: <REDACTED>
# SPI configuration for nRF905
spi:
id: spi_bus
clk_pin: GPIO36
mosi_pin: GPIO35
miso_pin: GPIO37
# External components
external_components:
- source:
type: git
url: https://github.com/srslynow/esphome-zehnder
ref: main
refresh: 60sec
components: [zehnder_fan]
# Fan configuration
fan:
- platform: zehnder_fan
id: ventilation_fan
name: "Mechanical Ventilation"
spi_id: spi_bus
# Required Pin Configuration
cs_pin: GPIO39
pwr_pin: GPIO41
ce_pin: GPIO42
txen_pin: GPIO40
dr_pin: GPIO38
button:
- platform: restart
name: "Restart Controller"
- platform: template
name: "Pair with Fan"
icon: "mdi:wifi"
on_press:
- lambda: |-
id(ventilation_fan).start_pairing(); |
Iemand een idee?
Leuk dat je mijn code gebruikt! Volgens mij klopt je wiring. De esp32 kan praten met je nrf905. Anders had je al een exception in de logs langs zien komen tijdens de setup-fase.Donserdal schreef op dinsdag 9 september 2025 @ 00:18:
@kvs Gaaf, dat ziet er heel goed uit!
Ik probeer de code aan de praat te krijgen maar krijg steeds de melding:
code:
1 2 3 4 5 6 7 8 [00:06:21][D][button:010]: 'Pair with Fan' Pressed. [00:06:21][I][zehnder_fan:479]: Pairing service called. Attempting to discover and pair with fan... [00:06:21][D][zehnder_fan:131]: Starting fan pairing discovery... [00:06:22][D][zehnder_fan:234]: Radio timeout, retrying (1/50) ........... [00:06:46][D][zehnder_fan:234]: Radio timeout, retrying (49/50) [00:06:47][W][zehnder_fan:237]: Radio operation failed after 50 retries [00:06:47][E][zehnder_fan:518]: Pairing failed.
Mijn vermoeden is dat dit komt doordat ik de module niet goed aan heb gesloten. Ik heb hem als volgt aangesloten:
VCC 3.3V
TXEN GPIO40
PWR GPIO41
CE GPIO42
CSN GPIO39
MISO GPIO37
SCK GPIO36
MOSI GPIO35
DR GPIO38
GND GND
De "NRF905" is die van een eerdere link: https://nl.aliexpress.com/item/33058039894.html
[Afbeelding]
Het ESP boardje dat ik gebruik is de ESP32-S3 DevKitC-1 https://randomnerdtutoria...-s3-devkitc-pinout-guide/
Ik had een schematje gevonden via https://github.com/nopnop2002/esp-idf-nrf905 om hem aan te sluiten maar dat lijkt hem niet te worden.
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64esphome: name: esphome-zehndercontrol friendly_name: ZehnderControl min_version: 2025.5.0 name_add_mac_suffix: false esp32: board: esp32-s3-devkitc-1 framework: type: esp-idf # Enable logging logger: # Enable Home Assistant API api: # Allow Over-The-Air updates ota: - platform: esphome wifi: ssid: <REDACTED> password: <REDACTED> # SPI configuration for nRF905 spi: id: spi_bus clk_pin: GPIO36 mosi_pin: GPIO35 miso_pin: GPIO37 # External components external_components: - source: type: git url: https://github.com/srslynow/esphome-zehnder ref: main refresh: 60sec components: [zehnder_fan] # Fan configuration fan: - platform: zehnder_fan id: ventilation_fan name: "Mechanical Ventilation" spi_id: spi_bus # Required Pin Configuration cs_pin: GPIO39 pwr_pin: GPIO41 ce_pin: GPIO42 txen_pin: GPIO40 dr_pin: GPIO38 button: - platform: restart name: "Restart Controller" - platform: template name: "Pair with Fan" icon: "mdi:wifi" on_press: - lambda: |- id(ventilation_fan).start_pairing();
Iemand een idee?
Misschien een domme vraag maar heb je de nrf905 zender wel dicht bij de unit? Die van mij ligt er precies bovenop. Dat is nodig om er enigzins betrouwbaar mee te communiceren. Ik heb hetzelfde nrf905 bordje van aliexpress, er zit een rf-filter op voor 433 mhz, waardoor hij slecht werkt op 868 mhz. Vandaar ook 50 retries by default..
Als je de wiring verder wilt debuggen:
Ik heb hier ook een tijd aan zitten pielen. Wat ik gedaan heb is twee setups maken van esp32 + nrf905's. De een geladen met firmware die constant pakketjes uitstuurt en de ander om te ontvangen. De ontvanger print zijn debug-informatie op de console. Toen ik daar info zag verschijnen wist ik zeker dat de wiring klopte. Je kan het ontvangen ook doen met een RTL-SDR als je die toevallig hebt liggen.
Andere route die je kan nemen is precies dezelfde esp32C6 kopen als in mijn setup en mijn wiring 1-op-1 overnemen. Ik wil je best een foto sturen van mijn esp32 + nrf905 setup als je wilt?
| TX_EN | 7 |
| TRX_CE | 5 |
| PWR_UP | 15 |
| DR | 23 |
| MISO | 20 |
| MOSI | 19 |
| SCK | 21 |
| CSN | 18 |
Die error die ik krijg doet suggereren dat het een fail of exception is? Maar ik ga dat eens proberen laat het je weten!
[ Voor 7% gewijzigd door Donserdal op 09-09-2025 17:48 ]
Dat is een melding dat het pairen niet gelukt is na 50 pogingen. A.k.a. geen bevesting van het pairen ontvangen van de unit. Dit is geen foutmelding dat de communicatie tussen esp32 - nrf905 niet werkt.Donserdal schreef op dinsdag 9 september 2025 @ 17:47:
Thanks! Ik ga dat eens proberen, ik had de afstandsbediening ernaast liggen.
Die error die ik krijg doet suggereren dat het een fail of exception is? Maar ik ga dat eens proberen laat het je weten!
By the way, had je de stroom even van de unit afgehaald? Dat moet om hem in pairing-mode te zetten.
1
2
3
4
5
| [00:02:20][D][zehnder_fan:221]: Set speed command acknowledged. [00:02:20][D][fan:129]: 'Mechanical Ventilation' - Sending state: [00:02:20][D][fan:130]: State: ON [00:02:20][D][fan:132]: Speed: 3 [00:02:20][D][zehnder_fan:503]: Fan speed set successfully |
1
2
3
4
| [00:03:20][D][fan:129]: 'Mechanical Ventilation' - Sending state: [00:03:20][D][fan:130]: State: OFF [00:03:20][D][fan:132]: Speed: 3 [00:03:20][D][zehnder_fan:503]: Fan speed set successfully |
Kan het zijn dat jij een afstandsbediening hebt met alleen maar een "1,2,3,off"? Ik heb er eentje met "10minuten, 30minuten, 60 minuten, off"
In de documentatie van Eelco zie ik iets staan over een timer(offset 0C), maar deze lijk je volgens mij in je code ook te zetten? pending_op_.data.set_speed.timer_minutes = timer_minutes;
Weet jij wat het mogelijk kan zijn?
De unit helemaal uitzetten via de remote kan niet, dan zet de unit zichzelf toch automatisch op de low stand. Daarom heb ik de "off" knop maar gelaten voor wat hij is, hij doet niets als je erop drukt. De low, medium en high knoppen doen het wel.Donserdal schreef op woensdag 10 september 2025 @ 00:10:
Het lijkt erop dat er gepaired is, het enige dat nog niet werkt is de "speeds" doorgeven?
code:
1 2 3 4 5 [00:02:20][D][zehnder_fan:221]: Set speed command acknowledged. [00:02:20][D][fan:129]: 'Mechanical Ventilation' - Sending state: [00:02:20][D][fan:130]: State: ON [00:02:20][D][fan:132]: Speed: 3 [00:02:20][D][zehnder_fan:503]: Fan speed set successfully
code:
1 2 3 4 [00:03:20][D][fan:129]: 'Mechanical Ventilation' - Sending state: [00:03:20][D][fan:130]: State: OFF [00:03:20][D][fan:132]: Speed: 3 [00:03:20][D][zehnder_fan:503]: Fan speed set successfully
Kan het zijn dat jij een afstandsbediening hebt met alleen maar een "1,2,3,off"? Ik heb er eentje met "10minuten, 30minuten, 60 minuten, off"
In de documentatie van Eelco zie ik iets staan over een timer(offset 0C), maar deze lijk je volgens mij in je code ook te zetten? pending_op_.data.set_speed.timer_minutes = timer_minutes;
Weet jij wat het mogelijk kan zijn?
Ik heb deze afstandsbediening: https://intovent.nl/en/pr...ler-zehnder-rfz-itv050850
Timer staat op 0 seconden in de code: https://github.com/srslyn..._fan/zehnder_fan.cpp#L469, hierdoor is er effectief geen timer ingesteld.
Dat is bewust, geavanceerder gebruik regel ik via home assistant automations: timers en aanspringen bij bepaalde luchtvochtigheid . Dat werkt m.i. beter en houd deze code overzichtelijk.
https://www.ventilatiesho...-comfofan-cmfe-655000780/
Wat zou dit dan kunnen zijn? Wellicht een idee, maar kun je die timer variabel maken? Mijn vermoeden is namelijk dat die van mij hem verwacht? En wellicht stand “4”, dat is Max toch?
https://zehndernl.zendesk..._attachments/360001147857
Als ik kijk naar pagina 6 dan lees ik "Niet alle combinaties van schakelaars en sensoren zijn mogelijk.". Volgens mij mag je als je een Timer hebt geen gebruik maken van een RFZ ( een remote met de standen 1,2,3,off ).
Met de documentatie van @EelCapone (https://github.com/eelcohn/ZehnderComfoair) heb ik een fork gemaakt van je code en eens zitten spelen met de payload die je verzend.
https://github.com/donser...hnder_fan/zehnder_fan.cpp
https://github.com/donser...zehnder_fan/zehnder_fan.h
PS: Sorry voor de git chaos, maar daar ben ik nog niet zo handig mee
Ik heb vooral de "ZehnderFanProtocol::start_set_speed" functie aangepast en de FAN_TYPE_REMOTE_CONTROL veranderd in een Timer ipv een RFZ. Als laatste heb ik ook de "speed" waarden aangepast naar de timer waarden. (FAN_SPEED_* in zehnder_fan.h)
Helaas doet hij het nog niet, maar ik zie niet waarom, volgens de documentatie van Eelco zou deze goed moeten zijn.... (kijkende naar Command 0x03: Set timer op https://github.com/eelcohn/ZehnderComfoair)
Hopelijk heeft iemand een idee, ik loop nu wel redelijk vast..
https://mega.nz/file/3klx...o4BPW_rKBGazZoZGy46gVlkN0
@kvs weet jij wat ik fout doe?
https://github.com/DevSec...er-RF/releases/tag/v1.0.0
Config staat hier: https://github.com/DevSec.../esphome/ventilation.yaml
Specifiek deze file: https://github.com/DevSec...nts/zehnder-comfofan.yaml
Draait nu al een aantal weken stabiel. Moet nog wel wat tweaken met de time-outs want een enkele keer (1 op 20/25 of iets dergelijks?) pakt 'ie de timer call niet. Moet nog even kijken of ik dat goed kan reproduceren.
Super bedankt! Na lang klooien met verschillende mogelijkheden, opties, repositories enzovoorts, heb ik jouw code erbij gepakt. Enkel in de code de GPIO verwijzingen aangepast aan mijn situatie.kvs schreef op zondag 17 augustus 2025 @ 22:08:
Ha mede-tweakers, ik heb een ESPHome implementatie gemaakt voor de Zehnder Comfofan o.b.v. de code van https://github.com/eelcohn/nRF905-API
Code is hier te vinden: https://github.com/srslynow/esphome-zehnder
Tot dusver werkt deze prima, wellicht dat ik iemand er een plezier mee doe.
Met de nieuwste ESPHome versie gecompileerd en vervolgens de transciever vlakbij (3 meter afstand werkte niet) de comfofan silent gelegd. Naar de webpagina van het device gegaan, de pairing aangezet (na de stekker van de fan eruit en eringestoken te hebben) en voilà paring poging 5 was succesvol. Alles werkt!
Wel heb ik een ander boardje gebruikt, de ESP32 mini kit (MH-ET LIVE) en het volgende pinout schema gebruikt:
| nRF905 pin | ESP32 mini Kit | ESP32 mini kit GPIO |
|---|---|---|
| Vcc | 3.3V | 3.3V |
| Gnd | Gnd | Gnd |
| AM | TCK | GPIO 13 |
| CD | IO32 | GPIO 32 |
| CE | IO26 | GPIO 26 |
| DR | TDI | GPIO 12 |
| PWR | IO27 | GPIO 27 |
| TX_EN | IO25 | GPIO 25 |
| MOSI | IO23 | GPIO 23 |
| MISO | IO19 | GPIO 19 |
| CLK of SCK | IO18 | GPIO 18 |
| CS of CSN | IO5 | GPIO 5 |
[ Voor 6% gewijzigd door TvanV op 20-09-2025 00:03 . Reden: Ontbrekende pin-outs toegevoegd ]
Top!kvs schreef op zondag 17 augustus 2025 @ 22:08:
Ha mede-tweakers, ik heb een ESPHome implementatie gemaakt voor de Zehnder Comfofan o.b.v. de code van https://github.com/eelcohn/nRF905-API
Code is hier te vinden: https://github.com/srslynow/esphome-zehnder
Tot dusver werkt deze prima, wellicht dat ik iemand er een plezier mee doe.
Mijn huidige systeem deed het al een paar dagen niet meer, waarschijnlijk door een update van ESPHome.
https://github.com/golles...chanische_ventilatie.yaml
Jouw versie geinstalleerd en het draait direct weer, super! Toch 2 vragen:
1. In mijn setup (zie link hierboven) heb ik een service en knoppen die ik gebruik met een stand en timer, ik dacht dat ik het volgende kon doen, maar helaas
1
2
3
4
5
6
7
8
9
| api: services: - service: set_speed_timer variables: speed: int timer: int then: - lambda: |- id(${name}_fan).start_set_speed(speed, timer); |
Dit werkt niet, ik denk omdat ik het 1e argument mis (heb geen ervaring emt c++).
Hoe zou ik dit kunnen doen? Of is er een mogelijkheid om een functie te maken met enkel de snelheid en minuten?
2. De mechanische ventilatie heeft ook nog een stand 4, extra hoog. Zou je deze ook kunnen implementeren? PR gemaakt
[ Voor 7% gewijzigd door TLAKEL op 26-09-2025 23:00 ]
Leuk! Dank voor de merge requests, ik heb ze zojuist getest en geaccepteerd.golles schreef op donderdag 25 september 2025 @ 23:19:
[...]
Top!
Mijn huidige systeem deed het al een paar dagen niet meer, waarschijnlijk door een update van ESPHome.
https://github.com/golles...chanische_ventilatie.yaml
Jouw versie geinstalleerd en het draait direct weer, super! Toch 2 vragen:
1. In mijn setup (zie link hierboven) heb ik een service en knoppen die ik gebruik met een stand en timer, ik dacht dat ik het volgende kon doen, maar helaas
YAML:
1 2 3 4 5 6 7 8 9 api: services: - service: set_speed_timer variables: speed: int timer: int then: - lambda: |- id(${name}_fan).start_set_speed(speed, timer);
Dit werkt niet, ik denk omdat ik het 1e argument mis (heb geen ervaring emt c++).
Hoe zou ik dit kunnen doen? Of is er een mogelijkheid om een functie te maken met enkel de snelheid en minuten?
2. De mechanische ventilatie heeft ook nog een stand 4, extra hoog. Zou je deze ook kunnen implementeren? PR gemaakt
https://github.com/Sanderhuisman/ESPHome-Zehnder-RF
Echter de volgende change in ESPHome 2025.10.0 maakt me enigzins zorgen:
https://github.com/esphome/esphome/pull/10647
"⚠️ BREAKING CHANGE: Migrates ESP32 Arduino framework to use Arduino as an ESP-IDF component."
Begrijp ik het goed dat dit gaat betekenen dat dit niet meer werkt (type: arduino):
1
2
3
4
| esp32:
board: esp32doit-devkit-v1
framework:
type: arduino |
En ik over moet naar (type: esp-idf):
1
2
3
4
| esp32:
board: esp32-c6-devkitc-1 # of deze gewoon esp32doit-devkit-v1
framework:
type: esp-idf |
Dan zou ik kunnen overstappen naar: https://github.com/srslynow/esphome-zehnder
Hopelijk werkt die ook met BUVA en de juiste connectstring.
(const uint8_t zehnder_config[] = {0x75, 0x2E, 0x44, 0x10, 0x10, 0xA5, 0x5A, 0x5A, 0xA5, 0xDB})
Hopelijk kan @kvs zijn code uitbreiden zodat deze ook de BUVA ondersteunt (en Zehnder als default houdt om geen breaking change te introduceren voor de huidige gebruikers), door in de yaml aan te geven dat het om een BUVA gaat.
Zie hier mijn bevindingen vwb de wijzigingen voor een BUVA seren101 in "Zehnder comfofan s aansturen via RPi, Arduino"
Verwijzend naar deze implementatie https://github.com/Sander...Home-Zehnder-RF/tree/main
[ Voor 20% gewijzigd door seren101 op 15-10-2025 19:30 ]
Voor men combo ben ik eigenlijk gewoon gestopt met updaten, heeft daar niet veel meerwaarde en alleen maar issueseren101 schreef op woensdag 15 oktober 2025 @ 19:15:
Ik draai al enkele jaren deze code op mijn Buva (iets andere connectstring dan de Zehnder)
https://github.com/Sanderhuisman/ESPHome-Zehnder-RF
Echter de volgende change in ESPHome 2025.10.0 maakt me enigzins zorgen:
https://github.com/esphome/esphome/pull/10647
"⚠️ BREAKING CHANGE: Migrates ESP32 Arduino framework to use Arduino as an ESP-IDF component."
Begrijp ik het goed dat dit gaat betekenen dat dit niet meer werkt (type: arduino):
code:
1 2 3 4esp32: board: esp32doit-devkit-v1 framework: type: arduino
En ik over moet naar (type: esp-idf):
code:
1 2 3 4esp32: board: esp32-c6-devkitc-1 # of deze gewoon esp32doit-devkit-v1 framework: type: esp-idf
Dan zou ik kunnen overstappen naar: https://github.com/srslynow/esphome-zehnder
Hopelijk werkt die ook met BUVA en de juiste connectstring.
(const uint8_t zehnder_config[] = {0x75, 0x2E, 0x44, 0x10, 0x10, 0xA5, 0x5A, 0x5A, 0xA5, 0xDB})
Hopelijk kan @kvs zijn code uitbreiden zodat deze ook de BUVA ondersteunt (en Zehnder als default houdt om geen breaking change te introduceren voor de huidige gebruikers), door in de yaml aan te geven dat het om een BUVA gaat.
Zie hier mijn bevindingen vwb de wijzigingen voor een BUVA seren101 in "Zehnder comfofan s aansturen via RPi, Arduino"
Verwijzend naar deze implementatie https://github.com/Sander...Home-Zehnder-RF/tree/main
Ligt aan je NRF905 bordje. De meest verkochte van ome Ali heeft helaas een rf-filter op 433 mhz i.p.v. 868 mhz. Daardoor werkt zenden op 868 mhz matig. De verschillen kan je teruglezen op pagina 37 in de datasheet: https://docs.nordicsemi.c...source/nRF905_PS_v1.5.pdfsmaw schreef op maandag 22 december 2025 @ 12:09:
@kvs Ik heb sinds vanmorgen een Comfofan Silent geinstalleerd gekregen, welk (radio)bordje raad jij nu aan voor jou code? Ik had altijd wel een bordje voor mijn Itho (CC1101), en die kon ik redelijk door het hele huis plaatsen. Is dat bij dit niet meer mogelijk? Misschien als tip, in je repo ook een readme'tje maken, nu zit je over 2 repo's te zoeken
Eerder dit topic hebben een paar tweakers het over het aanpassen van het ali bordje. Je moet een paar weerstandjes aanpassen. Ik ben niet zo'n held in solderen dus heb dit niet gedaan. Door die mod dan werkt je bordje wss makkelijk 30 - 50 m binnenshuis, zonder die mod maar ~30 cm.
Readme: een merge request is zeker welkom
Als je Home Assistant hebt draaien dan zou ik voor een 0-10V zigbee dimmer gaan. Je hebt er ook wifi varianten van. Daar heb ik geen ervaring mee. In dit topic lees je nog veel problemen met de nrf oplossing.smaw schreef op maandag 22 december 2025 @ 12:09:
@kvs Ik heb sinds vanmorgen een Comfofan Silent geinstalleerd gekregen, welk (radio)bordje raad jij nu aan voor jou code? Ik had altijd wel een bordje voor mijn Itho (CC1101), en die kon ik redelijk door het hele huis plaatsen. Is dat bij dit niet meer mogelijk? Misschien als tip, in je repo ook een readme'tje maken, nu zit je over 2 repo's te zoeken
Probleem is, ik wil eigenlijk geen aanpassingen doen aan het apparaat Iets waardoor hij stuk zou kunnen gaan. En een Afstandsbediening nabootsen, tja daar kan niet zoveel mee mis gaan ;-)Bumpy_NL schreef op dinsdag 23 december 2025 @ 08:51:
[...]
Als je Home Assistant hebt draaien dan zou ik voor een 0-10V zigbee dimmer gaan. Je hebt er ook wifi varianten van. Daar heb ik geen ervaring mee. In dit topic lees je nog veel problemen met de nrf oplossing.
Ik snap je gedachtegang. Ik zou de mogelijk wel in je achterhoofd houden. Die ventilatieboxen zijn wel volledig voorbereid op 0-10V dimmers. Er zitten schroefterminals op waar je ze op kunt aansluiten. Je hoeft dus niet te gaan solderen of een "hack" te doen. Bij mij kreeg ik het met de nrf niet fatsoenlijk aan de praat (in combinatie met een CO2 aansturing van Zehnder zelf), maar dat is al weer een tijd terug. Misschien werkt het nu beter. Met de 0-10V dimmer werkte het direct (behalve dat ik het de eerste keer verkeerd aansloot, maar die fout hoef jij niet te maken).smaw schreef op dinsdag 23 december 2025 @ 16:50:
[...]
Probleem is, ik wil eigenlijk geen aanpassingen doen aan het apparaat Iets waardoor hij stuk zou kunnen gaan. En een Afstandsbediening nabootsen, tja daar kan niet zoveel mee mis gaan ;-)
Edit: Let op, bij verschillende boxen kan het er anders uitzien, maar zie mijn reactie eerder in het topic als voorbeeld: Bumpy_NL in "Zehnder comfofan s aansturen via RPi, Arduino"
[ Voor 10% gewijzigd door Bumpy_NL op 25-12-2025 00:26 ]
Voor meer info, zie github:
https://github.com/CodedCactus/zehnder-comfoair
ESP board en max485
ESP is online, ik kan de logs bekijken, maar enige wat ik voorbij zie komen is meedere malen:
[20:41:19.441][D][modbus_controller:039]: Modbus command to device=1 register=0x151 no response received - removed from send queue
En dat op de verschillende registers.
Hierbij de ESP code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| esphome:
name: "zehnder-e400"
friendly_name: Zehnder E400
esp8266:
board: esp01_1m
# Enable Home Assistant API
api:
encryption:
key: "blablabla1234567890="
ota:
- platform: esphome
password: "bla123bla123bla123"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
min_auth_mode: WPA2
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Test Fallback Hotspot"
password: "123123123"
captive_portal:
substitutions:
tx_pin: GPIO01
rx_pin: GPIO03
update_interval: 15s
# modbus: # uncomment for MAX485 chip without automatic flow control
# flow_control_pin: GPIO05
packages:
remote_package:
url: [url="https://github.com/CodedCactus/zehnder-comfoair"]https://github.com/CodedCactus/zehnder-comfoair[/url]
ref: main
files: [components/zehnder.yaml]
refresh: 0s
logger:
baud_rate: 0 # disable logger for hardware UART support |
:strip_exif()/f/image/bP1GoS1iejN7aiALk4HaZ5DU.jpg?f=fotoalbum_large)
Enig idee wat hier niet goed gaat? O ja, ik zie op de MAX485 wel steeds een ledje knipperen.
Dus kortere draden tussen de gele connector?remon. schreef op donderdag 26 februari 2026 @ 21:05:
Ziet er op het eerste gezicht goed uit. Ik heb ook de gnd aangesloten tussen de c3 port en de max485, maat ik weet niet zeker of dat nodig is. Je kan ook nog controleren of de draden niet te ver in de gele connector zitten.
En waar sluit je de GND dan op aan op de MAX485? Op die naast B-? Met die chinese tekens? Of bij de gnd aan de kant van de esp?
De gnd is idd die met de Chinese characters, daar heb ik hem op aangesloten.
A en B op de gele connector omdraaien? Of gaat de boel dan stuk?
Neem aan dat ik wel een seriele interface op de E400 heb zitten. Ding is 2,5 jaar oud.
Moet je in het menu van de E400 nog iets aanzetten? Net zoals 0-10v
[ Voor 13% gewijzigd door Geeforce op 26-02-2026 21:52 ]
Tot nu toe is het alleen getest op de E300. Zou kunnen dat de E400 een andere id gebruikt. Als je een USB naar TTL adapter hebt zou je een scan kunnen doen met openmodscan.
USB naar TTL, ik heb deze https://www.amazon.nl/dp/...yo2ov_dt_b_fed_asin_title
Maar ik heb echt geen idee hoe ik dat zou moeten doen. Zou je dat of hier of in een PM kunnen delen? Dan kan ik de E400 voor je testen. Ik werd er destijds op gewezen dat ik de spanning op mijn USB adapter goed moest instellen (1.8, 2.5, 3.3 of 5V) maakt dat nog uit als ik deze ga aansluiten op de E400?
Edit: Ik zag in de handleiding voor de Zehnder voor de service monteur dat C3 wel op een afbeelding staat, maar in de tekst staat NVT. https://zehnder.picturepark.com/v/Op93bQ8a/
[ Voor 15% gewijzigd door Geeforce op 26-02-2026 22:42 ]
Ik zal binnenkort een uitleg schrijven over het scannen met openmodscan, maar in het kort: verbind de usb-TTL( 3.3v of 5v) met de max485 en de max485 met de c3 port. In openmodscan kan je vervolgens kiezen voor 'Connection -> MODBUS Scanner'. Selecteer als protocol 'Modbus RTU' en als baud rate 19200 (je kan eventueel ook andere proberen). Vervolgens klik je op start, en dan begint het programma te scannen naar apparaten.
COM5: 1 (19200,8,None,1) en met de andere COM8
Modbus request staat op Report Slave ID, en blijkbaar komt er een 1 terug?
Met andere keuzes voor de Modbus request, ontvang ik geen resultaten.
tx knippert op beide En als ik scan zonder dat de C3 is aangesloten, dan blijft het veld met scan results leeg.
Edit 1: Rx/Tx omdraaien geeft geen deviceID terug, dus die zijn dan goed aangesloten.
Edit 2: Nog even parity op even gezet, maar dan hetzelfde resultaat: COM5: 1 (19200,8,Even,1)
[ Voor 48% gewijzigd door Geeforce op 27-02-2026 15:08 ]
Dat betekend dat er wel een apparaat aanwezig is op id:1. Dat is goed. De vraag is waarom je verder geen data ontvangt.
De volgende stap is om een scan van de registers to doen. Kies hiervoor 'Connection -> Connect'.
:strip_exif()/f/image/tI1RJ9lybwEHbxnbYyx88JA2.png?f=user_large)
Daarna kan je een scan doen. Kies 03:HOLDING REGISTERS uit de dropdown, Start address 300, Length 100, Device id:1
Het resultaat zou ongeveer zo moeten zijn:
[ Voor 26% gewijzigd door remon. op 27-02-2026 15:20 ]
https://github.com/CodedCactus/zehnder-comfoair/issues/28
1
2
3
| logger: baud_rate: 0 # disable logger for hardware UART support level: VERBOSE |
menu -> login (pwd 4210) -> toestel specificatie -> {orientatie, type, SW}
rechtse unit
sw 2.8.0
comfoair E400 RF
Ben nu aan het builden.....
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| [16:00:00.437][V][modbus_controller:331]: Updating modbus component [16:00:00.437][V][modbus_controller:297]: Range : 65 Size: 1 (3) skip: 0 [16:00:00.437][V][modbus_controller:297]: Range : 6E Size: 2 (3) skip: 0 [16:00:00.481][V][modbus_controller:297]: Range : 12C Size: 2 (3) skip: 0 [16:00:00.481][V][modbus_controller:297]: Range : 12F Size: 13 (3) skip: 0 [16:00:00.481][V][modbus_controller:297]: Range : 145 Size: 7 (3) skip: 0 [16:00:00.481][V][modbus_controller:297]: Range : 151 Size: 2 (3) skip: 0 [16:00:00.481][V][modbus_controller:043]: Sending next modbus command to device 1 register 0x65 count 1 [16:00:00.481][V][modbus:284]: Modbus write: 01:03:00:65:00:01:94:15 [16:00:00.481][V][modbus_controller:676]: Command sent 3 0x65 1 send_count: 1 [16:00:00.709][V][modbus:055]: Stop waiting for response from 1 [16:00:00.709][V][modbus_controller:043]: Sending next modbus command to device 1 register 0x65 count 1 [16:00:00.873][V][modbus:284]: Modbus write: 01:03:00:65:00:01:94:15 [16:00:00.873][V][modbus_controller:676]: Command sent 3 0x65 1 send_count: 2 [16:00:00.970][V][modbus:055]: Stop waiting for response from 1 [16:00:00.988][V][modbus_controller:043]: Sending next modbus command to device 1 register 0x65 count 1 [16:00:00.988][V][modbus:284]: Modbus write: 01:03:00:65:00:01:94:15 [16:00:00.988][V][modbus_controller:676]: Command sent 3 0x65 1 send_count: 3 [16:00:01.262][V][modbus:055]: Stop waiting for response from 1 [16:00:01.262][V][modbus_controller:043]: Sending next modbus command to device 1 register 0x65 count 1 [16:00:01.262][V][modbus:284]: Modbus write: 01:03:00:65:00:01:94:15 [16:00:01.265][V][modbus_controller:676]: Command sent 3 0x65 1 send_count: 4 [16:00:01.517][V][modbus:055]: Stop waiting for response from 1 [16:00:01.517][V][modbus_controller:043]: Sending next modbus command to device 1 register 0x65 count 1 [16:00:01.778][V][modbus:284]: Modbus write: 01:03:00:65:00:01:94:15 [16:00:01.778][V][modbus_controller:676]: Command sent 3 0x65 1 send_count: 5 [16:00:01.778][V][modbus:055]: Stop waiting for response from 1 [16:00:01.801][D][modbus_controller:039]: Modbus command to device=1 register=0x65 no response received - removed from send queue [16:00:01.801][V][modbus_controller:043]: Sending next modbus command to device 1 register 0x6E count 2 [16:00:01.801][V][modbus:284]: Modbus write: 01:03:00:6E:00:02:A5:D6 [16:00:01.805][V][modbus_controller:676]: Command sent 3 0x6E 2 send_count: 1 [16:00:02.055][V][modbus:055]: Stop waiting for response from 1 [16:00:02.055][V][modbus_controller:043]: Sending next modbus command to device 1 register 0x6E count 2 [16:00:02.316][V][modbus:284]: Modbus write: 01:03:00:6E:00:02:A5:D6 [16:00:02.316][V][modbus_controller:676]: Command sent 3 0x6E 2 send_count: 2 [16:00:02.316][V][modbus:055]: Stop waiting for response from 1 [16:00:02.336][V][modbus_controller:043]: Sending next modbus command to device 1 register 0x6E count 2 [16:00:02.336][V][modbus:284]: Modbus write: 01:03:00:6E:00:02:A5:D6 [16:00:02.336][V][modbus_controller:676]: Command sent 3 0x6E 2 send_count: 3 [16:00:02.606][V][modbus:055]: Stop waiting for response from 1 [16:00:02.606][V][modbus_controller:043]: Sending next modbus command to device 1 register 0x6E count 2 [16:00:02.606][V][modbus:284]: Modbus write: 01:03:00:6E:00:02:A5:D6 [16:00:02.612][V][modbus_controller:676]: Command sent 3 0x6E 2 send_count: 4 [16:00:02.871][V][modbus:055]: Stop waiting for response from 1 [16:00:02.871][V][modbus_controller:043]: Sending next modbus command to device 1 register 0x6E count 2 [16:00:02.898][V][modbus:284]: Modbus write: 01:03:00:6E:00:02:A5:D6 [16:00:02.898][V][modbus_controller:676]: Command sent 3 0x6E 2 send_count: 5 [16:00:03.130][V][modbus:055]: Stop waiting for response from 1 [16:00:03.154][D][modbus_controller:039]: Modbus command to device=1 register=0x6E no response received - removed from send queue [16:00:03.154][V][modbus_controller:043]: Sending next modbus command to device 1 register 0x12C count 2 [16:00:03.154][V][modbus:284]: Modbus write: 01:03:01:2C:00:02:04:3E [16:00:03.157][V][modbus_controller:676]: Command sent 3 0x12C 2 send_count: 1 [16:00:03.409][V][modbus:055]: Stop waiting for response from 1 [16:00:03.409][V][modbus_controller:043]: Sending next modbus command to device 1 register 0x12C count 2 [16:00:03.423][V][modbus:284]: Modbus write: 01:03:01:2C:00:02:04:3E |
Eventueel kan je nog proberen je board type aan te passen, ik gebruk
1
2
3
4
| esp8266:
board: nodemcuv2
framework:
version: recommended |
[ Voor 20% gewijzigd door remon. op 27-02-2026 16:07 ]
esp board aangepast. Maar dat maakt jammer genoeg niet uit. Logs zijn hetzelfde.
Hopelijk kun je het in de code fixen.....
[ Voor 98% gewijzigd door Geeforce op 27-02-2026 16:57 ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
| esphome:
name: zehnder-comfoair
wifi:
ssid: !secret wifi_iot_ssid
password: !secret wifi_iot_password
fast_connect: on
min_auth_mode: wpa2
ota:
- platform: esphome
password: !secret device_7_ota_password
api:
encryption:
key: !secret device_7_api_key
esp8266:
board: nodemcuv2
framework:
version: recommended
logger:
baud_rate: 0 # disable logger for hardware UART support
level: VERY_VERBOSE
uart:
id: uart_modbus
tx_pin: GPIO01
rx_pin: GPIO03
baud_rate: 19200
data_bits: 8
parity: EVEN
stop_bits: 1
modbus:
uart_id: uart_modbus
id: modbus1
modbus_controller:
- id: modbus_device
address: 0x1
modbus_id: modbus1
setup_priority: -10
update_interval: 15s
sensor:
- platform: modbus_controller
modbus_controller_id: modbus_device
name: "Outdoor air temperature"
register_type: holding
address: 0x12C
unit_of_measurement: "°C"
device_class: "temperature"
value_type: S_WORD
id: zehnder_t1
accuracy_decimals: 1
state_class: "measurement"
filters:
- multiply: 0.1 |
Ik heb een test systeem en heb ESPhome 2025.8 geinstalleerd, ik kan die builden, maar krijg een wachtwoord fout bij het uploaden van de bin file. Dus moet ik even anders proberen. Wil weten of het daarmee wel goed gaat. Zal ik met jou code ook nog even proberen.
[ Voor 6% gewijzigd door Geeforce op 27-02-2026 17:30 ]
Na enige tijd toch weer hier naar gaan kijken, ik heb het idee dat de vochtsensor niet echt werkt, bij het douchen hoor ik hem niet harder gaan draaien. Toch maar eens kijken naar jou oplossing, heb je misschien een foto van hoe het er bij jou uitziet? Het enige wat ik me afvraag, werken de afstandsbedieningen nog wel als je de dimmer aansluit of moet je dat dan ook via HA gaan regelen? Idealiter zou de laatste aanpassing de waarde van het apparaat moeten zijn (of remote of zigbee dimmer).Bumpy_NL schreef op donderdag 25 december 2025 @ 00:02:
[...]
Ik snap je gedachtegang. Ik zou de mogelijk wel in je achterhoofd houden. Die ventilatieboxen zijn wel volledig voorbereid op 0-10V dimmers. Er zitten schroefterminals op waar je ze op kunt aansluiten. Je hoeft dus niet te gaan solderen of een "hack" te doen. Bij mij kreeg ik het met de nrf niet fatsoenlijk aan de praat (in combinatie met een CO2 aansturing van Zehnder zelf), maar dat is al weer een tijd terug. Misschien werkt het nu beter. Met de 0-10V dimmer werkte het direct (behalve dat ik het de eerste keer verkeerd aansloot, maar die fout hoef jij niet te maken).
Edit: Let op, bij verschillende boxen kan het er anders uitzien, maar zie mijn reactie eerder in het topic als voorbeeld: Bumpy_NL in "Zehnder comfofan s aansturen via RPi, Arduino"
Over het algemeen schakelt de unit naar de hoogste input.smaw schreef op woensdag 4 maart 2026 @ 15:43:
[...]
Na enige tijd toch weer hier naar gaan kijken, ik heb het idee dat de vochtsensor niet echt werkt, bij het douchen hoor ik hem niet harder gaan draaien. Toch maar eens kijken naar jou oplossing, heb je misschien een foto van hoe het er bij jou uitziet? Het enige wat ik me afvraag, werken de afstandsbedieningen nog wel als je de dimmer aansluit of moet je dat dan ook via HA gaan regelen? Idealiter zou de laatste aanpassing de waarde van het apparaat moeten zijn (of remote of zigbee dimmer).
Als je dus via de 0-10v input stand 2 vraagt kun je nog steeds middels andere inputs stand 3 vragen (rf of 3-standenschakelaar) vraag je stand 3 via 0-10v kun je dus niet lager via andere inputs totdat je 0-10V weer verlaagt(dit geld dus andersom ook)
Ik weet niet welke unit je hebt. Maar dit is hoe het op de comfoair E300/400 werkt en bij mijn weten geld deze logic voor de meeste units.
/f/image/2P9QF1IOqsnbIRDWTEPHMFjC.png?f=fotoalbum_large)
/f/image/0CrzbpLtgQiCm5RfZWhcWCKU.png?f=fotoalbum_large)
/f/image/BdcSQcsU5tMAJyqKaHrrPOp4.png?f=fotoalbum_large)