X-Git-Url: http://rtime.felk.cvut.cz/gitweb/hydro.git/blobdiff_plain/1af32f4239d82371f7f42e68d62ec8c96952bd12..d11f406f40c86b7139dccf68bbade44e51e2c8d0:/app-stefic/regulator/board.c diff --git a/app-stefic/regulator/board.c b/app-stefic/regulator/board.c index 373615f..9711161 100644 --- a/app-stefic/regulator/board.c +++ b/app-stefic/regulator/board.c @@ -16,16 +16,19 @@ unsigned int oi_period; unsigned int oi_want_temp; unsigned int oi_want_hum; unsigned int oi_want_light; -unsigned int oi_want_dark; +unsigned int oi_grow_cykl; +unsigned int lighting; +unsigned int last = 0; +float res = 10; -int hyst_temp = 1; +float hyst_temp = 0.5; int hyst_hum = 10; unsigned int fan = 0; unsigned int hum = 0; unsigned int light = 0; -int temperature; -int humidity; +float temperature; +float humidity; // OBJECT INTERFACE FUNCTIONS int oi_cid_fan_wrfnc(ULOI_PARAM_coninfo void *context){ @@ -68,6 +71,28 @@ int oi_want_hum_wrfnc(ULOI_PARAM_coninfo void *context){ return 1; } +int oi_want_light_wrfnc(ULOI_PARAM_coninfo void *context){ + uloi_uint_wrfnc(ULOI_ARG_coninfo context); + + if (oi_want_light != 0){ + if (last != oi_want_light){ + last = oi_want_light; + l3time = current_time(); + } + lighting = 1; + } else { + lighting = 0; + last = 0; + } + + return 1; +} + +int oi_grow_cykl_wrfnc(ULOI_PARAM_coninfo void *context){ + uloi_uint_wrfnc(ULOI_ARG_coninfo context); + return 1; +} + void send_data() { int msgsend; @@ -75,7 +100,7 @@ void send_data() { static const int MAX_CID_CNT = 4; cid_data_t cids[MAX_CID_CNT]; - if (oi_period == 1){ + if (oi_period == HEART_PERIOD){ cids[cid_cnt].cid = HEART_CID; cids[cid_cnt].value = status_val; cid_cnt++; @@ -112,7 +137,7 @@ void send_data() { buff_len += 2; } - msgsend = ul_send_query(ul_fd, 0, UL_CMD_PDO, UL_BFL_NORE, (void*) buf, buff_len); + msgsend = ul_send_command(ul_fd, 0, UL_CMD_PDO, UL_BFL_NORE, (void*) buf, buff_len); printf("[I] DATA\n"); ul_freemsg(ul_fd); } @@ -130,35 +155,32 @@ void oiinit(void){ void check_PDO(int cid, int data){ printf("CID: %i\n", cid); if (cid == oi_slot_temp){ - temperature = data; - printf("temperature: %i\n", temperature); + temperature = data/res; + printf("temperature: %f\n", temperature); } if (cid == oi_slot_hum){ - humidity = data; - printf("humidity: %i\n", humidity); + humidity = data/res; + printf("humidity: %f\n", humidity); } } void regulate(void){ - if (((oi_want_temp + hyst_temp) > temperature) && fan != 1) fan = 1; - if (((oi_want_temp - hyst_temp) < temperature) && fan != 0) fan = 0; + if (temperature > (oi_want_temp/res + hyst_temp)) fan = 1; + if (temperature < (oi_want_temp/res - hyst_temp)) fan = 0; - if (((oi_want_hum + hyst_hum) > humidity) && hum != 1) hum = 1; - if (((oi_want_hum - hyst_hum) < humidity) && hum != 0) hum = 0; + if (humidity < (oi_want_hum/res + hyst_hum)) hum = 1; + if (humidity > (oi_want_hum/res - hyst_hum)) hum = 0; - if(((current_time()-l3time) < oi_want_light*3600*1000) && light == 0) { - light = 1; - l3time = current_time(); - } - if(((current_time()-l3time) < oi_want_dark*3600*1000) && light == 1) { - light = 0; - l3time = current_time(); + if (lighting == 1){ + if((current_time()-l3time) < oi_want_light/res/* *3600*/*1000) { + light = 1; + } else if((current_time()-l3time) < oi_grow_cykl/res/* *3600*/*1000){ + light = 0; + } else l3time = current_time(); } } void work_with(void){ } - -