void cek_penduduk() { int jam = jam_sekarang(); int teg_batere = (int) data_f[25]; // solar_volt int i=0; if(i>20) { printf("jam: %d, teg_batere: %d\r\n", jam, teg_batere); i=0; } i++; if (jam>18 || jam<5) { // penduduk hidup if (teg_batere>125) { set_selenoid(1); // listrik penduduk hidup, relay1 NO - normally open - BUKA unset_selenoid(7); // fuel cell mati, relay1 NC - normally close - NYAMBUNG } else if (teg_batere<120) { //printf("_____________________________ masuk sini\r\n"); unset_selenoid(1); // listrik penduduk mati set_selenoid(7); // fuel cell hidup } //printf("jam: %d, volt: %f, %d, %f, relay1: %f\r\n", jam, data_f[25], (int) data_f[25], data_f[27], data_f[PER_SUMBER*JML_SUMBER]); } else { // diluar jam / sistem kontrol masalah // set default setting unset_selenoid(1); // listrik penduduk mati unset_selenoid(7); // fuel cell mati } }
void cek_alarm_relay(no_sumber) { int i=0, j=0, index=0; int jam = jam_sekarang(); struct t_dt_set *p_dt; p_dt = (char *) ALMT_DT_SET; for (j=0; j<PER_SUMBER; j++) { index = JML_SUMBER*no_sumber+j; if (p_dt[index].aktif == 1) { // Teg AKI, relay 2 //printf("%d. %s data: %.2f, alarmH: %.2f, alarmHH: %.2f, falarm: %d\r\n", \ // index, p_dt[index].nama, data_f[index], p_dt[index].alarm_H, p_dt[index].alarm_HH, p_dt[index].relay); /* if ((data_f[index]>p_dt[index].alarm_HH) ) { set_selenoid(p_dt[index].relay); //printf("__%d___%d\r\n", (PER_SUMBER*JML_SUMBER)+p_dt[index].relay-2, data_f[(PER_SUMBER*JML_SUMBER)+p_dt[index].relay-2]); fAlarm[p_dt[index].relay] = 0; vTaskDelay(1000); } if ( (fAlarm[p_dt[index].relay] != 1) && ((data_f[index]<p_dt[index].alarm_H) ) ) { unset_selenoid(p_dt[index].relay); //printf("__%d___%d\r\n", (PER_SUMBER*JML_SUMBER)+p_dt[index].relay-2, data_f[(PER_SUMBER*JML_SUMBER)+p_dt[index].relay-2]); fAlarm[p_dt[index].relay] = 1; vTaskDelay(1000); } //*/ /* if ((data_f[index]<p_dt[index].alarm_L) || (data_f[index]>p_dt[index].alarm_H) ) { set_selenoid(p_dt[index].relay); fAlarm[p_dt[index].relay] = 1; } if (fAlarm[p_dt[index].relay] != 1) { unset_selenoid(p_dt[index].relay); fAlarm[p_dt[index].relay] = 0; } //*/ //* if (index==1) { // Sensor Teg Aki, relay 2 /* if (fAlarm[p_dt[index].relay] != 1 && data_f[index]<p_dt[index].alarm_H) { // charger Aki nyala printf("Aki dicharge, nyambung !! Aki: %f, batas: %f\r\n", data_f[index], p_dt[index].alarm_H); set_selenoid(p_dt[index].relay); fAlarm[p_dt[index].relay] = 1; } if (fAlarm[p_dt[index].relay] != 0 && data_f[index]>p_dt[index].alarm_HH) { // charger Aki mati printf("Aki penuh .......lepaskan Aki: %f, batas: %f\r\n", data_f[index], p_dt[index].alarm_H); unset_selenoid(p_dt[index].relay); fAlarm[p_dt[index].relay] = 0; } //*/ // jika tidak perlu sensor batere dan Set Teg output adaptor 12V if (jam>6 && jam<18) { // lepas !! if (fAlarm[p_dt[index].relay] != 0) { unset_selenoid(p_dt[index].relay); fAlarm[p_dt[index].relay] = 0; } } else { // bukan jam kerja if (fAlarm[p_dt[index].relay] != 1) { // CHARGE !! set_selenoid(p_dt[index].relay); fAlarm[p_dt[index].relay] = 1; } } } //*/ if (index==41) { // Listrik Turbin, data ke 42 index ke 41, relay ke 1 if (jam>6 && jam<18) { // lepas !! if (fAlarm[p_dt[index].relay] != 0) { printf("Listrik %f, lepas\r\n", data_f[index]); unset_selenoid(p_dt[index].relay); fAlarm[p_dt[index].relay] = 0; } //printf("Listrik turbin cabut !!\r\n"); } else { if (fAlarm[p_dt[index].relay] != 0 && data_f[index]<p_dt[index].alarm_H) { // Listrik ngedrop printf("Listrik drop %.1f, lepas !!, batas %.0f\r\n", data_f[index], p_dt[index].alarm_H); unset_selenoid(p_dt[index].relay); fAlarm[p_dt[index].relay] = 0; } if (fAlarm[p_dt[index].relay] != 1 && data_f[index]>p_dt[index].alarm_HH) { // Listrik Mantap printf("Listrik baik, pakai !! %f, batas %.0f\r\n", data_f[index], p_dt[index].alarm_HH); set_selenoid(p_dt[index].relay); fAlarm[p_dt[index].relay] = 1; } } //vTaskDelay(500); } } } //*/ }
int kirim_file_ke_ftp(char *abs_path, char *nf) { char posisifile[128]; char namafile[32]; int res, flag=1, oz=0, rspn=1; unsigned long int size, i,uf; FIL fd2; time_t timeval; strcpy(posisifile, abs_path); strcpy(namafile, nf); #ifdef DEBUG_FTP printf("___path: %s, nama: %s\r\n", posisifile, namafile); #endif if (res = f_open(&fd2, abs_path, FA_READ | FA_WRITE)) { printf("%s(): Buka file error %d !\r\n", __FUNCTION__, res); return 0; } f_lseek( &fd2, fd2.fsize - 6 ); f_read( &fd2, abs_path, 6, &res); #ifdef DEBUG_FTP //printf("___mo dikirim, CEK %s @@@, nf: %s\r\n", posisifile, namafile); #endif files++; if (strncmp( abs_path, "SENDED", 6) == 0) { #ifdef DEBUG_FTP printf("file %s sudah dikirim !\r\n", posisifile); #endif file_sudah++; } else { f_lseek( &fd2, 0); // kembalikan pointer // flag=55; oz=0; while(1) { rspn = upload_file(namafile); #ifdef DEBUG_FTP //printf("respon upload : %d, oz: %d, flag: %d\r\n", rspn, oz, flag); #endif if (rspn==0) { flag = 77; #ifdef DEBUG_FTP printf("_____KELUAR loop, flag: %d\r\n", flag); #endif break; } vTaskDelay(10); //cek_awal(); oz++; if (oz>20) break; } if (flag==77) { size = sizeof (abs_path); #ifdef DEBUG_FTP //printf("Sudah konek !!!...........Kirim data size: %d, res: %d!!!\r\n", size, res); #endif for (;;) { f_read( &fd2, abs_path, size, &res); //printf("res: %d\r\n"); portENTER_CRITICAL(); for (i=0; i<res; i++) { //tulis_char( abs_path[i] ); serX_putchar(PAKAI_GSM_FTP, &abs_path[i], 1000); } portEXIT_CRITICAL(); if ( res < size ) break; } //printf("kirim data: %d byte\r\n", i); // untuk mengakhiri data ftp // vTaskDelay(100); oz=0; while(1) { if (oz>50) { status_modem = 0; #ifdef PAKAI_SELENOID printf("__RESTART MODEM__"); unset_selenoid(1); // mati relay 1 vTaskDelay(500); set_selenoid(1); // hidup relay 1 #endif break; } oz++; uf = send_etx(oz); if (uf == 0) { flag = 88; break; } /* if (uf==11) { flag = 77; break; } //*/ vTaskDelay(500); //cek_awal(); } if (flag==77) { f_close( &fd2 ); printf("Upload GAGAL parsial !!! tanpa ETX\r\n"); oz=0; return 90; } // tulis SENDED pada akhir file // sprintf(abs_path, "%s", ctime( &timeval )); sprintf( &abs_path[24], "SENDED"); #ifdef DEBUG_FTP printf("TULIS %s \r\n", abs_path); #endif f_write( &fd2, abs_path, strlen(abs_path), &res); file_sukses++; printf("FILE %s terkirim ke FTP\r\n", posisifile); } else { printf("Upload %s file ERROR !\r\n", namafile); //break; } } f_close( &fd2 ); vTaskDelay(100); // kasih waktu buat proses yg lain. }
void cek_alarm_relay(no_sumber) { int i=0, j=0, index=0; struct t_dt_set *p_dt; p_dt = (char *) ALMT_DT_SET; for (j=0; j<PER_SUMBER; j++) { index = JML_SUMBER*no_sumber+j; if (p_dt[index].aktif == 1) { //printf("%d. %s data: %.2f, alarmH: %.2f, alarmHH: %.2f, falarm: %d\r\n", \ // index, p_dt[index].nama, data_f[index], p_dt[index].alarm_H, p_dt[index].alarm_HH, p_dt[index].relay); /* if ((data_f[index]>p_dt[index].alarm_HH) ) { set_selenoid(p_dt[index].relay); //printf("__%d___%d\r\n", (PER_SUMBER*JML_SUMBER)+p_dt[index].relay-2, data_f[(PER_SUMBER*JML_SUMBER)+p_dt[index].relay-2]); fAlarm[p_dt[index].relay] = 0; vTaskDelay(1000); } if ( (fAlarm[p_dt[index].relay] != 1) && ((data_f[index]<p_dt[index].alarm_H) ) ) { unset_selenoid(p_dt[index].relay); //printf("__%d___%d\r\n", (PER_SUMBER*JML_SUMBER)+p_dt[index].relay-2, data_f[(PER_SUMBER*JML_SUMBER)+p_dt[index].relay-2]); fAlarm[p_dt[index].relay] = 1; vTaskDelay(1000); } //*/ /* if ((data_f[index]<p_dt[index].alarm_L) || (data_f[index]>p_dt[index].alarm_H) ) { set_selenoid(p_dt[index].relay); fAlarm[p_dt[index].relay] = 1; } if (fAlarm[p_dt[index].relay] != 1) { unset_selenoid(p_dt[index].relay); fAlarm[p_dt[index].relay] = 0; } //*/ if (index==1) { // Sensor Aki if (fAlarm[p_dt[index].relay] != 1 && data_f[index]<p_dt[index].alarm_H) { // charger Aki nyala printf("Aki dicharge, nyambung !! Aki: %f, batas: %f\r\n", data_f[index], p_dt[index].alarm_H); set_selenoid(p_dt[index].relay); fAlarm[p_dt[index].relay] = 1; vTaskDelay(1000); } if (fAlarm[p_dt[index].relay] != 0 && data_f[index]>p_dt[index].alarm_HH) { // charger Aki mati printf("Aki penuh .......lepaskan Aki: %f, batas: %f\r\n", data_f[index], p_dt[index].alarm_H); unset_selenoid(p_dt[index].relay); fAlarm[p_dt[index].relay] = 0; vTaskDelay(1000); } } if (index==41) { // Listrik Turbin if (fAlarm[p_dt[index].relay] != 1 && data_f[index]<p_dt[index].alarm_H) { // Listrik ngedrop printf("Listrik ngedrop %f, lepas !!, batas %f\r\n", data_f[index], p_dt[index].alarm_H); set_selenoid(p_dt[index].relay); fAlarm[p_dt[index].relay] = 1; vTaskDelay(1000); } if (fAlarm[p_dt[index].relay] != 0 && data_f[index]>p_dt[index].alarm_HH) { // Listrik Mantap printf("Listrik baik, pakai saja !! Listrik %f, batas %f\r\n", data_f[index], p_dt[index].alarm_H); unset_selenoid(p_dt[index].relay); fAlarm[p_dt[index].relay] = 0; vTaskDelay(1000); } } } } //*/ }