Ga naar de inhoud

Itho rft afzuigunit (CVO ECO-fan 2 van Daalderop)

Omschrijving

Het idee is om de centrale afzuigunit (CVO ECO-fan 2 van Daalderop) via een Arduino aan te sturen. Het leuke is dat je hem dan ook via je mobiel of tablet kan aansturen. Mijn home automation heeft eigenlijk al alles in zich, dus breid ik deze uit met de nieuwe functionaliteit.

 Mijn eerste idee was om een ‘RFM69HCW’ (868 MHz module) te gebruiken, maar dat werkte niet. De afzuigunit is zelf lerend, je moet hem paren. Op internet vond ik artikels met ‘CC1150’, de kans dat dit gaat werken vond ik ook dubieus. Dus ging ik voor een zekere (wel duurdere) oplossing. Ik heb de originele Itho rtf afstandsbedining te halen, en deze aan te passen.

 
Standaard kent de afstandbediening timer maar 3 waarden: 10, 20 en 30 minuten.
Omdat ik hem nu via de Arduino aanstuur, is dit nu helemaal flexibel.
Ik heb de optie start tijd en duur toegevoegd. (voorbeeld start over 3 minuten, en blijf 18 minuten aanstaan. Of sta 41 minuten aan)

Toekomstige uitbreidingen

Wat ik hiermee wil gaan koppelen:

Middels een andere Arduino, kan je instructies sturen naar de Arduino home automation. (via WiFi of BT)
Je kan zo de afzuigunit aansturen.

  1. De schimmel detector, kan bij bepaalde waarden de afzuigunit aan / uitzetten indien nodig.
  2. Middels een hygro sensor, de fan schakelen.
  3. Via de CCS811 Gas luchtkwaliteit sensor, kan je op basis van de lucht kwaliteit de fan ook starten.
 
En er zal meer zijn.

Bouw plan

Als eerste heb ik een interface gemaakt tussen de Arduino en de schakelaars op de rtf afstandsbediening middels een optocoupler (TIL111)

Interface tussen Arduino en de afstandsbediening
Print af
rtf kant met de 4 schakelaars
Interface kant

Schema

Programma voorbeeld

Een eenvoudig programma als voorbeeld.

Arduino Pin rtf knop Commando
7 Low LOW
8 Medium MED
9 High HI
10 Timer TMR

Koppelen (PAIR) en ontkoppelen (UNPAIR) kan ook.

Code

#define _FanLowPin 7
#define _FanMediumPin 8
#define _FanHighPin 9
#define _FanTimerPin 10
#define _FanPushTime 250

void setup()
{
pinMode(_FanLowPin, OUTPUT);
pinMode(_FanMediumPin, OUTPUT);
pinMode(_FanHighPin, OUTPUT);
pinMode(_FanTimerPin, OUTPUT);

// Medium button
executeIthoCmd(“MED”);

// Timer 20 minuten dat is normaal 2x drukken
executeIthoCmd(“TMR20”);

}

void loop()
{
}

String executeIthoCmd(String code)
{
String response = “”;
int timerValue = 0;

if (code == “PAIR”)
{
digitalWrite(_FanLowPin, HIGH);
digitalWrite(_FanHighPin, HIGH);
delay(_FanPushTime * 2);
digitalWrite(_FanLowPin, LOW);
digitalWrite(_FanHighPin, LOW);
response = “fan pairing”;
}
if (code == “UNPAIR”)
{
digitalWrite(_FanLowPin, HIGH);
digitalWrite(_FanHighPin, HIGH);
digitalWrite(_FanMediumPin, HIGH);
digitalWrite(_FanTimerPin, HIGH);
delay(_FanPushTime * 2);
digitalWrite(_FanLowPin, LOW);
digitalWrite(_FanHighPin, LOW);
digitalWrite(_FanMediumPin, LOW);
digitalWrite(_FanTimerPin, LOW);
response = “fan unpairing”;
}
if (code == “LOW”)
{
digitalWrite(_FanLowPin, HIGH);
delay(_FanPushTime);
digitalWrite(_FanLowPin, LOW);
response = “fan low”;
}
if (code == “MED”)
{
digitalWrite(_FanMediumPin, HIGH);
delay(_FanPushTime);
digitalWrite(_FanMediumPin, LOW);
response = “fan medium”;
}
if (code == “HI”)
{
digitalWrite(_FanHighPin, HIGH);
delay(_FanPushTime);
digitalWrite(_FanHighPin, LOW);
response = “fan hi”;
}
if (code.substring(0, 3) == “TMR”)
{
if (code.length() > 3)
{
timerValue = code.substring(3).toInt();
}
setFanTimer(timerValue);
response = “fan timer ” + String(timerValue) + ” min.”;
}

saveLog(“Command fan: ” + response, “”, “”, “”, code);

return response;
}