DIY hacka din egen hem Automation System (9 / 11 steg)
Steg 9: Bryta ner
Nu har vi vår egen trädgård Controller System.
Vänta! Jag menar, alldeles egna DIY Home automationssystem. Som standard är registeransvarige programmerad med en massa regler vi behöver att kommentera ut. Öppna TheDecider.h filen igen.
bool TheDecider (void)
{bool r = false; time_diff = 0; time_now = now();
uppdatera app.ready om det har varit 5 minuter efter senaste ändringen.
Apparaten * app = & Appliance_FeedPump;
för (; app! = NULL; app = app -> nästa)
{
time_diff = (time_now - app -> tidsstämpel);
om (time_diff > 300) {app -> klar = sant;}
}
Denna kod stega igenom alla "apparat" objekt och kontrollera att vi har väntat minst 5 minuter innan du kontrollerar apparaten sedan den senaste ändringen. Koden är vettigt när du styr fans och trädgården växa ljus men för hemautomation, detta kan minskas. Jag personligen skulle inte ställa in den under 30 sekunder.
Nästa bit av kod i TheDecider funktionen ser till att sensordata för fuktighet och temperatur fungerar som förväntat:
om (Sensor_Humidity.value == 0)
{
Appliance_Humidifier.Ready = false;
}
om (Sensor_Temp.value == 0)
{
Appliance_ExhaustFan.State = sant; Appliance_ExhaustFan.Ready = false;
Appliance_IntakeFan.State = sant; Appliance_IntakeFan.Ready = false;
}
Följande kod är för att reglera temperaturen genom att kontrollera fans:
RH utbud
om (Appliance_Humidifier.ready == true) {
OM luftfuktigheten är lägre än minVal och luftfuktare är OFF
Slå sedan på the luftfuktare
om ((Sensor_Humidity.value < Sensor_Humidity.minVal) & &
(Appliance_Humidifier.state! = sant))
{
r = sant; Appliance_Humidifier.State = sant;
myAppliance (& Appliance_Humidifier, false);
}
OM luftfuktigheten är lägre än minVal, slå ON the PUMP
om ((Sensor_Humidity.value < Sensor_Humidity.minVal))
{
r = sant; Appliance_FeedPump.State = sant;
myAppliance (& Appliance_FeedPump, false);
}
...
Nästa bit av koden är att utvärdera om en fotocell tar emot ljus och vilka åtgärder bör vidtas.
OM lätta läsningen är större än minVal
OCH ExhaustFan är ON - sedan stänga av belysningen
om (Appliance_Light.ready)
{
om ((Sensor_Light.value > Sensor_Light.minVal) & & (Appliance_ExhaustFan.state == true))
{
r = sant; Appliance_Light.State = false;
myAppliance (& Appliance_Light, falsk);
}
OM lätta läsningen är mindre än minVal
SEDAN stänga av lampor
om (Sensor_Light.value < Sensor_Light.minVal)
{
r = sant; Appliance_Light.State = false;
myAppliance (& Appliance_Light, false); }
}
Återstående reglerna är för att reglera en vattenpump. Vi kan ta bort eller kommentera dem ut. TheDecider funktionen avslutas med:
/ * ToDo: * /
återvända r; }