Orcon MVS-15R mechanische ventilatie aansturen

Als je de Orcon niet wil openen of aanpassen, bijvoorbeeld omdat je in een huurhuis zit, dan is er een alternatief. Met een transceiver op RF 868 Mhz zoals van RFXCOM ( RFX-868 USB/Wifi/MQTT ) kun je een MVS-15R aansturen doordat deze de RF-15 afstandbediening signalen kopieert. Als je de MQTT firmware op de transceiver zet, heb je alleen nog een MQTT broker nodig in je huis (of de MQTT server app op Homey installeren en configureren). Daarna kun je met de MQTT Client app in Homey de Orcon fan standen besturen.

Orcon/RAMSES ventilatie (868MHz) besturen met Homey via een ramses_esp + MQTT

Ik draaide mijn mechanische ventilatie (Orcon, type “15RF”-afstandsbediening, RAMSES-II op 868MHz) eerst via Home Assistant met de ramses_cc integratie en een ramses_esp USB-stick. Sinds ik ben overgestapt op Homey wilde ik dit ook daar werkend krijgen. Homey ondersteunt het RAMSES-II-protocol niet zelf, dus de truc is om de stick via WiFi + MQTT te laten praten en Homey daar commando’s naartoe te laten sturen.

Hieronder de complete aanpak. Het werkt nu inclusief vier standen-knoppen, een highlight die de echte stand volgt (ook als er met een fysieke afstandsbediening geschakeld wordt) én een pushmelding als de stick offline gaat.

Let op: alle device-ID’s, het gateway-ID en het IP-adres hieronder zijn van mijn setup. Vervang ze door je eigen waarden.


Wat je nodig hebt

  • Een ramses_esp stick (ESP32-S3 + CC1101) met de IndaloTech ramses_esp firmware. Werkt ook met een evofw3-gebaseerd apparaat dat MQTT spreekt.
  • Een MQTT broker. Ik gebruik de MQTT Server app op Homey zelf.
  • De MQTT Client app (van scanno) op Homey — die kan vanuit flows publiceren én op topics meeluisteren.
  • De HomeyScript app (voor de highlight en de offline-melding).
  • De ingebouwde Virtuele apparaten (experiment) van Homey voor de knoppen/schakelaars.

Stap 1 — Stick van USB-serial naar WiFi + MQTT zet

In HA hing de stick via USB-serial aan de Pi. Homey kan geen USB-serial, dus de stick moet via WiFi naar de broker. Configureren doe je éénmalig via de seriële console.

  1. Trek de stick uit de Pi en stop 'm in een Windows/Mac/Linux pc (configureren hoeft maar één keer; daarna heeft 'ie alleen USB-stroom nodig).
  2. Open een seriële terminal (PuTTY op Windows) op de juiste COM-poort, 115200 baud.
  3. Druk op Enter en voer in (hoofdlettergevoelig, en zet wachtwoord/user steeds vóór de ssid/broker-regel, want hij verbindt meteen):
wifi password JOUW_WIFI_WACHTWOORD
wifi ssid JOUW_WIFI_SSID
wifi restart
mqtt user mqtt-user
mqtt password JOUW_MQTT_WACHTWOORD
mqtt broker mqtt://192.168.2.37:1883
sntp server pool.ntp.org
timezone CET
reset

WiFi moet 2.4GHz zijn. Na reset zie je in de console “Connected to SSID…” en “MQTT: Connected”.

De stick publiceert nu onder de topic-boom RAMSES/GATEWAY/<gateway-id>/.... Bij mij is het gateway-ID 18:203612. Met MQTT Explorer (tegen je broker) controleer je dit makkelijk:

  • RAMSES/GATEWAY/18:203612 → status online / offline
  • RAMSES/GATEWAY/18:203612/rx → binnenkomend verkeer (JSON: {"msg": "...", "ts": "..."})
  • RAMSES/GATEWAY/18:203612/tx → hier publiceer je om te zenden

Stap 2 — De juiste commando’s achterhalen

In ramses_cc had ik een “gefakete” afstandsbediening met vaste commando’s. Die haal je uit je oude HA-config. Bij mij:

"29:173894":          # de gefakete remote (Orcon 15RF)
  class: REM
  commands:
    low:    " I --- 29:173894 29:233244 --:------ 22F1 003 000104"
    medium: " I --- 29:173894 29:233244 --:------ 22F1 003 000204"
    high:   " I --- 29:173894 29:233244 --:------ 22F1 003 000304"
    auto:   " I --- 29:173894 29:233244 --:------ 22F1 003 000404"
  faked: true
"29:233244":          # de ventilatie-unit (FAN)
  class: FAN

