コード例 #1
0
ファイル: set_relay.c プロジェクト: Hendryputra/atinomba
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
	}
	
}
コード例 #2
0
ファイル: set_relay.c プロジェクト: Hendryputra/atinomba
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);
			}
						
		}
	}
	//*/
}
コード例 #3
0
ファイル: system_ftp.c プロジェクト: hericz/atinom_banyu
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.	
}
コード例 #4
0
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);
                }
            }

        }
    }
    //*/
}