Version 1.4.4

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.
This commit is contained in:
2021-08-30 21:52:18 +02:00
parent a9950e6c13
commit 9109cc8077
3 changed files with 22 additions and 21 deletions

21
main.c
View File

@@ -1,10 +1,10 @@
#include "timing.h" #include "timing.h"
#include "moving_debug.h" #include "moving.h"
#include <stdio.h> #include <stdio.h>
#define FILEPATH "menetrend.txt" #define FILEPATH "menetrend.txt"
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* SHUTTER AUTOMATA * SHUTTER AUTOMATA
* --------------- * -----------------
* C program for automating remote controlled shutters via an openwrt router and a paired remote. * 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. * 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 * Raise and lowering times as well as the desired lowering percentage is read from a local file (menetrend.txt), and is
@@ -16,27 +16,30 @@ int main ()
{ {
shutter ercsi13[] = { shutter ercsi13[] = {
{ {
1, 0, 0, 0, 0, 27, 0 //fiúszoba 1, 0, 0, 0, 0, 23, 0 //fiúszoba
}, },
{ {
2, 0, 0, 0, 0, 27, 0 //lányszoba 2, 0, 0, 0, 0, 23, 0 //lányszoba
}, },
{ {
3, 0, 0, 0, 0, 27, 0 //nappali bal 3, 0, 0, 0, 0, 23, 0 //nappali bal
}, },
{ {
4, 0, 0, 0, 0, 27, 0 //nappali jobb 4, 0, 0, 0, 0, 23, 0 //nappali jobb
}, },
{ {
5, 0, 0, 0, 0, 27, 0 //szülői szoba 5, 0, 0, 0, 0, 16, 0 //konyha
}, },
{ {
6, 0, 0, 0, 0, 18, 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) 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 //scan the schedule
for (int i = 0; i < 7; ++i) for (int i = 0; i < 7; ++i)
@@ -54,7 +57,7 @@ int main ()
for (int i = 0; i < 7; ++i) for (int i = 0; i < 7; ++i)
{ {
set_ch (&ercsi13[i], &ch); set_ch (&ercsi13[i], &ch);
switch (check_timing (&ercsi13[i])) switch (check_timing (&ercsi13[i], now))
{ {
case up:press_button (up); case up:press_button (up);
break; break;

View File

@@ -73,36 +73,34 @@ void get_timing (shutter *r, FILE *schedule)
while (fscanf (schedule, "%d:%d", &tmp_hour, &tmp_min) != 2) while (fscanf (schedule, "%d:%d", &tmp_hour, &tmp_min) != 2)
fscanf (schedule, "%*c"); fscanf (schedule, "%*c");
r->up.tm_hour = (char )tmp_hour; r->up.tm_hour = (char) tmp_hour;
r->up.tm_min = (char )tmp_min; r->up.tm_min = (char) tmp_min;
while (fscanf (schedule, "%d:%d", &tmp_hour, &tmp_min) != 2) while (fscanf (schedule, "%d:%d", &tmp_hour, &tmp_min) != 2)
fscanf (schedule, "%*c"); fscanf (schedule, "%*c");
r->down.tm_hour = (char )tmp_hour; r->down.tm_hour = (char) tmp_hour;
r->down.tm_min = (char )tmp_min; r->down.tm_min = (char) tmp_min;
while (fscanf (schedule, "%d", &tmp_percentage) != 1) while (fscanf (schedule, "%d", &tmp_percentage) != 1)
fscanf (schedule, "%*c"); fscanf (schedule, "%*c");
r->percentage = (char )tmp_percentage; r->percentage = (char) tmp_percentage;
fscanf (schedule, "%*[^\n]s\n"); fscanf (schedule, "%*[^\n]s\n");
} }
buttons check_timing (shutter *r) buttons check_timing (shutter *r, struct tm *now)
{ {
if (r->percentage == 0) if (r->percentage == 0)
return stop; return stop;
time_t t = time (NULL);
struct tm *now = localtime (&t); if ((r->down.tm_hour == now->tm_hour) && (r->down.tm_min == (now->tm_min)))
if ((r->down.tm_hour == now->tm_hour) && (r->down.tm_min == now->tm_min))
{ {
return down; return down;
} }
if ((r->up.tm_hour == now->tm_hour) && (r->up.tm_min == now->tm_min)) if ((r->up.tm_hour == now->tm_hour) && (r->up.tm_min == (now->tm_min)))
{ {
return up; return up;
} }
return stop; return stop;
} }

View File

@@ -12,7 +12,7 @@
void get_timing (shutter *r, FILE *schedule); void get_timing (shutter *r, FILE *schedule);
//checks whether it's time to raise/lower and acts accordingly //checks whether it's time to raise/lower and acts accordingly
buttons check_timing (shutter *r); buttons check_timing (shutter *r, struct tm* now);
//checks the schedule file and sets the readhead to today's label //checks the schedule file and sets the readhead to today's label
int find_today (FILE *schedule); int find_today (FILE *schedule);