mirror of
https://github.com/Derisis13/Shutter.git
synced 2025-12-07 03:42:48 +01:00
Changed function check_timing: now it takes a struct tm* instead of generating one - now the main function gets the current time after initialising the shutter array.
72 lines
2.1 KiB
C
Executable File
72 lines
2.1 KiB
C
Executable File
#include "timing.h"
|
|
#include "moving.h"
|
|
#include <stdio.h>
|
|
#define FILEPATH "menetrend.txt"
|
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
* SHUTTER AUTOMATA
|
|
* -----------------
|
|
* C program for automating remote controlled shutters via an openwrt router and a paired remote.
|
|
* This program needs to be called by Cron in few minute intervals.
|
|
* Raise and lowering times as well as the desired lowering percentage is read from a local file (menetrend.txt), and is
|
|
* executed; the schedule contains one full week.
|
|
* The program uses GPIO2 for resetting the remote and GPIO17-21 for controlling the remote.
|
|
* The program is compiled to openwrt 19.07.8; HW: D-Link DIR-600 rev.B6E
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
int main ()
|
|
{
|
|
shutter ercsi13[] = {
|
|
{
|
|
1, 0, 0, 0, 0, 23, 0 //fiúszoba
|
|
},
|
|
{
|
|
2, 0, 0, 0, 0, 23, 0 //lányszoba
|
|
},
|
|
{
|
|
3, 0, 0, 0, 0, 23, 0 //nappali bal
|
|
},
|
|
{
|
|
4, 0, 0, 0, 0, 23, 0 //nappali jobb
|
|
},
|
|
{
|
|
5, 0, 0, 0, 0, 16, 0 //konyha
|
|
},
|
|
{
|
|
6, 0, 0, 0, 0, 23, 0 //szülői szoba
|
|
},
|
|
{
|
|
7, 0, 0, 0, 0, 33, 0 //előtető (lehúzás = kieresztés, felhúzás = behúzás)
|
|
}
|
|
};
|
|
//get the time of launch
|
|
time_t t = time (NULL);
|
|
struct tm *now = localtime (&t);
|
|
|
|
//scan the schedule
|
|
for (int i = 0; i < 7; ++i)
|
|
{
|
|
FILE *schedule = fopen (FILEPATH, "r");
|
|
find_today (schedule);
|
|
get_timing (&ercsi13[i], schedule);
|
|
fclose (schedule);
|
|
}
|
|
|
|
reset ();
|
|
byte ch = 1; //remote defaults to ch 1
|
|
|
|
//check timings and act accordingly
|
|
for (int i = 0; i < 7; ++i)
|
|
{
|
|
set_ch (&ercsi13[i], &ch);
|
|
switch (check_timing (&ercsi13[i], now))
|
|
{
|
|
case up:press_button (up);
|
|
break;
|
|
case stop:break;
|
|
case down:lower (&ercsi13[i]);
|
|
break;
|
|
case prev:
|
|
case next:break;
|
|
};
|
|
}
|
|
return 0;
|
|
} |