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.
- De schimmel detector, kan bij bepaalde waarden de afzuigunit aan / uitzetten indien nodig.
- Middels een hygro sensor, de fan schakelen.
- Via de CCS811 Gas luchtkwaliteit sensor, kan je op basis van de lucht kwaliteit de fan ook starten.
Bouw plan
Als eerste heb ik een interface gemaakt tussen de Arduino en de schakelaars op de rtf afstandsbediening middels een optocoupler (TIL111)
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;
}