Belangrijk: gebruik hetzelfde remote-ID als in HA (29:173894), want je unit is daaraan gebonden. Het 22F1-commando is de stand; alleen de op één na laatste byte verschilt: 01=laag, 02=midden, 03=hoog, 04=auto.

Heb je je oude config niet meer? Dan kun je de commando’s ook uit het rx-verkeer plukken terwijl je met een fysieke afstandsbediening schakelt.


Stap 3 — Testen via MQTT Explorer

Publiceer naar RAMSES/GATEWAY/18:203612/tx als JSON met een msg-veld:

{"msg": " I --- 29:173894 29:233244 --:------ 22F1 003 000304"}

Schakelt je unit? Top, dan werkt de basis en gaan we het in Homey gieten.


Stap 4 — Knoppen + flows in Homey

Ik gebruik vier virtuele schakelaars als een soort radioknoppen, zodat de actieve stand gemarkeerd blijft.

  1. Zet Instellingen → Experimenten → Virtuele apparaten aan.
  2. Maak vier virtuele schakelaars: Vent Laag, Vent Midden, Vent Hoog, Vent Auto.
  3. Installeer de MQTT Client app en verbind 'm met je broker (192.168.2.37:1883, mqtt-user).
  4. Maak per schakelaar een flow:
    • ALS schakelaar aangezet
    • DAN MQTT Client → Stuur bericht → topic RAMSES/GATEWAY/18:203612/tx, bericht = de JSON-payload van die stand
    • EN DAN zet de andere drie schakelaars uit (zo blijft alleen de actieve gemarkeerd)

Voorbeeld bericht voor “Hoog”:

{"msg": " I --- 29:173894 29:233244 --:------ 22F1 003 000304"}


Stap 5 — Highlight die de échte stand volgt

De stick zet ál het busverkeer op /rx, óók commando’s van een fysieke afstandsbediening. Daarop laat ik Homey meeluisteren met een flow + een klein HomeyScript:

  • ALS MQTT Client → Ontvang topic triggers op RAMSES/GATEWAY/18:203612/rx
  • DAN HomeyScript → Voer code uit met argument → sleep de tag “Bericht ontvangen via topic” in het argument-veld
  • Code:
const raw = (typeof args !== 'undefined' && args[0]) ? String(args[0]) : '';
let msg = raw;
try { const j = JSON.parse(raw); if (j && j.msg) msg = j.msg; } catch (e) {}

// Pak de stand uit een 22F1-commando (01/02/03/04)
const m = msg.match(/22F1 003 \w{2}(\w{2})\w{2}/);
if (!m) return false;
const code = m[1];

// Vervang deze ID's door die van jouw virtuele schakelaars
const map = {
  '01': 'ID-VAN-VENT-LAAG',
  '02': 'ID-VAN-VENT-MIDDEN',
  '03': 'ID-VAN-VENT-HOOG',
  '04': 'ID-VAN-VENT-AUTO',
};
const activeId = map[code];
if (!activeId) return false;

for (const id of Object.values(map)) {
  await Homey.devices.setCapabilityValue({ deviceId: id, capabilityId: 'onoff', value: id === activeId });
}
return true;

De device-ID’s van je virtuele schakelaars vind je in de Homey web-app (developer tools → devices), of via de Homey-API.

Resultaat: schakel je met een fysieke afstandsbediening, dan licht binnen ~1 seconde de juiste tegel in Homey op.


Stap 6 — Pushmelding als de stick offline gaat

De stick (via de MQTT “last will”) zet de status op offline als hij wegvalt. Daar reageer ik op:

  • ALS MQTT Client → Ontvang topic triggers op RAMSES/GATEWAY/18:203612
  • DAN HomeyScript → Voer code uit met argument → tag “Bericht ontvangen via topic” in het argument
  • Code:
const msg = (typeof args !== 'undefined' && args[0]) ? String(args[0]).trim().toLowerCase() : '';
if (msg === 'offline') {
  await Homey.notifications.createNotification({ excerpt: '⚠️ Ramses ventilatie-gateway is offline' });
}
return true;


Valkuilen / tips

  • 2.4GHz WiFi verplicht voor de ESP.
  • Zet SNTP + timezone goed; nodig voor correcte MQTT-werking.
  • Gebruik exact het remote-ID uit je oude HA-config, anders reageert de unit niet.
  • De tx-payload moet JSON zijn ({"msg": "..."}), niet de kale commandostring.
  • Werkt het meeluisteren niet? Controleer of de MQTT Client app daadwerkelijk geabonneerd is op het /rx-topic.

Werkt bij mij nu vlekkeloos — Homey stuurt de standen, de highlight volgt de echte stand, en ik krijg een melding als de stick eruit klapt. Vragen? Stel ze gerust!